Merge branch 'develop' into beta
@ -192,6 +192,9 @@ reservedUsernames: [
|
|||||||
# Proxy remote files (default: false)
|
# Proxy remote files (default: false)
|
||||||
#proxyRemoteFiles: true
|
#proxyRemoteFiles: true
|
||||||
|
|
||||||
|
# Use authorized fetch for outgoing requests
|
||||||
|
signToActivityPubGet: true
|
||||||
|
|
||||||
#allowedPrivateNetworks: [
|
#allowedPrivateNetworks: [
|
||||||
# '127.0.0.1/32'
|
# '127.0.0.1/32'
|
||||||
#]
|
#]
|
||||||
|
@ -9,7 +9,7 @@ By submitting this merge request, you agree to follow our [Contribution Guidelin
|
|||||||
- [ ] I have made sure to run `pnpm run format` before submitting this pull request
|
- [ ] I have made sure to run `pnpm run format` before submitting this pull request
|
||||||
|
|
||||||
If this merge request makes changes to the Firefish API, please update `docs/api-change.md`
|
If this merge request makes changes to the Firefish API, please update `docs/api-change.md`
|
||||||
- [ ] I updated the documentation
|
- [ ] I updated the document / This merge request doesn't include API changes
|
||||||
|
|
||||||
<!-- Uncomment if your merge request has multiple authors -->
|
<!-- Uncomment if your merge request has multiple authors -->
|
||||||
<!-- Co-authored-by: Name <email@email.com> -->
|
<!-- Co-authored-by: Name <email@email.com> -->
|
||||||
|
@ -94,9 +94,9 @@ An actual domain will be assigned so you can test the federation.
|
|||||||
- The tag name must be the version
|
- The tag name must be the version
|
||||||
|
|
||||||
## Development
|
## Development
|
||||||
During development, it is useful to use the `yarn dev` command.
|
During development, it is useful to use the `pnpm run dev` command.
|
||||||
This command monitors the server-side and client-side source files and automatically builds them if they are modified.
|
This command monitors the server-side and client-side source files and automatically builds them if they are modified.
|
||||||
In addition, it will also automatically start the Misskey server process.
|
In addition, it will also automatically start the Firefish server process.
|
||||||
|
|
||||||
## Testing
|
## Testing
|
||||||
- Test codes are located in [`/test`](/test).
|
- Test codes are located in [`/test`](/test).
|
||||||
@ -119,20 +119,13 @@ yarn test
|
|||||||
|
|
||||||
#### Run specify test
|
#### Run specify test
|
||||||
```
|
```
|
||||||
TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT="./test/tsconfig.json" yarn dlx mocha test/foo.ts --require ts-node/register
|
TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT="./test/tsconfig.json" pnpx mocha test/foo.ts --require ts-node/register
|
||||||
```
|
```
|
||||||
|
|
||||||
### e2e tests
|
|
||||||
TODO
|
|
||||||
|
|
||||||
## Continuous integration
|
|
||||||
Misskey uses GitHub Actions for executing automated tests.
|
|
||||||
Configuration files are located in [`/.github/workflows`](/.github/workflows).
|
|
||||||
|
|
||||||
## Vue
|
## Vue
|
||||||
Misskey uses Vue(v3) as its front-end framework.
|
Firefish uses Vue(v3) as its front-end framework.
|
||||||
- Use TypeScript.
|
- Use TypeScript.
|
||||||
- **When creating a new component, please use the Composition API (with [setup sugar](https://v3.vuejs.org/api/sfc-script-setup.html) and [ref sugar](https://github.com/vuejs/rfcs/discussions/369)) instead of the Options API.**
|
- **When creating a new component, please use the Composition API (with [setup syntax](https://v3.vuejs.org/api/sfc-script-setup.html) and [ref syntax](https://github.com/vuejs/rfcs/discussions/369)) instead of the Options API.**
|
||||||
- Some of the existing components are implemented in the Options API, but it is an old implementation. Refactors that migrate those components to the Composition API are also welcome.
|
- Some of the existing components are implemented in the Options API, but it is an old implementation. Refactors that migrate those components to the Composition API are also welcome.
|
||||||
|
|
||||||
## nirax
|
## nirax
|
||||||
|
4
COPYING
@ -28,6 +28,10 @@ Machine learning model for sensitive images by Infinite Red, Inc.
|
|||||||
License: MIT
|
License: MIT
|
||||||
https://github.com/infinitered/nsfwjs/blob/master/LICENSE
|
https://github.com/infinitered/nsfwjs/blob/master/LICENSE
|
||||||
|
|
||||||
|
Chiptune2.js by Simon Gündling
|
||||||
|
License: MIT
|
||||||
|
https://github.com/deskjet/chiptune2.js#license
|
||||||
|
|
||||||
Licenses for all softwares and software libraries installed via the Node Package Manager ("npm") can be found by running the following shell command in the root directory of this repository:
|
Licenses for all softwares and software libraries installed via the Node Package Manager ("npm") can be found by running the following shell command in the root directory of this repository:
|
||||||
|
|
||||||
pnpm licenses list
|
pnpm licenses list
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
## Install dev and compilation dependencies, build files
|
## Install dev and compilation dependencies, build files
|
||||||
FROM node:latest as build
|
FROM node:20 as build
|
||||||
WORKDIR /firefish
|
WORKDIR /firefish
|
||||||
|
|
||||||
# Install compilation dependencies
|
# Install compilation dependencies
|
||||||
@ -48,7 +48,7 @@ RUN env NODE_ENV=production sh -c "pnpm run --filter '!native-utils' build && pn
|
|||||||
RUN pnpm i --prod --frozen-lockfile
|
RUN pnpm i --prod --frozen-lockfile
|
||||||
|
|
||||||
## Runtime container
|
## Runtime container
|
||||||
FROM node:latest
|
FROM node:20
|
||||||
WORKDIR /firefish
|
WORKDIR /firefish
|
||||||
|
|
||||||
# Install runtime dependencies
|
# Install runtime dependencies
|
||||||
|
@ -267,6 +267,7 @@ pm2 start "NODE_ENV=production pnpm run start" --name Firefish
|
|||||||
- When editing the config file, please don't fill out the settings at the bottom. They're designed *only* for managed hosting, not self hosting. Those settings are much better off being set in Firefish's control panel.
|
- When editing the config file, please don't fill out the settings at the bottom. They're designed *only* for managed hosting, not self hosting. Those settings are much better off being set in Firefish's control panel.
|
||||||
- Port 3000 (used in the default config) might be already used on your server for something else. To find an open port for Firefish, run `for p in {3000..4000}; do ss -tlnH | tr -s ' ' | cut -d" " -sf4 | grep -q "${p}$" || echo "${p}"; done | head -n 1`. Replace 3000 with the minimum port and 4000 with the maximum port if you need it.
|
- Port 3000 (used in the default config) might be already used on your server for something else. To find an open port for Firefish, run `for p in {3000..4000}; do ss -tlnH | tr -s ' ' | cut -d" " -sf4 | grep -q "${p}$" || echo "${p}"; done | head -n 1`. Replace 3000 with the minimum port and 4000 with the maximum port if you need it.
|
||||||
- I'd recommend you use a S3 Bucket/CDN for Object Storage, especially if you use Docker.
|
- I'd recommend you use a S3 Bucket/CDN for Object Storage, especially if you use Docker.
|
||||||
|
- When using object storage, setting a proper `Access-Control-Allow-Origin` response header is highly recommended.
|
||||||
- I'd ***strongly*** recommend against using CloudFlare, but if you do, make sure to turn code minification off.
|
- I'd ***strongly*** recommend against using CloudFlare, but if you do, make sure to turn code minification off.
|
||||||
- For push notifications, run `npx web-push generate-vapid-keys`, then put the public and private keys into Control Panel > General > ServiceWorker.
|
- For push notifications, run `npx web-push generate-vapid-keys`, then put the public and private keys into Control Panel > General > ServiceWorker.
|
||||||
- For translations, make a [DeepL](https://deepl.com) account and generate an API key, then put it into Control Panel > General > DeepL Translation.
|
- For translations, make a [DeepL](https://deepl.com) account and generate an API key, then put it into Control Panel > General > DeepL Translation.
|
||||||
|
@ -21,7 +21,7 @@ version: 0.1.2
|
|||||||
# incremented each time you make changes to the application. Versions are not expected to
|
# incremented each time you make changes to the application. Versions are not expected to
|
||||||
# follow Semantic Versioning. They should reflect the version the application is using.
|
# follow Semantic Versioning. They should reflect the version the application is using.
|
||||||
# It is recommended to use it with quotes.
|
# It is recommended to use it with quotes.
|
||||||
appVersion: "rc"
|
appVersion: 'v1.0.4-beta31'
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: elasticsearch
|
- name: elasticsearch
|
||||||
|
@ -98,11 +98,11 @@ url: "https://{{ .Values.firefish.domain }}/"
|
|||||||
#───┘ Port and TLS settings └───────────────────────────────────
|
#───┘ Port and TLS settings └───────────────────────────────────
|
||||||
|
|
||||||
#
|
#
|
||||||
# Misskey requires a reverse proxy to support HTTPS connections.
|
# Firefish requires a reverse proxy to support HTTPS connections.
|
||||||
#
|
#
|
||||||
# +----- https://example.tld/ ------------+
|
# +----- https://example.tld/ ------------+
|
||||||
# +------+ |+-------------+ +----------------+|
|
# +------+ |+-------------+ +----------------+|
|
||||||
# | User | ---> || Proxy (443) | ---> | Misskey (3000) ||
|
# | User | ---> || Proxy (443) | ---> | Firefish (3000) ||
|
||||||
# +------+ |+-------------+ +----------------+|
|
# +------+ |+-------------+ +----------------+|
|
||||||
# +---------------------------------------+
|
# +---------------------------------------+
|
||||||
#
|
#
|
||||||
@ -110,7 +110,7 @@ url: "https://{{ .Values.firefish.domain }}/"
|
|||||||
# An encrypted connection with HTTPS is highly recommended
|
# An encrypted connection with HTTPS is highly recommended
|
||||||
# because tokens may be transferred in GET requests.
|
# because tokens may be transferred in GET requests.
|
||||||
|
|
||||||
# The port that your Misskey server should listen on.
|
# The port that your Firefish server should listen on.
|
||||||
port: 3000
|
port: 3000
|
||||||
|
|
||||||
# ┌──────────────────────────┐
|
# ┌──────────────────────────┐
|
||||||
@ -119,10 +119,10 @@ port: 3000
|
|||||||
db:
|
db:
|
||||||
{{- if .Values.postgresql.enabled }}
|
{{- if .Values.postgresql.enabled }}
|
||||||
host: {{ template "firefish.postgresql.fullname" . }}
|
host: {{ template "firefish.postgresql.fullname" . }}
|
||||||
port: '5432'
|
port: 5432
|
||||||
{{- else }}
|
{{- else }}
|
||||||
host: {{ .Values.postgresql.postgresqlHostname }}
|
host: {{ .Values.postgresql.postgresqlHostname }}
|
||||||
port: {{ .Values.postgresql.postgresqlPort | default "5432" | quote }}
|
port: {{ .Values.postgresql.postgresqlPort | default 5432 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
# Database name
|
# Database name
|
||||||
@ -150,7 +150,7 @@ redis:
|
|||||||
{{- else }}
|
{{- else }}
|
||||||
host: {{ required "When the redis chart is disabled .Values.redis.hostname is required" .Values.redis.hostname }}
|
host: {{ required "When the redis chart is disabled .Values.redis.hostname is required" .Values.redis.hostname }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
port: {{ .Values.redis.port | default "6379" | quote }}
|
port: {{ .Values.redis.port | default 6379 }}
|
||||||
#family: 0 # 0=Both, 4=IPv4, 6=IPv6
|
#family: 0 # 0=Both, 4=IPv4, 6=IPv6
|
||||||
pass: {{ .Values.redis.auth.password | quote }}
|
pass: {{ .Values.redis.auth.password | quote }}
|
||||||
#prefix: example-prefix
|
#prefix: example-prefix
|
||||||
@ -217,8 +217,7 @@ id: 'aid'
|
|||||||
#maxCaptionLength: 1500
|
#maxCaptionLength: 1500
|
||||||
|
|
||||||
# Reserved usernames that only the administrator can register with
|
# Reserved usernames that only the administrator can register with
|
||||||
reservedUsernames:
|
reservedUsernames: {{ .Values.firefish.reservedUsernames | toJson }}
|
||||||
{{ .Values.firefish.reservedUsernames | toYaml }}
|
|
||||||
|
|
||||||
# Whether disable HSTS
|
# Whether disable HSTS
|
||||||
#disableHsts: true
|
#disableHsts: true
|
||||||
@ -265,8 +264,7 @@ reservedUsernames:
|
|||||||
# Proxy remote files (default: false)
|
# Proxy remote files (default: false)
|
||||||
#proxyRemoteFiles: true
|
#proxyRemoteFiles: true
|
||||||
|
|
||||||
allowedPrivateNetworks:
|
allowedPrivateNetworks: {{ .Values.firefish.allowedPrivateNetworks | toJson }}
|
||||||
{{ .Values.firefish.allowedPrivateNetworks | toYaml }}
|
|
||||||
|
|
||||||
# TWA
|
# TWA
|
||||||
#twa:
|
#twa:
|
||||||
|
Before Width: | Height: | Size: 40 KiB |
BIN
custom/assets/badges/error.webp
Normal file
After Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 9.9 KiB |
BIN
custom/assets/badges/info.webp
Normal file
After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 9.1 KiB |
BIN
custom/assets/badges/not-found.webp
Normal file
After Width: | Height: | Size: 33 KiB |
@ -139,10 +139,10 @@ describe("After user singed in", () => {
|
|||||||
|
|
||||||
it("note", () => {
|
it("note", () => {
|
||||||
cy.get("[data-cy-open-post-form]").click();
|
cy.get("[data-cy-open-post-form]").click();
|
||||||
cy.get("[data-cy-post-form-text]").type("Hello, Misskey!");
|
cy.get("[data-cy-post-form-text]").type("Hello, Firefish!");
|
||||||
cy.get("[data-cy-open-post-form-submit]").click();
|
cy.get("[data-cy-open-post-form-submit]").click();
|
||||||
|
|
||||||
cy.contains("Hello, Misskey!");
|
cy.contains("Hello, Firefish!");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -1,9 +1,36 @@
|
|||||||
# Changes to the Firefish API
|
# Changes to the Firefish API
|
||||||
|
|
||||||
Breaking changes are indecated by the :warning: icon.
|
Breaking changes are indicated by the :warning: icon.
|
||||||
|
|
||||||
## v1.0.5 (unreleased)
|
## v1.0.5 (unreleased)
|
||||||
|
|
||||||
|
### dev21
|
||||||
|
|
||||||
|
- `admin/update-meta` can now take `moreUrls` parameter, and response of `admin/meta` now includes `moreUrls`
|
||||||
|
- These URLs are used for the help menu ([related merge request](https://git.joinfirefish.org/firefish/firefish/-/merge_requests/10640))
|
||||||
|
|
||||||
|
### dev18
|
||||||
|
|
||||||
|
- :warning: response of `meta` no longer includes the following:
|
||||||
|
- `enableTwitterIntegration`
|
||||||
|
- `enableGithubIntegration`
|
||||||
|
- `enableDiscordIntegration`
|
||||||
|
- :warning: parameter of `admin/update-meta` and response of `admin/meta` no longer include the following:
|
||||||
|
- `enableTwitterIntegration`
|
||||||
|
- `enableGithubIntegration`
|
||||||
|
- `enableDiscordIntegration`
|
||||||
|
- `twitterConsumerKey`
|
||||||
|
- `twitterConsumerSecret`
|
||||||
|
- `githubClientId`
|
||||||
|
- `githubClientSecret`
|
||||||
|
- `discordClientId`
|
||||||
|
- `discordClientSecret`
|
||||||
|
- :warning: response of `admin/show-user` no longer includes `integrations`.
|
||||||
|
|
||||||
|
### dev17
|
||||||
|
|
||||||
|
- Added `lang` parameter to `notes/create` and `notes/edit`.
|
||||||
|
|
||||||
### dev11
|
### dev11
|
||||||
|
|
||||||
- :warning: `notes/translate` now requires credentials.
|
- :warning: `notes/translate` now requires credentials.
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
There is a `docker-compose.yml` in the root of the project that you can use to build the container from source
|
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/docker_example.env (**db config settings**)
|
||||||
- .config/default.yml (**firefish server settings**)
|
- .config/default.yml (**firefish server settings**)
|
||||||
|
|
||||||
## Configuring
|
## Configuring
|
||||||
@ -16,7 +16,7 @@ Rename the files:
|
|||||||
|
|
||||||
`cp .config/example.yml .config/default.yml`
|
`cp .config/example.yml .config/default.yml`
|
||||||
|
|
||||||
`cp .config/example.env .config/docker.env`
|
`cp .config/docker_example.env .config/docker.env`
|
||||||
|
|
||||||
then edit them according to your environment.
|
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:
|
You can configure `docker.env` with anything you like, but you will have to pay attention to the `default.yml` file:
|
||||||
|
@ -103,4 +103,4 @@ NODE_ENV=production pnpm run migrate
|
|||||||
|
|
||||||
## Reverse
|
## Reverse
|
||||||
|
|
||||||
You ***cannot*** migrate back to Misskey from Firefish due to re-hashing passwords on signin with argon2. You can migrate from Firefish to FoundKey, although this is not recommended due to FoundKey being end-of-life, and may have some problems with alt-text.
|
You ***cannot*** migrate back to Misskey from Firefish due to re-hashing passwords on signin with argon2. You can migrate to [Sharkey](https://github.com/transfem-org/Sharkey), a soft fork of Misskey that uses argon2 though. You can also migrate from Firefish to FoundKey, although this is not recommended due to FoundKey being end-of-life, and may have some problems with alt-text.
|
||||||
|
@ -52,7 +52,7 @@ gulp.task("build:backend:script", () => {
|
|||||||
"./packages/backend/src/server/web/bios.js",
|
"./packages/backend/src/server/web/bios.js",
|
||||||
"./packages/backend/src/server/web/cli.js",
|
"./packages/backend/src/server/web/cli.js",
|
||||||
])
|
])
|
||||||
.pipe(replace("LANGS", JSON.stringify(Object.keys(locales))))
|
.pipe(replace("SUPPORTED_LANGS", JSON.stringify(Object.keys(locales))))
|
||||||
.pipe(
|
.pipe(
|
||||||
terser({
|
terser({
|
||||||
toplevel: true,
|
toplevel: true,
|
||||||
|
@ -312,9 +312,6 @@ dayX: "{day}"
|
|||||||
monthX: "{month}"
|
monthX: "{month}"
|
||||||
yearX: "{year}"
|
yearX: "{year}"
|
||||||
pages: "الصفحات"
|
pages: "الصفحات"
|
||||||
integration: "التكامل"
|
|
||||||
connectService: "اتصل"
|
|
||||||
disconnectService: "اقطع الاتصال"
|
|
||||||
enableLocalTimeline: "تفعيل الخيط المحلي"
|
enableLocalTimeline: "تفعيل الخيط المحلي"
|
||||||
enableGlobalTimeline: "تفعيل الخيط الزمني الشامل"
|
enableGlobalTimeline: "تفعيل الخيط الزمني الشامل"
|
||||||
disablingTimelinesInfo: "سيتمكن المديرون والمشرفون من الوصول إلى كل الخيوط الزمنية حتى وإن لم تفعّل."
|
disablingTimelinesInfo: "سيتمكن المديرون والمشرفون من الوصول إلى كل الخيوط الزمنية حتى وإن لم تفعّل."
|
||||||
|
@ -316,9 +316,6 @@ dayX: "{day}"
|
|||||||
monthX: "{month}"
|
monthX: "{month}"
|
||||||
yearX: "{year}"
|
yearX: "{year}"
|
||||||
pages: "পৃষ্ঠা"
|
pages: "পৃষ্ঠা"
|
||||||
integration: "ইন্টিগ্রেশন"
|
|
||||||
connectService: "সংযুক্ত করুন"
|
|
||||||
disconnectService: "সংযোগ বিচ্ছিন্ন করুন"
|
|
||||||
enableLocalTimeline: "স্থানীয় টাইমলাইন চালু করুন"
|
enableLocalTimeline: "স্থানীয় টাইমলাইন চালু করুন"
|
||||||
enableGlobalTimeline: "গ্লোবাল টাইমলাইন চালু করুন"
|
enableGlobalTimeline: "গ্লোবাল টাইমলাইন চালু করুন"
|
||||||
disablingTimelinesInfo: "আপনি এই টাইমলাইনগুলি বন্ধ করলেও প্রশাসক এবং মডারেটররা এই টাইমলাইনগুলি ব্যাবহার করতে পারবে"
|
disablingTimelinesInfo: "আপনি এই টাইমলাইনগুলি বন্ধ করলেও প্রশাসক এবং মডারেটররা এই টাইমলাইনগুলি ব্যাবহার করতে পারবে"
|
||||||
|
@ -112,7 +112,7 @@ you: "Tu"
|
|||||||
clickToShow: "Fes clic per a mostrar"
|
clickToShow: "Fes clic per a mostrar"
|
||||||
sensitive: "NSFW"
|
sensitive: "NSFW"
|
||||||
add: "Afegeix"
|
add: "Afegeix"
|
||||||
reaction: "Reaccions"
|
reaction: "Reacció"
|
||||||
reactionSetting: "Reaccions a mostrar al selector de reaccions"
|
reactionSetting: "Reaccions a mostrar al selector de reaccions"
|
||||||
reactionSettingDescription2: "Arrossega per reordenar, fes clic per suprimir, prem
|
reactionSettingDescription2: "Arrossega per reordenar, fes clic per suprimir, prem
|
||||||
\"+\" per afegir."
|
\"+\" per afegir."
|
||||||
@ -792,11 +792,11 @@ customEmojis: Emojis personalitzats
|
|||||||
cacheRemoteFilesDescription: Quan aquesta opció està desactivada, els fitxers remots
|
cacheRemoteFilesDescription: Quan aquesta opció està desactivada, els fitxers remots
|
||||||
es carreguen directament del servidor remot. Desactivar-la farà que baixi l'ús d'emmagatzematge,
|
es carreguen directament del servidor remot. Desactivar-la farà que baixi l'ús d'emmagatzematge,
|
||||||
però incrementa el tràfic, perquè les miniatures no es generaran.
|
però incrementa el tràfic, perquè les miniatures no es generaran.
|
||||||
flagAsBot: Marca aquest compte com a bot
|
flagAsBot: Marca aquest compte com automatitzat
|
||||||
flagAsBotDescription: Activa aquesta opció si aquest compte és controlat per un programa.
|
flagAsBotDescription: Activa aquesta opció si aquest compte és controlat per un programa.
|
||||||
Si s'activa, això actuarà com una bandera per a altres desenvolupadors i ajuda a
|
Si s'activa, això actuarà com una bandera per a altres desenvolupadors i ajuda a
|
||||||
prevenir cadenes de interaccions infinites amb altres bots a més d'ajustar els sistemes
|
prevenir cadenes de interaccions infinites amb altres comptes automatitzats a més
|
||||||
interns de Firefish per tractar aquest compte com un bot.
|
d'ajustar els sistemes interns de Firefish per tractar aquest compte com automatitzat.
|
||||||
flagAsCat: Ets un gat? 🐱
|
flagAsCat: Ets un gat? 🐱
|
||||||
flagShowTimelineReplies: Mostra respostes a la línia de temps
|
flagShowTimelineReplies: Mostra respostes a la línia de temps
|
||||||
flagAsCatDescription: Guanyaràs unes orelles de gat i parlares com un gat!
|
flagAsCatDescription: Guanyaràs unes orelles de gat i parlares com un gat!
|
||||||
@ -944,7 +944,6 @@ dayX: '{day}'
|
|||||||
tosUrl: URL de les Condicions d'ús
|
tosUrl: URL de les Condicions d'ús
|
||||||
thisYear: Any
|
thisYear: Any
|
||||||
thisMonth: Mes
|
thisMonth: Mes
|
||||||
integration: Integracions
|
|
||||||
driveCapacityPerRemoteAccount: Capacitat del Disc per usuari remot
|
driveCapacityPerRemoteAccount: Capacitat del Disc per usuari remot
|
||||||
inMb: En megabytes
|
inMb: En megabytes
|
||||||
iconUrl: Adreça URL de la icona
|
iconUrl: Adreça URL de la icona
|
||||||
@ -1036,8 +1035,6 @@ accept: Accepta
|
|||||||
reject: Rebutja
|
reject: Rebutja
|
||||||
yearX: '{year}'
|
yearX: '{year}'
|
||||||
pages: Pàgines
|
pages: Pàgines
|
||||||
disconnectService: Desconnectar
|
|
||||||
connectService: Connectar
|
|
||||||
enableLocalTimeline: Activa la línea de temps local
|
enableLocalTimeline: Activa la línea de temps local
|
||||||
enableRecommendedTimeline: Activa la línea de temps de recomanacions
|
enableRecommendedTimeline: Activa la línea de temps de recomanacions
|
||||||
pinnedClipId: ID del clip que vols fixar
|
pinnedClipId: ID del clip que vols fixar
|
||||||
@ -1179,7 +1176,7 @@ emptyToDisableSmtpAuth: Deixa el nom d'usuari i la contrasenya sense emplenar pe
|
|||||||
desactivar la verificació SMTP
|
desactivar la verificació SMTP
|
||||||
smtpSecureInfo: Desactiva això quant facis servir STARTTLS
|
smtpSecureInfo: Desactiva això quant facis servir STARTTLS
|
||||||
testEmail: Envia un correu electrònic de verificació
|
testEmail: Envia un correu electrònic de verificació
|
||||||
wordMute: Silenciar paraules
|
wordMute: Paraules i llenguatge silenciats
|
||||||
regexpError: Error a la Expressió Regular
|
regexpError: Error a la Expressió Regular
|
||||||
regexpErrorDescription: 'Hi ha un error a la expressió regular a la línea {line} de
|
regexpErrorDescription: 'Hi ha un error a la expressió regular a la línea {line} de
|
||||||
la teva {tab} de paraules silenciades:'
|
la teva {tab} de paraules silenciades:'
|
||||||
@ -1441,7 +1438,8 @@ _accountDelete:
|
|||||||
requestAccountDelete: Sol·licitar la supressió del compte
|
requestAccountDelete: Sol·licitar la supressió del compte
|
||||||
_ad:
|
_ad:
|
||||||
back: Enrera
|
back: Enrera
|
||||||
reduceFrequencyOfThisAd: Mostrar aquest anunci menys
|
reduceFrequencyOfThisAd: Mostrar menys aquest anunci
|
||||||
|
adsBy: Anunci comunitari per {by}
|
||||||
_gallery:
|
_gallery:
|
||||||
my: La meva Galeria
|
my: La meva Galeria
|
||||||
liked: Publicacions que m'han agradat
|
liked: Publicacions que m'han agradat
|
||||||
@ -1539,8 +1537,8 @@ low: Baixa
|
|||||||
emailNotConfiguredWarning: L'adreça de correu electrònic no està definida.
|
emailNotConfiguredWarning: L'adreça de correu electrònic no està definida.
|
||||||
instanceSecurity: Seguretat del servidor
|
instanceSecurity: Seguretat del servidor
|
||||||
privateMode: Mode Privat
|
privateMode: Mode Privat
|
||||||
allowedInstances: Servidors a la llista blanca
|
allowedInstances: Servidors permesos
|
||||||
allowedInstancesDescription: Llista blanca de Hosts amb qui federar, cadascún separat
|
allowedInstancesDescription: Llista permesa de Hosts amb qui federar, cadascún separat
|
||||||
per una línia nova (només s'aplica en mode privat).
|
per una línia nova (només s'aplica en mode privat).
|
||||||
previewNoteText: Mostra la vista prèvia
|
previewNoteText: Mostra la vista prèvia
|
||||||
customCss: CSS personalitzat
|
customCss: CSS personalitzat
|
||||||
@ -1552,7 +1550,7 @@ troubleshooting: Resolució de problemes
|
|||||||
learnMore: Més informació
|
learnMore: Més informació
|
||||||
misskeyUpdated: Firefish s'ha actualitzat!
|
misskeyUpdated: Firefish s'ha actualitzat!
|
||||||
translate: Tradueix
|
translate: Tradueix
|
||||||
translatedFrom: Traduït per {x}
|
translatedFrom: Traduït del {x}
|
||||||
aiChanMode: Ai-chan a la interfície d'usuari clàssica
|
aiChanMode: Ai-chan a la interfície d'usuari clàssica
|
||||||
keepCw: Mantenir els avisos de contingut
|
keepCw: Mantenir els avisos de contingut
|
||||||
pubSub: Comptes Pub/Sub
|
pubSub: Comptes Pub/Sub
|
||||||
@ -1646,8 +1644,8 @@ customCssWarn: Aquesta configuració només s'ha d'utilitzar si sabeu què fa. L
|
|||||||
squareAvatars: Mostra avatars quadrats
|
squareAvatars: Mostra avatars quadrats
|
||||||
secureModeInfo: Quan es faci una solicitut d'altres servidors no contestar sense una
|
secureModeInfo: Quan es faci una solicitut d'altres servidors no contestar sense una
|
||||||
prova.
|
prova.
|
||||||
privateModeInfo: Quan està activat, només els servidors a la llista blanca es poden
|
privateModeInfo: Quan està activat, només els servidors a la llista es poden federar
|
||||||
federar amb el vostre servidor. Totes les publicacions s'amagaran al públic.
|
amb el vostre servidor. Totes les publicacions s'amagaran al públic.
|
||||||
useBlurEffect: Utilitzeu efectes de desenfocament a la interfície d'usuari
|
useBlurEffect: Utilitzeu efectes de desenfocament a la interfície d'usuari
|
||||||
accountDeletionInProgress: La supressió del compte està en curs
|
accountDeletionInProgress: La supressió del compte està en curs
|
||||||
unmuteThread: Desfés el silenci al fil
|
unmuteThread: Desfés el silenci al fil
|
||||||
@ -2040,6 +2038,13 @@ _wordMute:
|
|||||||
s'afegeixin a la línia de temps. A més, aquestes publicacions no s'afegiran a
|
s'afegeixin a la línia de temps. A més, aquestes publicacions no s'afegiran a
|
||||||
la línia de temps encara que es modifiquin les condicions.
|
la línia de temps encara que es modifiquin les condicions.
|
||||||
mutedNotes: Publicacions silenciades
|
mutedNotes: Publicacions silenciades
|
||||||
|
muteLangsDescription2: Fes servir el codi del l'idioma. Per exemple en, fr, ja,
|
||||||
|
zh.
|
||||||
|
lang: Idioma
|
||||||
|
langDescription: Amagar les publicacions que coincideixin amb l'idioma a la línia
|
||||||
|
de temps.
|
||||||
|
muteLangs: Llenguatges silenciats
|
||||||
|
muteLangsDescription: Separar amb espais o línies no es per una condició OR.
|
||||||
_auth:
|
_auth:
|
||||||
shareAccessAsk: Estàs segur que vols autoritzar aquesta aplicació per accedir al
|
shareAccessAsk: Estàs segur que vols autoritzar aquesta aplicació per accedir al
|
||||||
teu compte?
|
teu compte?
|
||||||
@ -2122,7 +2127,7 @@ clipsDesc: Els clips són com marcadors categoritzats que es poden compartir. Po
|
|||||||
selectChannel: Selecciona un canal
|
selectChannel: Selecciona un canal
|
||||||
isLocked: Aquest compte té les següents aprovacions
|
isLocked: Aquest compte té les següents aprovacions
|
||||||
isPatron: Mecenes de Firefish
|
isPatron: Mecenes de Firefish
|
||||||
isBot: Aquest compte és un bot
|
isBot: Aquest es un compte automatitzat
|
||||||
isModerator: Moderador
|
isModerator: Moderador
|
||||||
isAdmin: Administrador
|
isAdmin: Administrador
|
||||||
_filters:
|
_filters:
|
||||||
@ -2192,3 +2197,18 @@ indexable: Indexable
|
|||||||
languageForTranslation: Idioma de traducció d'articles
|
languageForTranslation: Idioma de traducció d'articles
|
||||||
openServerInfo: Mostra la informació del servidor fent clic al símbol del servidor
|
openServerInfo: Mostra la informació del servidor fent clic al símbol del servidor
|
||||||
en un missatge
|
en un missatge
|
||||||
|
vibrate: Activar vibracions
|
||||||
|
clickToShowPatterns: Fes clic per veure patrons de mòduls
|
||||||
|
iconSet: Conjunt d'Icones
|
||||||
|
_iconSets:
|
||||||
|
fill: Omplerts
|
||||||
|
regular: Normals
|
||||||
|
bold: Negreta
|
||||||
|
duotone: Bitó
|
||||||
|
light: Prims
|
||||||
|
showAttachedNotes: Mostrar publicacions que contenen aquest fitxer
|
||||||
|
reactions: Reaccions
|
||||||
|
attachedToNotes: Publicacions que contenen aquest fitxer
|
||||||
|
replies: Respostes
|
||||||
|
quotes: Cites
|
||||||
|
renotes: Impulsos
|
||||||
|
@ -310,9 +310,6 @@ dayX: "{day}"
|
|||||||
monthX: "{month}"
|
monthX: "{month}"
|
||||||
yearX: "{year}"
|
yearX: "{year}"
|
||||||
pages: "Stránky"
|
pages: "Stránky"
|
||||||
integration: "Integrace"
|
|
||||||
connectService: "Připojit"
|
|
||||||
disconnectService: "Odpojit"
|
|
||||||
enableLocalTimeline: "Povolit lokální čas"
|
enableLocalTimeline: "Povolit lokální čas"
|
||||||
enableGlobalTimeline: "Povolit globální čas"
|
enableGlobalTimeline: "Povolit globální čas"
|
||||||
registration: "Registrace"
|
registration: "Registrace"
|
||||||
|
@ -350,9 +350,6 @@ dayX: "{day}"
|
|||||||
monthX: "{month}"
|
monthX: "{month}"
|
||||||
yearX: "{year}"
|
yearX: "{year}"
|
||||||
pages: "Nutzer-Seiten"
|
pages: "Nutzer-Seiten"
|
||||||
integration: "Integration"
|
|
||||||
connectService: "Verbinden"
|
|
||||||
disconnectService: "Trennen"
|
|
||||||
enableLocalTimeline: "Local-Timeline aktivieren"
|
enableLocalTimeline: "Local-Timeline aktivieren"
|
||||||
enableGlobalTimeline: "Global-Timeline aktivieren"
|
enableGlobalTimeline: "Global-Timeline aktivieren"
|
||||||
disablingTimelinesInfo: "Administratoren und Moderatoren haben immer Zugriff auf alle
|
disablingTimelinesInfo: "Administratoren und Moderatoren haben immer Zugriff auf alle
|
||||||
@ -405,6 +402,8 @@ withReplies: "Antworten beinhalten"
|
|||||||
connectedTo: "Mit folgenden Nutzerkonten verknüpft"
|
connectedTo: "Mit folgenden Nutzerkonten verknüpft"
|
||||||
notesAndReplies: "Beiträge und Antworten"
|
notesAndReplies: "Beiträge und Antworten"
|
||||||
withFiles: "Beiträge mit Dateien"
|
withFiles: "Beiträge mit Dateien"
|
||||||
|
attachedToNotes: "Beiträge mit dieser Datei"
|
||||||
|
showAttachedNotes: "Zeige Beiträge mit dieser Datei"
|
||||||
silence: "stummschalten"
|
silence: "stummschalten"
|
||||||
silenceConfirm: "Sind Sie sicher, dass Sie diesen Benutzer Stummschalten möchten?"
|
silenceConfirm: "Sind Sie sicher, dass Sie diesen Benutzer Stummschalten möchten?"
|
||||||
unsilence: "Stummschaltung aufheben"
|
unsilence: "Stummschaltung aufheben"
|
||||||
@ -529,12 +528,12 @@ objectStorageBaseUrl: "Basis-URL"
|
|||||||
objectStorageBaseUrlDesc: "Die als Referenz verwendete URL. Verwendest du einen CDN
|
objectStorageBaseUrlDesc: "Die als Referenz verwendete URL. Verwendest du einen CDN
|
||||||
oder Proxy, gib dessen URL an. \nFür S3 verwende 'https://<bucket>.s3.amazonaws.com'.
|
oder Proxy, gib dessen URL an. \nFür S3 verwende 'https://<bucket>.s3.amazonaws.com'.
|
||||||
Für GCS o.ä. verwende 'https://storage.googleapis.com/<bucket>'."
|
Für GCS o.ä. verwende 'https://storage.googleapis.com/<bucket>'."
|
||||||
objectStorageBucket: "Eimer"
|
objectStorageBucket: "Bucket"
|
||||||
objectStorageBucketDesc: "Bitte gib den Namen des Buckets an, der bei deinem Anbieter
|
objectStorageBucketDesc: "Bitte gib den Namen des Buckets an, der bei deinem Anbieter
|
||||||
verwendet wird."
|
verwendet wird."
|
||||||
objectStoragePrefix: "Prefix"
|
objectStoragePrefix: "Prefix"
|
||||||
objectStoragePrefixDesc: "Dateien werden in Ordnern unter diesem Prefix gespeichert."
|
objectStoragePrefixDesc: "Dateien werden in Ordnern unter diesem Prefix gespeichert."
|
||||||
objectStorageEndpoint: "Limit"
|
objectStorageEndpoint: "Endpunkt"
|
||||||
objectStorageEndpointDesc: "Im Falle von S3 leerlassen, für andere Anbieter den relevanten
|
objectStorageEndpointDesc: "Im Falle von S3 leerlassen, für andere Anbieter den relevanten
|
||||||
Endpoint im Format „<host>“ oder „<host>:<port>“ angeben."
|
Endpoint im Format „<host>“ oder „<host>:<port>“ angeben."
|
||||||
objectStorageRegion: "Region"
|
objectStorageRegion: "Region"
|
||||||
@ -1037,6 +1036,7 @@ _accountDelete:
|
|||||||
_ad:
|
_ad:
|
||||||
back: "Zurück"
|
back: "Zurück"
|
||||||
reduceFrequencyOfThisAd: "Diese Werbeanzeige weniger anzeigen"
|
reduceFrequencyOfThisAd: "Diese Werbeanzeige weniger anzeigen"
|
||||||
|
adsBy: Community-Banner von {by}
|
||||||
_forgotPassword:
|
_forgotPassword:
|
||||||
enterEmail: "Gib die Email-Adresse ein, mit der du dich registriert hast. An diese
|
enterEmail: "Gib die Email-Adresse ein, mit der du dich registriert hast. An diese
|
||||||
wird ein Link gesendet, mit dem du dein Passwort zurücksetzen kannst."
|
wird ein Link gesendet, mit dem du dein Passwort zurücksetzen kannst."
|
||||||
@ -1243,6 +1243,7 @@ _wordMute:
|
|||||||
soft: "Leicht"
|
soft: "Leicht"
|
||||||
hard: "Schwer"
|
hard: "Schwer"
|
||||||
mutedNotes: "Stummgeschaltete Beiträge"
|
mutedNotes: "Stummgeschaltete Beiträge"
|
||||||
|
muteLangs: Stummgeschaltete Sprachen
|
||||||
_instanceMute:
|
_instanceMute:
|
||||||
instanceMuteDescription: "Schaltet alle Beiträge/Boosts stumm, die von den gelisteten
|
instanceMuteDescription: "Schaltet alle Beiträge/Boosts stumm, die von den gelisteten
|
||||||
Servern stammen, inklusive Antworten von Nutzern an einen Nutzer eines stummgeschalteten
|
Servern stammen, inklusive Antworten von Nutzern an einen Nutzer eines stummgeschalteten
|
||||||
@ -2215,3 +2216,6 @@ indexable: Indexierbar
|
|||||||
languageForTranslation: Übersetzungssprache veröffentlichen
|
languageForTranslation: Übersetzungssprache veröffentlichen
|
||||||
openServerInfo: Anzeigen von Serverinformationen durch Anklicken des Server-Tickers
|
openServerInfo: Anzeigen von Serverinformationen durch Anklicken des Server-Tickers
|
||||||
in einem Beitrag
|
in einem Beitrag
|
||||||
|
vibrate: Vibrationen abspielen
|
||||||
|
clickToShowPatterns: Klicken um Modul-Muster anzuzeigen
|
||||||
|
replies: Antworten
|
||||||
|
@ -215,8 +215,6 @@ thisMonth: "Μήνας"
|
|||||||
today: "Σήμερα"
|
today: "Σήμερα"
|
||||||
dayX: "{day}"
|
dayX: "{day}"
|
||||||
pages: "Σελίδες"
|
pages: "Σελίδες"
|
||||||
connectService: "Σύνδεση"
|
|
||||||
disconnectService: "Αποσύνδεση"
|
|
||||||
registration: "Εγγραφή"
|
registration: "Εγγραφή"
|
||||||
pinnedPages: "Καρφιτσωμένες Σελίδες"
|
pinnedPages: "Καρφιτσωμένες Σελίδες"
|
||||||
pinnedNotes: "Καρφιτσωμένες δημοσιεύσεις"
|
pinnedNotes: "Καρφιτσωμένες δημοσιεύσεις"
|
||||||
@ -730,7 +728,6 @@ lightThemes: Φωτεινά θέματα
|
|||||||
darkThemes: Σκοτεινά θέματα
|
darkThemes: Σκοτεινά θέματα
|
||||||
inputNewFolderName: Πληκτρολογήστε ένα νέο όνομα φακέλου
|
inputNewFolderName: Πληκτρολογήστε ένα νέο όνομα φακέλου
|
||||||
hasChildFilesOrFolders: Εφόσον αυτός ο φάκελος δεν είναι άδειος, δεν μπορεί να διαγραφεί.
|
hasChildFilesOrFolders: Εφόσον αυτός ο φάκελος δεν είναι άδειος, δεν μπορεί να διαγραφεί.
|
||||||
integration: Ενσωματώσεις
|
|
||||||
enableRecommendedTimeline: Ενεργοποίηση χρονολογίου προτεινόμενων
|
enableRecommendedTimeline: Ενεργοποίηση χρονολογίου προτεινόμενων
|
||||||
driveCapacityPerLocalAccount: Μέγεθος Αποθηκευτικού Χώρου ανά τοπικό μέλος
|
driveCapacityPerLocalAccount: Μέγεθος Αποθηκευτικού Χώρου ανά τοπικό μέλος
|
||||||
driveCapacityPerRemoteAccount: Μέγεθος Αποθηκευτικού Χώρου ανά απομακρυσμένο μέλος
|
driveCapacityPerRemoteAccount: Μέγεθος Αποθηκευτικού Χώρου ανά απομακρυσμένο μέλος
|
||||||
|
@ -58,6 +58,7 @@ sendMessage: "Send a message"
|
|||||||
copyUsername: "Copy username"
|
copyUsername: "Copy username"
|
||||||
searchUser: "Search for a user"
|
searchUser: "Search for a user"
|
||||||
reply: "Reply"
|
reply: "Reply"
|
||||||
|
replies: "Replies"
|
||||||
jumpToPrevious: "Jump to previous"
|
jumpToPrevious: "Jump to previous"
|
||||||
loadMore: "Load more"
|
loadMore: "Load more"
|
||||||
showMore: "Show more"
|
showMore: "Show more"
|
||||||
@ -83,7 +84,8 @@ exportRequested: "You've requested an export. This may take a while. It will be
|
|||||||
to your Drive once completed."
|
to your Drive once completed."
|
||||||
importRequested: "You've requested an import. This may take a while."
|
importRequested: "You've requested an import. This may take a while."
|
||||||
lists: "Lists"
|
lists: "Lists"
|
||||||
listsDesc: "Lists let you create timelines with specified users. They can be accessed from the timelines page."
|
listsDesc: "Lists let you create timelines with specified users. They can be accessed
|
||||||
|
from the timelines page."
|
||||||
noLists: "You don't have any lists"
|
noLists: "You don't have any lists"
|
||||||
note: "Post"
|
note: "Post"
|
||||||
notes: "Posts"
|
notes: "Posts"
|
||||||
@ -111,18 +113,21 @@ unfollow: "Unfollow"
|
|||||||
followRequestPending: "Follow request pending"
|
followRequestPending: "Follow request pending"
|
||||||
enterEmoji: "Enter an emoji"
|
enterEmoji: "Enter an emoji"
|
||||||
renote: "Boost"
|
renote: "Boost"
|
||||||
|
renotes: "Boosts"
|
||||||
unrenote: "Take back boost"
|
unrenote: "Take back boost"
|
||||||
renoted: "Boosted."
|
renoted: "Boosted."
|
||||||
cantRenote: "This post can't be boosted."
|
cantRenote: "This post can't be boosted."
|
||||||
cantReRenote: "A boost can't be boosted."
|
cantReRenote: "A boost can't be boosted."
|
||||||
quote: "Quote"
|
quote: "Quote"
|
||||||
|
quotes: "Quotes"
|
||||||
pinnedNote: "Pinned post"
|
pinnedNote: "Pinned post"
|
||||||
pinned: "Pin to profile"
|
pinned: "Pin to profile"
|
||||||
you: "You"
|
you: "You"
|
||||||
clickToShow: "Click to show"
|
clickToShow: "Click to show"
|
||||||
sensitive: "NSFW"
|
sensitive: "NSFW"
|
||||||
add: "Add"
|
add: "Add"
|
||||||
reaction: "Reactions"
|
reaction: "Reaction"
|
||||||
|
reactions: "Reactions"
|
||||||
removeReaction: "Remove your reaction"
|
removeReaction: "Remove your reaction"
|
||||||
enableEmojiReactions: "Enable emoji reactions"
|
enableEmojiReactions: "Enable emoji reactions"
|
||||||
showEmojisInReactionNotifications: "Show emojis in reaction notifications"
|
showEmojisInReactionNotifications: "Show emojis in reaction notifications"
|
||||||
@ -132,6 +137,7 @@ rememberNoteVisibility: "Remember post visibility settings"
|
|||||||
attachCancel: "Remove attachment"
|
attachCancel: "Remove attachment"
|
||||||
markAsSensitive: "Mark as NSFW"
|
markAsSensitive: "Mark as NSFW"
|
||||||
unmarkAsSensitive: "Unmark as NSFW"
|
unmarkAsSensitive: "Unmark as NSFW"
|
||||||
|
clickToShowPatterns: "Click to show module patterns"
|
||||||
enterFileName: "Enter filename"
|
enterFileName: "Enter filename"
|
||||||
mute: "Mute"
|
mute: "Mute"
|
||||||
unmute: "Unmute"
|
unmute: "Unmute"
|
||||||
@ -162,11 +168,11 @@ cacheRemoteFiles: "Cache remote files"
|
|||||||
cacheRemoteFilesDescription: "When this setting is disabled, remote files are loaded
|
cacheRemoteFilesDescription: "When this setting is disabled, remote files are loaded
|
||||||
directly from the remote server. Disabling this will decrease storage usage, but
|
directly from the remote server. Disabling this will decrease storage usage, but
|
||||||
increase traffic, as thumbnails will not be generated."
|
increase traffic, as thumbnails will not be generated."
|
||||||
flagAsBot: "Mark this account as a bot"
|
flagAsBot: "Mark this account as automated"
|
||||||
flagAsBotDescription: "Enable this option if this account is controlled by a program.
|
flagAsBotDescription: "Enable this option if this account is controlled by a program.
|
||||||
If enabled, it will act as a flag for other developers to prevent endless interaction
|
If enabled, it will act as a flag for other developers to prevent endless interaction
|
||||||
chains with other bots and adjust Firefish's internal systems to treat this account
|
chains with other automated accounts and adjust Firefish's internal systems to treat this
|
||||||
as a bot."
|
account as an automated account."
|
||||||
flagAsCat: "Are you a cat? 😺"
|
flagAsCat: "Are you a cat? 😺"
|
||||||
flagAsCatDescription: "You'll get cat ears and speak like a cat!"
|
flagAsCatDescription: "You'll get cat ears and speak like a cat!"
|
||||||
flagSpeakAsCat: "Speak as a cat"
|
flagSpeakAsCat: "Speak as a cat"
|
||||||
@ -306,7 +312,7 @@ agreeTo: "I agree to {0}"
|
|||||||
tos: "Terms of Service"
|
tos: "Terms of Service"
|
||||||
start: "Begin"
|
start: "Begin"
|
||||||
home: "Home"
|
home: "Home"
|
||||||
remoteUserCaution: "Information from remote users may be incomplete."
|
remoteUserCaution: "Information from remote users are incomplete."
|
||||||
activity: "Activity"
|
activity: "Activity"
|
||||||
images: "Images"
|
images: "Images"
|
||||||
birthday: "Birthday"
|
birthday: "Birthday"
|
||||||
@ -369,9 +375,6 @@ dayX: "{day}"
|
|||||||
monthX: "{month}"
|
monthX: "{month}"
|
||||||
yearX: "{year}"
|
yearX: "{year}"
|
||||||
pages: "Pages"
|
pages: "Pages"
|
||||||
integration: "Integrations"
|
|
||||||
connectService: "Connect"
|
|
||||||
disconnectService: "Disconnect"
|
|
||||||
enableLocalTimeline: "Enable local timeline"
|
enableLocalTimeline: "Enable local timeline"
|
||||||
enableGlobalTimeline: "Enable global timeline"
|
enableGlobalTimeline: "Enable global timeline"
|
||||||
enableRecommendedTimeline: "Enable recommended timeline"
|
enableRecommendedTimeline: "Enable recommended timeline"
|
||||||
@ -407,7 +410,8 @@ avoidMultiCaptchaConfirm: "Using multiple Captcha systems may cause interference
|
|||||||
them. Would you like to disable the other Captcha systems currently active? If you
|
them. Would you like to disable the other Captcha systems currently active? If you
|
||||||
would like them to stay enabled, press cancel."
|
would like them to stay enabled, press cancel."
|
||||||
antennas: "Antennas"
|
antennas: "Antennas"
|
||||||
antennasDesc: "Antennas display new posts matching the criteria you set!\n They can be accessed from the timelines page."
|
antennasDesc: "Antennas display new posts matching the criteria you set!\n They can
|
||||||
|
be accessed from the timelines page."
|
||||||
manageAntennas: "Manage Antennas"
|
manageAntennas: "Manage Antennas"
|
||||||
name: "Name"
|
name: "Name"
|
||||||
antennaSource: "Antenna source"
|
antennaSource: "Antenna source"
|
||||||
@ -425,6 +429,8 @@ withReplies: "Include replies"
|
|||||||
connectedTo: "Following account(s) are connected"
|
connectedTo: "Following account(s) are connected"
|
||||||
notesAndReplies: "Posts and replies"
|
notesAndReplies: "Posts and replies"
|
||||||
withFiles: "Including files"
|
withFiles: "Including files"
|
||||||
|
attachedToNotes: "Posts with this file"
|
||||||
|
showAttachedNotes: "Show posts with this file"
|
||||||
silence: "Silence"
|
silence: "Silence"
|
||||||
silenceConfirm: "Are you sure that you want to silence this user?"
|
silenceConfirm: "Are you sure that you want to silence this user?"
|
||||||
unsilence: "Undo silencing"
|
unsilence: "Undo silencing"
|
||||||
@ -602,7 +608,8 @@ output: "Output"
|
|||||||
script: "Script"
|
script: "Script"
|
||||||
disablePagesScript: "Disable AiScript on Pages"
|
disablePagesScript: "Disable AiScript on Pages"
|
||||||
expandOnNoteClick: "Open post on click"
|
expandOnNoteClick: "Open post on click"
|
||||||
expandOnNoteClickDesc: "If disabled, you can still open posts in the right-click menu or by clicking the timestamp."
|
expandOnNoteClickDesc: "If disabled, you can still open posts in the right-click menu
|
||||||
|
or by clicking the timestamp."
|
||||||
updateRemoteUser: "Update remote user information"
|
updateRemoteUser: "Update remote user information"
|
||||||
deleteAllFiles: "Delete all files"
|
deleteAllFiles: "Delete all files"
|
||||||
deleteAllFilesConfirm: "Are you sure that you want to delete all files?"
|
deleteAllFilesConfirm: "Are you sure that you want to delete all files?"
|
||||||
@ -735,6 +742,7 @@ system: "System"
|
|||||||
switchUi: "Layout"
|
switchUi: "Layout"
|
||||||
desktop: "Desktop"
|
desktop: "Desktop"
|
||||||
clip: "Clip"
|
clip: "Clip"
|
||||||
|
clips: "Clips"
|
||||||
createNew: "Create new"
|
createNew: "Create new"
|
||||||
optional: "Optional"
|
optional: "Optional"
|
||||||
createNewClip: "Create new clip"
|
createNewClip: "Create new clip"
|
||||||
@ -742,8 +750,8 @@ unclip: "Unclip"
|
|||||||
confirmToUnclipAlreadyClippedNote: "This post is already part of the \"{name}\" clip.
|
confirmToUnclipAlreadyClippedNote: "This post is already part of the \"{name}\" clip.
|
||||||
Do you want to remove it from this clip instead?"
|
Do you want to remove it from this clip instead?"
|
||||||
public: "Public"
|
public: "Public"
|
||||||
i18nInfo: "Firefish is being translated into various languages by volunteers. You can
|
i18nInfo: "Firefish is being translated into various languages by volunteers. You
|
||||||
help at {link}."
|
can help at {link}."
|
||||||
manageAccessTokens: "Manage access tokens"
|
manageAccessTokens: "Manage access tokens"
|
||||||
accountInfo: "Account Info"
|
accountInfo: "Account Info"
|
||||||
notesCount: "Number of posts"
|
notesCount: "Number of posts"
|
||||||
@ -777,8 +785,8 @@ pageLikesCount: "Number of liked Pages"
|
|||||||
pageLikedCount: "Number of received Page likes"
|
pageLikedCount: "Number of received Page likes"
|
||||||
contact: "Contact"
|
contact: "Contact"
|
||||||
useSystemFont: "Use the system's default font"
|
useSystemFont: "Use the system's default font"
|
||||||
clips: "Clips"
|
clipsDesc: "Clips are like share-able categorized bookmarks. You can create clips
|
||||||
clipsDesc: "Clips are like share-able categorized bookmarks. You can create clips from the menu of individual posts."
|
from the menu of individual posts."
|
||||||
experimentalFeatures: "Experimental features"
|
experimentalFeatures: "Experimental features"
|
||||||
developer: "Developer"
|
developer: "Developer"
|
||||||
makeExplorable: "Make account visible in \"Explore\""
|
makeExplorable: "Make account visible in \"Explore\""
|
||||||
@ -887,10 +895,10 @@ secureMode: "Secure Mode (Authorized Fetch)"
|
|||||||
instanceSecurity: "Server Security"
|
instanceSecurity: "Server Security"
|
||||||
secureModeInfo: "When requesting from other servers, do not send back without proof."
|
secureModeInfo: "When requesting from other servers, do not send back without proof."
|
||||||
privateMode: "Private Mode"
|
privateMode: "Private Mode"
|
||||||
privateModeInfo: "When enabled, only whitelisted servers can federate with your server.
|
privateModeInfo: "When enabled, only allowlisted servers can federate with your server.
|
||||||
All posts will be hidden from the public."
|
All posts will be hidden from the public."
|
||||||
allowedInstances: "Whitelisted Servers"
|
allowedInstances: "Allowlisted Servers"
|
||||||
allowedInstancesDescription: "Hosts of servers to be whitelisted for federation, each
|
allowedInstancesDescription: "Hosts of servers to be allowlisted for federation, each
|
||||||
separated by a new line (only applies in private mode)."
|
separated by a new line (only applies in private mode)."
|
||||||
previewNoteText: "Show preview"
|
previewNoteText: "Show preview"
|
||||||
customCss: "Custom CSS"
|
customCss: "Custom CSS"
|
||||||
@ -1082,8 +1090,8 @@ license: "License"
|
|||||||
indexPosts: "Index Posts"
|
indexPosts: "Index Posts"
|
||||||
indexFrom: "Index from Post ID onwards"
|
indexFrom: "Index from Post ID onwards"
|
||||||
indexFromDescription: "Leave blank to index every post"
|
indexFromDescription: "Leave blank to index every post"
|
||||||
indexNotice: "Now indexing. This will probably take a while, please don't restart\
|
indexNotice: "Now indexing. This will probably take a while, please don't restart
|
||||||
\ your server for at least an hour."
|
your server for at least an hour."
|
||||||
customKaTeXMacro: "Custom KaTeX macros"
|
customKaTeXMacro: "Custom KaTeX macros"
|
||||||
customKaTeXMacroDescription: "Set up macros to write mathematical expressions easily!
|
customKaTeXMacroDescription: "Set up macros to write mathematical expressions easily!
|
||||||
The notation conforms to the LaTeX command definitions and is written as \\newcommand{\\
|
The notation conforms to the LaTeX command definitions and is written as \\newcommand{\\
|
||||||
@ -1109,7 +1117,7 @@ noGraze: "Please disable the \"Graze for Mastodon\" browser extension, as it int
|
|||||||
with Firefish."
|
with Firefish."
|
||||||
silencedWarning: "This page is showing because these users are from servers your admin
|
silencedWarning: "This page is showing because these users are from servers your admin
|
||||||
silenced, so they may potentially be spam."
|
silenced, so they may potentially be spam."
|
||||||
isBot: "This account is a bot"
|
isBot: "This account is automated"
|
||||||
isLocked: "This account has follow approvals"
|
isLocked: "This account has follow approvals"
|
||||||
isModerator: "Moderator"
|
isModerator: "Moderator"
|
||||||
isAdmin: "Administrator"
|
isAdmin: "Administrator"
|
||||||
@ -1131,9 +1139,11 @@ origin: "Origin"
|
|||||||
delete2fa: "Disable 2FA"
|
delete2fa: "Disable 2FA"
|
||||||
deletePasskeys: "Delete passkeys"
|
deletePasskeys: "Delete passkeys"
|
||||||
delete2faConfirm: "This will irreversibly delete 2FA on this account. Proceed?"
|
delete2faConfirm: "This will irreversibly delete 2FA on this account. Proceed?"
|
||||||
deletePasskeysConfirm: "This will irreversibly delete all passkeys and security keys on this account. Proceed?"
|
deletePasskeysConfirm: "This will irreversibly delete all passkeys and security keys
|
||||||
|
on this account. Proceed?"
|
||||||
inputNotMatch: "Input does not match"
|
inputNotMatch: "Input does not match"
|
||||||
addRe: "Add \"re:\" at the beginning of comment in reply to a post with a content warning"
|
addRe: "Add \"re:\" at the beginning of comment in reply to a post with a content
|
||||||
|
warning"
|
||||||
confirm: "Confirm"
|
confirm: "Confirm"
|
||||||
importZip: "Import ZIP"
|
importZip: "Import ZIP"
|
||||||
exportZip: "Export ZIP"
|
exportZip: "Export ZIP"
|
||||||
@ -1141,9 +1151,11 @@ emojiPackCreator: "Emoji pack creator"
|
|||||||
indexable: "Indexable"
|
indexable: "Indexable"
|
||||||
indexableDescription: "Allow built-in search to show your public posts"
|
indexableDescription: "Allow built-in search to show your public posts"
|
||||||
languageForTranslation: "Post translation language"
|
languageForTranslation: "Post translation language"
|
||||||
detectPostLanguage: "Automatically detect the language and show a translate button for posts in foreign languages"
|
detectPostLanguage: "Automatically detect the language and show a translate button
|
||||||
|
for posts in foreign languages"
|
||||||
vibrate: "Play vibrations"
|
vibrate: "Play vibrations"
|
||||||
openServerInfo: "Show server information by clicking the server ticker on a post"
|
openServerInfo: "Show server information by clicking the server ticker on a post"
|
||||||
|
iconSet: "Icon set"
|
||||||
|
|
||||||
_sensitiveMediaDetection:
|
_sensitiveMediaDetection:
|
||||||
description: "Reduces the effort of server moderation through automatically recognizing
|
description: "Reduces the effort of server moderation through automatically recognizing
|
||||||
@ -1185,7 +1197,8 @@ _accountDelete:
|
|||||||
inProgress: "Deletion is currently in progress"
|
inProgress: "Deletion is currently in progress"
|
||||||
_ad:
|
_ad:
|
||||||
back: "Back"
|
back: "Back"
|
||||||
reduceFrequencyOfThisAd: "Show this ad less"
|
adsBy: "Community banner by {by}"
|
||||||
|
reduceFrequencyOfThisAd: "Show this banner less"
|
||||||
_forgotPassword:
|
_forgotPassword:
|
||||||
enterEmail: "Enter the email address you used to register. A link with which you
|
enterEmail: "Enter the email address you used to register. A link with which you
|
||||||
can reset your password will then be sent to it."
|
can reset your password will then be sent to it."
|
||||||
@ -1235,8 +1248,8 @@ _registry:
|
|||||||
domain: "Domain"
|
domain: "Domain"
|
||||||
createKey: "Create key"
|
createKey: "Create key"
|
||||||
_aboutFirefish:
|
_aboutFirefish:
|
||||||
about: "Firefish is a fork of Misskey made by ThatOneCalculator, which has been in
|
about: "Firefish is a fork of Misskey made by ThatOneCalculator, which has been
|
||||||
development since 2022."
|
in development since 2022."
|
||||||
contributors: "Main contributors"
|
contributors: "Main contributors"
|
||||||
allContributors: "All contributors"
|
allContributors: "All contributors"
|
||||||
misskeyContributors: "Misskey contributors"
|
misskeyContributors: "Misskey contributors"
|
||||||
@ -1245,13 +1258,15 @@ _aboutFirefish:
|
|||||||
donate: "Donate to Firefish"
|
donate: "Donate to Firefish"
|
||||||
donateTitle: "Enjoying Firefish?"
|
donateTitle: "Enjoying Firefish?"
|
||||||
pleaseDonateToFirefish: "Please consider donating to Firefish to support its development."
|
pleaseDonateToFirefish: "Please consider donating to Firefish to support its development."
|
||||||
pleaseDonateToHost: "Please also consider donating to your home server, {host}, to help support its operation costs."
|
pleaseDonateToHost: "Please also consider donating to your home server, {host},
|
||||||
|
to help support its operation costs."
|
||||||
donateHost: "Donate to {host}"
|
donateHost: "Donate to {host}"
|
||||||
morePatrons: "We also appreciate the support of many other helpers not listed here.
|
morePatrons: "We also appreciate the support of many other helpers not listed here.
|
||||||
Thank you! 🥰"
|
Thank you! 🥰"
|
||||||
sponsors: "Firefish sponsors"
|
sponsors: "Firefish sponsors"
|
||||||
patrons: "Firefish patrons"
|
patrons: "Firefish patrons"
|
||||||
patronsList: "Listed chronologically, not by donation size. Donate with the link above to get your name on here!"
|
patronsList: "Listed chronologically, not by donation size. Donate with the link
|
||||||
|
above to get your name on here!"
|
||||||
_nsfw:
|
_nsfw:
|
||||||
respect: "Hide NSFW media"
|
respect: "Hide NSFW media"
|
||||||
ignore: "Don't hide NSFW media"
|
ignore: "Don't hide NSFW media"
|
||||||
@ -1266,7 +1281,8 @@ _mfm:
|
|||||||
can be used in many places. Here you can view a list of all available MFM syntax."
|
can be used in many places. Here you can view a list of all available MFM syntax."
|
||||||
dummy: "Firefish expands the world of the Fediverse"
|
dummy: "Firefish expands the world of the Fediverse"
|
||||||
advanced: "Advanced MFM"
|
advanced: "Advanced MFM"
|
||||||
advancedDescription: "If disabled, only allows for basic markup unless animated MFM is playing"
|
advancedDescription: "If disabled, only allows for basic markup unless animated
|
||||||
|
MFM is playing"
|
||||||
mention: "Mention"
|
mention: "Mention"
|
||||||
mentionDescription: "You can specify a user by using an At-Symbol and a username."
|
mentionDescription: "You can specify a user by using an At-Symbol and a username."
|
||||||
hashtag: "Hashtag"
|
hashtag: "Hashtag"
|
||||||
@ -1522,10 +1538,10 @@ _tutorial:
|
|||||||
step5_4: "The Local {icon} timeline is where you can see posts from everyone else
|
step5_4: "The Local {icon} timeline is where you can see posts from everyone else
|
||||||
on this server."
|
on this server."
|
||||||
step5_5: "The Social {icon} timeline is a combination of the Home and Local timelines."
|
step5_5: "The Social {icon} timeline is a combination of the Home and Local timelines."
|
||||||
step5_6: "The Recommended {icon} timeline is where you can see posts from servers\
|
step5_6: "The Recommended {icon} timeline is where you can see posts from servers
|
||||||
\ the admins recommend."
|
the admins recommend."
|
||||||
step5_7: "The Global {icon} timeline is where you can see posts from every other\
|
step5_7: "The Global {icon} timeline is where you can see posts from every other
|
||||||
\ connected server."
|
connected server."
|
||||||
step6_1: "So, what is this place?"
|
step6_1: "So, what is this place?"
|
||||||
step6_2: "Well, you didn't just join Firefish. You joined a portal to the Fediverse,
|
step6_2: "Well, you didn't just join Firefish. You joined a portal to the Fediverse,
|
||||||
an interconnected network of thousands of servers."
|
an interconnected network of thousands of servers."
|
||||||
@ -1538,23 +1554,29 @@ _2fa:
|
|||||||
registerTOTP: "Register authenticator app"
|
registerTOTP: "Register authenticator app"
|
||||||
step1: "First, install an authentication app (such as {a} or {b}) on your device."
|
step1: "First, install an authentication app (such as {a} or {b}) on your device."
|
||||||
step2: "Then, scan the QR code displayed on this screen."
|
step2: "Then, scan the QR code displayed on this screen."
|
||||||
step2Click: "Clicking on this QR code will allow you to register 2FA to your security key or phone authenticator app."
|
step2Click: "Clicking on this QR code will allow you to register 2FA to your security
|
||||||
|
key or phone authenticator app."
|
||||||
step2Url: "You can also enter this URL if you're using a desktop program:"
|
step2Url: "You can also enter this URL if you're using a desktop program:"
|
||||||
step3Title: "Enter an authentication code"
|
step3Title: "Enter an authentication code"
|
||||||
step3: "Enter the token provided by your app to finish setup."
|
step3: "Enter the token provided by your app to finish setup."
|
||||||
step4: "From now on, any future login attempts will ask for such a login token."
|
step4: "From now on, any future login attempts will ask for such a login token."
|
||||||
securityKeyNotSupported: "Your browser does not support security keys."
|
securityKeyNotSupported: "Your browser does not support security keys."
|
||||||
registerTOTPBeforeKey: "Please set up an authenticator app to register a security or pass key."
|
registerTOTPBeforeKey: "Please set up an authenticator app to register a security
|
||||||
securityKeyInfo: "Besides fingerprint or PIN authentication, you can also setup authentication via hardware security keys that support FIDO2 to further secure your account."
|
or pass key."
|
||||||
|
securityKeyInfo: "Besides fingerprint or PIN authentication, you can also setup
|
||||||
|
authentication via hardware security keys that support FIDO2 to further secure
|
||||||
|
your account."
|
||||||
chromePasskeyNotSupported: "Chrome passkeys are currently not supported."
|
chromePasskeyNotSupported: "Chrome passkeys are currently not supported."
|
||||||
registerSecurityKey: "Register a security or pass key"
|
registerSecurityKey: "Register a security or pass key"
|
||||||
securityKeyName: "Enter a key name"
|
securityKeyName: "Enter a key name"
|
||||||
tapSecurityKey: "Please follow your browser to register the security or pass key"
|
tapSecurityKey: "Please follow your browser to register the security or pass key"
|
||||||
removeKey: "Remove security key"
|
removeKey: "Remove security key"
|
||||||
removeKeyConfirm: "Really delete the {name} key?"
|
removeKeyConfirm: "Really delete the {name} key?"
|
||||||
whyTOTPOnlyRenew: "The authenticator app cannot be removed as long as a security key is registered."
|
whyTOTPOnlyRenew: "The authenticator app cannot be removed as long as a security
|
||||||
|
key is registered."
|
||||||
renewTOTP: "Reconfigure authenticator app"
|
renewTOTP: "Reconfigure authenticator app"
|
||||||
renewTOTPConfirm: "This will cause verification codes from your previous app to stop working"
|
renewTOTPConfirm: "This will cause verification codes from your previous app to
|
||||||
|
stop working"
|
||||||
renewTOTPOk: "Reconfigure"
|
renewTOTPOk: "Reconfigure"
|
||||||
renewTOTPCancel: "Cancel"
|
renewTOTPCancel: "Cancel"
|
||||||
token: "2FA Token"
|
token: "2FA Token"
|
||||||
@ -1702,10 +1724,9 @@ _profile:
|
|||||||
youCanIncludeHashtags: "You can also include hashtags in your bio."
|
youCanIncludeHashtags: "You can also include hashtags in your bio."
|
||||||
metadata: "Additional Information"
|
metadata: "Additional Information"
|
||||||
metadataEdit: "Edit additional Information"
|
metadataEdit: "Edit additional Information"
|
||||||
metadataDescription:
|
metadataDescription: "Using these, you can display additional information fields
|
||||||
"Using these, you can display additional information fields
|
in your profile. You can add an {a} tag or {l} tag with {rel} to verify the link
|
||||||
in your profile. You can add an {a} tag or {l} tag with {rel}
|
on your profile!"
|
||||||
to verify the link on your profile!"
|
|
||||||
metadataLabel: "Label"
|
metadataLabel: "Label"
|
||||||
metadataContent: "Content"
|
metadataContent: "Content"
|
||||||
changeAvatar: "Change avatar"
|
changeAvatar: "Change avatar"
|
||||||
@ -2116,9 +2137,9 @@ _deck:
|
|||||||
_experiments:
|
_experiments:
|
||||||
title: "Experiments"
|
title: "Experiments"
|
||||||
enablePostImports: "Enable post imports"
|
enablePostImports: "Enable post imports"
|
||||||
postImportsCaption: "Allows users to import their posts from past Firefish,\
|
postImportsCaption: "Allows users to import their posts from past Firefish, Misskey,
|
||||||
\ Misskey, Mastodon, Akkoma, and Pleroma accounts. It may cause slowdowns during\
|
Mastodon, Akkoma, and Pleroma accounts. It may cause slowdowns during load if
|
||||||
\ load if your queue is bottlenecked."
|
your queue is bottlenecked."
|
||||||
_dialog:
|
_dialog:
|
||||||
charactersExceeded: "Max characters exceeded! Current: {current}/Limit: {max}"
|
charactersExceeded: "Max characters exceeded! Current: {current}/Limit: {max}"
|
||||||
charactersBelow: "Not enough characters! Current: {current}/Limit: {min}"
|
charactersBelow: "Not enough characters! Current: {current}/Limit: {min}"
|
||||||
@ -2134,3 +2155,11 @@ _feeds:
|
|||||||
rss: "RSS"
|
rss: "RSS"
|
||||||
atom: "Atom"
|
atom: "Atom"
|
||||||
jsonFeed: "JSON feed"
|
jsonFeed: "JSON feed"
|
||||||
|
_iconSets:
|
||||||
|
bold: "Bold"
|
||||||
|
light: "Light"
|
||||||
|
regular: "Regular"
|
||||||
|
fill: "Filled"
|
||||||
|
duotone: "Duotone"
|
||||||
|
moreUrls: "Pinned pages"
|
||||||
|
moreUrlsDescription: "Enter the pages you want to pin to the help menu in the lower left corner using this notation:\n\"Display name\": https://example.com/"
|
||||||
|
@ -340,9 +340,6 @@ dayX: "Día {day}"
|
|||||||
monthX: "Mes {month}"
|
monthX: "Mes {month}"
|
||||||
yearX: "Año {year}"
|
yearX: "Año {year}"
|
||||||
pages: "Páginas"
|
pages: "Páginas"
|
||||||
integration: "Integraciones"
|
|
||||||
connectService: "Conectar"
|
|
||||||
disconnectService: "Desconectar"
|
|
||||||
enableLocalTimeline: "Habilitar linea de tiempo local"
|
enableLocalTimeline: "Habilitar linea de tiempo local"
|
||||||
enableGlobalTimeline: "Habilitar linea de tiempo global"
|
enableGlobalTimeline: "Habilitar linea de tiempo global"
|
||||||
disablingTimelinesInfo: "Aunque se desactiven estas lineas de tiempo, por conveniencia
|
disablingTimelinesInfo: "Aunque se desactiven estas lineas de tiempo, por conveniencia
|
||||||
@ -1988,7 +1985,7 @@ migration: Migración
|
|||||||
silenced: Silenciado
|
silenced: Silenciado
|
||||||
deleted: Eliminado
|
deleted: Eliminado
|
||||||
edited: 'Editado a las {date} {time}'
|
edited: 'Editado a las {date} {time}'
|
||||||
editNote: Editar nota
|
editNote: Editar publicación
|
||||||
silenceThisInstance: Silenciar este servidor
|
silenceThisInstance: Silenciar este servidor
|
||||||
findOtherInstance: Buscar otro servidor
|
findOtherInstance: Buscar otro servidor
|
||||||
userSaysSomethingReasonRenote: '{name} impulsó una publicación que contiene {reason]'
|
userSaysSomethingReasonRenote: '{name} impulsó una publicación que contiene {reason]'
|
||||||
@ -2164,3 +2161,4 @@ noGraze: Por favor desactiva la extensión de navegador "Graze for Mastodon" ya
|
|||||||
silencedWarning: Esta página se muestra debido a que estos usuarios son de servidores
|
silencedWarning: Esta página se muestra debido a que estos usuarios son de servidores
|
||||||
que tu administrador ha silenciado, ya que son presumiblemente fuente de spam.
|
que tu administrador ha silenciado, ya que son presumiblemente fuente de spam.
|
||||||
isBot: Esta cuenta es un bot
|
isBot: Esta cuenta es un bot
|
||||||
|
clickToShowPatterns: Haz clic para mostrar patrones de módulos
|
||||||
|
@ -339,8 +339,6 @@ instanceName: Instanssin nimi
|
|||||||
thisMonth: Kuukausi
|
thisMonth: Kuukausi
|
||||||
today: Tänään
|
today: Tänään
|
||||||
monthX: '{month}'
|
monthX: '{month}'
|
||||||
connectService: Yhdistä
|
|
||||||
disconnectService: Katkaise yhteys
|
|
||||||
enableLocalTimeline: Ota käyttöön paikallinen aikajana
|
enableLocalTimeline: Ota käyttöön paikallinen aikajana
|
||||||
enableGlobalTimeline: Ota käyttöön globaali aikajana
|
enableGlobalTimeline: Ota käyttöön globaali aikajana
|
||||||
enableRecommendedTimeline: Ota käyttöön suositellut -aikajana
|
enableRecommendedTimeline: Ota käyttöön suositellut -aikajana
|
||||||
@ -385,7 +383,6 @@ disablingTimelinesInfo: Järjestelmänvalvojilla ja moderaattoreilla on aina pä
|
|||||||
dayX: '{day}'
|
dayX: '{day}'
|
||||||
yearX: '{year}'
|
yearX: '{year}'
|
||||||
pages: Sivut
|
pages: Sivut
|
||||||
integration: Integraatiot
|
|
||||||
instanceDescription: Instanssin kuvaus
|
instanceDescription: Instanssin kuvaus
|
||||||
invite: Kutsu
|
invite: Kutsu
|
||||||
iconUrl: Ikoni URL-linkki
|
iconUrl: Ikoni URL-linkki
|
||||||
|
@ -114,7 +114,7 @@ you: "Vous"
|
|||||||
clickToShow: "Cliquer pour afficher"
|
clickToShow: "Cliquer pour afficher"
|
||||||
sensitive: "Contenu sensible"
|
sensitive: "Contenu sensible"
|
||||||
add: "Ajouter"
|
add: "Ajouter"
|
||||||
reaction: "Réactions"
|
reaction: "Réaction"
|
||||||
reactionSetting: "Réactions à afficher dans le sélecteur de réactions"
|
reactionSetting: "Réactions à afficher dans le sélecteur de réactions"
|
||||||
reactionSettingDescription2: "Déplacer pour réorganiser, cliquer pour effacer, utiliser
|
reactionSettingDescription2: "Déplacer pour réorganiser, cliquer pour effacer, utiliser
|
||||||
« + » pour ajouter."
|
« + » pour ajouter."
|
||||||
@ -341,9 +341,6 @@ dayX: "{day}"
|
|||||||
monthX: "{month}"
|
monthX: "{month}"
|
||||||
yearX: "{year}"
|
yearX: "{year}"
|
||||||
pages: "Pages"
|
pages: "Pages"
|
||||||
integration: "Intégrations"
|
|
||||||
connectService: "Connexion"
|
|
||||||
disconnectService: "Déconnexion"
|
|
||||||
enableLocalTimeline: "Activer le fil local"
|
enableLocalTimeline: "Activer le fil local"
|
||||||
enableGlobalTimeline: "Activer le fil global"
|
enableGlobalTimeline: "Activer le fil global"
|
||||||
disablingTimelinesInfo: "Même si vous désactivez ces fils, les administrateur·rice·s
|
disablingTimelinesInfo: "Même si vous désactivez ces fils, les administrateur·rice·s
|
||||||
@ -646,7 +643,7 @@ emptyToDisableSmtpAuth: "Laisser le nom d’utilisateur et le mot de passe vides
|
|||||||
smtpSecure: "Utiliser SSL/TLS implicitement dans les connexions SMTP"
|
smtpSecure: "Utiliser SSL/TLS implicitement dans les connexions SMTP"
|
||||||
smtpSecureInfo: "Désactiver cette option lorsque STARTTLS est utilisé"
|
smtpSecureInfo: "Désactiver cette option lorsque STARTTLS est utilisé"
|
||||||
testEmail: "Tester la distribution de courriel"
|
testEmail: "Tester la distribution de courriel"
|
||||||
wordMute: "Filtre de mots"
|
wordMute: "Filtre de mots et langages"
|
||||||
regexpError: "Erreur d’expression régulière"
|
regexpError: "Erreur d’expression régulière"
|
||||||
instanceMute: "Serveur masqué"
|
instanceMute: "Serveur masqué"
|
||||||
userSaysSomething: "{name} a dit quelque chose"
|
userSaysSomething: "{name} a dit quelque chose"
|
||||||
@ -960,7 +957,8 @@ _accountDelete:
|
|||||||
inProgress: "Suppression en cours"
|
inProgress: "Suppression en cours"
|
||||||
_ad:
|
_ad:
|
||||||
back: "Retour"
|
back: "Retour"
|
||||||
reduceFrequencyOfThisAd: "Voir cette publicité moins souvent"
|
reduceFrequencyOfThisAd: "Voir cette bannière moins souvent"
|
||||||
|
adsBy: Bannière communautaire par {by}
|
||||||
_forgotPassword:
|
_forgotPassword:
|
||||||
enterEmail: "Entrez ici l'adresse e-mail que vous avez enregistrée pour votre compte.
|
enterEmail: "Entrez ici l'adresse e-mail que vous avez enregistrée pour votre compte.
|
||||||
Un lien vous permettant de réinitialiser votre mot de passe sera envoyé à cette
|
Un lien vous permettant de réinitialiser votre mot de passe sera envoyé à cette
|
||||||
@ -1145,6 +1143,13 @@ _wordMute:
|
|||||||
soft: "Doux"
|
soft: "Doux"
|
||||||
hard: "Strict"
|
hard: "Strict"
|
||||||
mutedNotes: "Publications masquées"
|
mutedNotes: "Publications masquées"
|
||||||
|
muteLangsDescription2: Utiliser les code de langage (i.e en, fr, ja, zh).
|
||||||
|
lang: Langage
|
||||||
|
langDescription: Cacher du fil de publication les publications qui correspondent
|
||||||
|
à ces langues.
|
||||||
|
muteLangs: Langages filtrés
|
||||||
|
muteLangsDescription: Séparer avec des espaces ou des retours à la ligne pour une
|
||||||
|
condition OU (OR).
|
||||||
_instanceMute:
|
_instanceMute:
|
||||||
instanceMuteDescription2: "Séparer avec des sauts de lignes"
|
instanceMuteDescription2: "Séparer avec des sauts de lignes"
|
||||||
title: "Masque les publications provenant des serveurs listés."
|
title: "Masque les publications provenant des serveurs listés."
|
||||||
@ -2218,3 +2223,16 @@ openServerInfo: Afficher les informations du serveur en cliquant sur le bandeau
|
|||||||
serveur d’une publication
|
serveur d’une publication
|
||||||
indexable: Indexable
|
indexable: Indexable
|
||||||
languageForTranslation: Langage post-traduction
|
languageForTranslation: Langage post-traduction
|
||||||
|
vibrate: Jouer les vibrations
|
||||||
|
clickToShowPatterns: Cliquer pour montrer les patrons de modules
|
||||||
|
iconSet: Jeu d'icônes
|
||||||
|
_iconSets:
|
||||||
|
fill: Rempli
|
||||||
|
regular: Normal
|
||||||
|
bold: Gras
|
||||||
|
duotone: Deux tons
|
||||||
|
light: Fin
|
||||||
|
reactions: Réactions
|
||||||
|
replies: Réponses
|
||||||
|
quotes: Citations
|
||||||
|
renotes: Boosts
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
_lang_: Inglés
|
_lang_: Galego
|
||||||
introFirefish: Benvida! Firefish é unha plataforma de medios sociais de código aberto,
|
introFirefish: Benvida! Firefish é unha plataforma de medios sociais de código aberto,
|
||||||
descentralizada e gratuíta para sempre!🚀
|
descentralizada e gratuíta para sempre!🚀
|
||||||
monthAndDay: '{day}/{month}'
|
monthAndDay: '{day}/{month}'
|
||||||
|
1
locales/hi.yml
Normal file
@ -0,0 +1 @@
|
|||||||
|
_lang_: "हिन्दी"
|
@ -148,11 +148,11 @@ cacheRemoteFiles: "Tembolokkan berkas remote"
|
|||||||
cacheRemoteFilesDescription: "Ketika pengaturan ini dinonaktifkan, berkas luar akan
|
cacheRemoteFilesDescription: "Ketika pengaturan ini dinonaktifkan, berkas luar akan
|
||||||
dimuat langsung dari server luar. Menonaktifkan ini akan mengurangi penggunaan penyimpanan,
|
dimuat langsung dari server luar. Menonaktifkan ini akan mengurangi penggunaan penyimpanan,
|
||||||
tapi dapat menyebabkan meningkatkan lalu lintas, mengingat keluku tidak akan dihasilkan."
|
tapi dapat menyebabkan meningkatkan lalu lintas, mengingat keluku tidak akan dihasilkan."
|
||||||
flagAsBot: "Atur akun ini sebagai Bot"
|
flagAsBot: "Tandai akun ini sebagai akun otomatis"
|
||||||
flagAsBotDescription: "Jika akun ini dikendalikan oleh program, tetapkanlah opsi ini.
|
flagAsBotDescription: "Jika akun ini dikendalikan oleh program, aktifkan opsi ini.
|
||||||
Jika diaktifkan, ini akan berfungsi sebagai tanda bagi pengembang lain untuk mencegah
|
Jika diaktifkan, ini akan berfungsi sebagai tanda bagi pengembang lain untuk mencegah
|
||||||
interaksi berantai dengan bot lain dan menyesuaikan sistem internal Firefish untuk
|
interaksi berantai dengan akun otomatis lain dan menyesuaikan sistem internal Firefish
|
||||||
memperlakukan akun ini sebagai bot."
|
untuk memperlakukan akun ini sebagai akun otomatis."
|
||||||
flagAsCat: "Atur akun ini sebagai kucing"
|
flagAsCat: "Atur akun ini sebagai kucing"
|
||||||
flagAsCatDescription: "Kamu akan mendapatkan telinga kucing dan berbicara seperti
|
flagAsCatDescription: "Kamu akan mendapatkan telinga kucing dan berbicara seperti
|
||||||
seekor kucing!"
|
seekor kucing!"
|
||||||
@ -278,8 +278,7 @@ agreeTo: "Saya setuju kepada {0}"
|
|||||||
tos: "Syarat dan ketentuan"
|
tos: "Syarat dan ketentuan"
|
||||||
start: "Mulai"
|
start: "Mulai"
|
||||||
home: "Beranda"
|
home: "Beranda"
|
||||||
remoteUserCaution: "Informasi ini mungkin tidak mutakhir, karena pengguna ini berasal
|
remoteUserCaution: "Informasi dari pengguna luar tidak lengkap."
|
||||||
dari instansi luar."
|
|
||||||
activity: "Aktivitas"
|
activity: "Aktivitas"
|
||||||
images: "Gambar"
|
images: "Gambar"
|
||||||
birthday: "Tanggal lahir"
|
birthday: "Tanggal lahir"
|
||||||
@ -342,9 +341,6 @@ dayX: "{day}"
|
|||||||
monthX: "{month}"
|
monthX: "{month}"
|
||||||
yearX: "{year}"
|
yearX: "{year}"
|
||||||
pages: "Halaman"
|
pages: "Halaman"
|
||||||
integration: "Integrasi"
|
|
||||||
connectService: "Sambungkan"
|
|
||||||
disconnectService: "Putuskan"
|
|
||||||
enableLocalTimeline: "Nyalakan linimasa lokal"
|
enableLocalTimeline: "Nyalakan linimasa lokal"
|
||||||
enableGlobalTimeline: "Nyalakan linimasa global"
|
enableGlobalTimeline: "Nyalakan linimasa global"
|
||||||
disablingTimelinesInfo: "Admin dan Moderator akan selalu memiliki akses ke semua linimasa
|
disablingTimelinesInfo: "Admin dan Moderator akan selalu memiliki akses ke semua linimasa
|
||||||
@ -637,7 +633,7 @@ emptyToDisableSmtpAuth: "Kosongkan nama pengguna dan kata sandi untuk menonaktif
|
|||||||
smtpSecure: "Gunakan SSL/TLS implisit untuk koneksi SMTP"
|
smtpSecure: "Gunakan SSL/TLS implisit untuk koneksi SMTP"
|
||||||
smtpSecureInfo: "Matikan ini ketika menggunakan STARTTLS"
|
smtpSecureInfo: "Matikan ini ketika menggunakan STARTTLS"
|
||||||
testEmail: "Tes pengiriman surel"
|
testEmail: "Tes pengiriman surel"
|
||||||
wordMute: "Bisukan kata"
|
wordMute: "Bisukan kata dan bahasa"
|
||||||
regexpError: "Kesalahan ekspresi reguler"
|
regexpError: "Kesalahan ekspresi reguler"
|
||||||
regexpErrorDescription: "Galat terjadi pada baris {line} ekspresi reguler dari {tab}
|
regexpErrorDescription: "Galat terjadi pada baris {line} ekspresi reguler dari {tab}
|
||||||
kata yang dibisukan:"
|
kata yang dibisukan:"
|
||||||
@ -953,7 +949,8 @@ _accountDelete:
|
|||||||
inProgress: "Penghapusan sedang dalam proses"
|
inProgress: "Penghapusan sedang dalam proses"
|
||||||
_ad:
|
_ad:
|
||||||
back: "Kembali"
|
back: "Kembali"
|
||||||
reduceFrequencyOfThisAd: "Tampilkan iklan ini lebih sedikit"
|
reduceFrequencyOfThisAd: "Tampilkan banner ini lebih sedikit"
|
||||||
|
adsBy: Banner komunitas oleh {by}
|
||||||
_forgotPassword:
|
_forgotPassword:
|
||||||
enterEmail: "Masukkan alamat surel yang kamu gunakan pada saat mendaftar. Sebuah
|
enterEmail: "Masukkan alamat surel yang kamu gunakan pada saat mendaftar. Sebuah
|
||||||
tautan untuk mengatur ulang kata sandi kamu akan dikirimkan ke alamat surel tersebut."
|
tautan untuk mengatur ulang kata sandi kamu akan dikirimkan ke alamat surel tersebut."
|
||||||
@ -1135,6 +1132,12 @@ _wordMute:
|
|||||||
soft: "Lembut"
|
soft: "Lembut"
|
||||||
hard: "Keras"
|
hard: "Keras"
|
||||||
mutedNotes: "Postingan yang dibisukan"
|
mutedNotes: "Postingan yang dibisukan"
|
||||||
|
muteLangsDescription2: Gunakan kode bahasa misalnya en, fr, ja, zh.
|
||||||
|
lang: Bahasa
|
||||||
|
langDescription: Sembunyikan postingan yang cocok dengan bahasa yang ditetapkan
|
||||||
|
dari timeline.
|
||||||
|
muteLangs: Bahasa yang dibisukan
|
||||||
|
muteLangsDescription: Pisahkan dengan spasi atau jeda baris untuk kondisi ATAU.
|
||||||
_instanceMute:
|
_instanceMute:
|
||||||
instanceMuteDescription: "Pengaturan ini akan membisukan postingan/pembagian apa
|
instanceMuteDescription: "Pengaturan ini akan membisukan postingan/pembagian apa
|
||||||
saja dari server yang terdaftar, termasuk pengguna yang membalas pengguna lain
|
saja dari server yang terdaftar, termasuk pengguna yang membalas pengguna lain
|
||||||
@ -1262,8 +1265,8 @@ _tutorial:
|
|||||||
{introduction} atau \"Halo dunia!\" yang sederhana."
|
{introduction} atau \"Halo dunia!\" yang sederhana."
|
||||||
step5_1: "Linimasa, linimasa di mana-mana!"
|
step5_1: "Linimasa, linimasa di mana-mana!"
|
||||||
step5_2: "Servermu memiliki {timelines} lini masa berbeda yang diaktifkan."
|
step5_2: "Servermu memiliki {timelines} lini masa berbeda yang diaktifkan."
|
||||||
step5_3: "Lini masa Beranda {icon} adalah tempat di mana kamu bisa melihat postingan
|
step5_3: "Lini masa Beranda {icon} adalah tempat kamu bisa melihat postingan dari
|
||||||
dari akun yang kamu ikuti."
|
akun yang kamu ikuti."
|
||||||
step5_4: "Linimasa Lokal {icon} adalah tempat kamu dapat melihat postingan dari
|
step5_4: "Linimasa Lokal {icon} adalah tempat kamu dapat melihat postingan dari
|
||||||
siapa pun di server ini."
|
siapa pun di server ini."
|
||||||
step6_1: "Jadi, tempat apa ini?"
|
step6_1: "Jadi, tempat apa ini?"
|
||||||
@ -1917,9 +1920,9 @@ moderation: Moderasi
|
|||||||
userSaysSomethingReason: '{name} mengatakan {reason}'
|
userSaysSomethingReason: '{name} mengatakan {reason}'
|
||||||
secureMode: Mode Aman (Pengambilan Terotorisasi)
|
secureMode: Mode Aman (Pengambilan Terotorisasi)
|
||||||
secureModeInfo: Saat meminta dari server lain, jangan kirim kembali tanpa bukti.
|
secureModeInfo: Saat meminta dari server lain, jangan kirim kembali tanpa bukti.
|
||||||
privateModeInfo: Saat aktif, hanya server yang masuk daftar putih dapat terfederasi
|
privateModeInfo: Saat aktif, hanya server yang masuk daftar yang diizinkan yang dapat
|
||||||
dengan servermu. Semua postingan akan disembunyikan dari publik.
|
terfederasi dengan servermu. Semua postingan akan disembunyikan dari publik.
|
||||||
allowedInstances: Server Masuk Daftar Putih
|
allowedInstances: Daftar Server Diizinkan
|
||||||
newer: lebih baru
|
newer: lebih baru
|
||||||
userSaysSomethingReasonReply: '{name} membalas postingan berisi {reason}'
|
userSaysSomethingReasonReply: '{name} membalas postingan berisi {reason}'
|
||||||
userSaysSomethingReasonRenote: '{name} memposting ulang postingan berisi {reason}'
|
userSaysSomethingReasonRenote: '{name} memposting ulang postingan berisi {reason}'
|
||||||
@ -1929,8 +1932,8 @@ jumpToPrevious: Lompat ke sebelumnya
|
|||||||
flagSpeakAsCatDescription: Postinganmu akan nyampak dalam mode kucing
|
flagSpeakAsCatDescription: Postinganmu akan nyampak dalam mode kucing
|
||||||
cw: Peringatan konten
|
cw: Peringatan konten
|
||||||
flagSpeakAsCat: Bicara sebagai kucing
|
flagSpeakAsCat: Bicara sebagai kucing
|
||||||
allowedInstancesDescription: Host server akan masuk daftar putih untuk federasi, mereka
|
allowedInstancesDescription: Server host akan masuk daftar yang diizinkan untuk federasi,
|
||||||
dipisahkan dengan baris baru (hanya diterapkan pada mode pribadi).
|
mereka dipisahkan dengan baris baru (hanya diterapkan pada mode pribadi).
|
||||||
xl: XL
|
xl: XL
|
||||||
privateMode: Mode Pribadi
|
privateMode: Mode Pribadi
|
||||||
seperateRenoteQuote: Tombol posting ulang dan kutip terpisah
|
seperateRenoteQuote: Tombol posting ulang dan kutip terpisah
|
||||||
@ -2001,7 +2004,7 @@ signupsDisabled: Pendaftaran ke server ini nonaktif, tapi kamu dapat selalu mend
|
|||||||
ke server lain! Jika kamu memiliki kode undangan server ini, harap masukkan di bawah
|
ke server lain! Jika kamu memiliki kode undangan server ini, harap masukkan di bawah
|
||||||
ini.
|
ini.
|
||||||
enableCustomKaTeXMacro: Aktifkan makro KaTeX khusus
|
enableCustomKaTeXMacro: Aktifkan makro KaTeX khusus
|
||||||
isBot: Akun ini bot
|
isBot: Akun ini akun otomatis
|
||||||
customMOTD: MOTD khusus (pesan layar percik)
|
customMOTD: MOTD khusus (pesan layar percik)
|
||||||
recommendedInstancesDescription: Server yang direkomendasikan dipisahkan dengan garis
|
recommendedInstancesDescription: Server yang direkomendasikan dipisahkan dengan garis
|
||||||
baru untuk tampil di linimasa rekomendasi.
|
baru untuk tampil di linimasa rekomendasi.
|
||||||
@ -2175,3 +2178,18 @@ indexable: Dapat diindeks
|
|||||||
languageForTranslation: Bahasa terjemahan kiriman
|
languageForTranslation: Bahasa terjemahan kiriman
|
||||||
openServerInfo: Tampilkan informasi server dengan mengeklik ticker server di sebuah
|
openServerInfo: Tampilkan informasi server dengan mengeklik ticker server di sebuah
|
||||||
kiriman
|
kiriman
|
||||||
|
vibrate: Putar getaran
|
||||||
|
clickToShowPatterns: Klik untuk menampilkan pola modul
|
||||||
|
iconSet: Set ikon
|
||||||
|
_iconSets:
|
||||||
|
fill: Penuh
|
||||||
|
regular: Reguler
|
||||||
|
bold: Tebal
|
||||||
|
duotone: Duotone
|
||||||
|
light: Tipis
|
||||||
|
reactions: Reaksi
|
||||||
|
replies: Balasan
|
||||||
|
quotes: Kutipan
|
||||||
|
renotes: Postingan ulang
|
||||||
|
showAttachedNotes: Tampilkan postingan dengan berkas ini
|
||||||
|
attachedToNotes: Posting dengan berkas ini
|
||||||
|
@ -147,11 +147,11 @@ cacheRemoteFiles: "Mantieni i file remoti nella cache"
|
|||||||
cacheRemoteFilesDescription: "Disabilitando questa opzione, i file remoti verranno
|
cacheRemoteFilesDescription: "Disabilitando questa opzione, i file remoti verranno
|
||||||
scaricati direttamente dal loro server. L'opzione permette di risparmiare spazio
|
scaricati direttamente dal loro server. L'opzione permette di risparmiare spazio
|
||||||
ma aumenta il traffico di rete e non verranno generate anteprime."
|
ma aumenta il traffico di rete e non verranno generate anteprime."
|
||||||
flagAsBot: "Questo account è un bot"
|
flagAsBot: "Questo account è automatizzato"
|
||||||
flagAsBotDescription: "Se l'account esegue principalmente operazioni automatiche,
|
flagAsBotDescription: "Se l'account esegue principalmente operazioni automatiche,
|
||||||
attiva quest'opzione. Quando attivata, opera come un segnalatore per gli altri sviluppatori
|
attiva quest'opzione. Quando attivata, permette agli sviluppatori di prevenire catene
|
||||||
allo scopo di prevenire catene d’interazione senza fine con altri bot, e di adeguare
|
d’interazione senza fine con altri account automatizzati. Inoltre imposta Firefish
|
||||||
i sistemi interni di Firefish perché trattino questo account come un bot."
|
perché tratti questo account come automatizzato."
|
||||||
flagAsCat: "Sei un gatto? 😺"
|
flagAsCat: "Sei un gatto? 😺"
|
||||||
flagAsCatDescription: "Ti compariranno le orecchie e parlerai come un gatto!"
|
flagAsCatDescription: "Ti compariranno le orecchie e parlerai come un gatto!"
|
||||||
autoAcceptFollowed: "Accetta in automatico i follow dagli account che segui"
|
autoAcceptFollowed: "Accetta in automatico i follow dagli account che segui"
|
||||||
@ -268,7 +268,7 @@ agreeTo: "Sono d'accordo con {0}"
|
|||||||
tos: "Termini d'uso"
|
tos: "Termini d'uso"
|
||||||
start: "Inizia"
|
start: "Inizia"
|
||||||
home: "Home"
|
home: "Home"
|
||||||
remoteUserCaution: "Le informazioni degli utenti remoti possono essere incomplete."
|
remoteUserCaution: "Le informazioni degli utenti remoti sono incomplete."
|
||||||
activity: "Attività"
|
activity: "Attività"
|
||||||
images: "Immagini"
|
images: "Immagini"
|
||||||
birthday: "Compleanno"
|
birthday: "Compleanno"
|
||||||
@ -331,9 +331,6 @@ dayX: "{day}"
|
|||||||
monthX: "{month}"
|
monthX: "{month}"
|
||||||
yearX: "{year}"
|
yearX: "{year}"
|
||||||
pages: "Pagine"
|
pages: "Pagine"
|
||||||
integration: "Integrazioni"
|
|
||||||
connectService: "Connetti"
|
|
||||||
disconnectService: "Disconnetti"
|
|
||||||
enableLocalTimeline: "Abilita timeline locale"
|
enableLocalTimeline: "Abilita timeline locale"
|
||||||
enableGlobalTimeline: "Abilita timeline federata"
|
enableGlobalTimeline: "Abilita timeline federata"
|
||||||
disablingTimelinesInfo: "Anche se disabiliti queste timeline, gli amministratori e
|
disablingTimelinesInfo: "Anche se disabiliti queste timeline, gli amministratori e
|
||||||
@ -626,7 +623,7 @@ emptyToDisableSmtpAuth: "Lasciare username e password vuoti per disabilitare la
|
|||||||
smtpSecure: "Usa la porta SSL/TLS predefinita per le connessioni SMTP"
|
smtpSecure: "Usa la porta SSL/TLS predefinita per le connessioni SMTP"
|
||||||
smtpSecureInfo: "Disabilita quando è attivo STARTTLS"
|
smtpSecureInfo: "Disabilita quando è attivo STARTTLS"
|
||||||
testEmail: "Test di consegna email"
|
testEmail: "Test di consegna email"
|
||||||
wordMute: "Filtro parole"
|
wordMute: "Filtro parole e lingua"
|
||||||
instanceMute: "Server silenziati"
|
instanceMute: "Server silenziati"
|
||||||
userSaysSomething: "{name} ha detto qualcosa"
|
userSaysSomething: "{name} ha detto qualcosa"
|
||||||
makeActive: "Attiva"
|
makeActive: "Attiva"
|
||||||
@ -901,7 +898,8 @@ _accountDelete:
|
|||||||
caricato.
|
caricato.
|
||||||
_ad:
|
_ad:
|
||||||
back: "Indietro"
|
back: "Indietro"
|
||||||
reduceFrequencyOfThisAd: "Mostra meno spesso questa pubblicità"
|
reduceFrequencyOfThisAd: "Mostra meno spesso questo banner"
|
||||||
|
adsBy: Banner della comunità da {by}
|
||||||
_forgotPassword:
|
_forgotPassword:
|
||||||
enterEmail: "Inserisci l'e-mail che hai registrato nel tuo profilo. Il link di ripristino
|
enterEmail: "Inserisci l'e-mail che hai registrato nel tuo profilo. Il link di ripristino
|
||||||
della password verrà inviato a questo indirizzo."
|
della password verrà inviato a questo indirizzo."
|
||||||
@ -1084,6 +1082,11 @@ _wordMute:
|
|||||||
soft: "Moderato"
|
soft: "Moderato"
|
||||||
hard: "Severo"
|
hard: "Severo"
|
||||||
mutedNotes: "Post silenziati"
|
mutedNotes: "Post silenziati"
|
||||||
|
muteLangsDescription2: 'Usa il codice lingua, esempio: en, fr, ja, zh.'
|
||||||
|
lang: Lingua
|
||||||
|
langDescription: Nascondi dalla timeline i post in quest'insieme di lingue.
|
||||||
|
muteLangs: Lingue da non mostrare
|
||||||
|
muteLangsDescription: Separa andando a capo o con spazi per la condizione OR.
|
||||||
_theme:
|
_theme:
|
||||||
explore: "Esplora temi"
|
explore: "Esplora temi"
|
||||||
install: "Installa un tema"
|
install: "Installa un tema"
|
||||||
@ -1992,11 +1995,11 @@ secureMode: Modalità sicura (Acquisizione autorizzata)
|
|||||||
secureModeInfo: Le richieste dai server remoti non ricevono risposta senza prima una
|
secureModeInfo: Le richieste dai server remoti non ricevono risposta senza prima una
|
||||||
verifica.
|
verifica.
|
||||||
privateMode: Modalità privata
|
privateMode: Modalità privata
|
||||||
allowedInstancesDescription: Gli host dei server che saranno federati in esclusiva,
|
allowedInstancesDescription: Gli host dei server con cui sarà permessa la federazione,
|
||||||
uno per riga (funziona solo in modalità privata).
|
uno per riga (funziona solo in modalità privata).
|
||||||
privateModeInfo: Se abilitata, solo i server in una whitelist potranno essere federati
|
privateModeInfo: Se abilitata, solo i server nell'elenco potranno essere federati
|
||||||
con questo server. Tutti i post saranno nascosti al pubblico.
|
con questo server. Tutti i post saranno nascosti al pubblico.
|
||||||
allowedInstances: Whitelist dei server
|
allowedInstances: Elenco server permessi
|
||||||
customCssWarn: Questa impostazione dovrebbe essere usata solo se sai cosa stai facendo.
|
customCssWarn: Questa impostazione dovrebbe essere usata solo se sai cosa stai facendo.
|
||||||
Inserire valori errati potrebbe bloccare il funzionamento del client.
|
Inserire valori errati potrebbe bloccare il funzionamento del client.
|
||||||
lastCommunication: Ultima comunicazione
|
lastCommunication: Ultima comunicazione
|
||||||
@ -2076,7 +2079,7 @@ noGraze: Per favore disattiva l'estenzione del browser "Graze for Mastodon", per
|
|||||||
interferisce con Firefish.
|
interferisce con Firefish.
|
||||||
silencedWarning: Vedi questa pagina perché gli utenti sono su un server che il tuo
|
silencedWarning: Vedi questa pagina perché gli utenti sono su un server che il tuo
|
||||||
admin ha silenziato, quindi potrebbero essere spam.
|
admin ha silenziato, quindi potrebbero essere spam.
|
||||||
isBot: Questo account è un bot
|
isBot: Questo account è automatizzato
|
||||||
isLocked: Serve una approvazione per seguire questo account
|
isLocked: Serve una approvazione per seguire questo account
|
||||||
moveFromDescription: Questa operazione crea un alias del vecchio account in modo che
|
moveFromDescription: Questa operazione crea un alias del vecchio account in modo che
|
||||||
tu possa migrare su questo nuovo account. Fallo PRIMA di migrare il tuo vecchio
|
tu possa migrare su questo nuovo account. Fallo PRIMA di migrare il tuo vecchio
|
||||||
@ -2164,3 +2167,18 @@ indexable: Indicizzabile
|
|||||||
languageForTranslation: Linguaggio di traduzione dei post
|
languageForTranslation: Linguaggio di traduzione dei post
|
||||||
openServerInfo: Mostra informazioni sul server cliccando sul riquadro del server in
|
openServerInfo: Mostra informazioni sul server cliccando sul riquadro del server in
|
||||||
un post
|
un post
|
||||||
|
vibrate: Abilita la vibrazione
|
||||||
|
clickToShowPatterns: Clicca per vedere i pattern del modulo
|
||||||
|
iconSet: Set di icone
|
||||||
|
_iconSets:
|
||||||
|
fill: Con riempimento
|
||||||
|
regular: Regolare
|
||||||
|
bold: Grassetto
|
||||||
|
duotone: Con due toni
|
||||||
|
light: Sottile
|
||||||
|
reactions: Reazioni
|
||||||
|
replies: Risposte
|
||||||
|
quotes: Citazioni
|
||||||
|
renotes: Boost
|
||||||
|
showAttachedNotes: Mostra i post con questo allegato
|
||||||
|
attachedToNotes: Post con questo allegato
|
||||||
|
@ -52,6 +52,7 @@ sendMessage: "メッセージを送信"
|
|||||||
copyUsername: "ユーザー名をコピー"
|
copyUsername: "ユーザー名をコピー"
|
||||||
searchUser: "ユーザーを検索"
|
searchUser: "ユーザーを検索"
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
|
replies: "返信"
|
||||||
loadMore: "もっと読み込む"
|
loadMore: "もっと読み込む"
|
||||||
showMore: "もっと見る"
|
showMore: "もっと見る"
|
||||||
showLess: "閉じる"
|
showLess: "閉じる"
|
||||||
@ -97,11 +98,13 @@ unfollow: "フォロー解除"
|
|||||||
followRequestPending: "フォロー許可待ち"
|
followRequestPending: "フォロー許可待ち"
|
||||||
enterEmoji: "絵文字を入力"
|
enterEmoji: "絵文字を入力"
|
||||||
renote: "ブースト"
|
renote: "ブースト"
|
||||||
|
renotes: "ブースト"
|
||||||
unrenote: "ブースト解除"
|
unrenote: "ブースト解除"
|
||||||
renoted: "ブーストしました。"
|
renoted: "ブーストしました。"
|
||||||
cantRenote: "この投稿はブーストできません。"
|
cantRenote: "この投稿はブーストできません。"
|
||||||
cantReRenote: "ブーストをブーストすることはできません。"
|
cantReRenote: "ブーストをブーストすることはできません。"
|
||||||
quote: "引用"
|
quote: "引用"
|
||||||
|
quotes: "引用"
|
||||||
pinnedNote: "ピン留めされた投稿"
|
pinnedNote: "ピン留めされた投稿"
|
||||||
pinned: "ピン留め"
|
pinned: "ピン留め"
|
||||||
you: "あなた"
|
you: "あなた"
|
||||||
@ -109,6 +112,7 @@ clickToShow: "クリックして表示"
|
|||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
add: "追加"
|
add: "追加"
|
||||||
reaction: "リアクション"
|
reaction: "リアクション"
|
||||||
|
reactions: "リアクション"
|
||||||
enableEmojiReactions: "絵文字リアクションを有効にする"
|
enableEmojiReactions: "絵文字リアクションを有効にする"
|
||||||
showEmojisInReactionNotifications: "自分の投稿に対するリアクションの通知で絵文字を表示する"
|
showEmojisInReactionNotifications: "自分の投稿に対するリアクションの通知で絵文字を表示する"
|
||||||
reactionSetting: "ピッカーに表示するリアクション"
|
reactionSetting: "ピッカーに表示するリアクション"
|
||||||
@ -145,8 +149,8 @@ addEmoji: "絵文字を追加"
|
|||||||
settingGuide: "おすすめ設定"
|
settingGuide: "おすすめ設定"
|
||||||
cacheRemoteFiles: "リモートのファイルをキャッシュする"
|
cacheRemoteFiles: "リモートのファイルをキャッシュする"
|
||||||
cacheRemoteFilesDescription: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクします。サーバーのストレージを節約できますが、サムネイルが生成されないので通信量が増加します。"
|
cacheRemoteFilesDescription: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクします。サーバーのストレージを節約できますが、サムネイルが生成されないので通信量が増加します。"
|
||||||
flagAsBot: "Botとして設定"
|
flagAsBot: "自動化されたアカウントとして設定"
|
||||||
flagAsBotDescription: "このアカウントがBotである場合は、この設定をオンにします。オンにすると、反応の連鎖を防ぐためのフラグとして他の開発者に役立ったり、Firefishのシステム上での扱いがBotに合ったものになります。"
|
flagAsBotDescription: "このアカウントが自動で投稿する場合は、この設定をオンにします。オンにすると、反応の連鎖を防ぐためのフラグとして他の開発者に役立ったり、Firefishのシステム上での扱いが自動で投稿するアカウントに合ったものになります。"
|
||||||
flagAsCat: "あなたは…猫?😺"
|
flagAsCat: "あなたは…猫?😺"
|
||||||
flagAsCatDescription: "このアカウントが猫であることを示す猫モードを有効にするには、このフラグをオンにします。"
|
flagAsCatDescription: "このアカウントが猫であることを示す猫モードを有効にするには、このフラグをオンにします。"
|
||||||
flagSpeakAsCat: "猫語で話す"
|
flagSpeakAsCat: "猫語で話す"
|
||||||
@ -334,9 +338,6 @@ dayX: "{day}日"
|
|||||||
monthX: "{month}月"
|
monthX: "{month}月"
|
||||||
yearX: "{year}年"
|
yearX: "{year}年"
|
||||||
pages: "ページ"
|
pages: "ページ"
|
||||||
integration: "連携"
|
|
||||||
connectService: "接続する"
|
|
||||||
disconnectService: "切断する"
|
|
||||||
enableLocalTimeline: "ローカルタイムラインを有効にする"
|
enableLocalTimeline: "ローカルタイムラインを有効にする"
|
||||||
enableGlobalTimeline: "グローバルタイムラインを有効にする"
|
enableGlobalTimeline: "グローバルタイムラインを有効にする"
|
||||||
enableRecommendedTimeline: "おすすめタイムラインを有効にする"
|
enableRecommendedTimeline: "おすすめタイムラインを有効にする"
|
||||||
@ -383,6 +384,8 @@ withReplies: "返信を含む"
|
|||||||
connectedTo: "次のアカウントに接続されています"
|
connectedTo: "次のアカウントに接続されています"
|
||||||
notesAndReplies: "投稿と返信"
|
notesAndReplies: "投稿と返信"
|
||||||
withFiles: "ファイル付き"
|
withFiles: "ファイル付き"
|
||||||
|
attachedToNotes: "このファイルが添付された投稿"
|
||||||
|
showAttachedNotes: "このファイルが添付された投稿を見る"
|
||||||
silence: "サイレンス"
|
silence: "サイレンス"
|
||||||
silenceConfirm: "サイレンスしますか?"
|
silenceConfirm: "サイレンスしますか?"
|
||||||
unsilence: "サイレンス解除"
|
unsilence: "サイレンス解除"
|
||||||
@ -615,7 +618,7 @@ emptyToDisableSmtpAuth: "ユーザー名とパスワードを空欄にするこ
|
|||||||
smtpSecure: "SMTP 接続に暗黙的なSSL/TLSを使用する"
|
smtpSecure: "SMTP 接続に暗黙的なSSL/TLSを使用する"
|
||||||
smtpSecureInfo: "STARTTLS使用時はオフにします。"
|
smtpSecureInfo: "STARTTLS使用時はオフにします。"
|
||||||
testEmail: "配信テスト"
|
testEmail: "配信テスト"
|
||||||
wordMute: "ワードミュート"
|
wordMute: "単語または言語のミュート"
|
||||||
regexpError: "正規表現エラー"
|
regexpError: "正規表現エラー"
|
||||||
regexpErrorDescription: "{tab}ワードミュートの{line}行目の正規表現にエラーが発生しました:"
|
regexpErrorDescription: "{tab}ワードミュートの{line}行目の正規表現にエラーが発生しました:"
|
||||||
instanceMute: "サーバーミュート"
|
instanceMute: "サーバーミュート"
|
||||||
@ -693,7 +696,7 @@ no: "いいえ"
|
|||||||
driveFilesCount: "ドライブのファイル数"
|
driveFilesCount: "ドライブのファイル数"
|
||||||
driveUsage: "ドライブ使用量"
|
driveUsage: "ドライブ使用量"
|
||||||
noCrawle: "クローラーによるインデックスを拒否"
|
noCrawle: "クローラーによるインデックスを拒否"
|
||||||
noCrawleDescription: "検索エンジンにあなたのプロフィールや投稿、ページなどのコンテンツを登録(インデックス)しないよう要請します。"
|
noCrawleDescription: "Web検索にあなたのプロフィールや投稿、ページなどのコンテンツを登録(インデックス)しないよう要請します。"
|
||||||
lockedAccountInfo: "フォローを承認制にしても、投稿の公開範囲を「フォロワー」にしない限り、誰でもあなたの投稿を見られます。"
|
lockedAccountInfo: "フォローを承認制にしても、投稿の公開範囲を「フォロワー」にしない限り、誰でもあなたの投稿を見られます。"
|
||||||
alwaysMarkSensitive: "デフォルトでメディアを閲覧注意にする"
|
alwaysMarkSensitive: "デフォルトでメディアを閲覧注意にする"
|
||||||
loadRawImages: "添付画像のサムネイルをオリジナル画質にする"
|
loadRawImages: "添付画像のサムネイルをオリジナル画質にする"
|
||||||
@ -810,7 +813,7 @@ instanceSecurity: "サーバーのセキュリティー"
|
|||||||
secureModeInfo: "認証情報の無いリモートサーバーからのリクエストに応えません。"
|
secureModeInfo: "認証情報の無いリモートサーバーからのリクエストに応えません。"
|
||||||
privateMode: "非公開モード"
|
privateMode: "非公開モード"
|
||||||
privateModeInfo: "有効にすると、許可したサーバーのみからリクエストを受け付けます。"
|
privateModeInfo: "有効にすると、許可したサーバーのみからリクエストを受け付けます。"
|
||||||
allowedInstances: "許可されたサーバー"
|
allowedInstances: "許可するサーバー"
|
||||||
allowedInstancesDescription: "許可したいサーバーのホストを改行で区切って設定します。非公開モードだけで有効です。"
|
allowedInstancesDescription: "許可したいサーバーのホストを改行で区切って設定します。非公開モードだけで有効です。"
|
||||||
previewNoteText: "本文をプレビュー"
|
previewNoteText: "本文をプレビュー"
|
||||||
customCss: "カスタムCSS"
|
customCss: "カスタムCSS"
|
||||||
@ -833,7 +836,7 @@ translatedFrom: "{x}から翻訳"
|
|||||||
accountDeletionInProgress: "アカウントの削除が進行中です"
|
accountDeletionInProgress: "アカウントの削除が進行中です"
|
||||||
usernameInfo: "サーバー上であなたのアカウントを一意に識別するための名前です。アルファベット(a~z, A~Z)、数字(0~9)、およびアンダーバー(_)が使用できます。ユーザー名は後から変更できません。"
|
usernameInfo: "サーバー上であなたのアカウントを一意に識別するための名前です。アルファベット(a~z, A~Z)、数字(0~9)、およびアンダーバー(_)が使用できます。ユーザー名は後から変更できません。"
|
||||||
aiChanMode: "藍モード(クラシックUI)"
|
aiChanMode: "藍モード(クラシックUI)"
|
||||||
enterSendsMessage: "メッセージングでReturnキーを押すと、メッセージが送信されます(デフォルトはCtrl + Returnです)"
|
enterSendsMessage: "チャットでEnterキー(Returnキー)を押すと、メッセージが送信されます(オフの場合はCtrl + Enterで送信します)"
|
||||||
keepCw: "CWを維持する"
|
keepCw: "CWを維持する"
|
||||||
pubSub: "Pub/Subのアカウント"
|
pubSub: "Pub/Subのアカウント"
|
||||||
lastCommunication: "直近の通信"
|
lastCommunication: "直近の通信"
|
||||||
@ -990,6 +993,7 @@ remindMeLater: "また後で"
|
|||||||
addRe: "閲覧注意の投稿への返信で、注釈の先頭に\"re:\"を追加する"
|
addRe: "閲覧注意の投稿への返信で、注釈の先頭に\"re:\"を追加する"
|
||||||
languageForTranslation: "投稿翻訳に使用する言語"
|
languageForTranslation: "投稿翻訳に使用する言語"
|
||||||
detectPostLanguage: "投稿の言語を自動検出し、外国語の投稿に翻訳ボタンを表示する"
|
detectPostLanguage: "投稿の言語を自動検出し、外国語の投稿に翻訳ボタンを表示する"
|
||||||
|
iconSet: "アイコンのスタイル"
|
||||||
|
|
||||||
_sensitiveMediaDetection:
|
_sensitiveMediaDetection:
|
||||||
description: "機械学習を使って自動でセンシティブなメディアを検出し、モデレーションに役立てられます。サーバーの負荷が少し増えます。"
|
description: "機械学習を使って自動でセンシティブなメディアを検出し、モデレーションに役立てられます。サーバーの負荷が少し増えます。"
|
||||||
@ -1022,7 +1026,8 @@ _accountDelete:
|
|||||||
inProgress: "削除が進行中"
|
inProgress: "削除が進行中"
|
||||||
_ad:
|
_ad:
|
||||||
back: "戻る"
|
back: "戻る"
|
||||||
reduceFrequencyOfThisAd: "この広告の表示頻度を下げる"
|
adsBy: "バナーで{by}"
|
||||||
|
reduceFrequencyOfThisAd: "このバナーの表示頻度を下げる"
|
||||||
_forgotPassword:
|
_forgotPassword:
|
||||||
enterEmail: "アカウントに登録したメールアドレスを入力してください。そのアドレス宛てに、パスワードリセット用のリンクが送信されます。"
|
enterEmail: "アカウントに登録したメールアドレスを入力してください。そのアドレス宛てに、パスワードリセット用のリンクが送信されます。"
|
||||||
ifNoEmail: "メールアドレスを登録していない場合は、管理者までお問い合わせください。"
|
ifNoEmail: "メールアドレスを登録していない場合は、管理者までお問い合わせください。"
|
||||||
@ -1503,7 +1508,7 @@ _profile:
|
|||||||
youCanIncludeHashtags: "ハッシュタグを含められます。"
|
youCanIncludeHashtags: "ハッシュタグを含められます。"
|
||||||
metadata: "追加情報"
|
metadata: "追加情報"
|
||||||
metadataEdit: "追加情報を編集"
|
metadataEdit: "追加情報を編集"
|
||||||
metadataDescription: "プロフィールに表として追加情報を表示できます。{a}タグまたは{l}タグを{rel}とともに追加すると、プロフィールのリンクを確認できます。"
|
metadataDescription: "プロフィールに追加情報を表示できます。{rel}属性をつけた{a}タグや{l}タグを含むページをリンクすることで、リンクの本人確認もできます!"
|
||||||
metadataLabel: "ラベル"
|
metadataLabel: "ラベル"
|
||||||
metadataContent: "内容"
|
metadataContent: "内容"
|
||||||
changeAvatar: "アバター画像を変更"
|
changeAvatar: "アバター画像を変更"
|
||||||
@ -1951,7 +1956,7 @@ isModerator: モデレーター
|
|||||||
audio: 音声
|
audio: 音声
|
||||||
image: 画像
|
image: 画像
|
||||||
video: 動画
|
video: 動画
|
||||||
isBot: このアカウントはBotです
|
isBot: このアカウントは自動で投稿します
|
||||||
isLocked: このアカウントのフォローは承認制です
|
isLocked: このアカウントのフォローは承認制です
|
||||||
isAdmin: 管理者
|
isAdmin: 管理者
|
||||||
isPatron: Firefish 後援者
|
isPatron: Firefish 後援者
|
||||||
@ -1988,3 +1993,15 @@ emojiPackCreator: 絵文字パックの作者
|
|||||||
confirm: 確認
|
confirm: 確認
|
||||||
exportZip: ZIPをエクスポート
|
exportZip: ZIPをエクスポート
|
||||||
openServerInfo: "投稿内のサーバー名をクリックでサーバー情報を開く"
|
openServerInfo: "投稿内のサーバー名をクリックでサーバー情報を開く"
|
||||||
|
indexableDescription: MastodonやFirefishなどの検索機能に、あなたの投稿が表示されるのを許可します。
|
||||||
|
clickToShowPatterns: クリックしてトラックを表示
|
||||||
|
vibrate: 振動を有効にする
|
||||||
|
indexable: 投稿検索に登録
|
||||||
|
_iconSets:
|
||||||
|
bold: "太め"
|
||||||
|
light: "細め"
|
||||||
|
regular: "標準"
|
||||||
|
fill: "塗りつぶし"
|
||||||
|
duotone: "2色"
|
||||||
|
moreUrls: "固定するページ"
|
||||||
|
moreUrlsDescription: "左下のヘルプメニューに固定したいページを以下の形式で、改行区切りで入力してください:\n\"表示名\": https://example.com/"
|
||||||
|
@ -64,7 +64,7 @@ import: "インポート"
|
|||||||
export: "エクスポート"
|
export: "エクスポート"
|
||||||
files: "ファイル"
|
files: "ファイル"
|
||||||
download: "ダウンロード"
|
download: "ダウンロード"
|
||||||
driveFileDeleteConfirm: "ファイル「{name}」を消してしもうてええか?このファイルを添付した投稿も消えてまうで。"
|
driveFileDeleteConfirm: "ファイル「{name}」を消してええんか?添付した全部の投稿から、きれいさっぱり消えてなくなるで。"
|
||||||
unfollowConfirm: "{name}のフォローを解除してもええんか?"
|
unfollowConfirm: "{name}のフォローを解除してもええんか?"
|
||||||
exportRequested: "エクスポートしてな、ってリクエストしたけど、これ多分めっちゃ時間かかるで。エクスポート終わったら「ドライブ」に突っ込んどくで。"
|
exportRequested: "エクスポートしてな、ってリクエストしたけど、これ多分めっちゃ時間かかるで。エクスポート終わったら「ドライブ」に突っ込んどくで。"
|
||||||
importRequested: "インポートしてな、ってリクエストしたけど、これ多分めっちゃ時間かかるで。"
|
importRequested: "インポートしてな、ってリクエストしたけど、これ多分めっちゃ時間かかるで。"
|
||||||
@ -86,7 +86,7 @@ serverIsDead: "サーバーの応答がおまへん。ちーとの間待って
|
|||||||
youShouldUpgradeClient: "このページを表示するには、リロードして新しいバージョンのクライアントを使うてや。"
|
youShouldUpgradeClient: "このページを表示するには、リロードして新しいバージョンのクライアントを使うてや。"
|
||||||
enterListName: "リスト名を入れてや"
|
enterListName: "リスト名を入れてや"
|
||||||
privacy: "プライバシー"
|
privacy: "プライバシー"
|
||||||
makeFollowManuallyApprove: "自分が認めた人だけがこのアカウントをフォローできるようにする"
|
makeFollowManuallyApprove: "ワイが認めた奴だけがワイをフォローできるようにする"
|
||||||
defaultNoteVisibility: "もとからの公開範囲"
|
defaultNoteVisibility: "もとからの公開範囲"
|
||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
followRequest: "フォローを頼む"
|
followRequest: "フォローを頼む"
|
||||||
@ -246,8 +246,8 @@ uploadFromUrl: "URLアップロード"
|
|||||||
uploadFromUrlDescription: "このURLのファイルをアップロードしたいねん"
|
uploadFromUrlDescription: "このURLのファイルをアップロードしたいねん"
|
||||||
uploadFromUrlRequested: "アップロードしたい言うといたで"
|
uploadFromUrlRequested: "アップロードしたい言うといたで"
|
||||||
uploadFromUrlMayTakeTime: "アップロード終わるんにちょい時間かかるかもしれへんわ。"
|
uploadFromUrlMayTakeTime: "アップロード終わるんにちょい時間かかるかもしれへんわ。"
|
||||||
explore: "みつける"
|
explore: "みっける"
|
||||||
messageRead: "もう読んだ"
|
messageRead: "もう読まはった"
|
||||||
noMoreHistory: "これより過去の履歴はあらへんで"
|
noMoreHistory: "これより過去の履歴はあらへんで"
|
||||||
startMessaging: "チャットやるで"
|
startMessaging: "チャットやるで"
|
||||||
nUsersRead: "{n}人が読んでもうた"
|
nUsersRead: "{n}人が読んでもうた"
|
||||||
@ -317,9 +317,6 @@ dayX: "{day}日"
|
|||||||
monthX: "{month}月"
|
monthX: "{month}月"
|
||||||
yearX: "{year}年"
|
yearX: "{year}年"
|
||||||
pages: "ページ"
|
pages: "ページ"
|
||||||
integration: "連携"
|
|
||||||
connectService: "つなげるで"
|
|
||||||
disconnectService: "切るで"
|
|
||||||
enableLocalTimeline: "ローカルタイムラインを使えるようにする"
|
enableLocalTimeline: "ローカルタイムラインを使えるようにする"
|
||||||
enableGlobalTimeline: "グローバルタイムラインを使えるようにする"
|
enableGlobalTimeline: "グローバルタイムラインを使えるようにする"
|
||||||
disablingTimelinesInfo: "ここらへんのタイムラインを使えんようにしてしもても、管理者とモデレーターは使えるままになってるで、そうやなかったら不便やからな。"
|
disablingTimelinesInfo: "ここらへんのタイムラインを使えんようにしてしもても、管理者とモデレーターは使えるままになってるで、そうやなかったら不便やからな。"
|
||||||
@ -334,7 +331,7 @@ bannerUrl: "バナー画像のURL"
|
|||||||
backgroundImageUrl: "背景画像のURL"
|
backgroundImageUrl: "背景画像のURL"
|
||||||
basicInfo: "基本情報"
|
basicInfo: "基本情報"
|
||||||
pinnedUsers: "ピン留めしたユーザー"
|
pinnedUsers: "ピン留めしたユーザー"
|
||||||
pinnedUsersDescription: "「みつける」ページとかにピン留めしたいユーザーをここに書けばええんやで。他ん人との名前は改行で区切ればええんやで。"
|
pinnedUsersDescription: "「みっける」ページとかにピン留めしときたい兄ちゃんらをここに書いといたらええわ。名前は改行で区切ればええで。"
|
||||||
pinnedPages: "ピン留めページ"
|
pinnedPages: "ピン留めページ"
|
||||||
pinnedPagesDescription: "サーバーのいっちゃん上にピン留めしたいページのパスを、改行で区切って記述してな。"
|
pinnedPagesDescription: "サーバーのいっちゃん上にピン留めしたいページのパスを、改行で区切って記述してな。"
|
||||||
pinnedClipId: "ピン留めするクリップのID"
|
pinnedClipId: "ピン留めするクリップのID"
|
||||||
@ -363,7 +360,7 @@ caseSensitive: "大文字と小文字は別もんや"
|
|||||||
withReplies: "返信も入れたって"
|
withReplies: "返信も入れたって"
|
||||||
connectedTo: "次のアカウントに繋がっとるで"
|
connectedTo: "次のアカウントに繋がっとるで"
|
||||||
notesAndReplies: "投稿と返信"
|
notesAndReplies: "投稿と返信"
|
||||||
withFiles: "ファイル付いとる"
|
withFiles: "ファイル付いとるやつ"
|
||||||
silence: "サイレンス"
|
silence: "サイレンス"
|
||||||
silenceConfirm: "サイレンスしよか?"
|
silenceConfirm: "サイレンスしよか?"
|
||||||
unsilence: "サイレンスやめるで"
|
unsilence: "サイレンスやめるで"
|
||||||
@ -389,7 +386,7 @@ securityKeyName: "キーの名前"
|
|||||||
registerSecurityKey: "セキュリティキーを登録するで"
|
registerSecurityKey: "セキュリティキーを登録するで"
|
||||||
lastUsed: "最後につこうた日"
|
lastUsed: "最後につこうた日"
|
||||||
unregister: "登録やめる"
|
unregister: "登録やめる"
|
||||||
passwordLessLogin: "パスワード無くてもログインできるようにする"
|
passwordLessLogin: "パスワードなんか無うてもログインでけるようにする"
|
||||||
resetPassword: "パスワードをリセット"
|
resetPassword: "パスワードをリセット"
|
||||||
newPasswordIs: "今度のパスワードは「{password}」や"
|
newPasswordIs: "今度のパスワードは「{password}」や"
|
||||||
reduceUiAnimation: "UIの動きやアニメーションを減らす"
|
reduceUiAnimation: "UIの動きやアニメーションを減らす"
|
||||||
@ -398,8 +395,8 @@ notFound: "見つからへんね"
|
|||||||
notFoundDescription: "指定されたURLに該当するページはあらへんやった。"
|
notFoundDescription: "指定されたURLに該当するページはあらへんやった。"
|
||||||
uploadFolder: "とりあえずアップロードしたやつ置いとく所"
|
uploadFolder: "とりあえずアップロードしたやつ置いとく所"
|
||||||
cacheClear: "キャッシュをほかす"
|
cacheClear: "キャッシュをほかす"
|
||||||
markAsReadAllNotifications: "通知はもう全て読んだわっ"
|
markAsReadAllNotifications: "通知はもうぜんぶ読んだわっ"
|
||||||
markAsReadAllUnreadNotes: "投稿は全て読んだわっ"
|
markAsReadAllUnreadNotes: "投稿はぜんぶ読んだわっ"
|
||||||
markAsReadAllTalkMessages: "チャットはもうぜんぶ読んだわっ"
|
markAsReadAllTalkMessages: "チャットはもうぜんぶ読んだわっ"
|
||||||
help: "ヘルプ"
|
help: "ヘルプ"
|
||||||
inputMessageHere: "ここにメッセージ書いてや"
|
inputMessageHere: "ここにメッセージ書いてや"
|
||||||
@ -507,8 +504,8 @@ listen: "聴く"
|
|||||||
none: "なし"
|
none: "なし"
|
||||||
showInPage: "ページで表示"
|
showInPage: "ページで表示"
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
volume: "音量"
|
volume: "やかましさ"
|
||||||
masterVolume: "全体の音量"
|
masterVolume: "全体的なやかましさ"
|
||||||
details: "もっと"
|
details: "もっと"
|
||||||
chooseEmoji: "絵文字を選ぶ"
|
chooseEmoji: "絵文字を選ぶ"
|
||||||
unableToProcess: "なんか作業が止まってしまったようやね"
|
unableToProcess: "なんか作業が止まってしまったようやね"
|
||||||
@ -527,7 +524,7 @@ scratchpad: "スクラッチパッド"
|
|||||||
scratchpadDescription: "スクラッチパッドではAiScriptを色々試すことができるんや。Firefishに対して色々できるコードを書いて動かしてみたり、結果を見たりできるで。"
|
scratchpadDescription: "スクラッチパッドではAiScriptを色々試すことができるんや。Firefishに対して色々できるコードを書いて動かしてみたり、結果を見たりできるで。"
|
||||||
output: "出力"
|
output: "出力"
|
||||||
script: "スクリプト"
|
script: "スクリプト"
|
||||||
disablePagesScript: "Pagesのスクリプトを無効にしてや"
|
disablePagesScript: "ページ機能のスクリプトを無効にしてや"
|
||||||
updateRemoteUser: "リモートユーザー情報の更新してくれん?"
|
updateRemoteUser: "リモートユーザー情報の更新してくれん?"
|
||||||
deleteAllFiles: "すべてのファイルを削除"
|
deleteAllFiles: "すべてのファイルを削除"
|
||||||
deleteAllFilesConfirm: "ホンマにすべてのファイルを削除するん?消したもんはもう戻ってこんのやで?"
|
deleteAllFilesConfirm: "ホンマにすべてのファイルを削除するん?消したもんはもう戻ってこんのやで?"
|
||||||
@ -684,7 +681,7 @@ clips: "クリップ"
|
|||||||
experimentalFeatures: "実験的機能やで"
|
experimentalFeatures: "実験的機能やで"
|
||||||
developer: "開発者やで"
|
developer: "開発者やで"
|
||||||
makeExplorable: "アカウントを見つけやすくするで"
|
makeExplorable: "アカウントを見つけやすくするで"
|
||||||
makeExplorableDescription: "オフにすると、「みつける」にアカウントが載らんくなるで。"
|
makeExplorableDescription: "オフにすると、「みっける」ページに名前が載らんくなるで。"
|
||||||
showGapBetweenNotesInTimeline: "タイムライン上の投稿を離して表示するで"
|
showGapBetweenNotesInTimeline: "タイムライン上の投稿を離して表示するで"
|
||||||
duplicate: "複製"
|
duplicate: "複製"
|
||||||
left: "左"
|
left: "左"
|
||||||
@ -714,7 +711,7 @@ saveConfirm: "保存するで?"
|
|||||||
deleteConfirm: "ホンマに削除するで?"
|
deleteConfirm: "ホンマに削除するで?"
|
||||||
invalidValue: "有効な値じゃないみたいやで。"
|
invalidValue: "有効な値じゃないみたいやで。"
|
||||||
registry: "レジストリ"
|
registry: "レジストリ"
|
||||||
closeAccount: "アカウントを閉鎖する"
|
closeAccount: "このアカウントにさいならする"
|
||||||
currentVersion: "現在のバージョン"
|
currentVersion: "現在のバージョン"
|
||||||
latestVersion: "最新のバージョン"
|
latestVersion: "最新のバージョン"
|
||||||
youAreRunningUpToDateClient: "今使ってるクライアントが最新やで!"
|
youAreRunningUpToDateClient: "今使ってるクライアントが最新やで!"
|
||||||
@ -872,8 +869,8 @@ _registry:
|
|||||||
domain: "ドメイン"
|
domain: "ドメイン"
|
||||||
createKey: "キーを作る"
|
createKey: "キーを作る"
|
||||||
_aboutFirefish:
|
_aboutFirefish:
|
||||||
about: "Firefishは、ThatOneCalculatorが2022年にMisskeyをいじって作った、オープンなソースのソフトウェアや。"
|
about: "Firefishは、ThatOneCalculatorが2022年にMisskeyをいじって作った、オープンなソースのソフトウエアーや。"
|
||||||
contributors: "主な貢献者"
|
contributors: "ごっつい貢献者"
|
||||||
allContributors: "全ての貢献者"
|
allContributors: "全ての貢献者"
|
||||||
source: "ソースコード"
|
source: "ソースコード"
|
||||||
translation: "Firefishを翻訳"
|
translation: "Firefishを翻訳"
|
||||||
@ -1082,8 +1079,9 @@ _visibility:
|
|||||||
public: 公開
|
public: 公開
|
||||||
homeDescription: ローカルTLやグローバルTLには流さへん
|
homeDescription: ローカルTLやグローバルTLには流さへん
|
||||||
_profile:
|
_profile:
|
||||||
name: "名前"
|
name: "お名前"
|
||||||
username: "ユーザー名"
|
username: "ユーザー名"
|
||||||
|
youCanIncludeHashtags: ハッシュタグを書いてもええよ。
|
||||||
_exportOrImport:
|
_exportOrImport:
|
||||||
allNotes: "すべての投稿"
|
allNotes: "すべての投稿"
|
||||||
followingList: "フォロー"
|
followingList: "フォロー"
|
||||||
@ -1441,6 +1439,17 @@ _tutorial:
|
|||||||
step1_2: 使い始める前に、いくつか設定を済ませまひょ。すぐできますえ。
|
step1_2: 使い始める前に、いくつか設定を済ませまひょ。すぐできますえ。
|
||||||
step2_1: 最初に、あんさんのプロフィールを作りまひょ
|
step2_1: 最初に、あんさんのプロフィールを作りまひょ
|
||||||
step2_2: プロフィールを設定しはることで、他ん人があんさんの投稿を見たり、フォローしたりするときの助けになってます。
|
step2_2: プロフィールを設定しはることで、他ん人があんさんの投稿を見たり、フォローしたりするときの助けになってます。
|
||||||
|
step3_2: "あんさんのホームとソーシャルタイムラインは、どなたはんをフォローしはるかで決まります。ほな、いくつかアカウントをフォローしてみまひょ。\n\
|
||||||
|
プロフィールの右上にある、まあるい+ボタンをクリックしはるとフォローできますえ。"
|
||||||
|
step4_1: 投稿しとーみ
|
||||||
|
step5_1: タイムライン! 文字と写真の宝石箱や~
|
||||||
|
step5_2: うちのサーバーでは{timelines}種類のタイムラインをご用意しとります。
|
||||||
|
step4_2: 最初は{introduction}に投稿したり、シンプルに「ここは賑やかどすなぁ。ウチはそんなに喋れまへんが、どうぞよろしゅうに」などと投稿しはる方もいてます。
|
||||||
|
step5_7: グローバル{icon}タイムラインでは、接続しとるそこいらのサーバーからアレがガーッ流れてきてえらいこっちゃで。
|
||||||
|
step5_6: おすすめ{icon}タイムラインでは、うちの管理人がばりおすすめしとるサーバーの投稿を表示させとうよ。
|
||||||
|
step5_5: ソーシャル{icon}タイムラインでは、ホームタイムラインとローカルタイムラインの投稿が両方見られてホンマお得やわぁ。
|
||||||
|
step5_3: ホーム{icon}タイムラインでは、あんたはんがフォローしてはる兄ちゃんらの投稿が見られまんねん。
|
||||||
|
step5_4: ローカル{icon}タイムラインでは、このサーバーにおる人らの投稿を見られますわ。
|
||||||
_postForm:
|
_postForm:
|
||||||
_placeholders:
|
_placeholders:
|
||||||
b: なんかおましたか?
|
b: なんかおましたか?
|
||||||
@ -1449,7 +1458,7 @@ _postForm:
|
|||||||
d: なんや言いたいんちゃいますか?
|
d: なんや言いたいんちゃいますか?
|
||||||
f: あんさん書くんを待っとるんどす...
|
f: あんさん書くんを待っとるんどす...
|
||||||
a: いまなにしとん?
|
a: いまなにしとん?
|
||||||
flagSpeakAsCat: 猫弁で話す
|
flagSpeakAsCat: 猫弁で喋る
|
||||||
flagSpeakAsCatDescription: オンにすると、ワレの投稿の「な」を「にゃ」に変換したるで。
|
flagSpeakAsCatDescription: オンにすると、ワレの投稿の「な」を「にゃ」に変換したるで。
|
||||||
welcomeBackWithName: おおきに、{name}はん
|
welcomeBackWithName: おおきに、{name}はん
|
||||||
migration: アカウントの引っ越し
|
migration: アカウントの引っ越し
|
||||||
|
@ -36,7 +36,6 @@ selectList: "Fren tabdart"
|
|||||||
youHaveNoLists: "Ulac ɣur-k·m ula d yiwet n tabdart"
|
youHaveNoLists: "Ulac ɣur-k·m ula d yiwet n tabdart"
|
||||||
security: "Taɣellist"
|
security: "Taɣellist"
|
||||||
remove: "Kkes"
|
remove: "Kkes"
|
||||||
connectService: "Qqen"
|
|
||||||
userList: "Tibdarin"
|
userList: "Tibdarin"
|
||||||
securityKey: "Tasarutt n tɣellist"
|
securityKey: "Tasarutt n tɣellist"
|
||||||
securityKeyName: "Isem n tsarutt"
|
securityKeyName: "Isem n tsarutt"
|
||||||
|
@ -323,9 +323,6 @@ dayX: "{day}일"
|
|||||||
monthX: "{month}월"
|
monthX: "{month}월"
|
||||||
yearX: "{year}년"
|
yearX: "{year}년"
|
||||||
pages: "페이지"
|
pages: "페이지"
|
||||||
integration: "연동"
|
|
||||||
connectService: "계정 연동"
|
|
||||||
disconnectService: "계정 연동 해제"
|
|
||||||
enableLocalTimeline: "로컬 타임라인 활성화"
|
enableLocalTimeline: "로컬 타임라인 활성화"
|
||||||
enableGlobalTimeline: "글로벌 타임라인 활성화"
|
enableGlobalTimeline: "글로벌 타임라인 활성화"
|
||||||
disablingTimelinesInfo: "특정 타임라인을 비활성화하더라도 관리자 및 모더레이터는 계속 사용할 수 있습니다."
|
disablingTimelinesInfo: "특정 타임라인을 비활성화하더라도 관리자 및 모더레이터는 계속 사용할 수 있습니다."
|
||||||
|
@ -36,11 +36,11 @@ save: "Opslaan"
|
|||||||
users: "Gebruikers"
|
users: "Gebruikers"
|
||||||
addUser: "Toevoegen gebruiker"
|
addUser: "Toevoegen gebruiker"
|
||||||
favorite: "Favorieten"
|
favorite: "Favorieten"
|
||||||
favorites: "Toevoegen aan favorieten"
|
favorites: "Favorieten"
|
||||||
unfavorite: "Verwijderen uit favorieten"
|
unfavorite: "Verwijderen uit favorieten"
|
||||||
favorited: "Toegevoegd aan favorieten."
|
favorited: "Toegevoegd aan favorieten."
|
||||||
alreadyFavorited: "Al toegevoegd aan favorieten"
|
alreadyFavorited: "Al toegevoegd aan favorieten"
|
||||||
cantFavorite: "Kon niet toevoegen aan favorieten"
|
cantFavorite: "Kon niet toevoegen aan favorieten."
|
||||||
pin: "Vastmaken aan profielpagina"
|
pin: "Vastmaken aan profielpagina"
|
||||||
unpin: "Losmaken van profielpagina"
|
unpin: "Losmaken van profielpagina"
|
||||||
copyContent: "Kopiëren inhoud"
|
copyContent: "Kopiëren inhoud"
|
||||||
@ -302,7 +302,7 @@ nsfw: "NSFW"
|
|||||||
whenServerDisconnected: "Wanneer de verbinding met de server wordt onderbroken"
|
whenServerDisconnected: "Wanneer de verbinding met de server wordt onderbroken"
|
||||||
disconnectedFromServer: "Verbinding met de server onderbroken."
|
disconnectedFromServer: "Verbinding met de server onderbroken."
|
||||||
inMb: "in megabytes"
|
inMb: "in megabytes"
|
||||||
pinnedNotes: "Vastgemaakte notitie"
|
pinnedNotes: "Vastgemaakte posts"
|
||||||
userList: "Lijsten"
|
userList: "Lijsten"
|
||||||
aboutFirefish: "Over Firefish"
|
aboutFirefish: "Over Firefish"
|
||||||
administrator: "Beheerder"
|
administrator: "Beheerder"
|
||||||
@ -412,7 +412,7 @@ emoji: Emoji
|
|||||||
selectList: Selecteer een lijst
|
selectList: Selecteer een lijst
|
||||||
selectAntenna: Selecteer een antenne
|
selectAntenna: Selecteer een antenne
|
||||||
deleted: Verwijderd
|
deleted: Verwijderd
|
||||||
editNote: Bewerk notitie
|
editNote: Bewerk post
|
||||||
edited: 'Bewerkt om {date} {time}'
|
edited: 'Bewerkt om {date} {time}'
|
||||||
emojis: Emojis
|
emojis: Emojis
|
||||||
emojiName: Emoji naam
|
emojiName: Emoji naam
|
||||||
@ -483,8 +483,6 @@ accept: Accepteren
|
|||||||
reject: Afwijzen
|
reject: Afwijzen
|
||||||
normal: Normaal
|
normal: Normaal
|
||||||
pages: Pagina's
|
pages: Pagina's
|
||||||
integration: Integraties
|
|
||||||
connectService: Koppelen
|
|
||||||
monthX: '{month}'
|
monthX: '{month}'
|
||||||
yearX: '{year}'
|
yearX: '{year}'
|
||||||
instanceName: Servernaam
|
instanceName: Servernaam
|
||||||
@ -492,7 +490,6 @@ instanceDescription: Server omschrijving
|
|||||||
maintainerName: Onderhouder
|
maintainerName: Onderhouder
|
||||||
maintainerEmail: Onderhouder email
|
maintainerEmail: Onderhouder email
|
||||||
tosUrl: Algemene Voorwaarden URL
|
tosUrl: Algemene Voorwaarden URL
|
||||||
disconnectService: Ontkoppelen
|
|
||||||
unread: Ongelezen
|
unread: Ongelezen
|
||||||
manageGroups: Beheer groepen
|
manageGroups: Beheer groepen
|
||||||
subscribePushNotification: Pushmeldingen inschakelen
|
subscribePushNotification: Pushmeldingen inschakelen
|
||||||
@ -682,3 +679,27 @@ serverLogs: Server logboek
|
|||||||
deleteAll: Verwijder alles
|
deleteAll: Verwijder alles
|
||||||
showFixedPostForm: Toon het post formulier bovenaan de tijdlijn
|
showFixedPostForm: Toon het post formulier bovenaan de tijdlijn
|
||||||
newNoteRecived: Er zijn nieuwe posts
|
newNoteRecived: Er zijn nieuwe posts
|
||||||
|
pinnedUsersDescription: Lijst gebruikersnamen gescheiden door regeleinden om vast
|
||||||
|
te pinnen in het tabblad "Verkennen".
|
||||||
|
silencedInstancesDescription: Geef de hostnames op van de servers die je het zwijgen
|
||||||
|
wilt opleggen. Accounts op de vermelde servers worden als "Stil" behandeld, kunnen
|
||||||
|
alleen volgverzoeken doen en kunnen geen lokale accounts vermelden als ze niet worden
|
||||||
|
gevolgd. Dit heeft geen invloed op de geblokkeerde servers.
|
||||||
|
searchPlaceholder: Doorzoek Firefish
|
||||||
|
pinnedPagesDescription: Voer de paden in van de pagina's die je aan de bovenste pagina
|
||||||
|
van deze server wilt vastmaken, gescheiden door regeleinden.
|
||||||
|
_permissions:
|
||||||
|
"read:favorites": Lijst van uw favorieten
|
||||||
|
"write:favorites": Beheer uw favorieten
|
||||||
|
clipsDesc: Paperclips zijn deelbare gebundelde favorieten. Je kunt paperclips maken
|
||||||
|
vanuit het menu van individuele posts.
|
||||||
|
selectChannel: Selecteer een kanaal
|
||||||
|
removeReaction: Uw reactie verwijderen
|
||||||
|
antennasDesc: "Antennes geven nieuwe berichten weer die voldoen aan de criteria die
|
||||||
|
je hebt ingesteld!\nZe zijn toegankelijk via de pagina Tijdlijnen."
|
||||||
|
pinnedClipId: ID van de paperclip om vast te pinnen
|
||||||
|
hiddenTagsDescription: 'Vermeld de hashtags (zonder #) van de hashtags die je wilt
|
||||||
|
verbergen voor trending en verkennen. Verborgen hashtags zijn nog steeds op andere
|
||||||
|
manieren te ontdekken.'
|
||||||
|
listsDesc: Met lijsten kun je tijdlijnen aanmaken met gespecificeerde gebruikers.
|
||||||
|
Ze zijn toegankelijk via de pagina Tijdlijnen.
|
||||||
|
@ -225,8 +225,6 @@ instanceDescription: Tjenerbeskrivelse
|
|||||||
maintainerName: Administrator
|
maintainerName: Administrator
|
||||||
maintainerEmail: Administrator-epost
|
maintainerEmail: Administrator-epost
|
||||||
monthX: '{month}'
|
monthX: '{month}'
|
||||||
connectService: Koble til
|
|
||||||
disconnectService: Koble fra
|
|
||||||
enableLocalTimeline: Aktiver lokal tidslinje
|
enableLocalTimeline: Aktiver lokal tidslinje
|
||||||
enableRegistration: Tillat registrering av nye brukere
|
enableRegistration: Tillat registrering av nye brukere
|
||||||
invite: Inviter
|
invite: Inviter
|
||||||
@ -449,7 +447,6 @@ watch: Følg med på
|
|||||||
thisMonth: Måned
|
thisMonth: Måned
|
||||||
today: I dag
|
today: I dag
|
||||||
dayX: '{day}'
|
dayX: '{day}'
|
||||||
integration: Integrasjoner
|
|
||||||
yearX: '{year}'
|
yearX: '{year}'
|
||||||
pages: Sider
|
pages: Sider
|
||||||
enableRecaptcha: Slå på reCAPTCHA
|
enableRecaptcha: Slå på reCAPTCHA
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
_lang_: "Polski"
|
_lang_: "Polski"
|
||||||
headlineFirefish: "Otwartoźródłowa, zdecentralizowana sieć społecznościowa, która zawsze
|
headlineFirefish: "Otwartoźródłowa, zdecentralizowana sieć społecznościowa, która
|
||||||
będzie darmowa! 🚀"
|
zawsze będzie darmowa! 🚀"
|
||||||
introFirefish: "Hej! Firefish to otwartoźródłowa oraz zdecentralizowana sieć społecznościowa,
|
introFirefish: "Hej! Firefish to otwartoźródłowa oraz zdecentralizowana sieć społecznościowa,
|
||||||
która zawsze będzie darmowa! 🚀"
|
która zawsze będzie darmowa! 🚀"
|
||||||
monthAndDay: "{month}-{day}"
|
monthAndDay: "{month}-{day}"
|
||||||
@ -94,7 +94,7 @@ privacy: "Prywatność"
|
|||||||
makeFollowManuallyApprove: "Prośby o możliwość obserwacji wymagają zatwierdzenia"
|
makeFollowManuallyApprove: "Prośby o możliwość obserwacji wymagają zatwierdzenia"
|
||||||
defaultNoteVisibility: "Domyślna widoczność"
|
defaultNoteVisibility: "Domyślna widoczność"
|
||||||
follow: "Obserwuj"
|
follow: "Obserwuj"
|
||||||
followRequest: "Poproś o możliwość obserwacji"
|
followRequest: "Poproś o możliwość obserwowania"
|
||||||
followRequests: "Prośby o możliwość obserwacji"
|
followRequests: "Prośby o możliwość obserwacji"
|
||||||
unfollow: "Przestań obserwować"
|
unfollow: "Przestań obserwować"
|
||||||
followRequestPending: "Oczekująca prośba o możliwość obserwacji"
|
followRequestPending: "Oczekująca prośba o możliwość obserwacji"
|
||||||
@ -147,9 +147,9 @@ cacheRemoteFilesDescription: "Gdy ta opcja jest wyłączona, zdalne pliki są ł
|
|||||||
bezpośrednio ze zdalnego serwera. Wyłączenie tej opcji zmniejszy użycie powierzchni
|
bezpośrednio ze zdalnego serwera. Wyłączenie tej opcji zmniejszy użycie powierzchni
|
||||||
dyskowej, ale zwiększy transfer, ponieważ miniaturki nie będą generowane."
|
dyskowej, ale zwiększy transfer, ponieważ miniaturki nie będą generowane."
|
||||||
flagAsBot: "To konto jest botem"
|
flagAsBot: "To konto jest botem"
|
||||||
flagAsBotDescription: "Jeżeli ten kanał jest kontrolowany przez jakiś program, ustaw
|
flagAsBotDescription: "Ustaw tę opcję ten jeśli kanał kontrolowany jest przez jakiś
|
||||||
tę opcję. Jeżeli włączona, będzie działać jako flaga informująca innych programistów,
|
program. Po włączeniu, będzie działać jako flaga informująca innych programistów,
|
||||||
aby zapobiegać nieskończonej interakcji z różnymi botami i dostosowywać wewnętrzne
|
aby zapobiegać nieskończonej interakcji pomiędzy innymi botami i dostosowywać wewnętrzne
|
||||||
systemy Firefish, traktując konto jako bota."
|
systemy Firefish, traktując konto jako bota."
|
||||||
flagAsCat: "Czy jesteś kotem? 😺"
|
flagAsCat: "Czy jesteś kotem? 😺"
|
||||||
flagAsCatDescription: "Dostaniesz kocie uszka, oraz będziesz mówić jak kot!"
|
flagAsCatDescription: "Dostaniesz kocie uszka, oraz będziesz mówić jak kot!"
|
||||||
@ -158,7 +158,7 @@ autoAcceptFollowed: "Automatycznie przyjmuj prośby o możliwość obserwacji od
|
|||||||
których obserwujesz"
|
których obserwujesz"
|
||||||
addAccount: "Dodaj konto"
|
addAccount: "Dodaj konto"
|
||||||
loginFailed: "Nie udało się zalogować"
|
loginFailed: "Nie udało się zalogować"
|
||||||
showOnRemote: "Zobacz na zdalnym serwerze"
|
showOnRemote: "Zobacz oryginalną treść"
|
||||||
general: "Ogólne"
|
general: "Ogólne"
|
||||||
wallpaper: "Tapeta"
|
wallpaper: "Tapeta"
|
||||||
setWallpaper: "Ustaw tapetę"
|
setWallpaper: "Ustaw tapetę"
|
||||||
@ -211,7 +211,7 @@ noUsers: "Brak użytkowników"
|
|||||||
editProfile: "Edytuj profil"
|
editProfile: "Edytuj profil"
|
||||||
noteDeleteConfirm: "Czy na pewno chcesz usunąć ten wpis?"
|
noteDeleteConfirm: "Czy na pewno chcesz usunąć ten wpis?"
|
||||||
pinLimitExceeded: "Nie możesz przypiąć więcej wpisów"
|
pinLimitExceeded: "Nie możesz przypiąć więcej wpisów"
|
||||||
intro: "Zakończono instalację Firefish! Utwórz konto administratora."
|
intro: "Zakończono instalację Firefish! Utwórz teraz konto administratora."
|
||||||
done: "Gotowe"
|
done: "Gotowe"
|
||||||
processing: "Przetwarzanie"
|
processing: "Przetwarzanie"
|
||||||
preview: "Podgląd"
|
preview: "Podgląd"
|
||||||
@ -299,11 +299,11 @@ emptyDrive: "Dysk jest pusty"
|
|||||||
emptyFolder: "Ten katalog jest pusty"
|
emptyFolder: "Ten katalog jest pusty"
|
||||||
unableToDelete: "Nie można usunąć"
|
unableToDelete: "Nie można usunąć"
|
||||||
inputNewFileName: "Wprowadź nową nazwę pliku"
|
inputNewFileName: "Wprowadź nową nazwę pliku"
|
||||||
inputNewDescription: "Proszę wpisać nowy napis"
|
inputNewDescription: "Podaj nowy napis"
|
||||||
inputNewFolderName: "Wprowadź nową nazwę katalogu"
|
inputNewFolderName: "Wprowadź nową nazwę katalogu"
|
||||||
circularReferenceFolder: "Katalog docelowy jest podkatalogiem katalogu, który chcesz
|
circularReferenceFolder: "Katalog docelowy jest podkatalogiem katalogu, który chcesz
|
||||||
przenieść."
|
przenieść."
|
||||||
hasChildFilesOrFolders: "Ponieważ ten katalog nie jest pusty, nie może być usunięty."
|
hasChildFilesOrFolders: "Katalog nie może być usunięty ponieważ nie jest pusty."
|
||||||
copyUrl: "Skopiuj adres URL"
|
copyUrl: "Skopiuj adres URL"
|
||||||
rename: "Zmień nazwę"
|
rename: "Zmień nazwę"
|
||||||
avatar: "Awatar"
|
avatar: "Awatar"
|
||||||
@ -331,9 +331,6 @@ dayX: "{day}"
|
|||||||
monthX: "{month}"
|
monthX: "{month}"
|
||||||
yearX: "{year}"
|
yearX: "{year}"
|
||||||
pages: "Strony"
|
pages: "Strony"
|
||||||
integration: "Integracje"
|
|
||||||
connectService: "Połącz"
|
|
||||||
disconnectService: "Rozłącz"
|
|
||||||
enableLocalTimeline: "Włącz lokalną oś czasu"
|
enableLocalTimeline: "Włącz lokalną oś czasu"
|
||||||
enableGlobalTimeline: "Włącz globalną oś czasu"
|
enableGlobalTimeline: "Włącz globalną oś czasu"
|
||||||
disablingTimelinesInfo: "Administratorzy i moderatorzy będą zawsze mieć dostęp do
|
disablingTimelinesInfo: "Administratorzy i moderatorzy będą zawsze mieć dostęp do
|
||||||
@ -581,8 +578,8 @@ disablePlayer: "Zamknij odtwarzacz wideo"
|
|||||||
expandTweet: "Rozwiń tweet"
|
expandTweet: "Rozwiń tweet"
|
||||||
themeEditor: "Edytor motywu"
|
themeEditor: "Edytor motywu"
|
||||||
description: "Opis"
|
description: "Opis"
|
||||||
describeFile: "Dodaj podpis"
|
describeFile: "Dodaj opis"
|
||||||
enterFileDescription: "Wprowadź napis"
|
enterFileDescription: "Wprowadź opis"
|
||||||
author: "Autor"
|
author: "Autor"
|
||||||
leaveConfirm: "Są niezapisane zmiany. Czy chcesz je odrzucić?"
|
leaveConfirm: "Są niezapisane zmiany. Czy chcesz je odrzucić?"
|
||||||
manage: "Zarządzanie"
|
manage: "Zarządzanie"
|
||||||
@ -619,7 +616,7 @@ emptyToDisableSmtpAuth: "Pozostaw adres e-mail i hasło puste, aby wyłączyć w
|
|||||||
SMTP"
|
SMTP"
|
||||||
smtpSecureInfo: "Wyłącz, jeżeli używasz STARTTLS"
|
smtpSecureInfo: "Wyłącz, jeżeli używasz STARTTLS"
|
||||||
testEmail: "Przetestuj dostarczanie wiadomości e-mail"
|
testEmail: "Przetestuj dostarczanie wiadomości e-mail"
|
||||||
wordMute: "Wyciszenie słowa"
|
wordMute: "Wyciszenie słów i języków"
|
||||||
instanceMute: "Wyciszenie serwera"
|
instanceMute: "Wyciszenie serwera"
|
||||||
userSaysSomething: "{name} powiedział* coś"
|
userSaysSomething: "{name} powiedział* coś"
|
||||||
makeActive: "Aktywuj"
|
makeActive: "Aktywuj"
|
||||||
@ -694,8 +691,7 @@ no: "Nie"
|
|||||||
driveFilesCount: "Liczba plików na dysku"
|
driveFilesCount: "Liczba plików na dysku"
|
||||||
driveUsage: "Użycie przestrzeni dyskowej"
|
driveUsage: "Użycie przestrzeni dyskowej"
|
||||||
noCrawle: "Odrzuć indeksowanie przez crawlery"
|
noCrawle: "Odrzuć indeksowanie przez crawlery"
|
||||||
noCrawleDescription: "Proś wyszukiwarki internetowe, aby nie indeksowały Twojego profilu,
|
noCrawleDescription: "Proś wyszukiwarki internetowe, aby nie indeksowały Twoich treści."
|
||||||
wpisów, stron itd."
|
|
||||||
lockedAccountInfo: "Dopóki nie ustawisz widoczności wpisu na \"Obserwujący\", twoje
|
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."
|
wpisy będą mogli widzieć wszyscy, nawet jeśli ustawisz manualne zatwierdzanie obserwujących."
|
||||||
alwaysMarkSensitive: "Oznacz domyślnie jako NSFW"
|
alwaysMarkSensitive: "Oznacz domyślnie jako NSFW"
|
||||||
@ -762,7 +758,7 @@ useReactionPickerForContextMenu: "Otwórz wybornik reakcji prawym kliknięciem"
|
|||||||
typingUsers: "{users} pisze/ą"
|
typingUsers: "{users} pisze/ą"
|
||||||
jumpToSpecifiedDate: "Przejdź do określonej daty"
|
jumpToSpecifiedDate: "Przejdź do określonej daty"
|
||||||
showingPastTimeline: "Obecnie wyświetla starą oś czasu"
|
showingPastTimeline: "Obecnie wyświetla starą oś czasu"
|
||||||
clear: "Wróć"
|
clear: "Wyczyść"
|
||||||
markAllAsRead: "Oznacz wszystkie jako przeczytane"
|
markAllAsRead: "Oznacz wszystkie jako przeczytane"
|
||||||
goBack: "Wróć"
|
goBack: "Wróć"
|
||||||
unlikeConfirm: "Na pewno chcesz usunąć polubienie?"
|
unlikeConfirm: "Na pewno chcesz usunąć polubienie?"
|
||||||
@ -803,7 +799,7 @@ gallery: "Galeria"
|
|||||||
recentPosts: "Ostatnie wpisy"
|
recentPosts: "Ostatnie wpisy"
|
||||||
popularPosts: "Popularne wpisy"
|
popularPosts: "Popularne wpisy"
|
||||||
shareWithNote: "Udostępnij z wpisem"
|
shareWithNote: "Udostępnij z wpisem"
|
||||||
ads: "Reklamy"
|
ads: "Banery"
|
||||||
expiration: "Ankieta kończy się"
|
expiration: "Ankieta kończy się"
|
||||||
memo: "Notatki"
|
memo: "Notatki"
|
||||||
priority: "Priorytet"
|
priority: "Priorytet"
|
||||||
@ -855,7 +851,7 @@ ffVisibility: "Widoczność obserwowanych/obserwujących"
|
|||||||
ffVisibilityDescription: "Pozwala skonfigurować, kto może zobaczyć, kogo obserwujesz
|
ffVisibilityDescription: "Pozwala skonfigurować, kto może zobaczyć, kogo obserwujesz
|
||||||
i kto Cię obserwuje."
|
i kto Cię obserwuje."
|
||||||
continueThread: "Kontynuuj wątek"
|
continueThread: "Kontynuuj wątek"
|
||||||
deleteAccountConfirm: "Spowoduje to nieodwracalne usunięcie Twojego konta. Kontynuować?"
|
deleteAccountConfirm: "Spowoduje to nieodwracalne usunięcie tego konta. Kontynuować?"
|
||||||
incorrectPassword: "Nieprawidłowe hasło."
|
incorrectPassword: "Nieprawidłowe hasło."
|
||||||
voteConfirm: "Potwierdzić swój głos na \"{choice}\"?"
|
voteConfirm: "Potwierdzić swój głos na \"{choice}\"?"
|
||||||
hide: "Ukryj"
|
hide: "Ukryj"
|
||||||
@ -1004,8 +1000,8 @@ _nsfw:
|
|||||||
force: "Ukrywaj wszystkie media"
|
force: "Ukrywaj wszystkie media"
|
||||||
_mfm:
|
_mfm:
|
||||||
cheatSheet: "Ściąga MFM"
|
cheatSheet: "Ściąga MFM"
|
||||||
intro: "MFM jest językiem składniowym używanym przez m.in. Firefish, forki *key (w
|
intro: "MFM jest językiem składniowym używanym przez m.in. Firefish, forki *key
|
||||||
tym Firefish), oraz Akkomę, który może być użyty w wielu miejscach. Tu znajdziesz
|
(w tym Firefish), oraz Akkomę, który może być użyty w wielu miejscach. Tu znajdziesz
|
||||||
listę wszystkich możliwych elementów składni MFM."
|
listę wszystkich możliwych elementów składni MFM."
|
||||||
dummy: "Firefish rozszerza świat Fediwersum"
|
dummy: "Firefish rozszerza świat Fediwersum"
|
||||||
mention: "Wspomnij"
|
mention: "Wspomnij"
|
||||||
@ -1253,7 +1249,7 @@ _tutorial:
|
|||||||
innej połączonej instancji."
|
innej połączonej instancji."
|
||||||
step6_1: "Więc, czym to jest to miejsce?"
|
step6_1: "Więc, czym to jest to miejsce?"
|
||||||
step6_2: "Cóż, nie dołączył*ś po prostu do Firefish. Dołączył*ś do portalu do Fediverse,
|
step6_2: "Cóż, nie dołączył*ś po prostu do Firefish. Dołączył*ś do portalu do Fediverse,
|
||||||
połączonej sieci tysięcy serwerów, zwanych instancjami."
|
sieci tysięcy połączonych ze sobą serwerów, zwanych instancjami."
|
||||||
step6_3: "Każdy serwer działa w inny sposób, i nie wszystkie serwery używają Firefish.
|
step6_3: "Każdy serwer działa w inny sposób, i nie wszystkie serwery używają Firefish.
|
||||||
Ten jednak używa! Jest to trochę skomplikowane, ale w krótkim czasie załapiesz
|
Ten jednak używa! Jest to trochę skomplikowane, ale w krótkim czasie załapiesz
|
||||||
o co chodzi."
|
o co chodzi."
|
||||||
@ -1819,8 +1815,8 @@ instanceSecurity: Bezpieczeństwo serwera
|
|||||||
privateMode: Tryb prywatny
|
privateMode: Tryb prywatny
|
||||||
allowedInstances: Dopuszczone serwery
|
allowedInstances: Dopuszczone serwery
|
||||||
recommended: Polecane
|
recommended: Polecane
|
||||||
allowedInstancesDescription: Hosty serwerów, które mają być dopuszczone do federacji,
|
allowedInstancesDescription: Hosty serwerów, które mają być dopuszczone do federacji.
|
||||||
każdy oddzielony nowym wierszem (dotyczy tylko trybu prywatnego).
|
Każdy oddzielony nowym wierszem (dotyczy tylko trybu prywatnego).
|
||||||
seperateRenoteQuote: Oddziel przyciski podbicia i cytowania
|
seperateRenoteQuote: Oddziel przyciski podbicia i cytowania
|
||||||
refreshInterval: 'Częstotliwość aktualizacji '
|
refreshInterval: 'Częstotliwość aktualizacji '
|
||||||
slow: Wolna
|
slow: Wolna
|
||||||
@ -1919,14 +1915,14 @@ sendErrorReportsDescription: "Gdy ta opcja jest włączona, szczegółowe inform
|
|||||||
błędach będą udostępnianie z Firefish gdy wystąpi problem, pomagając w ulepszaniu
|
błędach będą udostępnianie z Firefish gdy wystąpi problem, pomagając w ulepszaniu
|
||||||
Firefish.\nZawrze to informacje takie jak wersja twojego systemu operacyjnego, przeglądarki,
|
Firefish.\nZawrze to informacje takie jak wersja twojego systemu operacyjnego, przeglądarki,
|
||||||
Twoja aktywność na Firefish itd."
|
Twoja aktywność na Firefish itd."
|
||||||
privateModeInfo: Gdy ta opcja jest włączona, tylko serwery z białej listy mogą federować
|
privateModeInfo: Gdy ta opcja jest włączona, tylko serwery z listy serwerów dozwolonych
|
||||||
się z twoim serwerem. Wszystkie posty będą ukryte publicznie.
|
mogą federować się z twoim serwerem. Żadne posty nie będą publicznie dostępne.
|
||||||
oneHour: Godzina
|
oneHour: Godzina
|
||||||
oneDay: Dzień
|
oneDay: Dzień
|
||||||
oneWeek: Tydzień
|
oneWeek: Tydzień
|
||||||
recommendedInstances: Polecane serwery
|
recommendedInstances: Polecane serwery
|
||||||
recommendedInstancesDescription: Polecane serwery, mające pojawić się w odpowiedniej
|
recommendedInstancesDescription: Polecane serwery, mające pojawić się w odpowiedniej
|
||||||
osi czasu, oddzielane nowymi liniami. NIE dodawaj “https://”, TYLKO samą domenę.
|
osi czasu, oddzielane nowymi liniami.
|
||||||
rateLimitExceeded: Przekroczono ratelimit
|
rateLimitExceeded: Przekroczono ratelimit
|
||||||
cropImage: Kadruj zdjęcie
|
cropImage: Kadruj zdjęcie
|
||||||
cropImageAsk: Czy chcesz skadrować to zdjęcie?
|
cropImageAsk: Czy chcesz skadrować to zdjęcie?
|
||||||
@ -1951,7 +1947,7 @@ activeEmailValidationDescription: Włącza ściślejszą walidację adresów e-m
|
|||||||
obejmuje sprawdzanie adresów jednorazowych oraz tego, czy rzeczywiście można się
|
obejmuje sprawdzanie adresów jednorazowych oraz tego, czy rzeczywiście można się
|
||||||
z nim komunikować. Jeśli wyłączone, walidowany jest tylko format wiadomości e-mail.
|
z nim komunikować. Jeśli wyłączone, walidowany jest tylko format wiadomości e-mail.
|
||||||
shuffle: Losuj
|
shuffle: Losuj
|
||||||
showAds: Pokazuj reklamy
|
showAds: Pokazuj banery
|
||||||
enterSendsMessage: Wciśnij Enter w komunikatorze, by wysłać wiadomość (domyślnie –
|
enterSendsMessage: Wciśnij Enter w komunikatorze, by wysłać wiadomość (domyślnie –
|
||||||
Ctrl + Enter)
|
Ctrl + Enter)
|
||||||
adminCustomCssWarn: To ustawienie powinno być używane tylko pod warunkiem, że wiesz
|
adminCustomCssWarn: To ustawienie powinno być używane tylko pod warunkiem, że wiesz
|
||||||
@ -2015,7 +2011,7 @@ silencedInstancesDescription: Wypisz nazwy hostów serwerów, które chcesz wyci
|
|||||||
cannotUploadBecauseExceedsFileSizeLimit: Ten plik nie mógł być przesłany, ponieważ
|
cannotUploadBecauseExceedsFileSizeLimit: Ten plik nie mógł być przesłany, ponieważ
|
||||||
jego wielkość przekracza dozwolony limit.
|
jego wielkość przekracza dozwolony limit.
|
||||||
sendModMail: Wyślij Powiadomienie Moderacyjne
|
sendModMail: Wyślij Powiadomienie Moderacyjne
|
||||||
searchPlaceholder: Szukaj Firefish
|
searchPlaceholder: Szukaj w Firefish
|
||||||
jumpToPrevious: Przejdź do poprzedniej sekcji
|
jumpToPrevious: Przejdź do poprzedniej sekcji
|
||||||
listsDesc: Listy umożliwiają tworzenie osi czasu z określonymi użytkownikami. Dostęp
|
listsDesc: Listy umożliwiają tworzenie osi czasu z określonymi użytkownikami. Dostęp
|
||||||
do nich można uzyskać na stronie osi czasu.
|
do nich można uzyskać na stronie osi czasu.
|
||||||
@ -2031,3 +2027,15 @@ newer: nowsze
|
|||||||
older: starsze
|
older: starsze
|
||||||
cw: Ostrzeżenie zawartości
|
cw: Ostrzeżenie zawartości
|
||||||
removeReaction: Usuń reakcję
|
removeReaction: Usuń reakcję
|
||||||
|
reactions: Reakcje
|
||||||
|
clipsDesc: Spinki to skategoryzowane zakładki, które można udostępniać. Możesz utworzyć
|
||||||
|
spinkę dla każdego wpisu w menu wpisu.
|
||||||
|
swipeOnMobile: Pozwalaj na przeciąganie pomiędzy stronami
|
||||||
|
image: Obrazek
|
||||||
|
xl: XL
|
||||||
|
replies: Odpowiedzi
|
||||||
|
video: Film
|
||||||
|
quotes: Cytaty
|
||||||
|
clickToShowPatterns: Kliknij aby pokazać wzory modułów
|
||||||
|
renotes: Boosty
|
||||||
|
audio: Dźwięk
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
_lang_: "Português"
|
_lang_: "Português (Portugal)"
|
||||||
headlineFirefish: "Uma rede ligada por notas"
|
headlineFirefish: "Uma rede ligada por notas"
|
||||||
introFirefish: "Bem-vindo! Firefish é um serviço de microblogue descentralizado de
|
introFirefish: "Bem-vindo! Firefish é um serviço de microblogue descentralizado de
|
||||||
código aberto, gratuito para sempre! 🚀"
|
código aberto, gratuito para sempre! 🚀"
|
||||||
@ -120,6 +120,7 @@ rememberNoteVisibility: "Lembrar das configurações de visibilidade de notas"
|
|||||||
attachCancel: "Remover anexo"
|
attachCancel: "Remover anexo"
|
||||||
markAsSensitive: "Marcar como sensível"
|
markAsSensitive: "Marcar como sensível"
|
||||||
unmarkAsSensitive: "Desmarcar como sensível"
|
unmarkAsSensitive: "Desmarcar como sensível"
|
||||||
|
clickToShowPatterns: "Clique para mostrar os padrões do módulo"
|
||||||
enterFileName: "Digite o nome do ficheiro"
|
enterFileName: "Digite o nome do ficheiro"
|
||||||
mute: "Silenciar"
|
mute: "Silenciar"
|
||||||
unmute: "Dessilenciar"
|
unmute: "Dessilenciar"
|
||||||
@ -338,9 +339,6 @@ dayX: " Dia {day}"
|
|||||||
monthX: "mês de {month}"
|
monthX: "mês de {month}"
|
||||||
yearX: "Ano {year}"
|
yearX: "Ano {year}"
|
||||||
pages: "Páginas"
|
pages: "Páginas"
|
||||||
integration: "Integração"
|
|
||||||
connectService: "Conectar"
|
|
||||||
disconnectService: "Desconectar"
|
|
||||||
enableLocalTimeline: "Ativar linha do tempo local"
|
enableLocalTimeline: "Ativar linha do tempo local"
|
||||||
enableGlobalTimeline: "Ativar linha do tempo global"
|
enableGlobalTimeline: "Ativar linha do tempo global"
|
||||||
disablingTimelinesInfo: "Se você desabilitar essas linhas do tempo, administradores
|
disablingTimelinesInfo: "Se você desabilitar essas linhas do tempo, administradores
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
_lang_: Português (Brasil)
|
||||||
username: Nome de usuário
|
username: Nome de usuário
|
||||||
ok: OK
|
ok: OK
|
||||||
_lang_: Inglês
|
|
||||||
headlineFirefish: Uma plataforma de mídia social descentralizada e de código aberto
|
headlineFirefish: Uma plataforma de mídia social descentralizada e de código aberto
|
||||||
que é gratuita para sempre! 🚀
|
que é gratuita para sempre! 🚀
|
||||||
search: Pesquisar
|
search: Pesquisar
|
||||||
|
@ -316,9 +316,6 @@ dayX: "{day}"
|
|||||||
monthX: "{month}"
|
monthX: "{month}"
|
||||||
yearX: "{year}"
|
yearX: "{year}"
|
||||||
pages: "Pagini"
|
pages: "Pagini"
|
||||||
integration: "Integrare"
|
|
||||||
connectService: "Conectează"
|
|
||||||
disconnectService: "Deconectează"
|
|
||||||
enableLocalTimeline: "Activează cronologia locală"
|
enableLocalTimeline: "Activează cronologia locală"
|
||||||
enableGlobalTimeline: "Activeaza cronologia globală"
|
enableGlobalTimeline: "Activeaza cronologia globală"
|
||||||
disablingTimelinesInfo: "Administratorii și Moderatorii vor avea mereu access la toate cronologiile, chiar dacă nu sunt activate."
|
disablingTimelinesInfo: "Administratorii și Moderatorii vor avea mereu access la toate cronologiile, chiar dacă nu sunt activate."
|
||||||
|
@ -335,9 +335,6 @@ dayX: "{day} день"
|
|||||||
monthX: "{month} месяц"
|
monthX: "{month} месяц"
|
||||||
yearX: "{year} год"
|
yearX: "{year} год"
|
||||||
pages: "Страницы"
|
pages: "Страницы"
|
||||||
integration: "Интеграции"
|
|
||||||
connectService: "Подключиться"
|
|
||||||
disconnectService: "Отключиться"
|
|
||||||
enableLocalTimeline: "Включить локальную ленту"
|
enableLocalTimeline: "Включить локальную ленту"
|
||||||
enableGlobalTimeline: "Включить глобальную ленту"
|
enableGlobalTimeline: "Включить глобальную ленту"
|
||||||
disablingTimelinesInfo: "У администраторов и модераторов есть доступ ко всем лентам,
|
disablingTimelinesInfo: "У администраторов и модераторов есть доступ ко всем лентам,
|
||||||
@ -2154,3 +2151,14 @@ deletePasskeysConfirm: Это действие безвозвратно удал
|
|||||||
на этом аккаунте. Продолжить?
|
на этом аккаунте. Продолжить?
|
||||||
inputNotMatch: Введённые данные не совпадают
|
inputNotMatch: Введённые данные не совпадают
|
||||||
addRe: Добавить "re:" в начале комментария в ответ на запись с предупреждением о содержимом
|
addRe: Добавить "re:" в начале комментария в ответ на запись с предупреждением о содержимом
|
||||||
|
detectPostLanguage: Автоматическое определение языка и отображение кнопки перевода
|
||||||
|
для сообщений на иностранных языках
|
||||||
|
indexableDescription: Разрешить встроенной поисковой системе искать ваши публичные
|
||||||
|
записи
|
||||||
|
reactions: Реакции
|
||||||
|
indexable: Индексируемый(-ая)
|
||||||
|
languageForTranslation: Язык перевода поста
|
||||||
|
replies: Ответы
|
||||||
|
quotes: Цитаты
|
||||||
|
clickToShowPatterns: Нажмите, чтобы показать модуль шаблонов
|
||||||
|
renotes: Репосты
|
||||||
|
@ -317,9 +317,6 @@ dayX: "{day}"
|
|||||||
monthX: "{month}"
|
monthX: "{month}"
|
||||||
yearX: "{year}"
|
yearX: "{year}"
|
||||||
pages: "Stránky"
|
pages: "Stránky"
|
||||||
integration: "Integrácia"
|
|
||||||
connectService: "Pripojiť"
|
|
||||||
disconnectService: "Odpojiť"
|
|
||||||
enableLocalTimeline: "Povoliť lokálnu časovú os"
|
enableLocalTimeline: "Povoliť lokálnu časovú os"
|
||||||
enableGlobalTimeline: "Povoliť globálnu časovú os"
|
enableGlobalTimeline: "Povoliť globálnu časovú os"
|
||||||
disablingTimelinesInfo: "Administrátori a moderátori majú vždy prístup ku všetkým časovým osiam, aj keď sú vypnuté."
|
disablingTimelinesInfo: "Administrátori a moderátori majú vždy prístup ku všetkým časovým osiam, aj keď sú vypnuté."
|
||||||
|
@ -365,8 +365,6 @@ today: Idag
|
|||||||
dayX: '{day}'
|
dayX: '{day}'
|
||||||
monthX: '{month}'
|
monthX: '{month}'
|
||||||
yearX: '{year}'
|
yearX: '{year}'
|
||||||
connectService: Anslut
|
|
||||||
disconnectService: Bortkoppla
|
|
||||||
enableLocalTimeline: Anslut till lokal tidslinje
|
enableLocalTimeline: Anslut till lokal tidslinje
|
||||||
invite: Bjud in
|
invite: Bjud in
|
||||||
driveCapacityPerLocalAccount: Enhetens kapacitet per lokal användare
|
driveCapacityPerLocalAccount: Enhetens kapacitet per lokal användare
|
||||||
@ -779,7 +777,6 @@ serverLogs: Serverloggar
|
|||||||
deleteAll: Radera alla
|
deleteAll: Radera alla
|
||||||
removeAllFollowing: Sluta följa alla följda användare
|
removeAllFollowing: Sluta följa alla följda användare
|
||||||
medium: Mellan
|
medium: Mellan
|
||||||
integration: Integreringar
|
|
||||||
xl: XL
|
xl: XL
|
||||||
desktop: Skrivbord
|
desktop: Skrivbord
|
||||||
createNew: Skapa nya
|
createNew: Skapa nya
|
||||||
|
@ -327,9 +327,6 @@ dayX: "{วัน}"
|
|||||||
monthX: "{เดือน}"
|
monthX: "{เดือน}"
|
||||||
yearX: "{ปี}"
|
yearX: "{ปี}"
|
||||||
pages: "หน้า"
|
pages: "หน้า"
|
||||||
integration: "รวบรวม"
|
|
||||||
connectService: "เชื่อมต่อ"
|
|
||||||
disconnectService: "ตัดการเชื่อมต่อ"
|
|
||||||
enableLocalTimeline: "เปิดใช้งานไทม์ไลน์ในพื้นที่"
|
enableLocalTimeline: "เปิดใช้งานไทม์ไลน์ในพื้นที่"
|
||||||
enableGlobalTimeline: "เปิดใช้งานไทม์ไลน์ทั่วโลก"
|
enableGlobalTimeline: "เปิดใช้งานไทม์ไลน์ทั่วโลก"
|
||||||
disablingTimelinesInfo: "ผู้ดูแลระบบและผู้ควบคุมจะสามารถเข้าถึงไทม์ไลน์ทั้งหมด ถึงแม้ว่าจะไม่ได้เปิดใช้งานก็ตาม"
|
disablingTimelinesInfo: "ผู้ดูแลระบบและผู้ควบคุมจะสามารถเข้าถึงไทม์ไลน์ทั้งหมด ถึงแม้ว่าจะไม่ได้เปิดใช้งานก็ตาม"
|
||||||
|
@ -16,10 +16,10 @@ noNotifications: "Bildirim bulunmuyor"
|
|||||||
settings: "Ayarlar"
|
settings: "Ayarlar"
|
||||||
basicSettings: "Temel Ayarlar"
|
basicSettings: "Temel Ayarlar"
|
||||||
otherSettings: "Diğer Ayarlar"
|
otherSettings: "Diğer Ayarlar"
|
||||||
openInWindow: "Bir pencere ile aç"
|
openInWindow: "Açılır pencerede aç"
|
||||||
profile: "Profil"
|
profile: "Profil"
|
||||||
timeline: "Zaman çizelgesi"
|
timeline: "Akış"
|
||||||
noAccountDescription: "Bu kullanıcı henüz kendi hakkında kısmını yazmadı."
|
noAccountDescription: "Bu kullanıcı henüz \"hakkında\" kısmını yazmadı."
|
||||||
login: "Giriş Yap"
|
login: "Giriş Yap"
|
||||||
logout: "Çıkış Yap"
|
logout: "Çıkış Yap"
|
||||||
signup: "Kayıt Ol"
|
signup: "Kayıt Ol"
|
||||||
@ -29,7 +29,7 @@ addUser: "Kullanıcı Ekle"
|
|||||||
favorite: "Favorilere ekle"
|
favorite: "Favorilere ekle"
|
||||||
favorites: "Favoriler"
|
favorites: "Favoriler"
|
||||||
unfavorite: "Favorilerden Kaldır"
|
unfavorite: "Favorilerden Kaldır"
|
||||||
favorited: "Favorilerime eklendi."
|
favorited: "Favorilere eklendi."
|
||||||
alreadyFavorited: "Zaten favorilerinizde kayıtlı."
|
alreadyFavorited: "Zaten favorilerinizde kayıtlı."
|
||||||
pin: "Sabitlenmiş"
|
pin: "Sabitlenmiş"
|
||||||
unpin: "Sabitlemeyi kaldır"
|
unpin: "Sabitlemeyi kaldır"
|
||||||
@ -41,9 +41,9 @@ deleteAndEditConfirm: "Bu gönderiyi silip yeniden düzenlemek istiyor musunuz?
|
|||||||
ilişkin tüm tepkiler, destekler ve yanıtlar silinecektir."
|
ilişkin tüm tepkiler, destekler ve yanıtlar silinecektir."
|
||||||
addToList: "Listeye ekle"
|
addToList: "Listeye ekle"
|
||||||
sendMessage: "Mesaj Gönder"
|
sendMessage: "Mesaj Gönder"
|
||||||
copyUsername: "Kullanıcı Adını Kopyala"
|
copyUsername: "Kullanıcı Adını kopyala"
|
||||||
searchUser: "Kullanıcıları ara"
|
searchUser: "Kullanıcıları ara"
|
||||||
pinned: "Sabitlenmiş"
|
pinned: "Profile sabitle"
|
||||||
remove: "Sil"
|
remove: "Sil"
|
||||||
smtpUser: "Kullanıcı Adı"
|
smtpUser: "Kullanıcı Adı"
|
||||||
smtpPass: "Şifre"
|
smtpPass: "Şifre"
|
||||||
@ -240,7 +240,7 @@ instance: Sunucu
|
|||||||
fetchingAsApObject: Fediverse'den çekiliyor
|
fetchingAsApObject: Fediverse'den çekiliyor
|
||||||
removeReaction: Tepkini sil
|
removeReaction: Tepkini sil
|
||||||
rememberNoteVisibility: Gönderi görünürlüğü ayarlarını hatırla
|
rememberNoteVisibility: Gönderi görünürlüğü ayarlarını hatırla
|
||||||
attachCancel: Eklentiyi kaldır
|
attachCancel: Ek'i kaldır
|
||||||
suspend: Askıya Al
|
suspend: Askıya Al
|
||||||
unsuspend: Askıya Almayı Kaldır
|
unsuspend: Askıya Almayı Kaldır
|
||||||
unmute: Susturmayı Kaldır
|
unmute: Susturmayı Kaldır
|
||||||
@ -248,13 +248,13 @@ blockConfirm: Bu hesabı engellemek istediğinize emin misiniz?
|
|||||||
unblockConfirm: Bu hesabın engelini kaldırmak istediğinize emin misiniz?
|
unblockConfirm: Bu hesabın engelini kaldırmak istediğinize emin misiniz?
|
||||||
settingGuide: Tavsiye edilen ayarlar
|
settingGuide: Tavsiye edilen ayarlar
|
||||||
cacheRemoteFilesDescription: Bu ayar devre dışı bırakıldığında, uzak dosyalar doğrudan
|
cacheRemoteFilesDescription: Bu ayar devre dışı bırakıldığında, uzak dosyalar doğrudan
|
||||||
uzak sunucudan yüklenir. Bunun devre dışı bırakılması depolama kullanımını azaltacak,
|
dosyanın bulunduğu sunucudan yüklenir. Bunun devre dışı bırakılması depolama kullanımını
|
||||||
ancak küçük resimler oluşturulmayacağından trafiği artıracaktır.
|
azaltacak, ancak küçük resimler oluşturulmayacağından trafiği artıracaktır.
|
||||||
flagAsCatDescription: Kedi kulaklarına sahip olacak ve bir kedi gibi konuşacaksın!
|
flagAsCatDescription: Kedi kulaklarına sahip olacak ve bir kedi gibi konuşacaksın!
|
||||||
flagSpeakAsCat: Kedi gibi konuş
|
flagSpeakAsCat: Kedi gibi konuş
|
||||||
setWallpaper: Arkaplanı ayarla
|
setWallpaper: Arkaplanı ayarla
|
||||||
removeWallpaper: Arkaplanı sil
|
removeWallpaper: Arkaplanı sil
|
||||||
operations: Operasyonlar
|
operations: İşlemler
|
||||||
clearCachedFiles: Ön belleği temizle
|
clearCachedFiles: Ön belleği temizle
|
||||||
clearCachedFilesConfirm: Önbelleğe alınan tüm uzak dosyaları silmek istediğinizden
|
clearCachedFilesConfirm: Önbelleğe alınan tüm uzak dosyaları silmek istediğinizden
|
||||||
emin misiniz?
|
emin misiniz?
|
||||||
@ -285,7 +285,7 @@ pinnedPagesDescription: Bu sunucunun üst kısmına sabitlemek istediğiniz Sayf
|
|||||||
yollarını satır sonundan ayırarak girin.
|
yollarını satır sonundan ayırarak girin.
|
||||||
enableHcaptcha: hCaptcha'yı Aktif Et
|
enableHcaptcha: hCaptcha'yı Aktif Et
|
||||||
notifyAntenna: Yeni gönderileri bildir
|
notifyAntenna: Yeni gönderileri bildir
|
||||||
recentlyUpdatedUsers: En son aktif kullanıcılar
|
recentlyUpdatedUsers: En son aktif olan kullanıcılar
|
||||||
about: Hakkında
|
about: Hakkında
|
||||||
twoStepAuthentication: İki-adımlı doğrulama
|
twoStepAuthentication: İki-adımlı doğrulama
|
||||||
securityKeyName: Anahtar ismi
|
securityKeyName: Anahtar ismi
|
||||||
@ -357,13 +357,13 @@ whatIsNew: Değişiklikleri göster
|
|||||||
translate: Çevir
|
translate: Çevir
|
||||||
breakFollow: Takipçiyi sil
|
breakFollow: Takipçiyi sil
|
||||||
breakFollowConfirm: Takipçiyi kaldırmak istediğinizden emin misiniz?
|
breakFollowConfirm: Takipçiyi kaldırmak istediğinizden emin misiniz?
|
||||||
unfollowConfirm: "{name}'i takibi bırakmak istediğinizden emin misiniz?"
|
unfollowConfirm: "{name} kullanıcısını takip etmeyi bırakmak istediğinizden emin misiniz?"
|
||||||
importRequested: Bir içe aktarma isteğinde bulundunuz. Bu biraz zaman alabilir.
|
importRequested: Bir içe aktarma isteğinde bulundunuz. Bu biraz zaman alabilir.
|
||||||
somethingHappened: Bir hata ile karşılaşıldı
|
somethingHappened: Bir hata ile karşılaşıldı
|
||||||
retry: Tekrar Dene
|
retry: Tekrar Dene
|
||||||
youShouldUpgradeClient: Bu sayfayı görüntülemek için, lütfen istemcinizi yenileyin.
|
youShouldUpgradeClient: Bu sayfayı görüntülemek için, lütfen istemcinizi yenileyin.
|
||||||
reactionSetting: Tepki seçicide gösterilecek tepkiler
|
reactionSetting: Tepki seçicide gösterilecek tepkiler
|
||||||
unmarkAsSensitive: NSFW işaretini kaldır
|
unmarkAsSensitive: NSFW (Müstehcen İçerik) işaretini kaldır
|
||||||
enterFileName: Dosya adı gir
|
enterFileName: Dosya adı gir
|
||||||
noJobs: Hiçbir iş yok
|
noJobs: Hiçbir iş yok
|
||||||
instanceFollowing: Sunucuda takip ediliyor
|
instanceFollowing: Sunucuda takip ediliyor
|
||||||
@ -481,8 +481,8 @@ mention: Bahset
|
|||||||
download: İndir
|
download: İndir
|
||||||
lists: Listeler
|
lists: Listeler
|
||||||
noLists: Hiç listen yok
|
noLists: Hiç listen yok
|
||||||
cantRenote: Bu gönderi yükseltilemez.
|
cantRenote: Bu gönderi desteklenemez.
|
||||||
cantReRenote: Bir yükseltme tekrar yükseltilemez.
|
cantReRenote: Bir destek tekrardan desteklenemez.
|
||||||
mute: Sustur
|
mute: Sustur
|
||||||
block: Engelle
|
block: Engelle
|
||||||
editWidgetsExit: Tamamlandı
|
editWidgetsExit: Tamamlandı
|
||||||
@ -636,10 +636,10 @@ reactionSettingDescription2: Yeniden sıralamak için sürükleyin, silmek için
|
|||||||
eklemek için "+"ya basın.
|
eklemek için "+"ya basın.
|
||||||
you: Sen
|
you: Sen
|
||||||
clickToShow: Görmek için tıkla
|
clickToShow: Görmek için tıkla
|
||||||
sensitive: NSFW
|
sensitive: NSFW (Müstehcen İçerik)
|
||||||
add: Ekle
|
add: Ekle
|
||||||
reaction: Tepkiler
|
reaction: Tepkiler
|
||||||
markAsSensitive: NSFW olarak işaretle
|
markAsSensitive: NSFW (Müstehcen İçerik) olarak işaretle
|
||||||
unblock: Engeli Kaldır
|
unblock: Engeli Kaldır
|
||||||
addAccount: Hesap ekle
|
addAccount: Hesap ekle
|
||||||
network: İnternet
|
network: İnternet
|
||||||
@ -722,11 +722,11 @@ moveAccountDescription: Bu süreç geri döndürülemez. Taşımadan önce yeni
|
|||||||
şeklinde biçimlendirilmiş hesabın etiketini girin
|
şeklinde biçimlendirilmiş hesabın etiketini girin
|
||||||
emojis: Emoji
|
emojis: Emoji
|
||||||
flagAsCat: Kedi misin? 😺
|
flagAsCat: Kedi misin? 😺
|
||||||
selectChannel: Kanal seç
|
selectChannel: Bir kanal seç
|
||||||
emojiName: Emoji adı
|
emojiName: Emoji adı
|
||||||
showOnRemote: Orijinal sayfayı aç
|
showOnRemote: Orijinal sayfayı aç
|
||||||
flagSpeakAsCatDescription: Gönderileriniz kedi modundayken miyavdirilecektir
|
flagSpeakAsCatDescription: Gönderileriniz kedi modundayken miyavdirilecektir
|
||||||
flagShowTimelineReplies: Yanıtları zaman çizelgesinde göster
|
flagShowTimelineReplies: Yanıtları akışta göster
|
||||||
silenceThisInstance: Bu sunucuyu sustur
|
silenceThisInstance: Bu sunucuyu sustur
|
||||||
proxyAccountDescription: Vekil hesabı, belirli koşullar altında kullanıcılar için
|
proxyAccountDescription: Vekil hesabı, belirli koşullar altında kullanıcılar için
|
||||||
uzaktan takipçi işlevi gören bir hesaptır. Örneğin, bir kullanıcı listeye bir uzak
|
uzaktan takipçi işlevi gören bir hesaptır. Örneğin, bir kullanıcı listeye bir uzak
|
||||||
@ -760,7 +760,6 @@ banner: Banner
|
|||||||
nsfw: NSFW
|
nsfw: NSFW
|
||||||
doNothing: Görmezden Gel
|
doNothing: Görmezden Gel
|
||||||
watch: İzle
|
watch: İzle
|
||||||
connectService: Bağlan
|
|
||||||
registration: Kayıt
|
registration: Kayıt
|
||||||
hcaptcha: hCaptcha
|
hcaptcha: hCaptcha
|
||||||
pinnedNotes: Sabitlenmiş gönderiler
|
pinnedNotes: Sabitlenmiş gönderiler
|
||||||
@ -845,8 +844,8 @@ pageLoadErrorDescription: Bu problem genelde ağ hataları veya tarayıcının
|
|||||||
kaynaklanır. Önbelleği temizlemeyi deneyin ve biraz bekledikten sonra tekrar deneyin.
|
kaynaklanır. Önbelleği temizlemeyi deneyin ve biraz bekledikten sonra tekrar deneyin.
|
||||||
quote: Alıntıla
|
quote: Alıntıla
|
||||||
pinnedNote: Sabitlenmiş gönderi
|
pinnedNote: Sabitlenmiş gönderi
|
||||||
renote: Yükselt
|
renote: Destekle
|
||||||
unrenote: Yükseltmeyi geri al
|
unrenote: Desteklemeyi geri al
|
||||||
emojiUrl: Emoji URL'si
|
emojiUrl: Emoji URL'si
|
||||||
suspendConfirm: Bu hesabı askıya almak istediğinize emin misiniz?
|
suspendConfirm: Bu hesabı askıya almak istediğinize emin misiniz?
|
||||||
addEmoji: Ekle
|
addEmoji: Ekle
|
||||||
@ -858,7 +857,7 @@ wallpaper: Arkaplan
|
|||||||
searchWith: 'Arat: {q}'
|
searchWith: 'Arat: {q}'
|
||||||
youHaveNoLists: Hiçbir listen yok
|
youHaveNoLists: Hiçbir listen yok
|
||||||
followConfirm: '{name} kullanıcısını takip etmek istediğine emin misin?'
|
followConfirm: '{name} kullanıcısını takip etmek istediğine emin misin?'
|
||||||
metadata: Metadata
|
metadata: Üstveri
|
||||||
monitor: Monitör
|
monitor: Monitör
|
||||||
jobQueue: İş Sırası
|
jobQueue: İş Sırası
|
||||||
noUsers: Kullanıcılar bulunamadı
|
noUsers: Kullanıcılar bulunamadı
|
||||||
@ -885,7 +884,6 @@ deleteFolder: Bu klasörü sil
|
|||||||
addFile: Dosya ekle
|
addFile: Dosya ekle
|
||||||
dayX: '{day}'
|
dayX: '{day}'
|
||||||
enableLocalTimeline: Yerel zaman çizgisini aktif et
|
enableLocalTimeline: Yerel zaman çizgisini aktif et
|
||||||
disconnectService: Bağlantıyı kes
|
|
||||||
enableGlobalTimeline: Global zaman çizgisini aktif et
|
enableGlobalTimeline: Global zaman çizgisini aktif et
|
||||||
enableRegistration: Yeni kullanıcı kaydını aktif et
|
enableRegistration: Yeni kullanıcı kaydını aktif et
|
||||||
invite: Davet et
|
invite: Davet et
|
||||||
@ -1013,7 +1011,7 @@ incorrectPassword: Yanlış şifre.
|
|||||||
voteConfirm: '"{choice}" için oyunuzu onaylıyor musunuz?'
|
voteConfirm: '"{choice}" için oyunuzu onaylıyor musunuz?'
|
||||||
failedToFetchAccountInformation: Hesap bilgileri getirilemedi
|
failedToFetchAccountInformation: Hesap bilgileri getirilemedi
|
||||||
rateLimitExceeded: Hız limiti aşıldı
|
rateLimitExceeded: Hız limiti aşıldı
|
||||||
renotedBy: '{user} Yükseltti'
|
renotedBy: '{user} destekledi'
|
||||||
host: Host
|
host: Host
|
||||||
objectStorage: Nesne Depolaması
|
objectStorage: Nesne Depolaması
|
||||||
objectStorageUseSSLDesc: API bağlantıları için HTTPS kullanmayacaksanız bunu kapatın
|
objectStorageUseSSLDesc: API bağlantıları için HTTPS kullanmayacaksanız bunu kapatın
|
||||||
@ -1026,8 +1024,8 @@ verificationEmailSent: Bir doğrulama maili gönderildi. Doğrulamayı tamamlama
|
|||||||
lütfen verilen bağlantıyı takip edin.
|
lütfen verilen bağlantıyı takip edin.
|
||||||
hashtags: Etiketler
|
hashtags: Etiketler
|
||||||
resolved: Çözüldü
|
resolved: Çözüldü
|
||||||
flagShowTimelineRepliesDescription: Açıksa, kullanıcıların zaman çizelgesindeki diğer
|
flagShowTimelineRepliesDescription: Açıksa, kullanıcıların akıştaki diğer kullanıcıların
|
||||||
kullanıcıların gönderilerine verdiği yanıtları gösterir.
|
gönderilerine verdiği yanıtları gösterir.
|
||||||
clearQueueConfirmText: Kuyrukta kalan teslim edilmemiş gönderiler birleştirilmeyecektir.
|
clearQueueConfirmText: Kuyrukta kalan teslim edilmemiş gönderiler birleştirilmeyecektir.
|
||||||
Genellikle bu işleme gerek yoktur.
|
Genellikle bu işleme gerek yoktur.
|
||||||
image: Resim
|
image: Resim
|
||||||
@ -1040,8 +1038,8 @@ unsuspendConfirm: Bu hesabın askıya almasını kaldırmak istediğinize emin m
|
|||||||
selectList: Liste seç
|
selectList: Liste seç
|
||||||
editWidgets: Widget'ları düzenle
|
editWidgets: Widget'ları düzenle
|
||||||
showEmojisInReactionNotifications: Tepki bildirimlerinde emojileri göster
|
showEmojisInReactionNotifications: Tepki bildirimlerinde emojileri göster
|
||||||
renoteMute: Yükseltmeleri sustur
|
renoteMute: Desteklemeleri sustur
|
||||||
renoteUnmute: Yükseltmeleri susturmayı kaldır
|
renoteUnmute: Desteklemelerde ki susturmayı kaldır
|
||||||
loginFailed: Giriş yapılamadı
|
loginFailed: Giriş yapılamadı
|
||||||
proxyAccount: Vekil Hesap
|
proxyAccount: Vekil Hesap
|
||||||
selectUser: Kullanıcı seç
|
selectUser: Kullanıcı seç
|
||||||
@ -1068,7 +1066,7 @@ hideThisNote: Bu gönderiyi gizle
|
|||||||
file: Dosya
|
file: Dosya
|
||||||
enableEmojiReactions: Emoji tepkilerini aç
|
enableEmojiReactions: Emoji tepkilerini aç
|
||||||
cw: İçerik uyarısı
|
cw: İçerik uyarısı
|
||||||
makeFollowManuallyApprove: Onay gerektiren takip istekleri
|
makeFollowManuallyApprove: Onayınızı gerektiren takip istekleri
|
||||||
today: Bugün
|
today: Bugün
|
||||||
enableRecommendedTimeline: Tavsiye edilen zaman çizgisini aktive et
|
enableRecommendedTimeline: Tavsiye edilen zaman çizgisini aktive et
|
||||||
state: Durum
|
state: Durum
|
||||||
@ -1165,7 +1163,7 @@ indexFromDescription: Her gönderiyi dizine eklemek için boş bırakın
|
|||||||
indexNotice: Şimdi indeksleniyor. Bu muhtemelen biraz zaman alacaktır, lütfen sunucunuzu
|
indexNotice: Şimdi indeksleniyor. Bu muhtemelen biraz zaman alacaktır, lütfen sunucunuzu
|
||||||
en az bir saat yeniden başlatmayın.
|
en az bir saat yeniden başlatmayın.
|
||||||
customKaTeXMacro: Özel KaTeX makroları
|
customKaTeXMacro: Özel KaTeX makroları
|
||||||
directNotes: Direkt Mesajlar
|
directNotes: Özel Mesajlar
|
||||||
import: İçeri Aktar
|
import: İçeri Aktar
|
||||||
export: Dışarı Aktar
|
export: Dışarı Aktar
|
||||||
mentions: Bahsetmeler
|
mentions: Bahsetmeler
|
||||||
@ -1173,8 +1171,8 @@ files: Dosyalar
|
|||||||
driveFileDeleteConfirm: '"{name}" dosyasını silmek istediğinizden emin misiniz? Dosyayı
|
driveFileDeleteConfirm: '"{name}" dosyasını silmek istediğinizden emin misiniz? Dosyayı
|
||||||
"Ek" olarak içeren tüm gönderilerden kaldırılacaktır.'
|
"Ek" olarak içeren tüm gönderilerden kaldırılacaktır.'
|
||||||
createList: Liste oluştur
|
createList: Liste oluştur
|
||||||
listsDesc: Listeler, belirtilen kullanıcılarla zaman çizelgesi oluşturmanıza olanak
|
listsDesc: Listeler, belirtilen kullanıcıların içeriklerini içeren akışlar oluşturmanıza
|
||||||
tanır. Zaman Çizelgesi sayfasından erişilebilirler.
|
olanak tanır. Akış sayfasından erişilebilirler.
|
||||||
note: Gönder
|
note: Gönder
|
||||||
enterListName: Liste için isim gir
|
enterListName: Liste için isim gir
|
||||||
unfollow: Takipten Çık
|
unfollow: Takipten Çık
|
||||||
@ -1183,14 +1181,14 @@ followRequestPending: Takip isteği bekleniyor
|
|||||||
enterEmoji: Bir emoji gir
|
enterEmoji: Bir emoji gir
|
||||||
followRequest: Takip İsteği
|
followRequest: Takip İsteği
|
||||||
followRequests: Takip istekleri
|
followRequests: Takip istekleri
|
||||||
renoted: Yükseldi.
|
renoted: Desteklendi.
|
||||||
emoji: Emoji
|
emoji: Emoji
|
||||||
cacheRemoteFiles: Uzak dosyaları önbelleğe al
|
cacheRemoteFiles: Uzak dosyaları önbelleğe al
|
||||||
flagAsBot: Bu hesabı robot olarak işaretle
|
flagAsBot: Bu hesabı robot olarak işaretle
|
||||||
flagAsBotDescription: Bu hesap bir program tarafından kontrol ediliyorsa bu seçeneği
|
flagAsBotDescription: Bu hesap bir program tarafından kontrol ediliyorsa bu seçeneği
|
||||||
etkinleştirin. Etkinleştirilirse, diğer geliştiricilerin botlarıyla sonsuz etkileşim
|
etkinleştirin. Etkinleştirilirse, diğer geliştiricilerin botlarıyla sonsuz etkileşim
|
||||||
zincirlerinin önlemesi ve Firefish'in dahili sistemlerinin bu hesabı bir bot olarak
|
zincirlerinin önlemesi ve Firefish'in dahili sistemlerinin bu hesabı bir bot olarak
|
||||||
ele alacak şekilde ayarlaması için bir bayrak görevi görür.
|
ele alacak şekilde ayarlaması için bir işaret görevi görür.
|
||||||
clearQueue: Sırayı Temizle
|
clearQueue: Sırayı Temizle
|
||||||
hiddenTags: Gizlenmiş Etiketler
|
hiddenTags: Gizlenmiş Etiketler
|
||||||
done: Tamamlandı
|
done: Tamamlandı
|
||||||
@ -1206,7 +1204,6 @@ location: Konum
|
|||||||
registeredDate: Katılım tarihi
|
registeredDate: Katılım tarihi
|
||||||
yearX: '{year}'
|
yearX: '{year}'
|
||||||
pages: Sayfalar
|
pages: Sayfalar
|
||||||
integration: Entegrasyonlar
|
|
||||||
antennasDesc: "Antenler, belirlediğiniz kriterlere uyan yeni gönderiler görüntüler!\n
|
antennasDesc: "Antenler, belirlediğiniz kriterlere uyan yeni gönderiler görüntüler!\n
|
||||||
Zaman çizelgeleri sayfasından erişilebilirler."
|
Zaman çizelgeleri sayfasından erişilebilirler."
|
||||||
notesAndReplies: Gönderiler ve yanıtlar
|
notesAndReplies: Gönderiler ve yanıtlar
|
||||||
@ -2156,3 +2153,4 @@ importZip: ZIP içe aktar
|
|||||||
indexable: Endekslenebilir
|
indexable: Endekslenebilir
|
||||||
languageForTranslation: Çeviri sonrası dili
|
languageForTranslation: Çeviri sonrası dili
|
||||||
confirm: Onayla
|
confirm: Onayla
|
||||||
|
clickToShowPatterns: Modülün örüntülerini göstermek için tıklayın
|
||||||
|
@ -336,9 +336,6 @@ dayX: "{day}"
|
|||||||
monthX: "{month}"
|
monthX: "{month}"
|
||||||
yearX: "{year}"
|
yearX: "{year}"
|
||||||
pages: "Сторінки"
|
pages: "Сторінки"
|
||||||
integration: "Інтеграції"
|
|
||||||
connectService: "Під’єднати"
|
|
||||||
disconnectService: "Відключитися"
|
|
||||||
enableLocalTimeline: "Увімкнути локальну стрічку"
|
enableLocalTimeline: "Увімкнути локальну стрічку"
|
||||||
enableGlobalTimeline: "Увімкнути глобальну стрічку"
|
enableGlobalTimeline: "Увімкнути глобальну стрічку"
|
||||||
disablingTimelinesInfo: "Адміністратори та модератори завжди мають доступ до всіх
|
disablingTimelinesInfo: "Адміністратори та модератори завжди мають доступ до всіх
|
||||||
|
@ -338,9 +338,6 @@ dayX: "{day}"
|
|||||||
monthX: "{month}"
|
monthX: "{month}"
|
||||||
yearX: "{year}"
|
yearX: "{year}"
|
||||||
pages: "Trang"
|
pages: "Trang"
|
||||||
integration: "Tương tác"
|
|
||||||
connectService: "Kết nối"
|
|
||||||
disconnectService: "Ngắt kết nối"
|
|
||||||
enableLocalTimeline: "Bật bảng tin máy chủ"
|
enableLocalTimeline: "Bật bảng tin máy chủ"
|
||||||
enableGlobalTimeline: "Bật bảng tin liên hợp"
|
enableGlobalTimeline: "Bật bảng tin liên hợp"
|
||||||
disablingTimelinesInfo: "Quản trị viên và Kiểm duyệt viên luôn có quyền truy cập mọi
|
disablingTimelinesInfo: "Quản trị viên và Kiểm duyệt viên luôn có quyền truy cập mọi
|
||||||
|
@ -12,7 +12,7 @@ ok: "好"
|
|||||||
gotIt: "知道了!"
|
gotIt: "知道了!"
|
||||||
cancel: "取消"
|
cancel: "取消"
|
||||||
enterUsername: "输入用户名"
|
enterUsername: "输入用户名"
|
||||||
renotedBy: "转发自 {user}"
|
renotedBy: "{user} 转发了"
|
||||||
noNotes: "没有帖子"
|
noNotes: "没有帖子"
|
||||||
noNotifications: "没有通知"
|
noNotifications: "没有通知"
|
||||||
instance: "服务器"
|
instance: "服务器"
|
||||||
@ -49,6 +49,7 @@ sendMessage: "发送"
|
|||||||
copyUsername: "复制用户名"
|
copyUsername: "复制用户名"
|
||||||
searchUser: "搜索用户"
|
searchUser: "搜索用户"
|
||||||
reply: "回复"
|
reply: "回复"
|
||||||
|
replies: "回复"
|
||||||
loadMore: "加载更多"
|
loadMore: "加载更多"
|
||||||
showMore: "查看更多"
|
showMore: "查看更多"
|
||||||
showLess: "关闭"
|
showLess: "关闭"
|
||||||
@ -69,7 +70,7 @@ exportRequested: "导出请求已提交,这可能需要花一些时间,导
|
|||||||
importRequested: "导入请求已提交,这可能需要花一点时间。"
|
importRequested: "导入请求已提交,这可能需要花一点时间。"
|
||||||
lists: "列表"
|
lists: "列表"
|
||||||
noLists: "列表为空"
|
noLists: "列表为空"
|
||||||
note: "帖子"
|
note: "发帖"
|
||||||
notes: "帖子"
|
notes: "帖子"
|
||||||
following: "关注中"
|
following: "关注中"
|
||||||
followers: "关注者"
|
followers: "关注者"
|
||||||
@ -94,11 +95,13 @@ unfollow: "取消关注"
|
|||||||
followRequestPending: "关注请求待批准"
|
followRequestPending: "关注请求待批准"
|
||||||
enterEmoji: "输入表情符号"
|
enterEmoji: "输入表情符号"
|
||||||
renote: "转发"
|
renote: "转发"
|
||||||
|
renotes: "转发"
|
||||||
unrenote: "取消转发"
|
unrenote: "取消转发"
|
||||||
renoted: "已转发。"
|
renoted: "已转发。"
|
||||||
cantRenote: "此帖子无法被转发。"
|
cantRenote: "此帖子无法被转发。"
|
||||||
cantReRenote: "转发无法被再次转发。"
|
cantReRenote: "转发无法被再次转发。"
|
||||||
quote: "引用"
|
quote: "引用"
|
||||||
|
quotes: "引用"
|
||||||
pinnedNote: "已置顶的帖子"
|
pinnedNote: "已置顶的帖子"
|
||||||
pinned: "置顶"
|
pinned: "置顶"
|
||||||
you: "您"
|
you: "您"
|
||||||
@ -106,6 +109,7 @@ clickToShow: "点击以显示"
|
|||||||
sensitive: "敏感内容"
|
sensitive: "敏感内容"
|
||||||
add: "添加"
|
add: "添加"
|
||||||
reaction: "回应"
|
reaction: "回应"
|
||||||
|
reactions: "回应"
|
||||||
enableEmojiReaction: "启用表情符号回应"
|
enableEmojiReaction: "启用表情符号回应"
|
||||||
showEmojisInReactionNotifications: "在回应通知中显示表情符号"
|
showEmojisInReactionNotifications: "在回应通知中显示表情符号"
|
||||||
reactionSetting: "在回应选择器中显示的回应"
|
reactionSetting: "在回应选择器中显示的回应"
|
||||||
@ -243,7 +247,7 @@ saved: "已保存"
|
|||||||
messaging: "聊天"
|
messaging: "聊天"
|
||||||
upload: "本地上传"
|
upload: "本地上传"
|
||||||
keepOriginalUploading: "保留原图"
|
keepOriginalUploading: "保留原图"
|
||||||
keepOriginalUploadingDescription: "上传图片时保留原始图片。如果关闭,会在上传时生成一张用于 web 发布的图片。"
|
keepOriginalUploadingDescription: "上传图片时保留原始图片。如果关闭,会在上传时生成一张用于 Web 发布的图片。"
|
||||||
fromDrive: "从网盘中"
|
fromDrive: "从网盘中"
|
||||||
fromUrl: "从 URL"
|
fromUrl: "从 URL"
|
||||||
uploadFromUrl: "从 URL 上传"
|
uploadFromUrl: "从 URL 上传"
|
||||||
@ -321,9 +325,6 @@ dayX: "{day} 日"
|
|||||||
monthX: "{month} 月"
|
monthX: "{month} 月"
|
||||||
yearX: "{year} 年"
|
yearX: "{year} 年"
|
||||||
pages: "页面"
|
pages: "页面"
|
||||||
integration: "整合"
|
|
||||||
connectService: "连接"
|
|
||||||
disconnectService: "断开连接"
|
|
||||||
enableLocalTimeline: "启用本地时间线功能"
|
enableLocalTimeline: "启用本地时间线功能"
|
||||||
enableGlobalTimeline: "启用全局时间线"
|
enableGlobalTimeline: "启用全局时间线"
|
||||||
disablingTimelinesInfo: "管理员和监察员将始终拥有对所有时间线的访问权,即使它们没有被启用。"
|
disablingTimelinesInfo: "管理员和监察员将始终拥有对所有时间线的访问权,即使它们没有被启用。"
|
||||||
@ -486,15 +487,16 @@ hideThisNote: "隐藏这条帖子"
|
|||||||
showFeaturedNotesInTimeline: "在时间线上显示热门推荐"
|
showFeaturedNotesInTimeline: "在时间线上显示热门推荐"
|
||||||
objectStorage: "对象存储"
|
objectStorage: "对象存储"
|
||||||
useObjectStorage: "使用对象存储"
|
useObjectStorage: "使用对象存储"
|
||||||
objectStorageBaseUrl: "Base URL"
|
objectStorageBaseUrl: "根 URL"
|
||||||
objectStorageBaseUrlDesc: "用于引用的 URL。如果您正在使用 CDN 或反向代理,请指定其 URL。\n例如S3:“https://<bucket>.s3.amazonaws.com”,GCS:“https://storage.googleapis.com/<bucket>”,其它同理。"
|
objectStorageBaseUrlDesc: "用于引用的 URL。如果您正在使用 CDN 或反向代理,请指定其 URL。\n例如S3:\"https://<bucket>.s3.amazonaws.com\"\
|
||||||
|
,GCS:\"https://storage.googleapis.com/<bucket>\",其它同理。"
|
||||||
objectStorageBucket: "存储桶"
|
objectStorageBucket: "存储桶"
|
||||||
objectStorageBucketDesc: "请指定使用的对象存储服务的存储桶名称。"
|
objectStorageBucketDesc: "请指定使用的对象存储服务的存储桶名称。"
|
||||||
objectStoragePrefix: "前缀"
|
objectStoragePrefix: "前缀"
|
||||||
objectStoragePrefixDesc: "文件将存储在此前缀的目录下。"
|
objectStoragePrefixDesc: "文件将存储在此前缀的目录下。"
|
||||||
objectStorageEndpoint: "Endpoint"
|
objectStorageEndpoint: "端点 (Endpoint)"
|
||||||
objectStorageEndpointDesc: "如果您使用 AWS S3 请留空。否则请根据您使用的服务商的说明来进行设置,指定 Endpoint 形式为
|
objectStorageEndpointDesc: "如果您使用 AWS S3 请留空。否则请根据您使用的服务商的说明来进行设置,指定端点 (Endpoint)
|
||||||
\"<host>\" 或 \"<host>:<port>\"。"
|
形式为 \"<host>\" 或 \"<host>:<port>\"。"
|
||||||
objectStorageRegion: "可用区"
|
objectStorageRegion: "可用区"
|
||||||
objectStorageRegionDesc: "指定一个可用区,例如 \"xx-east-1\"。 如果您的对象存储服务没有可用区概念,请将其留空或填写 \"\
|
objectStorageRegionDesc: "指定一个可用区,例如 \"xx-east-1\"。 如果您的对象存储服务没有可用区概念,请将其留空或填写 \"\
|
||||||
us-east-1\"。\n对于 Cloudflare R2,可以填为 \"auto\"。"
|
us-east-1\"。\n对于 Cloudflare R2,可以填为 \"auto\"。"
|
||||||
@ -502,7 +504,7 @@ objectStorageUseSSL: "使用 SSL"
|
|||||||
objectStorageUseSSLDesc: "如果不使用 HTTPS 进行 API 连接,请关闭"
|
objectStorageUseSSLDesc: "如果不使用 HTTPS 进行 API 连接,请关闭"
|
||||||
objectStorageUseProxy: "使用代理"
|
objectStorageUseProxy: "使用代理"
|
||||||
objectStorageUseProxyDesc: "如果您不使用代理进行 API 连接,请将其关闭"
|
objectStorageUseProxyDesc: "如果您不使用代理进行 API 连接,请将其关闭"
|
||||||
objectStorageSetPublicRead: "上传时设置为 public-read"
|
objectStorageSetPublicRead: "上传时设置为 \"public-read\""
|
||||||
serverLogs: "服务器日志"
|
serverLogs: "服务器日志"
|
||||||
deleteAll: "全部删除"
|
deleteAll: "全部删除"
|
||||||
showFixedPostForm: "在时间线顶部显示发帖框"
|
showFixedPostForm: "在时间线顶部显示发帖框"
|
||||||
@ -599,7 +601,7 @@ emptyToDisableSmtpAuth: "留空用户名和密码以禁用 SMTP 验证"
|
|||||||
smtpSecure: "在 SMTP 连接中使用隐式 SSL / TLS"
|
smtpSecure: "在 SMTP 连接中使用隐式 SSL / TLS"
|
||||||
smtpSecureInfo: "使用 STARTTLS 时关闭"
|
smtpSecureInfo: "使用 STARTTLS 时关闭"
|
||||||
testEmail: "邮件发送测试"
|
testEmail: "邮件发送测试"
|
||||||
wordMute: "文字过滤"
|
wordMute: "文字和语言过滤"
|
||||||
regexpError: "正则表达式错误"
|
regexpError: "正则表达式错误"
|
||||||
regexpErrorDescription: "{tab} 文字过滤的第 {line} 行的正则表达式有错误:"
|
regexpErrorDescription: "{tab} 文字过滤的第 {line} 行的正则表达式有错误:"
|
||||||
instanceMute: "服务器静音"
|
instanceMute: "服务器静音"
|
||||||
@ -608,7 +610,7 @@ makeActive: "启用"
|
|||||||
display: "显示"
|
display: "显示"
|
||||||
copy: "复制"
|
copy: "复制"
|
||||||
metrics: "指标"
|
metrics: "指标"
|
||||||
overview: "服务器概况"
|
overview: "概况"
|
||||||
logs: "日志"
|
logs: "日志"
|
||||||
delayed: "滞后"
|
delayed: "滞后"
|
||||||
database: "数据库"
|
database: "数据库"
|
||||||
@ -674,7 +676,7 @@ driveFilesCount: "网盘的文件数"
|
|||||||
driveUsage: "网盘的空间用量"
|
driveUsage: "网盘的空间用量"
|
||||||
noCrawle: "要求搜索引擎不索引该用户"
|
noCrawle: "要求搜索引擎不索引该用户"
|
||||||
noCrawleDescription: "要求外部搜索引擎不收录(索引)您的内容。"
|
noCrawleDescription: "要求外部搜索引擎不收录(索引)您的内容。"
|
||||||
lockedAccountInfo: "即使通过了关注请求,只要您不将帖子可见范围设置成“关注者”,任何人都可以看到您的帖子。"
|
lockedAccountInfo: "即使通过了关注请求,只要您不将帖子可见范围设置成「关注者」,任何人都可以看到您的帖子。"
|
||||||
alwaysMarkSensitive: "默认将媒体文件标记为敏感内容"
|
alwaysMarkSensitive: "默认将媒体文件标记为敏感内容"
|
||||||
loadRawImages: "加载原始图像而不是显示缩略图"
|
loadRawImages: "加载原始图像而不是显示缩略图"
|
||||||
disableShowingAnimatedImages: "不播放动画"
|
disableShowingAnimatedImages: "不播放动画"
|
||||||
@ -689,8 +691,8 @@ useSystemFont: "使用系统默认字体"
|
|||||||
clips: "便签"
|
clips: "便签"
|
||||||
experimentalFeatures: "实验性功能"
|
experimentalFeatures: "实验性功能"
|
||||||
developer: "开发者"
|
developer: "开发者"
|
||||||
makeExplorable: "使账号在“发现”中可见"
|
makeExplorable: "使账号在「发现」中可见"
|
||||||
makeExplorableDescription: "关闭时,账号不会显示在\"发现\"中。"
|
makeExplorableDescription: "关闭时,账号不会显示在「发现」中。"
|
||||||
showGapBetweenNotesInTimeline: "时间线上的帖子分开显示"
|
showGapBetweenNotesInTimeline: "时间线上的帖子分开显示"
|
||||||
duplicate: "复制"
|
duplicate: "复制"
|
||||||
left: "左"
|
left: "左"
|
||||||
@ -745,7 +747,7 @@ unlikeConfirm: "取消赞?"
|
|||||||
fullView: "全屏"
|
fullView: "全屏"
|
||||||
quitFullView: "退出全屏"
|
quitFullView: "退出全屏"
|
||||||
addDescription: "添加描述"
|
addDescription: "添加描述"
|
||||||
userPagePinTip: "在帖子的菜单中选择“置顶”,即可显示该条帖子。"
|
userPagePinTip: "在帖子的菜单中选择「置顶」,即可在此显示该条帖子。"
|
||||||
notSpecifiedMentionWarning: "有未指定的提及"
|
notSpecifiedMentionWarning: "有未指定的提及"
|
||||||
info: "关于"
|
info: "关于"
|
||||||
userInfo: "用户信息"
|
userInfo: "用户信息"
|
||||||
@ -921,7 +923,7 @@ _emailUnavailable:
|
|||||||
_ffVisibility:
|
_ffVisibility:
|
||||||
public: "公开"
|
public: "公开"
|
||||||
followers: "仅对关注者可见"
|
followers: "仅对关注者可见"
|
||||||
private: "私信"
|
private: "私密"
|
||||||
_signup:
|
_signup:
|
||||||
almostThere: "即将完成"
|
almostThere: "即将完成"
|
||||||
emailAddressInfo: "请输入您所使用的电子邮件地址,它不会公开显示。"
|
emailAddressInfo: "请输入您所使用的电子邮件地址,它不会公开显示。"
|
||||||
@ -935,7 +937,8 @@ _accountDelete:
|
|||||||
inProgress: "正在删除"
|
inProgress: "正在删除"
|
||||||
_ad:
|
_ad:
|
||||||
back: "返回"
|
back: "返回"
|
||||||
reduceFrequencyOfThisAd: "减少此广告的频率"
|
reduceFrequencyOfThisAd: "减少此横幅的频率"
|
||||||
|
adsBy: 社区横幅(作者:{by})
|
||||||
_forgotPassword:
|
_forgotPassword:
|
||||||
enterEmail: "请输入您注册账号时用的电子邮箱地址,密码重置链接将发送至该邮箱上。"
|
enterEmail: "请输入您注册账号时用的电子邮箱地址,密码重置链接将发送至该邮箱上。"
|
||||||
ifNoEmail: "如果您在注册时没有输入电子邮件地址,请联系服务器管理员。"
|
ifNoEmail: "如果您在注册时没有输入电子邮件地址,请联系服务器管理员。"
|
||||||
@ -1113,7 +1116,7 @@ _wordMute:
|
|||||||
muteLangs: "过滤语言"
|
muteLangs: "过滤语言"
|
||||||
muteWordsDescription: "AND 条件用空格分隔,OR 条件用换行符分隔。"
|
muteWordsDescription: "AND 条件用空格分隔,OR 条件用换行符分隔。"
|
||||||
muteWordsDescription2: "将关键字用斜线括起来表示正则表达式。"
|
muteWordsDescription2: "将关键字用斜线括起来表示正则表达式。"
|
||||||
muteLangsDescription: "OR 条件用空格,换行符分隔"
|
muteLangsDescription: "OR 条件用空格或换行符分隔。"
|
||||||
muteLangsDescription2: "使用语言代码。例: en, fr, ja, zh."
|
muteLangsDescription2: "使用语言代码。例: en, fr, ja, zh."
|
||||||
softDescription: "隐藏时间线中指定条件的帖子。"
|
softDescription: "隐藏时间线中指定条件的帖子。"
|
||||||
langDescription: "从时间线中隐藏与设置语言匹配的帖子。"
|
langDescription: "从时间线中隐藏与设置语言匹配的帖子。"
|
||||||
@ -1236,15 +1239,15 @@ _tutorial:
|
|||||||
step4_2: "对于第一条帖子,可以做一个 {introduction} 或一个简单的 \"hello world!\""
|
step4_2: "对于第一条帖子,可以做一个 {introduction} 或一个简单的 \"hello world!\""
|
||||||
step5_1: "时间线,无处不在的时间线!"
|
step5_1: "时间线,无处不在的时间线!"
|
||||||
step5_2: "您的服务器已启用 {timelines} 种不同的时间线。"
|
step5_2: "您的服务器已启用 {timelines} 种不同的时间线。"
|
||||||
step5_3: "主页 {icon} 时间线是您可以看到您关注账号的帖子的时间线。"
|
step5_3: "首页{icon}时间线是您可以看到您关注账号的帖子的时间线。"
|
||||||
step5_4: "本地{icon}时间线是您可以看到此服务器上其它用户的帖子的时间线。"
|
step5_4: "本地{icon}时间线是您可以看到此服务器上其它用户的帖子的时间线。"
|
||||||
step5_5: "社交{icon}时间线是主页和本地时间线的结合。"
|
step5_5: "社交{icon}时间线是主页和本地时间线的结合。"
|
||||||
step5_6: "推荐{icon}时间线是您可以看到管理员推荐服务器的帖子的时间线。"
|
step5_6: "推荐{icon}时间线是您可以看到管理员推荐服务器的帖子的时间线。"
|
||||||
step5_7: "全球{icon}时间线是您可以看到来自其它所有互联服务器的帖子的时间线。"
|
step5_7: "全局{icon}时间线是您可以看到来自其它所有互联服务器的帖子的时间线。"
|
||||||
step6_1: "那么,这里是什么地方?"
|
step6_1: "那么,这里是什么地方?"
|
||||||
step6_2: "好吧,您不只是加入 Firefish。您已经加入了 Fediverse 的一个门户,这是一个由成千上万台服务器组成的互联网络。"
|
step6_2: "好吧,您不只是加入 Firefish。您已经加入了 Fediverse 的一个门户,这是一个由成千上万台服务器组成的互联网络。"
|
||||||
step6_3: "每个服务器的工作方式不同,并不是所有的服务器都运行 Firefish。但这个服务器是的! 这有点复杂,但您很快就会明白的。"
|
step6_3: "每个服务器的工作方式不同,并不是所有的服务器都运行 Firefish。但这个服务器是的! 这有点复杂,但您很快就会明白的。"
|
||||||
step6_4: "现在,去吧,去探索,去享受乐趣吧!"
|
step6_4: "现在,去吧,去探索,去享受乐趣吧!"
|
||||||
_2fa:
|
_2fa:
|
||||||
alreadyRegistered: "您已经注册了两步验证设备。"
|
alreadyRegistered: "您已经注册了两步验证设备。"
|
||||||
registerTOTP: "注册身份验证器应用"
|
registerTOTP: "注册身份验证器应用"
|
||||||
@ -1839,8 +1842,8 @@ customMOTD: 自定义 MOTD(启动屏幕消息)
|
|||||||
sendPushNotificationReadMessageCaption: 会短暂显示 "{emptyPushNotificationMessage}" 的通知,如果启用,可能会增加您的设备的耗电量。
|
sendPushNotificationReadMessageCaption: 会短暂显示 "{emptyPushNotificationMessage}" 的通知,如果启用,可能会增加您的设备的耗电量。
|
||||||
adminCustomCssWarn: 仅当您知道此设置的作用时才应使用它。输入不正确的值可能会导致每个人的客户端停止正常运行。请在用户设置中进行测试来确保您的 CSS
|
adminCustomCssWarn: 仅当您知道此设置的作用时才应使用它。输入不正确的值可能会导致每个人的客户端停止正常运行。请在用户设置中进行测试来确保您的 CSS
|
||||||
正常工作。
|
正常工作。
|
||||||
customMOTDDescription: 自定义 MOTD(启动屏幕)消息,一行一个,每次用户加载/刷新页面时都会随机显示。
|
customMOTDDescription: 自定义 MOTD(启动屏幕)消息,一行一个,每次用户加载 / 重新加载页面时都会随机显示。
|
||||||
customSplashIconsDescription: 用换行符隔开的自定义启动屏幕图标的 URL,在用户每次加载/重新载入页面时随机显示。请确保图片是在一个静态的
|
customSplashIconsDescription: 用换行符隔开的自定义启动屏幕图标的 URL,在用户每次加载 / 重新加载页面时随机显示。请确保图片是在一个静态的
|
||||||
URL 上,最好全部调整为 192x192 的大小。
|
URL 上,最好全部调整为 192x192 的大小。
|
||||||
recommendedInstancesDescription: 推荐的服务器一行一个,它们将出现在推荐时间线中。
|
recommendedInstancesDescription: 推荐的服务器一行一个,它们将出现在推荐时间线中。
|
||||||
splash: 启动画面
|
splash: 启动画面
|
||||||
@ -1863,7 +1866,7 @@ customSplashIcons: 自定义启动屏幕图标(urls)
|
|||||||
alt: 替代文字
|
alt: 替代文字
|
||||||
pushNotificationNotSupported: 您的浏览器或者服务器不支持推送通知
|
pushNotificationNotSupported: 您的浏览器或者服务器不支持推送通知
|
||||||
showAds: 显示社区横幅
|
showAds: 显示社区横幅
|
||||||
enterSendsMessage: 按回车键发送信息(关闭则是 Ctrl + Retun 发送)
|
enterSendsMessage: 按回车键发送信息(关闭则是 Ctrl + Return 发送)
|
||||||
recommendedInstances: 推荐服务器
|
recommendedInstances: 推荐服务器
|
||||||
updateAvailable: 可能有可用更新!
|
updateAvailable: 可能有可用更新!
|
||||||
swipeOnMobile: 允许在页面之间滑动
|
swipeOnMobile: 允许在页面之间滑动
|
||||||
@ -1976,7 +1979,7 @@ confirm: 确认
|
|||||||
importZip: 导入 ZIP
|
importZip: 导入 ZIP
|
||||||
exportZip: 导出 ZIP
|
exportZip: 导出 ZIP
|
||||||
emojiPackCreator: 表情包创建工具
|
emojiPackCreator: 表情包创建工具
|
||||||
objectStorageS3ForcePathStyleDesc: 打开此选项可构建格式为 's3.amazonaws.com/<bucket>/' 而非 '<bucket>.s3.amazonaws.com'
|
objectStorageS3ForcePathStyleDesc: 打开此选项可构建格式为 "s3.amazonaws.com/<bucket>/" 而非 "<bucket>.s3.amazonaws.com"
|
||||||
的端点 URL。
|
的端点 URL。
|
||||||
objectStorageS3ForcePathStyle: 使用基于路径的端点 URL
|
objectStorageS3ForcePathStyle: 使用基于路径的端点 URL
|
||||||
delete2fa: 禁用 2FA
|
delete2fa: 禁用 2FA
|
||||||
@ -1989,3 +1992,6 @@ detectPostLanguage: 自动检测语言,并显示外文帖子的翻译按钮
|
|||||||
indexableDescription: 允许内置搜索显示您的公开帖子
|
indexableDescription: 允许内置搜索显示您的公开帖子
|
||||||
indexable: 可索引的
|
indexable: 可索引的
|
||||||
languageForTranslation: 帖子翻译语言
|
languageForTranslation: 帖子翻译语言
|
||||||
|
vibrate: 播放振动
|
||||||
|
openServerInfo: 点击帖子上的服务器滚动条时显示服务器信息
|
||||||
|
clickToShowPatterns: 点击显示模块模式
|
||||||
|
@ -12,7 +12,7 @@ ok: "OK"
|
|||||||
gotIt: "知道了!"
|
gotIt: "知道了!"
|
||||||
cancel: "取消"
|
cancel: "取消"
|
||||||
enterUsername: "輸入使用者名稱"
|
enterUsername: "輸入使用者名稱"
|
||||||
renotedBy: "{user} 轉傳了"
|
renotedBy: "{user} 轉發了"
|
||||||
noNotes: "無貼文"
|
noNotes: "無貼文"
|
||||||
noNotifications: "沒有通知"
|
noNotifications: "沒有通知"
|
||||||
instance: "伺服器"
|
instance: "伺服器"
|
||||||
@ -21,7 +21,7 @@ basicSettings: "基本設定"
|
|||||||
otherSettings: "其他設定"
|
otherSettings: "其他設定"
|
||||||
openInWindow: "在新視窗開啟"
|
openInWindow: "在新視窗開啟"
|
||||||
profile: "個人檔案"
|
profile: "個人檔案"
|
||||||
timeline: "時間線"
|
timeline: "時間軸"
|
||||||
noAccountDescription: "此用戶還沒有自我介紹。"
|
noAccountDescription: "此用戶還沒有自我介紹。"
|
||||||
login: "登入"
|
login: "登入"
|
||||||
loggingIn: "登入中"
|
loggingIn: "登入中"
|
||||||
@ -49,6 +49,7 @@ sendMessage: "發送訊息"
|
|||||||
copyUsername: "複製使用者名稱"
|
copyUsername: "複製使用者名稱"
|
||||||
searchUser: "搜尋使用者"
|
searchUser: "搜尋使用者"
|
||||||
reply: "回覆"
|
reply: "回覆"
|
||||||
|
replies: "回覆"
|
||||||
loadMore: "載入更多"
|
loadMore: "載入更多"
|
||||||
showMore: "載入更多"
|
showMore: "載入更多"
|
||||||
showLess: "關閉"
|
showLess: "關閉"
|
||||||
@ -94,11 +95,13 @@ unfollow: "取消追隨"
|
|||||||
followRequestPending: "追隨許可批准中"
|
followRequestPending: "追隨許可批准中"
|
||||||
enterEmoji: "輸入表情符號"
|
enterEmoji: "輸入表情符號"
|
||||||
renote: "轉發"
|
renote: "轉發"
|
||||||
|
renotes: "轉發"
|
||||||
unrenote: "取消轉發"
|
unrenote: "取消轉發"
|
||||||
renoted: "已轉發。"
|
renoted: "已轉發。"
|
||||||
cantRenote: "無法轉發此貼文。"
|
cantRenote: "無法轉發此貼文。"
|
||||||
cantReRenote: "無法轉發之前已經轉發過的內容。"
|
cantReRenote: "無法轉發之前已經轉發過的內容。"
|
||||||
quote: "引用"
|
quote: "引用"
|
||||||
|
quotes: "引用"
|
||||||
pinnedNote: "已置頂的貼文"
|
pinnedNote: "已置頂的貼文"
|
||||||
pinned: "置頂"
|
pinned: "置頂"
|
||||||
you: "您"
|
you: "您"
|
||||||
@ -106,6 +109,7 @@ clickToShow: "按一下以顯示"
|
|||||||
sensitive: "敏感內容"
|
sensitive: "敏感內容"
|
||||||
add: "新增"
|
add: "新增"
|
||||||
reaction: "反應"
|
reaction: "反應"
|
||||||
|
reactions: "反應"
|
||||||
enableEmojiReaction: "啟用表情符號反應"
|
enableEmojiReaction: "啟用表情符號反應"
|
||||||
showEmojisInReactionNotifications: "在反應通知中顯示表情符號"
|
showEmojisInReactionNotifications: "在反應通知中顯示表情符號"
|
||||||
reactionSetting: "在選擇器中顯示反應"
|
reactionSetting: "在選擇器中顯示反應"
|
||||||
@ -145,12 +149,12 @@ flagAsBot: "標記此帳號是機器人"
|
|||||||
flagAsBotDescription: "如果本帳戶是由程式控制,請啟用此選項。啟用後,會作為標示幫助其他開發者防止機器人之間產生無限互動的行為,並會調整Firefish內部系統將本帳戶識別為機器人。"
|
flagAsBotDescription: "如果本帳戶是由程式控制,請啟用此選項。啟用後,會作為標示幫助其他開發者防止機器人之間產生無限互動的行為,並會調整Firefish內部系統將本帳戶識別為機器人。"
|
||||||
flagAsCat: "你是喵咪嗎?w😺"
|
flagAsCat: "你是喵咪嗎?w😺"
|
||||||
flagAsCatDescription: "如果想將本帳戶標示為一隻貓,請開啟此標示!"
|
flagAsCatDescription: "如果想將本帳戶標示為一隻貓,請開啟此標示!"
|
||||||
flagShowTimelineReplies: "在時間線上顯示貼文的回覆"
|
flagShowTimelineReplies: "在時間軸上顯示貼文的回覆"
|
||||||
flagShowTimelineRepliesDescription: "啟用時,時間線除了顯示用戶的貼文以外,還會顯示用戶對其他貼文的回覆。"
|
flagShowTimelineRepliesDescription: "啟用時,時間軸除了顯示用戶的貼文以外,還會顯示用戶對其他貼文的回覆。"
|
||||||
autoAcceptFollowed: "自動准予追隨中使用者的追隨請求"
|
autoAcceptFollowed: "自動准予追隨中使用者的追隨請求"
|
||||||
addAccount: "添加帳戶"
|
addAccount: "添加帳戶"
|
||||||
loginFailed: "登入失敗"
|
loginFailed: "登入失敗"
|
||||||
showOnRemote: "轉到所在伺服器顯示"
|
showOnRemote: "開啟來源頁面"
|
||||||
general: "一般"
|
general: "一般"
|
||||||
wallpaper: "桌布"
|
wallpaper: "桌布"
|
||||||
setWallpaper: "設定桌布"
|
setWallpaper: "設定桌布"
|
||||||
@ -320,12 +324,9 @@ dayX: "{day}日"
|
|||||||
monthX: "{month}月"
|
monthX: "{month}月"
|
||||||
yearX: "{year}年"
|
yearX: "{year}年"
|
||||||
pages: "頁面"
|
pages: "頁面"
|
||||||
integration: "整合"
|
enableLocalTimeline: "開啟本地時間軸"
|
||||||
connectService: "己連結"
|
enableGlobalTimeline: "啟用公開時間軸"
|
||||||
disconnectService: "己斷開"
|
disablingTimelinesInfo: "即使您關閉了時間軸功能,管理員和板主仍可訪問所有的時間軸。"
|
||||||
enableLocalTimeline: "開啟本地時間線"
|
|
||||||
enableGlobalTimeline: "啟用公開時間線"
|
|
||||||
disablingTimelinesInfo: "即使您關閉了時間線功能,管理員和版主始終可以訪問所有的時間線。"
|
|
||||||
registration: "註冊"
|
registration: "註冊"
|
||||||
enableRegistration: "開啟新使用者註冊"
|
enableRegistration: "開啟新使用者註冊"
|
||||||
invite: "邀請"
|
invite: "邀請"
|
||||||
@ -385,7 +386,7 @@ administrator: "管理員"
|
|||||||
token: "權杖"
|
token: "權杖"
|
||||||
twoStepAuthentication: "兩階段驗證"
|
twoStepAuthentication: "兩階段驗證"
|
||||||
moderator: "板主"
|
moderator: "板主"
|
||||||
moderation: "言論調節"
|
moderation: "管理"
|
||||||
nUsersMentioned: "提到了{n}"
|
nUsersMentioned: "提到了{n}"
|
||||||
securityKey: "安全金鑰"
|
securityKey: "安全金鑰"
|
||||||
securityKeyName: "金鑰名稱"
|
securityKeyName: "金鑰名稱"
|
||||||
@ -458,7 +459,7 @@ youHaveNoGroups: "找不到群組"
|
|||||||
joinOrCreateGroup: "請加入現有群組,或創建新群組。"
|
joinOrCreateGroup: "請加入現有群組,或創建新群組。"
|
||||||
noHistory: "沒有歷史紀錄"
|
noHistory: "沒有歷史紀錄"
|
||||||
signinHistory: "登入歷史"
|
signinHistory: "登入歷史"
|
||||||
disableAnimatedMfm: "禁用MFM動畫"
|
disableAnimatedMfm: "停用MFM動畫"
|
||||||
doing: "正在處理..."
|
doing: "正在處理..."
|
||||||
category: "類別"
|
category: "類別"
|
||||||
tags: "標籤"
|
tags: "標籤"
|
||||||
@ -482,7 +483,7 @@ promotion: "推廣"
|
|||||||
promote: "推廣"
|
promote: "推廣"
|
||||||
numberOfDays: "有效天數"
|
numberOfDays: "有效天數"
|
||||||
hideThisNote: "隱藏此貼文"
|
hideThisNote: "隱藏此貼文"
|
||||||
showFeaturedNotesInTimeline: "在時間線上顯示熱門推薦"
|
showFeaturedNotesInTimeline: "在時間軸上顯示熱門推薦"
|
||||||
objectStorage: "Object Storage (物件儲存)"
|
objectStorage: "Object Storage (物件儲存)"
|
||||||
useObjectStorage: "使用Object Storage"
|
useObjectStorage: "使用Object Storage"
|
||||||
objectStorageBaseUrl: "根URL"
|
objectStorageBaseUrl: "根URL"
|
||||||
@ -502,7 +503,7 @@ objectStorageUseProxyDesc: "如果不使用代理進行API連接,請關閉"
|
|||||||
objectStorageSetPublicRead: "上傳時設定為\"public-read\""
|
objectStorageSetPublicRead: "上傳時設定為\"public-read\""
|
||||||
serverLogs: "伺服器日誌"
|
serverLogs: "伺服器日誌"
|
||||||
deleteAll: "刪除所有記錄"
|
deleteAll: "刪除所有記錄"
|
||||||
showFixedPostForm: "於時間線頁頂顯示「發送貼文」方框"
|
showFixedPostForm: "於時間軸頁頂顯示「發送貼文」方框"
|
||||||
newNoteRecived: "發現新的貼文"
|
newNoteRecived: "發現新的貼文"
|
||||||
sounds: "音效"
|
sounds: "音效"
|
||||||
listen: "聆聽"
|
listen: "聆聽"
|
||||||
@ -596,7 +597,7 @@ emptyToDisableSmtpAuth: "留空使用者名稱及密碼以關閉SMTP驗證"
|
|||||||
smtpSecure: "在 SMTP 連接中使用隱式 SSL/TLS"
|
smtpSecure: "在 SMTP 連接中使用隱式 SSL/TLS"
|
||||||
smtpSecureInfo: "如使用STARTTLS,請關閉"
|
smtpSecureInfo: "如使用STARTTLS,請關閉"
|
||||||
testEmail: "測試郵件發送"
|
testEmail: "測試郵件發送"
|
||||||
wordMute: "被靜音的文字"
|
wordMute: "被靜音的文字及語言"
|
||||||
regexpError: "正規表達式錯誤"
|
regexpError: "正規表達式錯誤"
|
||||||
regexpErrorDescription: "{tab} 靜音文字的第 {line} 行的正規表達式有錯誤:"
|
regexpErrorDescription: "{tab} 靜音文字的第 {line} 行的正規表達式有錯誤:"
|
||||||
instanceMute: "伺服器的靜音"
|
instanceMute: "伺服器的靜音"
|
||||||
@ -670,7 +671,7 @@ no: "取消"
|
|||||||
driveFilesCount: "雲端硬碟檔案數量"
|
driveFilesCount: "雲端硬碟檔案數量"
|
||||||
driveUsage: "雲端硬碟使用量"
|
driveUsage: "雲端硬碟使用量"
|
||||||
noCrawle: "拒絕搜尋引擎索引"
|
noCrawle: "拒絕搜尋引擎索引"
|
||||||
noCrawleDescription: "要求網路搜尋引擎不要索引你的個人資料頁、貼文及頁面等。"
|
noCrawleDescription: "要求外部搜尋引擎不要收錄(索引)你的內容(個人檔案、貼文、頁面等)。"
|
||||||
lockedAccountInfo: "即使你通過了追隨者請求,除非你將貼文的可見性設定為 「追隨者」,否則任何人都能看見你的貼文。"
|
lockedAccountInfo: "即使你通過了追隨者請求,除非你將貼文的可見性設定為 「追隨者」,否則任何人都能看見你的貼文。"
|
||||||
alwaysMarkSensitive: "默認將圖像/影像標記為敏感內容"
|
alwaysMarkSensitive: "默認將圖像/影像標記為敏感內容"
|
||||||
loadRawImages: "以原始圖檔顯示附件圖檔的縮圖"
|
loadRawImages: "以原始圖檔顯示附件圖檔的縮圖"
|
||||||
@ -688,7 +689,7 @@ experimentalFeatures: "實驗中的功能"
|
|||||||
developer: "開發者"
|
developer: "開發者"
|
||||||
makeExplorable: "使自己的帳戶能夠在“探索”頁面中顯示"
|
makeExplorable: "使自己的帳戶能夠在“探索”頁面中顯示"
|
||||||
makeExplorableDescription: "如果關閉,帳戶將不會被顯示在\"探索\"頁面中。"
|
makeExplorableDescription: "如果關閉,帳戶將不會被顯示在\"探索\"頁面中。"
|
||||||
showGapBetweenNotesInTimeline: "分開顯示時間線上的貼文"
|
showGapBetweenNotesInTimeline: "分開顯示時間軸上的貼文"
|
||||||
duplicate: "複製"
|
duplicate: "複製"
|
||||||
left: "左"
|
left: "左"
|
||||||
center: "置中"
|
center: "置中"
|
||||||
@ -734,7 +735,7 @@ inChannelSearch: "頻道内搜尋"
|
|||||||
useReactionPickerForContextMenu: "點擊右鍵開啟反應工具欄"
|
useReactionPickerForContextMenu: "點擊右鍵開啟反應工具欄"
|
||||||
typingUsers: "{users}輸入中"
|
typingUsers: "{users}輸入中"
|
||||||
jumpToSpecifiedDate: "跳轉到特定日期"
|
jumpToSpecifiedDate: "跳轉到特定日期"
|
||||||
showingPastTimeline: "顯示過往的時間線"
|
showingPastTimeline: "顯示過往的時間軸"
|
||||||
clear: "清除"
|
clear: "清除"
|
||||||
markAllAsRead: "全部標示為已讀"
|
markAllAsRead: "全部標示為已讀"
|
||||||
goBack: "返回"
|
goBack: "返回"
|
||||||
@ -765,7 +766,7 @@ user: "使用者"
|
|||||||
administration: "管理"
|
administration: "管理"
|
||||||
accounts: "帳戶"
|
accounts: "帳戶"
|
||||||
switch: "切換"
|
switch: "切換"
|
||||||
noMaintainerInformationWarning: "尚未設定管理員信息。"
|
noMaintainerInformationWarning: "尚未設定管理員資訊。"
|
||||||
noBotProtectionWarning: "尚未設定Bot防護。"
|
noBotProtectionWarning: "尚未設定Bot防護。"
|
||||||
configure: "設定"
|
configure: "設定"
|
||||||
postToGallery: "發佈到相簿"
|
postToGallery: "發佈到相簿"
|
||||||
@ -786,7 +787,7 @@ previewNoteText: "預覽文本"
|
|||||||
customCss: "自定義 CSS"
|
customCss: "自定義 CSS"
|
||||||
customCssWarn: "這個設定必須由具備相關知識的人員操作,不當的設定可能导致客戶端無法正常使用。"
|
customCssWarn: "這個設定必須由具備相關知識的人員操作,不當的設定可能导致客戶端無法正常使用。"
|
||||||
global: "公開"
|
global: "公開"
|
||||||
squareAvatars: "頭像以方形顯示"
|
squareAvatars: "大頭貼以方形顯示"
|
||||||
sent: "發送"
|
sent: "發送"
|
||||||
received: "收取"
|
received: "收取"
|
||||||
searchResult: "搜尋結果"
|
searchResult: "搜尋結果"
|
||||||
@ -801,7 +802,7 @@ translatedFrom: "從 {x} 翻譯"
|
|||||||
accountDeletionInProgress: "正在刪除帳戶"
|
accountDeletionInProgress: "正在刪除帳戶"
|
||||||
usernameInfo: "在伺服器上您的帳戶是唯一的識別名稱。您可以使用字母 (a ~ z, A ~ Z)、數字 (0 ~ 9) 和下底線 (_)。之後帳戶名是不能更改的。"
|
usernameInfo: "在伺服器上您的帳戶是唯一的識別名稱。您可以使用字母 (a ~ z, A ~ Z)、數字 (0 ~ 9) 和下底線 (_)。之後帳戶名是不能更改的。"
|
||||||
aiChanMode: "小藍模式"
|
aiChanMode: "小藍模式"
|
||||||
keepCw: "保持CW"
|
keepCw: "保持內容警告"
|
||||||
pubSub: "Pub/Sub 帳戶"
|
pubSub: "Pub/Sub 帳戶"
|
||||||
lastCommunication: "最近的通信"
|
lastCommunication: "最近的通信"
|
||||||
resolved: "已解決"
|
resolved: "已解決"
|
||||||
@ -822,7 +823,7 @@ unmuteThread: "將貼文串的靜音解除"
|
|||||||
ffVisibility: "連接的公開範圍"
|
ffVisibility: "連接的公開範圍"
|
||||||
ffVisibilityDescription: "您可以設定您的關注/關注者資訊的公開範圍。"
|
ffVisibilityDescription: "您可以設定您的關注/關注者資訊的公開範圍。"
|
||||||
continueThread: "查看更多貼文"
|
continueThread: "查看更多貼文"
|
||||||
deleteAccountConfirm: "將要刪除帳戶。是否確定?"
|
deleteAccountConfirm: "此帳戶將被刪除,是否繼續?"
|
||||||
incorrectPassword: "密碼錯誤。"
|
incorrectPassword: "密碼錯誤。"
|
||||||
voteConfirm: "確定投給「{choice}」?"
|
voteConfirm: "確定投給「{choice}」?"
|
||||||
hide: "隱藏"
|
hide: "隱藏"
|
||||||
@ -899,7 +900,7 @@ customKaTeXMacro: "自訂KaTeX巨集"
|
|||||||
customKaTeXMacroDescription: "使用巨集來輕鬆輸入數學表達式吧!巨集的用法與 LaTeX 中的命令定義相同。你可以使用 \\newcommand{\\
|
customKaTeXMacroDescription: "使用巨集來輕鬆輸入數學表達式吧!巨集的用法與 LaTeX 中的命令定義相同。你可以使用 \\newcommand{\\
|
||||||
name}{content} 或 \\newcommand{\\name}[number of arguments]{content} 來輸入數學表達式。舉例來說,\\
|
name}{content} 或 \\newcommand{\\name}[number of arguments]{content} 來輸入數學表達式。舉例來說,\\
|
||||||
newcommand{\\add}[2]{#1 + #2} 會將 \\add{3}{foo} 展開為 3 + foo。巨集名稱除了可用大括號 {} 括起來之外,也可使用小括號
|
newcommand{\\add}[2]{#1 + #2} 會將 \\add{3}{foo} 展開為 3 + foo。巨集名稱除了可用大括號 {} 括起來之外,也可使用小括號
|
||||||
() 和中括號 [],但使用於巨集參數的括號會有所變更。每行只能夠定義一個巨集,巨集中間無法間換。無效的行將被忽略。只支援簡單字串的替換功能,不支援條件分歧的高級語法。"
|
() 和中括號 [],但使用於巨集參數的括號會有所變更。每行只能夠定義一個巨集,巨集中間無法間換。無效的行將被忽略。只支援簡單字串的替換功能,不支援條件分歧的進階語法。"
|
||||||
enableCustomKaTeXMacro: "啟用自定義 KaTeX 宏"
|
enableCustomKaTeXMacro: "啟用自定義 KaTeX 宏"
|
||||||
_sensitiveMediaDetection:
|
_sensitiveMediaDetection:
|
||||||
description: "您可以使用機器學習自動檢測敏感媒體並將其用於審核。 伺服器的負荷會稍微增加。"
|
description: "您可以使用機器學習自動檢測敏感媒體並將其用於審核。 伺服器的負荷會稍微增加。"
|
||||||
@ -932,7 +933,8 @@ _accountDelete:
|
|||||||
inProgress: "正在刪除"
|
inProgress: "正在刪除"
|
||||||
_ad:
|
_ad:
|
||||||
back: "返回"
|
back: "返回"
|
||||||
reduceFrequencyOfThisAd: "降低此廣告的頻率"
|
reduceFrequencyOfThisAd: "降低此橫幅的頻率"
|
||||||
|
adsBy: 社群橫幅(作者:{by})
|
||||||
_forgotPassword:
|
_forgotPassword:
|
||||||
enterEmail: "請輸入您的帳戶註冊的電子郵件地址。 密碼重置連結將被發送到該電子郵件地址。"
|
enterEmail: "請輸入您的帳戶註冊的電子郵件地址。 密碼重置連結將被發送到該電子郵件地址。"
|
||||||
ifNoEmail: "如果您還沒有註冊您的電子郵件地址,請聯繫管理員。"
|
ifNoEmail: "如果您還沒有註冊您的電子郵件地址,請聯繫管理員。"
|
||||||
@ -1026,7 +1028,7 @@ _mfm:
|
|||||||
emoji: "自訂表情符號"
|
emoji: "自訂表情符號"
|
||||||
emojiDescription: "您可以通過將自定義表情符號名稱括在冒號中來顯示自定義表情符號。"
|
emojiDescription: "您可以通過將自定義表情符號名稱括在冒號中來顯示自定義表情符號。"
|
||||||
search: "搜尋"
|
search: "搜尋"
|
||||||
searchDescription: "您可以顯示所輸入的搜索框。"
|
searchDescription: "顯示含有指定文字的搜尋欄。"
|
||||||
flip: "翻轉"
|
flip: "翻轉"
|
||||||
flipDescription: "將內容上下或左右翻轉。"
|
flipDescription: "將內容上下或左右翻轉。"
|
||||||
jelly: "動畫(果凍)"
|
jelly: "動畫(果凍)"
|
||||||
@ -1067,8 +1069,8 @@ _mfm:
|
|||||||
position: 位置
|
position: 位置
|
||||||
alwaysPlay: 自動播放所有MFM動畫
|
alwaysPlay: 自動播放所有MFM動畫
|
||||||
positionDescription: 按指定數量移動內容。
|
positionDescription: 按指定數量移動內容。
|
||||||
advancedDescription: 如果禁用,則僅允許基本標記,除非正在播放 MFM 動畫
|
advancedDescription: 如果停用,僅顯示基礎MFM及正在播放的MFM動畫
|
||||||
advanced: 高級MFM
|
advanced: 進階MFM
|
||||||
fade: 淡出
|
fade: 淡出
|
||||||
foreground: 文字顏色
|
foreground: 文字顏色
|
||||||
crop: 裁切
|
crop: 裁切
|
||||||
@ -1109,11 +1111,16 @@ _wordMute:
|
|||||||
muteWords: "加入靜音文字"
|
muteWords: "加入靜音文字"
|
||||||
muteWordsDescription: "用空格分隔指定AND,用換行分隔指定OR。"
|
muteWordsDescription: "用空格分隔指定AND,用換行分隔指定OR。"
|
||||||
muteWordsDescription2: "將關鍵字用斜線括起來表示正規表達式。"
|
muteWordsDescription2: "將關鍵字用斜線括起來表示正規表達式。"
|
||||||
softDescription: "隱藏時間線中指定條件的貼文。"
|
softDescription: "隱藏時間軸中指定條件的貼文。"
|
||||||
hardDescription: "具有指定條件的貼文將不添加到時間線。 即使您更改條件,未被添加的貼文也會被排除在外。"
|
hardDescription: "符合指定條件的貼文將不添加到時間軸。 即使您更改條件,未被添加的貼文也會被排除在外。"
|
||||||
soft: "軟性靜音"
|
soft: "軟性靜音"
|
||||||
hard: "硬性靜音"
|
hard: "硬性靜音"
|
||||||
mutedNotes: "已靜音的貼文"
|
mutedNotes: "已靜音的貼文"
|
||||||
|
muteLangsDescription2: '使用語言代碼。例: en, fr, ja, zh.'
|
||||||
|
lang: 語言
|
||||||
|
langDescription: 將指定語言的貼文從時間軸中隱藏。
|
||||||
|
muteLangs: 被靜音的語言
|
||||||
|
muteLangsDescription: OR條件以空格或換行進行分隔。
|
||||||
_instanceMute:
|
_instanceMute:
|
||||||
instanceMuteDescription: "包括對被靜音伺服器上的用戶的回覆,被設定的伺服器上所有貼文及轉發都會被靜音。"
|
instanceMuteDescription: "包括對被靜音伺服器上的用戶的回覆,被設定的伺服器上所有貼文及轉發都會被靜音。"
|
||||||
instanceMuteDescription2: "設定時以換行進行分隔"
|
instanceMuteDescription2: "設定時以換行進行分隔"
|
||||||
@ -1223,16 +1230,16 @@ _tutorial:
|
|||||||
step2_1: "首先,請完成你的個人資料。"
|
step2_1: "首先,請完成你的個人資料。"
|
||||||
step2_2: "通過提供一些關於你自己的資料,其他人會更容易了解他們是否想看到你的貼文或關注你。"
|
step2_2: "通過提供一些關於你自己的資料,其他人會更容易了解他們是否想看到你的貼文或關注你。"
|
||||||
step3_1: "現在是時候追隨一些人了!"
|
step3_1: "現在是時候追隨一些人了!"
|
||||||
step3_2: "你的主頁和社交時間線是基於你所追蹤的人,所以試著先追蹤幾個帳戶。\n點擊個人資料右上角的加號圈就可以關注它。"
|
step3_2: "你的主頁和社交時間軸是基於你所追蹤的人,所以試著先追蹤幾個帳戶。\n點擊個人資料右上角的加號按鈕就可以關注它。"
|
||||||
step4_1: "讓我們出去找你。"
|
step4_1: "讓我們出去找你。"
|
||||||
step4_2: "對於他們的第一條信息,有些人喜歡做 {introduction} 或一個簡單的 \"hello world!\""
|
step4_2: "作為第一則貼文,有些人喜歡發 {introduction} 或單純發一個 \"hello world!\""
|
||||||
step5_1: "時間線,到處都是時間線!"
|
step5_1: "時間軸,到處都是時間軸!"
|
||||||
step5_2: "您的伺服器已啟用了{timelines}個時間線。"
|
step5_2: "您的伺服器已啟用了{timelines}個時間軸。"
|
||||||
step5_3: "首頁 {icon} 時間線是顯示你追蹤的帳號的貼文。"
|
step5_3: "首頁 {icon} 時間軸是顯示你追蹤的帳號的貼文。"
|
||||||
step5_4: "本地 {icon} 時間線是你可以看到伺服器中所有其他用戶的貼文的時間線。"
|
step5_4: "本地 {icon} 時間軸是你可以看到伺服器中所有其他用戶的貼文的時間軸。"
|
||||||
step5_5: "社交 {icon} 時間線是你的 首頁時間線 和 本地時間線 的結合體。"
|
step5_5: "社交 {icon} 時間軸是你的 首頁時間軸 和 本地時間軸 的結合體。"
|
||||||
step5_6: "推薦 {icon} 時間線是顯示你的伺服器管理員推薦的貼文。"
|
step5_6: "推薦 {icon} 時間軸是顯示你的伺服器管理員推薦的貼文。"
|
||||||
step5_7: "全球 {icon} 時間線是顯示來自所有其他連接的伺服器的貼文。"
|
step5_7: "全球 {icon} 時間軸是顯示來自所有其他連接的伺服器的貼文。"
|
||||||
step6_1: "那麼,這裡是什麼地方?"
|
step6_1: "那麼,這裡是什麼地方?"
|
||||||
step6_2: "你不只是加入Firefish。你已經加入了Fediverse的一個門戶,這是一個由成千上萬台服務器組成的互聯網絡。"
|
step6_2: "你不只是加入Firefish。你已經加入了Fediverse的一個門戶,這是一個由成千上萬台服務器組成的互聯網絡。"
|
||||||
step6_3: "每個服務器也有不同,而並不是所有的服務器都運行Firefish。但這個服務器確實是運行Firefish的! 你可能會覺得有點複雜,但你很快就會明白的。"
|
step6_3: "每個服務器也有不同,而並不是所有的服務器都運行Firefish。但這個服務器確實是運行Firefish的! 你可能會覺得有點複雜,但你很快就會明白的。"
|
||||||
@ -1321,7 +1328,7 @@ _weekday:
|
|||||||
_widgets:
|
_widgets:
|
||||||
memo: "備忘錄"
|
memo: "備忘錄"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
timeline: "時間線"
|
timeline: "時間軸"
|
||||||
calendar: "行事曆"
|
calendar: "行事曆"
|
||||||
trends: "發燒貼文"
|
trends: "發燒貼文"
|
||||||
clock: "時鐘"
|
clock: "時鐘"
|
||||||
@ -1355,9 +1362,9 @@ _cw:
|
|||||||
files: "{count} 個檔案"
|
files: "{count} 個檔案"
|
||||||
_poll:
|
_poll:
|
||||||
noOnlyOneChoice: "至少需要兩個選項"
|
noOnlyOneChoice: "至少需要兩個選項"
|
||||||
choiceN: "選擇{n}"
|
choiceN: "選項{n}"
|
||||||
noMore: "沒辦法再添加選項了"
|
noMore: "沒辦法再添加選項了"
|
||||||
canMultipleVote: "可以多次投票"
|
canMultipleVote: "允許複選"
|
||||||
expiration: "期限"
|
expiration: "期限"
|
||||||
infinite: "無期限"
|
infinite: "無期限"
|
||||||
at: "結束時間"
|
at: "結束時間"
|
||||||
@ -1366,7 +1373,7 @@ _poll:
|
|||||||
deadlineTime: "小時"
|
deadlineTime: "小時"
|
||||||
duration: "時長"
|
duration: "時長"
|
||||||
votesCount: "{n}票"
|
votesCount: "{n}票"
|
||||||
totalVotes: "一共{n}票"
|
totalVotes: "總計{n}票"
|
||||||
vote: "投票"
|
vote: "投票"
|
||||||
showResult: "顯示結果"
|
showResult: "顯示結果"
|
||||||
voted: "已投票"
|
voted: "已投票"
|
||||||
@ -1377,9 +1384,9 @@ _poll:
|
|||||||
remainingSeconds: "{s}秒後截止"
|
remainingSeconds: "{s}秒後截止"
|
||||||
_visibility:
|
_visibility:
|
||||||
public: "公開"
|
public: "公開"
|
||||||
publicDescription: "發佈至公開時間線"
|
publicDescription: "發佈至公開時間軸"
|
||||||
home: "不在主頁顯示"
|
home: "不在主頁顯示"
|
||||||
homeDescription: "僅發送至首頁的時間線"
|
homeDescription: "僅發送至首頁的時間軸"
|
||||||
followers: "追隨者"
|
followers: "追隨者"
|
||||||
followersDescription: "僅發佈至關注者"
|
followersDescription: "僅發佈至關注者"
|
||||||
specified: "指定使用者"
|
specified: "指定使用者"
|
||||||
@ -1777,6 +1784,8 @@ _notification:
|
|||||||
reply: "回覆"
|
reply: "回覆"
|
||||||
renote: "轉發"
|
renote: "轉發"
|
||||||
reacted: 對您的貼文做出了反應
|
reacted: 對您的貼文做出了反應
|
||||||
|
renoted: 轉發了您的貼文
|
||||||
|
voted: 投了票
|
||||||
_deck:
|
_deck:
|
||||||
alwaysShowMainColumn: "總是顯示主欄"
|
alwaysShowMainColumn: "總是顯示主欄"
|
||||||
columnAlign: "對齊欄位"
|
columnAlign: "對齊欄位"
|
||||||
@ -1800,7 +1809,7 @@ _deck:
|
|||||||
main: "主列"
|
main: "主列"
|
||||||
widgets: "小工具"
|
widgets: "小工具"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
tl: "時間線"
|
tl: "時間軸"
|
||||||
antenna: "天線"
|
antenna: "天線"
|
||||||
list: "清單"
|
list: "清單"
|
||||||
mentions: "提及"
|
mentions: "提及"
|
||||||
@ -1809,7 +1818,7 @@ _deck:
|
|||||||
secureMode: 安全模式(授權獲取)
|
secureMode: 安全模式(授權獲取)
|
||||||
instanceSecurity: 伺服器安全性
|
instanceSecurity: 伺服器安全性
|
||||||
privateMode: 私人模式
|
privateMode: 私人模式
|
||||||
allowedInstances: 列入白名單的伺服器
|
allowedInstances: 列入允許名單的伺服器
|
||||||
secureModeInfo: 當從其他伺服器請求時,不要在沒有證據的情況下發回。
|
secureModeInfo: 當從其他伺服器請求時,不要在沒有證據的情況下發回。
|
||||||
_messaging:
|
_messaging:
|
||||||
dms: 私訊
|
dms: 私訊
|
||||||
@ -1817,8 +1826,8 @@ _messaging:
|
|||||||
manageGroups: 管理群組
|
manageGroups: 管理群組
|
||||||
replayTutorial: 重新播放教程
|
replayTutorial: 重新播放教程
|
||||||
moveFromLabel: '您想遷移的舊帳戶:'
|
moveFromLabel: '您想遷移的舊帳戶:'
|
||||||
customMOTDDescription: 每次用戶加載/重新加載頁面時,由換行符號分隔的 MOTD(啟動畫面)的自定信息將隨機顯示。
|
customMOTDDescription: 自訂MOTD(啟動畫面)訊息,一行一個。每次用戶載入/重新整理頁面時將會隨機顯示。
|
||||||
privateModeInfo: 啟用後,只有列入白名單的伺服器才能與你的伺服器聯合。所有貼文都將對公眾隱藏。
|
privateModeInfo: 啟用後,只有列入允許名單的伺服器才能與你的伺服器聯合。所有貼文都將對公眾隱藏。
|
||||||
adminCustomCssWarn: 除非你知道它的作用,否則請不要使用此設定。 輸入不正確的值可能會導致每個人的客戶端無法正常運行。你可在你的的用戶設定中測試,確保你的
|
adminCustomCssWarn: 除非你知道它的作用,否則請不要使用此設定。 輸入不正確的值可能會導致每個人的客戶端無法正常運行。你可在你的的用戶設定中測試,確保你的
|
||||||
CSS 正常工作。
|
CSS 正常工作。
|
||||||
showUpdates: Firefish 更新時顯示彈出視窗
|
showUpdates: Firefish 更新時顯示彈出視窗
|
||||||
@ -1832,7 +1841,7 @@ accountMoved: '該使用者已遷移至新帳戶:'
|
|||||||
showAds: 顯示社群橫幅
|
showAds: 顯示社群橫幅
|
||||||
noThankYou: 不用了,謝謝
|
noThankYou: 不用了,謝謝
|
||||||
selectInstance: 選擇伺服器
|
selectInstance: 選擇伺服器
|
||||||
enableRecommendedTimeline: 啟用推薦時間線
|
enableRecommendedTimeline: 啟用推薦時間軸
|
||||||
antennaInstancesDescription: 分行列出一個伺服器
|
antennaInstancesDescription: 分行列出一個伺服器
|
||||||
moveTo: 遷移此帳戶到新帳戶
|
moveTo: 遷移此帳戶到新帳戶
|
||||||
moveToLabel: '請輸入你將會遷移到的帳戶:'
|
moveToLabel: '請輸入你將會遷移到的帳戶:'
|
||||||
@ -1846,7 +1855,7 @@ enableEmojiReactions: 啟用表情符號反應
|
|||||||
breakFollowConfirm: 您確定要移除該關注者嗎?
|
breakFollowConfirm: 您確定要移除該關注者嗎?
|
||||||
socialTimeline: 社交時間軸
|
socialTimeline: 社交時間軸
|
||||||
cannotUploadBecauseExceedsFileSizeLimit: 因檔案太大而無法上傳。
|
cannotUploadBecauseExceedsFileSizeLimit: 因檔案太大而無法上傳。
|
||||||
customMOTD: 自定義MOTD (網頁載入時顯示的信息)
|
customMOTD: 自定義MOTD (網頁載入時顯示的訊息)
|
||||||
customSplashIcons: 啟動畫面圖標 (網址)
|
customSplashIcons: 啟動畫面圖標 (網址)
|
||||||
splash: 啟動畫面
|
splash: 啟動畫面
|
||||||
updateAvailable: 可能有可用的更新!
|
updateAvailable: 可能有可用的更新!
|
||||||
@ -1863,9 +1872,11 @@ silencedInstances: 已靜音的伺服器
|
|||||||
silenced: 已靜音
|
silenced: 已靜音
|
||||||
_experiments:
|
_experiments:
|
||||||
title: 試驗功能
|
title: 試驗功能
|
||||||
|
enablePostImports: 啟用匯入貼文的功能
|
||||||
|
postImportsCaption: 允許用戶從舊有的Firefish・Misskey・Mastodon・Akkoma・Pleroma帳號匯入貼文。在伺服器佇列堵塞時匯入貼文可能會導致載入速度變慢。
|
||||||
findOtherInstance: 找找另一個伺服器
|
findOtherInstance: 找找另一個伺服器
|
||||||
noGraze: 瀏覽器擴展 "Graze for Mastodon" 會與Firefish發生衝突,請停用該擴展。
|
noGraze: 瀏覽器擴充元件 "Graze for Mastodon" 會與Firefish發生衝突,請停用該擴充元件。
|
||||||
userSaysSomethingReasonRenote: '{name} 轉傳了包含 {reason} 的貼文'
|
userSaysSomethingReasonRenote: '{name} 轉發了包含 {reason} 的貼文'
|
||||||
pushNotificationNotSupported: 你的瀏覽器或伺服器不支援推送通知
|
pushNotificationNotSupported: 你的瀏覽器或伺服器不支援推送通知
|
||||||
accessibility: 輔助功能
|
accessibility: 輔助功能
|
||||||
userSaysSomethingReasonReply: '{name} 回覆了包含 {reason} 的貼文'
|
userSaysSomethingReasonReply: '{name} 回覆了包含 {reason} 的貼文'
|
||||||
@ -1876,15 +1887,15 @@ deleted: 已刪除
|
|||||||
editNote: 編輯貼文
|
editNote: 編輯貼文
|
||||||
edited: '於 {date} {time} 編輯'
|
edited: '於 {date} {time} 編輯'
|
||||||
userSaysSomethingReason: '{name} 說了 {reason}'
|
userSaysSomethingReason: '{name} 說了 {reason}'
|
||||||
allowedInstancesDescription: 要加入聯邦白名單的服務器,每台伺服器用新行分隔(僅適用於私有模式)。
|
allowedInstancesDescription: 允許聯邦的伺服器名單,一行一個(僅適用於私人模式)。
|
||||||
defaultReaction: 默認的表情符號反應
|
defaultReaction: 默認的表情符號反應
|
||||||
license: 授權
|
license: 授權
|
||||||
apps: 應用
|
apps: 應用
|
||||||
pushNotification: 推送通知
|
pushNotification: 推送通知
|
||||||
subscribePushNotification: 啟用推送通知
|
subscribePushNotification: 啟用推送通知
|
||||||
unsubscribePushNotification: 禁用推送通知
|
unsubscribePushNotification: 停用推送通知
|
||||||
pushNotificationAlreadySubscribed: 推送通知已經啟用
|
pushNotificationAlreadySubscribed: 推送通知已經啟用
|
||||||
recommendedInstancesDescription: 以每行分隔的推薦伺服器出現在推薦的時間線中。
|
recommendedInstancesDescription: 推薦的伺服器(將顯示在推薦時間軸中),一行一個。
|
||||||
searchPlaceholder: 在 Firefish 上搜尋
|
searchPlaceholder: 在 Firefish 上搜尋
|
||||||
cw: 內容警告
|
cw: 內容警告
|
||||||
selectChannel: 選擇一個頻道
|
selectChannel: 選擇一個頻道
|
||||||
@ -1892,9 +1903,9 @@ newer: 較新
|
|||||||
older: 較舊
|
older: 較舊
|
||||||
jumpToPrevious: 跳到上一個
|
jumpToPrevious: 跳到上一個
|
||||||
removeReaction: 移除你的反應
|
removeReaction: 移除你的反應
|
||||||
listsDesc: 清單可以創建一個只有您指定用戶的時間線。 可以從時間線頁面訪問它們。
|
listsDesc: 清單可以創建一個只有您指定用戶的時間軸。 可以從時間軸頁面訪問它們。
|
||||||
flagSpeakAsCatDescription: 在喵咪模式下你的貼文會被喵化ヾ(•ω•`)o
|
flagSpeakAsCatDescription: 在喵咪模式下你的貼文會被喵化ヾ(•ω•`)o
|
||||||
antennasDesc: "天線會顯示符合您設置條件的新貼文!\n 可以從時間線訪問它們。"
|
antennasDesc: "天線會顯示符合您設置條件的新貼文!\n 可以從時間軸訪問它們。"
|
||||||
expandOnNoteClick: 點擊以打開貼文
|
expandOnNoteClick: 點擊以打開貼文
|
||||||
expandOnNoteClickDesc: 即使停用,您仍然可以從右鍵選單或單擊發文時間來打開貼文。
|
expandOnNoteClickDesc: 即使停用,您仍然可以從右鍵選單或單擊發文時間來打開貼文。
|
||||||
hiddenTagsDescription: '列出您希望隱藏趨勢和探索的主題標籤(不帶 #)。 隱藏的主題標籤仍然可以通過其他方式發現。'
|
hiddenTagsDescription: '列出您希望隱藏趨勢和探索的主題標籤(不帶 #)。 隱藏的主題標籤仍然可以通過其他方式發現。'
|
||||||
@ -1909,25 +1920,25 @@ channelFederationWarn: 頻道功能尚未與聯邦宇宙連動
|
|||||||
swipeOnMobile: 允許以滑動在頁面之間切換
|
swipeOnMobile: 允許以滑動在頁面之間切換
|
||||||
sendPushNotificationReadMessage: 閱讀相關通知或消息後刪除推送通知
|
sendPushNotificationReadMessage: 閱讀相關通知或消息後刪除推送通知
|
||||||
image: 圖片
|
image: 圖片
|
||||||
seperateRenoteQuote: 分別獨立的轉傳及引用按鈕
|
seperateRenoteQuote: 分開轉發及引用的按鈕
|
||||||
clipsDesc: 摘錄就像一個可以分享的書籤。 你可以從每個貼文的菜單創建新摘錄或將貼文加入已有的摘錄。
|
clipsDesc: 摘錄就像一個可以分享的書籤。 你可以從每個貼文的菜單創建新摘錄或將貼文加入已有的摘錄。
|
||||||
noteId: 貼文 ID
|
noteId: 貼文 ID
|
||||||
sendModMail: 發送審核通知
|
sendModMail: 發送審核通知
|
||||||
enableIdenticonGeneration: 啟用碎片生成
|
enableIdenticonGeneration: 啟用Identicon生成
|
||||||
enableServerMachineStats: 啟用伺服器硬體統計資訊
|
enableServerMachineStats: 啟用伺服器硬體統計資訊
|
||||||
reactionPickerSkinTone: 首選表情符號膚色
|
reactionPickerSkinTone: 首選表情符號膚色
|
||||||
indexFromDescription: 留空以索引每個貼文
|
indexFromDescription: 留空以索引每個貼文
|
||||||
preventAiLearning: 防止 AI 機器人抓取
|
preventAiLearning: 防止 AI 機器人抓取
|
||||||
preventAiLearningDescription: 請求第三方 AI 語言模型不要研究您上傳的內容,例如貼文和圖像。
|
preventAiLearningDescription: 請求第三方 AI 語言模型不要研究您上傳的內容,例如貼文和圖像。
|
||||||
indexFrom: 從貼文 ID 開始的索引
|
indexFrom: 建立此貼文ID以後的索引
|
||||||
isLocked: 該帳戶已獲得以下批准
|
isLocked: 該帳戶已獲得以下批准
|
||||||
isModerator: 板主
|
isModerator: 板主
|
||||||
isAdmin: 管理員
|
isAdmin: 管理員
|
||||||
isPatron: Firefish 項目贊助者
|
isPatron: Firefish 項目贊助者
|
||||||
silencedWarning: 顯示此頁面是因為這些使用者來自您伺服器管理員已靜音的伺服器,因此他們可能是垃圾訊息。
|
silencedWarning: 顯示此頁面是因為這些使用者來自您伺服器管理員已靜音的伺服器,因此他們可能是垃圾訊息。
|
||||||
signupsDisabled: 該伺服器上的註冊當前已被禁用,但您隨時可以在另一台伺服器上註冊!或是您有該伺服器的邀請碼,請在下面輸入。
|
signupsDisabled: 此伺服器目前停止註冊,但您隨時可以在另一台伺服器上註冊!如果您有此伺服器的邀請碼,請在下面輸入。
|
||||||
showPopup: 通過彈出式視窗通知用戶
|
showPopup: 通過彈出式視窗通知用戶
|
||||||
showWithSparkles: 閃閃發光的顯示
|
showWithSparkles: 讓標題閃閃發光
|
||||||
youHaveUnreadAnnouncements: 您有未讀的公告
|
youHaveUnreadAnnouncements: 您有未讀的公告
|
||||||
donationLink: 連結到贊助頁面
|
donationLink: 連結到贊助頁面
|
||||||
neverShow: 不再顯示
|
neverShow: 不再顯示
|
||||||
@ -1954,11 +1965,39 @@ _dialog:
|
|||||||
charactersExceeded: 超過字數限制! 當前 {current} / 限制 {max}
|
charactersExceeded: 超過字數限制! 當前 {current} / 限制 {max}
|
||||||
_skinTones:
|
_skinTones:
|
||||||
yellow: 黃色
|
yellow: 黃色
|
||||||
|
medium: 中等
|
||||||
|
dark: 深色
|
||||||
|
mediumDark: 中等偏深
|
||||||
|
light: 淺色
|
||||||
|
mediumLight: 中等偏淺
|
||||||
exportZip: 匯出ZIP
|
exportZip: 匯出ZIP
|
||||||
_feeds:
|
_feeds:
|
||||||
atom: Atom
|
atom: Atom
|
||||||
rss: RSS
|
rss: RSS
|
||||||
|
copyFeed: 複製訂閱URL
|
||||||
|
jsonFeed: JSON Feed
|
||||||
emojiPackCreator: 表情包的作者
|
emojiPackCreator: 表情包的作者
|
||||||
importZip: 匯入ZIP
|
importZip: 匯入ZIP
|
||||||
delete2fa: 停用二階段認證(2FA)
|
delete2fa: 停用二階段認證(2FA)
|
||||||
confirm: 確認
|
confirm: 確認
|
||||||
|
deletePasskeysConfirm: 此帳號的所有通行密鑰及安全密鑰將被完全刪除。此動作無法復原,是否繼續?
|
||||||
|
deletePasskeys: 刪除通行密鑰
|
||||||
|
detectPostLanguage: 自動判定貼文的語言,並在外文貼文顯示翻譯按鈕
|
||||||
|
indexableDescription: 允許內建搜尋引擎顯示您的公開貼文
|
||||||
|
addRe: 在回覆有內容警告的貼文時,在標題前面加上 "re:"
|
||||||
|
vibrate: 播放振動
|
||||||
|
openServerInfo: 點擊貼文中的伺服器名稱以顯示伺服器資訊
|
||||||
|
languageForTranslation: 貼文翻譯語言
|
||||||
|
objectStorageS3ForcePathStyleDesc: 以 "s3.amazonaws.com/<bucket>/" 而非 "<bucket>.s3.amazonaws.com"
|
||||||
|
的格式建構端點(Endpoint)URL。
|
||||||
|
indexable: 登錄至貼文搜尋引擎
|
||||||
|
origin: 來源
|
||||||
|
objectStorageS3ForcePathStyle: 使用基於路徑的端點(Endpoint)URL
|
||||||
|
clickToShowPatterns: 點擊顯示模組模式(Module Pattern)
|
||||||
|
iconSet: 圖示的樣式
|
||||||
|
_iconSets:
|
||||||
|
fill: 填滿
|
||||||
|
regular: 標準
|
||||||
|
bold: 粗線
|
||||||
|
duotone: 雙色
|
||||||
|
light: 細線
|
||||||
|
46
package.json
@ -1,16 +1,16 @@
|
|||||||
{
|
{
|
||||||
"name": "firefish",
|
"name": "firefish",
|
||||||
"version": "1.0.4-beta31",
|
"version": "1.0.5-rc",
|
||||||
"codename": "aqua",
|
"codename": "aqua",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.joinfirefish.org/firefish/firefish.git"
|
"url": "https://git.joinfirefish.org/firefish/firefish.git"
|
||||||
},
|
},
|
||||||
"packageManager": "pnpm@8.7.6",
|
"packageManager": "pnpm@8.10.5",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"rebuild": "pnpm run clean && ./scripts/build-greet.sh && pnpm -r --parallel run build && pnpm run gulp",
|
"rebuild": "pnpm run clean && pnpm run build",
|
||||||
"build": "./scripts/build-greet.sh && pnpm -r --parallel run build && pnpm run gulp",
|
"build": "./scripts/build-greet.sh && pnpm --filter firefish-js run build && pnpm --filter !firefish-js -r --parallel run build && pnpm run gulp",
|
||||||
"start": "pnpm --filter backend run start",
|
"start": "pnpm --filter backend run start",
|
||||||
"start:test": "pnpm --filter backend run start:test",
|
"start:test": "pnpm --filter backend run start:test",
|
||||||
"init": "pnpm run migrate",
|
"init": "pnpm run migrate",
|
||||||
@ -19,7 +19,7 @@
|
|||||||
"migrateandstart": "pnpm run migrate && pnpm run start",
|
"migrateandstart": "pnpm run migrate && pnpm run start",
|
||||||
"gulp": "gulp build",
|
"gulp": "gulp build",
|
||||||
"watch": "pnpm run dev",
|
"watch": "pnpm run dev",
|
||||||
"dev": "pnpm node ./scripts/dev.js",
|
"dev": "pnpm node ./scripts/dev.mjs",
|
||||||
"dev:staging": "NODE_OPTIONS=--max_old_space_size=3072 NODE_ENV=development pnpm run build && pnpm run start",
|
"dev:staging": "NODE_OPTIONS=--max_old_space_size=3072 NODE_ENV=development pnpm run build && pnpm run start",
|
||||||
"lint": "pnpm -r --parallel run lint",
|
"lint": "pnpm -r --parallel run lint",
|
||||||
"debug": "pnpm run build:debug && pnpm run start",
|
"debug": "pnpm run build:debug && pnpm run start",
|
||||||
@ -30,42 +30,42 @@
|
|||||||
"mocha": "pnpm --filter backend run mocha",
|
"mocha": "pnpm --filter backend run mocha",
|
||||||
"test": "pnpm run mocha",
|
"test": "pnpm run mocha",
|
||||||
"format": "pnpm -r --parallel run format",
|
"format": "pnpm -r --parallel run format",
|
||||||
"clean": "pnpm node ./scripts/clean.js",
|
"clean": "pnpm node ./scripts/clean.mjs",
|
||||||
"clean-all": "pnpm node ./scripts/clean-all.js",
|
"clean-all": "pnpm node ./scripts/clean-all.mjs",
|
||||||
"cleanall": "pnpm run clean-all"
|
"cleanall": "pnpm run clean-all"
|
||||||
},
|
},
|
||||||
"resolutions": {
|
"resolutions": {
|
||||||
"chokidar": "^3.3.1"
|
"chokidar": "^3.3.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@bull-board/api": "5.8.0",
|
"@bull-board/api": "5.9.1",
|
||||||
"@bull-board/ui": "5.8.0",
|
"@bull-board/ui": "5.9.1",
|
||||||
"@napi-rs/cli": "^2.16.2",
|
"@napi-rs/cli": "^2.16.5",
|
||||||
"@tensorflow/tfjs": "^4.10.0",
|
"@tensorflow/tfjs": "^4.13.0",
|
||||||
"js-yaml": "4.1.0",
|
"js-yaml": "4.1.0",
|
||||||
"seedrandom": "^3.0.5"
|
"seedrandom": "^3.0.5"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@biomejs/biome": "1.0.0",
|
"@biomejs/biome": "1.3.3",
|
||||||
"@biomejs/cli-darwin-arm64": "^1.0.0",
|
"@biomejs/cli-darwin-arm64": "^1.3.3",
|
||||||
"@biomejs/cli-darwin-x64": "^1.0.0",
|
"@biomejs/cli-darwin-x64": "^1.3.3",
|
||||||
"@biomejs/cli-linux-arm64": "^1.0.0",
|
"@biomejs/cli-linux-arm64": "^1.3.3",
|
||||||
"@biomejs/cli-linux-x64": "^1.0.0",
|
"@biomejs/cli-linux-x64": "^1.3.3",
|
||||||
"@types/gulp": "4.0.13",
|
"@types/gulp": "4.0.17",
|
||||||
"@types/gulp-rename": "2.0.2",
|
"@types/gulp-rename": "2.0.5",
|
||||||
"@types/node": "20.5.8",
|
"@types/node": "20.9.0",
|
||||||
"add": "2.0.6",
|
"add": "2.0.6",
|
||||||
"cross-env": "7.0.3",
|
"cross-env": "7.0.3",
|
||||||
"cypress": "10.11.0",
|
"cypress": "13.5.1",
|
||||||
"execa": "5.1.1",
|
"execa": "8.0.1",
|
||||||
"gulp": "4.0.2",
|
"gulp": "4.0.2",
|
||||||
"gulp-cssnano": "2.1.3",
|
"gulp-cssnano": "2.1.3",
|
||||||
"gulp-rename": "2.0.0",
|
"gulp-rename": "2.0.0",
|
||||||
"gulp-replace": "1.1.4",
|
"gulp-replace": "1.1.4",
|
||||||
"gulp-terser": "2.1.0",
|
"gulp-terser": "2.1.0",
|
||||||
"install-peers": "^1.0.4",
|
"install-peers": "^1.0.4",
|
||||||
"pnpm": "8.7.1",
|
"pnpm": "8.10.5",
|
||||||
"start-server-and-test": "1.15.2",
|
"start-server-and-test": "2.0.3",
|
||||||
"typescript": "5.2.2"
|
"typescript": "5.2.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Before Width: | Height: | Size: 40 KiB |
BIN
packages/backend/assets/badges/error.webp
Normal file
After Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 9.9 KiB |
BIN
packages/backend/assets/badges/info.webp
Normal file
After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 9.1 KiB |
BIN
packages/backend/assets/badges/not-found.webp
Normal file
After Width: | Height: | Size: 33 KiB |
@ -1,4 +1,14 @@
|
|||||||
user-agent: *
|
User-agent: *
|
||||||
allow: /
|
Allow: /
|
||||||
|
|
||||||
# todo: sitemap
|
# Uncomment the following to block CommonCrawl
|
||||||
|
#
|
||||||
|
# User-agent: CCBot
|
||||||
|
# User-agent: CCBot/2.0
|
||||||
|
# User-agent: CCBot/3.1
|
||||||
|
# Disallow: /
|
||||||
|
|
||||||
|
# Uncomment the following to block ChatGPT
|
||||||
|
#
|
||||||
|
# User-agent: GPTBot
|
||||||
|
# Disallow: /
|
||||||
|
@ -220,7 +220,7 @@ export class Init1000000000000 {
|
|||||||
`CREATE INDEX "IDX_3c601b70a1066d2c8b517094cb" ON "notification" ("notifieeId") `,
|
`CREATE INDEX "IDX_3c601b70a1066d2c8b517094cb" ON "notification" ("notifieeId") `,
|
||||||
);
|
);
|
||||||
await queryRunner.query(
|
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 false, "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 '/static-assets/badges/info.webp', "bannerUrl" character varying(512), "errorImageUrl" character varying(512) DEFAULT '/static-assets/badges/error.webp', "iconUrl" character varying(512), "cacheRemoteFiles" boolean NOT NULL DEFAULT false, "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(
|
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"))`,
|
`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"))`,
|
||||||
|
13
packages/backend/migration/1695334243217-add-post-lang.js
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
export class AddPostLang1695334243217 {
|
||||||
|
name = "AddPostLang1695334243217";
|
||||||
|
|
||||||
|
async up(queryRunner) {
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "note" ADD "lang" character varying(10)`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
async down(queryRunner) {
|
||||||
|
await queryRunner.query(`ALTER TABLE "note" DROP COLUMN "lang"`);
|
||||||
|
}
|
||||||
|
}
|
13
packages/backend/migration/1699305365258-more-urls.js
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
export class MoreUrls1699305365258 {
|
||||||
|
name = "MoreUrls1699305365258";
|
||||||
|
|
||||||
|
async up(queryRunner) {
|
||||||
|
queryRunner.query(
|
||||||
|
`ALTER TABLE "meta" ADD "moreUrls" jsonb NOT NULL DEFAULT '[]'`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
async down(queryRunner) {
|
||||||
|
queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "moreUrls"`);
|
||||||
|
}
|
||||||
|
}
|
@ -7,6 +7,7 @@ mod m20230627_185451_index_note_url;
|
|||||||
mod m20230709_000510_move_antenna_to_cache;
|
mod m20230709_000510_move_antenna_to_cache;
|
||||||
mod m20230806_170616_fix_antenna_stream_ids;
|
mod m20230806_170616_fix_antenna_stream_ids;
|
||||||
mod m20230904_013244_is_indexable;
|
mod m20230904_013244_is_indexable;
|
||||||
|
mod m20231002_143323_remove_integrations;
|
||||||
|
|
||||||
pub struct Migrator;
|
pub struct Migrator;
|
||||||
|
|
||||||
@ -19,6 +20,7 @@ impl MigratorTrait for Migrator {
|
|||||||
Box::new(m20230709_000510_move_antenna_to_cache::Migration),
|
Box::new(m20230709_000510_move_antenna_to_cache::Migration),
|
||||||
Box::new(m20230806_170616_fix_antenna_stream_ids::Migration),
|
Box::new(m20230806_170616_fix_antenna_stream_ids::Migration),
|
||||||
Box::new(m20230904_013244_is_indexable::Migration),
|
Box::new(m20230904_013244_is_indexable::Migration),
|
||||||
|
Box::new(m20231002_143323_remove_integrations::Migration),
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,117 @@
|
|||||||
|
use sea_orm_migration::prelude::*;
|
||||||
|
|
||||||
|
#[derive(DeriveMigrationName)]
|
||||||
|
pub struct Migration;
|
||||||
|
|
||||||
|
#[async_trait::async_trait]
|
||||||
|
impl MigrationTrait for Migration {
|
||||||
|
async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> {
|
||||||
|
manager
|
||||||
|
.alter_table(
|
||||||
|
Table::alter()
|
||||||
|
.table(UserProfile::Table)
|
||||||
|
.drop_column(UserProfile::Integrations)
|
||||||
|
.to_owned(),
|
||||||
|
)
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
manager
|
||||||
|
.alter_table(
|
||||||
|
Table::alter()
|
||||||
|
.table(Meta::Table)
|
||||||
|
.drop_column(Meta::EnableTwitterIntegration)
|
||||||
|
.drop_column(Meta::TwitterConsumerKey)
|
||||||
|
.drop_column(Meta::TwitterConsumerSecret)
|
||||||
|
.drop_column(Meta::EnableGithubIntegration)
|
||||||
|
.drop_column(Meta::GithubClientId)
|
||||||
|
.drop_column(Meta::GithubClientSecret)
|
||||||
|
.drop_column(Meta::EnableDiscordIntegration)
|
||||||
|
.drop_column(Meta::DiscordClientId)
|
||||||
|
.drop_column(Meta::DiscordClientSecret)
|
||||||
|
.to_owned(),
|
||||||
|
)
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
|
||||||
|
manager
|
||||||
|
.alter_table(
|
||||||
|
Table::alter()
|
||||||
|
.table(Meta::Table)
|
||||||
|
.add_column(ColumnDef::new(Meta::DiscordClientSecret).string())
|
||||||
|
.add_column(ColumnDef::new(Meta::DiscordClientId).string())
|
||||||
|
.add_column(
|
||||||
|
ColumnDef::new(Meta::EnableDiscordIntegration)
|
||||||
|
.boolean()
|
||||||
|
.not_null()
|
||||||
|
.default(false),
|
||||||
|
)
|
||||||
|
.add_column(ColumnDef::new(Meta::GithubClientSecret).string())
|
||||||
|
.add_column(ColumnDef::new(Meta::GithubClientId).string())
|
||||||
|
.add_column(
|
||||||
|
ColumnDef::new(Meta::EnableGithubIntegration)
|
||||||
|
.boolean()
|
||||||
|
.not_null()
|
||||||
|
.default(false),
|
||||||
|
)
|
||||||
|
.add_column(ColumnDef::new(Meta::TwitterConsumerSecret).string())
|
||||||
|
.add_column(ColumnDef::new(Meta::TwitterConsumerKey).string())
|
||||||
|
.add_column(
|
||||||
|
ColumnDef::new(Meta::EnableTwitterIntegration)
|
||||||
|
.boolean()
|
||||||
|
.not_null()
|
||||||
|
.default(false),
|
||||||
|
)
|
||||||
|
.to_owned(),
|
||||||
|
)
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
manager
|
||||||
|
.alter_table(
|
||||||
|
Table::alter()
|
||||||
|
.table(UserProfile::Table)
|
||||||
|
.add_column(
|
||||||
|
ColumnDef::new(UserProfile::Integrations)
|
||||||
|
.json()
|
||||||
|
.default("{}"),
|
||||||
|
)
|
||||||
|
.to_owned(),
|
||||||
|
)
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Iden)]
|
||||||
|
|
||||||
|
enum UserProfile {
|
||||||
|
Table,
|
||||||
|
#[iden = "integrations"]
|
||||||
|
Integrations,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Iden)]
|
||||||
|
enum Meta {
|
||||||
|
Table,
|
||||||
|
#[iden = "enableTwitterIntegration"]
|
||||||
|
EnableTwitterIntegration,
|
||||||
|
#[iden = "twitterConsumerKey"]
|
||||||
|
TwitterConsumerKey,
|
||||||
|
#[iden = "twitterConsumerSecret"]
|
||||||
|
TwitterConsumerSecret,
|
||||||
|
#[iden = "enableGithubIntegration"]
|
||||||
|
EnableGithubIntegration,
|
||||||
|
#[iden = "githubClientId"]
|
||||||
|
GithubClientId,
|
||||||
|
#[iden = "githubClientSecret"]
|
||||||
|
GithubClientSecret,
|
||||||
|
#[iden = "enableDiscordIntegration"]
|
||||||
|
EnableDiscordIntegration,
|
||||||
|
#[iden = "discordClientId"]
|
||||||
|
DiscordClientId,
|
||||||
|
#[iden = "discordClientSecret"]
|
||||||
|
DiscordClientSecret,
|
||||||
|
}
|
@ -42,8 +42,8 @@
|
|||||||
"test": "pnpm run cargo:test && pnpm run build:napi && ava",
|
"test": "pnpm run cargo:test && pnpm run build:napi && ava",
|
||||||
"universal": "napi universal",
|
"universal": "napi universal",
|
||||||
"version": "napi version",
|
"version": "napi version",
|
||||||
"format": "cargo fmt --all -- --check",
|
"format": "cargo fmt --all --",
|
||||||
"lint": "cargo clippy --fix --allow-dirty --allow-staged && cargo fmt --all -- --check",
|
"lint": "cargo clippy --fix --allow-dirty --allow-staged && cargo fmt --all --",
|
||||||
"cargo:test": "pnpm run cargo:unit && pnpm run cargo:integration",
|
"cargo:test": "pnpm run cargo:unit && pnpm run cargo:integration",
|
||||||
"cargo:unit": "cargo test unit_test && cargo test -F napi unit_test",
|
"cargo:unit": "cargo test unit_test && cargo test -F napi unit_test",
|
||||||
"cargo:integration": "cargo test -F noarray int_test -- --test-threads=1"
|
"cargo:integration": "cargo test -F noarray int_test -- --test-threads=1"
|
||||||
|
@ -71,28 +71,12 @@ pub struct Model {
|
|||||||
pub sw_public_key: Option<String>,
|
pub sw_public_key: Option<String>,
|
||||||
#[sea_orm(column_name = "swPrivateKey")]
|
#[sea_orm(column_name = "swPrivateKey")]
|
||||||
pub sw_private_key: Option<String>,
|
pub sw_private_key: Option<String>,
|
||||||
#[sea_orm(column_name = "enableTwitterIntegration")]
|
|
||||||
pub enable_twitter_integration: bool,
|
|
||||||
#[sea_orm(column_name = "twitterConsumerKey")]
|
|
||||||
pub twitter_consumer_key: Option<String>,
|
|
||||||
#[sea_orm(column_name = "twitterConsumerSecret")]
|
|
||||||
pub twitter_consumer_secret: Option<String>,
|
|
||||||
#[sea_orm(column_name = "enableGithubIntegration")]
|
|
||||||
pub enable_github_integration: bool,
|
|
||||||
#[sea_orm(column_name = "githubClientId")]
|
|
||||||
pub github_client_id: Option<String>,
|
|
||||||
#[sea_orm(column_name = "githubClientSecret")]
|
|
||||||
pub github_client_secret: Option<String>,
|
|
||||||
#[sea_orm(column_name = "enableDiscordIntegration")]
|
|
||||||
pub enable_discord_integration: bool,
|
|
||||||
#[sea_orm(column_name = "discordClientId")]
|
|
||||||
pub discord_client_id: Option<String>,
|
|
||||||
#[sea_orm(column_name = "discordClientSecret")]
|
|
||||||
pub discord_client_secret: Option<String>,
|
|
||||||
#[sea_orm(column_name = "pinnedUsers")]
|
#[sea_orm(column_name = "pinnedUsers")]
|
||||||
pub pinned_users: StringVec,
|
pub pinned_users: StringVec,
|
||||||
#[sea_orm(column_name = "ToSUrl")]
|
#[sea_orm(column_name = "ToSUrl")]
|
||||||
pub to_s_url: Option<String>,
|
pub to_s_url: Option<String>,
|
||||||
|
#[sea_orm(column_name = "moreUrls", column_type = "JsonBinary")]
|
||||||
|
pub more_urls: Json,
|
||||||
#[sea_orm(column_name = "repositoryUrl")]
|
#[sea_orm(column_name = "repositoryUrl")]
|
||||||
pub repository_url: String,
|
pub repository_url: String,
|
||||||
#[sea_orm(column_name = "feedbackUrl")]
|
#[sea_orm(column_name = "feedbackUrl")]
|
||||||
|
@ -46,8 +46,6 @@ pub struct Model {
|
|||||||
pub pinned_page_id: Option<String>,
|
pub pinned_page_id: Option<String>,
|
||||||
#[sea_orm(column_type = "JsonBinary")]
|
#[sea_orm(column_type = "JsonBinary")]
|
||||||
pub room: Json,
|
pub room: Json,
|
||||||
#[sea_orm(column_type = "JsonBinary")]
|
|
||||||
pub integrations: Json,
|
|
||||||
#[sea_orm(column_name = "injectFeaturedNote")]
|
#[sea_orm(column_name = "injectFeaturedNote")]
|
||||||
pub inject_featured_note: bool,
|
pub inject_featured_note: bool,
|
||||||
#[sea_orm(column_name = "enableWordMute")]
|
#[sea_orm(column_name = "enableWordMute")]
|
||||||
|
@ -23,36 +23,35 @@
|
|||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"@swc/core-android-arm64": "1.3.11",
|
"@swc/core-android-arm64": "1.3.11",
|
||||||
"@tensorflow/tfjs-node": "3.21.1"
|
"@tensorflow/tfjs-node": "4.13.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@bull-board/api": "5.8.0",
|
"@bull-board/api": "5.9.1",
|
||||||
"@bull-board/koa": "5.8.0",
|
"@bull-board/koa": "5.9.1",
|
||||||
"@bull-board/ui": "5.8.0",
|
"@bull-board/ui": "5.9.1",
|
||||||
"@discordapp/twemoji": "14.1.2",
|
"@discordapp/twemoji": "14.1.2",
|
||||||
"@elastic/elasticsearch": "7.17.0",
|
"@elastic/elasticsearch": "8.10.0",
|
||||||
"@koa/cors": "3.4.3",
|
"@koa/cors": "4.0.0",
|
||||||
"@koa/multer": "3.0.2",
|
"@koa/multer": "3.0.2",
|
||||||
"@koa/router": "9.0.1",
|
"@koa/router": "12.0.1",
|
||||||
|
"@ladjs/koa-views": "9.0.0",
|
||||||
"@peertube/http-signature": "1.7.0",
|
"@peertube/http-signature": "1.7.0",
|
||||||
"@redocly/openapi-core": "1.0.2",
|
"@redocly/openapi-core": "1.4.1",
|
||||||
"@sinonjs/fake-timers": "9.1.2",
|
"@sinonjs/fake-timers": "11.2.2",
|
||||||
"@syuilo/aiscript": "0.11.1",
|
"@tensorflow/tfjs": "^4.13.0",
|
||||||
"@tensorflow/tfjs": "^4.2.0",
|
|
||||||
"adm-zip": "^0.5.10",
|
"adm-zip": "^0.5.10",
|
||||||
"ajv": "8.12.0",
|
"ajv": "8.12.0",
|
||||||
"archiver": "6.0.0",
|
"archiver": "6.0.1",
|
||||||
"argon2": "^0.31.1",
|
"argon2": "^0.31.2",
|
||||||
"autolinker": "4.0.0",
|
"aws-sdk": "2.1498.0",
|
||||||
"autwh": "0.1.0",
|
"axios": "^1.6.2",
|
||||||
"aws-sdk": "2.1413.0",
|
|
||||||
"axios": "^1.4.0",
|
|
||||||
"bcryptjs": "2.4.3",
|
"bcryptjs": "2.4.3",
|
||||||
"blurhash": "2.0.5",
|
"blurhash": "2.0.5",
|
||||||
"bull": "4.11.3",
|
"bull": "4.11.5",
|
||||||
"cacheable-lookup": "TheEssem/cacheable-lookup",
|
"cacheable-lookup": "TheEssem/cacheable-lookup",
|
||||||
|
"cbor-x": "^1.5.4",
|
||||||
"chalk": "5.3.0",
|
"chalk": "5.3.0",
|
||||||
"chalk-template": "0.4.0",
|
"chalk-template": "1.1.0",
|
||||||
"chokidar": "^3.5.3",
|
"chokidar": "^3.5.3",
|
||||||
"cli-highlight": "2.1.11",
|
"cli-highlight": "2.1.11",
|
||||||
"color-convert": "2.0.1",
|
"color-convert": "2.0.1",
|
||||||
@ -62,19 +61,18 @@
|
|||||||
"deep-email-validator": "0.1.21",
|
"deep-email-validator": "0.1.21",
|
||||||
"escape-regexp": "0.0.1",
|
"escape-regexp": "0.0.1",
|
||||||
"feed": "4.2.2",
|
"feed": "4.2.2",
|
||||||
"file-type": "18.5.0",
|
"file-type": "18.7.0",
|
||||||
"firefish-js": "workspace:*",
|
|
||||||
"fluent-ffmpeg": "2.1.2",
|
"fluent-ffmpeg": "2.1.2",
|
||||||
"got": "13.0.0",
|
"got": "13.0.0",
|
||||||
"gunzip-maybe": "^1.4.2",
|
"gunzip-maybe": "^1.4.2",
|
||||||
"happy-dom": "^11.0.2",
|
"happy-dom": "^12.10.3",
|
||||||
"hpagent": "1.2.0",
|
"hpagent": "1.2.0",
|
||||||
"ioredis": "5.3.2",
|
"ioredis": "5.3.2",
|
||||||
"ip-cidr": "3.1.0",
|
"ip-cidr": "3.1.0",
|
||||||
"is-svg": "5.0.0",
|
"is-svg": "5.0.0",
|
||||||
"js-yaml": "4.1.0",
|
"js-yaml": "4.1.0",
|
||||||
"json5": "2.2.3",
|
"json5": "2.2.3",
|
||||||
"jsonld": "8.2.1",
|
"jsonld": "8.3.1",
|
||||||
"jsrsasign": "10.8.6",
|
"jsrsasign": "10.8.6",
|
||||||
"koa": "2.14.2",
|
"koa": "2.14.2",
|
||||||
"koa-body": "^6.0.1",
|
"koa-body": "^6.0.1",
|
||||||
@ -86,118 +84,118 @@
|
|||||||
"koa-remove-trailing-slashes": "2.0.3",
|
"koa-remove-trailing-slashes": "2.0.3",
|
||||||
"koa-send": "5.0.1",
|
"koa-send": "5.0.1",
|
||||||
"koa-slow": "2.1.0",
|
"koa-slow": "2.1.0",
|
||||||
"koa-views": "7.0.2",
|
|
||||||
"megalodon": "workspace:*",
|
"megalodon": "workspace:*",
|
||||||
"meilisearch": "0.34.1",
|
"meilisearch": "0.35.0",
|
||||||
"mfm-js": "0.23.3",
|
"mfm-js": "0.23.3",
|
||||||
"mime-types": "2.1.35",
|
"mime-types": "2.1.35",
|
||||||
"msgpackr": "1.9.7",
|
"msgpackr": "^1.9.9",
|
||||||
"multer": "1.4.4-lts.1",
|
"multer": "1.4.5-lts.1",
|
||||||
"native-utils": "link:native-utils",
|
"native-utils": "link:native-utils",
|
||||||
"nested-property": "4.0.0",
|
"nested-property": "4.0.0",
|
||||||
"node-fetch": "3.3.2",
|
"node-fetch": "3.3.2",
|
||||||
"nodemailer": "6.9.4",
|
"nodemailer": "6.9.7",
|
||||||
"nsfwjs": "2.4.2",
|
"nsfwjs": "2.4.2",
|
||||||
"oauth": "^0.10.0",
|
|
||||||
"opencc-js": "^1.0.5",
|
"opencc-js": "^1.0.5",
|
||||||
"os-utils": "0.0.14",
|
"os-utils": "0.0.14",
|
||||||
"otpauth": "^9.1.4",
|
"otpauth": "^9.2.0",
|
||||||
"parse5": "7.1.2",
|
"parse5": "7.1.2",
|
||||||
"pg": "8.11.3",
|
"pg": "8.11.3",
|
||||||
"private-ip": "3.0.1",
|
"private-ip": "3.0.1",
|
||||||
"probe-image-size": "7.2.3",
|
"probe-image-size": "7.2.3",
|
||||||
"promise-limit": "2.7.0",
|
"promise-limit": "2.7.0",
|
||||||
"punycode": "2.3.0",
|
"punycode": "2.3.1",
|
||||||
"pureimage": "0.4.8",
|
"pureimage": "0.4.13",
|
||||||
"qrcode": "1.5.3",
|
"qrcode": "1.5.3",
|
||||||
"qs": "6.11.2",
|
"qs": "6.11.2",
|
||||||
"random-seed": "0.3.0",
|
"random-seed": "0.3.0",
|
||||||
"ratelimiter": "3.4.1",
|
"ratelimiter": "3.4.1",
|
||||||
"re2": "1.20.3",
|
"re2": "1.20.8",
|
||||||
"redis-semaphore": "5.5.0",
|
"redis-semaphore": "5.5.0",
|
||||||
"reflect-metadata": "0.1.13",
|
"reflect-metadata": "0.1.13",
|
||||||
"rename": "1.0.4",
|
"rename": "1.0.4",
|
||||||
"rndstr": "1.0.0",
|
"rndstr": "1.0.0",
|
||||||
"rss-parser": "3.13.0",
|
"rss-parser": "3.13.0",
|
||||||
"sanitize-html": "2.11.0",
|
"sanitize-html": "2.11.0",
|
||||||
"seedrandom": "^3.0.5",
|
|
||||||
"semver": "7.5.4",
|
"semver": "7.5.4",
|
||||||
"sharp": "0.32.5",
|
"sharp": "0.32.6",
|
||||||
"sonic-channel": "^1.3.1",
|
"sonic-channel": "^1.3.1",
|
||||||
"stringz": "2.1.0",
|
"stringz": "2.1.0",
|
||||||
"summaly": "2.7.0",
|
"summaly": "2.7.0",
|
||||||
"syslog-pro": "1.0.0",
|
"syslog-pro": "1.0.0",
|
||||||
"systeminformation": "5.21.3",
|
"systeminformation": "5.21.17",
|
||||||
"tar-stream": "^3.1.6",
|
"tar-stream": "^3.1.6",
|
||||||
"tesseract.js": "^4.1.1",
|
"tesseract.js": "^5.0.3",
|
||||||
"tinycolor2": "1.6.0",
|
"tinycolor2": "1.6.0",
|
||||||
"tinyld": "^1.3.4",
|
"tinyld": "^1.3.4",
|
||||||
"tmp": "0.2.1",
|
"tmp": "0.2.1",
|
||||||
"twemoji-parser": "14.0.0",
|
"twemoji-parser": "14.0.0",
|
||||||
"typeorm": "0.3.17",
|
"typeorm": "0.3.17",
|
||||||
"ulid": "2.3.0",
|
"ulid": "2.3.0",
|
||||||
"uuid": "9.0.0",
|
"uuid": "9.0.1",
|
||||||
"web-push": "3.6.5",
|
"web-push": "3.6.6",
|
||||||
"websocket": "1.0.34",
|
"websocket": "1.0.34",
|
||||||
"xev": "3.0.2"
|
"xev": "3.0.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@swc/cli": "^0.1.62",
|
"@swc/cli": "^0.1.63",
|
||||||
"@swc/core": "1.3.78",
|
"@swc/core": "1.3.78",
|
||||||
"@types/adm-zip": "^0.5.0",
|
"@types/adm-zip": "^0.5.4",
|
||||||
"@types/bcryptjs": "2.4.2",
|
"@types/bcryptjs": "2.4.6",
|
||||||
"@types/escape-regexp": "0.0.1",
|
"@types/color-convert": "^2.0.3",
|
||||||
"@types/fluent-ffmpeg": "2.1.21",
|
"@types/content-disposition": "^0.5.8",
|
||||||
"@types/js-yaml": "4.0.5",
|
"@types/escape-regexp": "0.0.3",
|
||||||
"@types/jsonld": "1.5.9",
|
"@types/fluent-ffmpeg": "2.1.24",
|
||||||
"@types/jsrsasign": "10.5.8",
|
"@types/js-yaml": "4.0.9",
|
||||||
"@types/koa": "2.13.8",
|
"@types/jsonld": "1.5.12",
|
||||||
"@types/koa-bodyparser": "4.3.10",
|
"@types/jsrsasign": "10.5.12",
|
||||||
"@types/koa-cors": "0.0.2",
|
"@types/koa": "2.13.11",
|
||||||
"@types/koa-favicon": "2.0.21",
|
"@types/koa-bodyparser": "4.3.12",
|
||||||
"@types/koa-logger": "3.1.2",
|
"@types/koa-cors": "0.0.5",
|
||||||
"@types/koa-mount": "4.0.2",
|
"@types/koa-favicon": "2.1.3",
|
||||||
"@types/koa-send": "4.1.3",
|
"@types/koa-logger": "3.1.5",
|
||||||
"@types/koa-views": "7.0.0",
|
"@types/koa-mount": "4.0.5",
|
||||||
"@types/koa__cors": "3.3.0",
|
"@types/koa-send": "4.1.6",
|
||||||
"@types/koa__multer": "2.0.4",
|
"@types/koa__cors": "4.0.3",
|
||||||
"@types/koa__router": "8.0.11",
|
"@types/koa__multer": "2.0.7",
|
||||||
"@types/mocha": "9.1.1",
|
"@types/koa__router": "12.0.4",
|
||||||
"@types/node": "18.11.18",
|
"@types/mocha": "10.0.4",
|
||||||
"@types/node-fetch": "3.0.3",
|
"@types/node": "20.9.0",
|
||||||
"@types/nodemailer": "6.4.9",
|
"@types/node-fetch": "2.6.9",
|
||||||
"@types/oauth": "0.9.1",
|
"@types/nodemailer": "6.4.14",
|
||||||
"@types/probe-image-size": "^7.2.0",
|
"@types/oauth": "0.9.4",
|
||||||
"@types/pug": "2.0.6",
|
"@types/opencc-js": "^1.0.3",
|
||||||
"@types/punycode": "2.1.0",
|
"@types/pg": "^8.10.9",
|
||||||
"@types/qrcode": "1.5.1",
|
"@types/probe-image-size": "^7.2.3",
|
||||||
"@types/qs": "6.9.7",
|
"@types/pug": "2.0.9",
|
||||||
"@types/random-seed": "0.3.3",
|
"@types/punycode": "2.1.2",
|
||||||
"@types/ratelimiter": "3.4.4",
|
"@types/qrcode": "1.5.5",
|
||||||
"@types/redis": "4.0.11",
|
"@types/qs": "6.9.10",
|
||||||
"@types/rename": "1.0.4",
|
"@types/random-seed": "0.3.5",
|
||||||
"@types/sanitize-html": "2.9.0",
|
"@types/ratelimiter": "3.4.6",
|
||||||
"@types/semver": "7.5.0",
|
"@types/rename": "1.0.7",
|
||||||
"@types/sinonjs__fake-timers": "8.1.2",
|
"@types/sanitize-html": "2.9.4",
|
||||||
"@types/tinycolor2": "1.4.3",
|
"@types/semver": "7.5.5",
|
||||||
"@types/tmp": "0.2.3",
|
"@types/sinonjs__fake-timers": "8.1.5",
|
||||||
"@types/uuid": "9.0.2",
|
"@types/syslog-pro": "^1.0.3",
|
||||||
"@types/web-push": "3.3.2",
|
"@types/tinycolor2": "1.4.6",
|
||||||
"@types/websocket": "1.0.5",
|
"@types/tmp": "0.2.6",
|
||||||
"@types/ws": "8.5.5",
|
"@types/uuid": "9.0.7",
|
||||||
|
"@types/web-push": "3.6.3",
|
||||||
|
"@types/websocket": "1.0.9",
|
||||||
|
"@types/ws": "8.5.9",
|
||||||
"cross-env": "7.0.3",
|
"cross-env": "7.0.3",
|
||||||
"eslint": "^8.46.0",
|
"eslint": "^8.53.0",
|
||||||
"execa": "6.1.0",
|
"execa": "8.0.1",
|
||||||
"json5-loader": "4.0.1",
|
"json5-loader": "4.0.1",
|
||||||
"mocha": "10.2.0",
|
"mocha": "10.2.0",
|
||||||
"pug": "3.0.2",
|
"pug": "3.0.2",
|
||||||
"strict-event-emitter-types": "2.0.0",
|
"strict-event-emitter-types": "2.0.0",
|
||||||
"swc-loader": "^0.2.3",
|
"swc-loader": "^0.2.3",
|
||||||
"ts-loader": "9.4.4",
|
"ts-loader": "9.5.1",
|
||||||
"ts-node": "10.9.1",
|
"ts-node": "10.9.1",
|
||||||
"tsconfig-paths": "4.2.0",
|
"tsconfig-paths": "4.2.0",
|
||||||
"typescript": "5.1.6",
|
"typescript": "5.2.2",
|
||||||
"webpack": "^5.88.2",
|
"webpack": "^5.89.0",
|
||||||
"ws": "8.13.0"
|
"ws": "8.14.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,11 +5,11 @@ import Xev from "xev";
|
|||||||
import Logger from "@/services/logger.js";
|
import Logger from "@/services/logger.js";
|
||||||
import { envOption } from "../env.js";
|
import { envOption } from "../env.js";
|
||||||
|
|
||||||
|
import os from "node:os";
|
||||||
// for typeorm
|
// for typeorm
|
||||||
import "reflect-metadata";
|
import "reflect-metadata";
|
||||||
import { masterMain } from "./master.js";
|
import { masterMain } from "./master.js";
|
||||||
import { workerMain } from "./worker.js";
|
import { workerMain } from "./worker.js";
|
||||||
import os from "node:os";
|
|
||||||
|
|
||||||
const logger = new Logger("core", "cyan");
|
const logger = new Logger("core", "cyan");
|
||||||
const clusterLogger = logger.createSubLogger("cluster", "orange", false);
|
const clusterLogger = logger.createSubLogger("cluster", "orange", false);
|
||||||
|
@ -1,19 +1,18 @@
|
|||||||
import * as fs from "node:fs";
|
|
||||||
import { fileURLToPath } from "node:url";
|
|
||||||
import { dirname } from "node:path";
|
|
||||||
import * as os from "node:os";
|
|
||||||
import cluster from "node:cluster";
|
import cluster from "node:cluster";
|
||||||
|
import * as fs from "node:fs";
|
||||||
|
import * as os from "node:os";
|
||||||
|
import { dirname } from "node:path";
|
||||||
|
import { fileURLToPath } from "node:url";
|
||||||
import chalk from "chalk";
|
import chalk from "chalk";
|
||||||
import chalkTemplate from "chalk-template";
|
import chalkTemplate from "chalk-template";
|
||||||
import semver from "semver";
|
import semver from "semver";
|
||||||
|
|
||||||
import Logger from "@/services/logger.js";
|
|
||||||
import loadConfig from "@/config/load.js";
|
import loadConfig from "@/config/load.js";
|
||||||
import type { Config } from "@/config/types.js";
|
import type { Config } from "@/config/types.js";
|
||||||
import { lessThan } from "@/prelude/array.js";
|
import { db, initDb } from "@/db/postgre.js";
|
||||||
import { envOption } from "../env.js";
|
import { envOption } from "@/env.js";
|
||||||
import { showMachineInfo } from "@/misc/show-machine-info.js";
|
import { showMachineInfo } from "@/misc/show-machine-info.js";
|
||||||
import { db, initDb } from "../db/postgre.js";
|
import Logger from "@/services/logger.js";
|
||||||
|
|
||||||
const _filename = fileURLToPath(import.meta.url);
|
const _filename = fileURLToPath(import.meta.url);
|
||||||
const _dirname = dirname(_filename);
|
const _dirname = dirname(_filename);
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
import cluster from "node:cluster";
|
import cluster from "node:cluster";
|
||||||
import { initDb } from "../db/postgre.js";
|
|
||||||
import config from "@/config/index.js";
|
|
||||||
import os from "node:os";
|
import os from "node:os";
|
||||||
|
import { initDb } from "@/db/postgre.js";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Init worker process
|
* Init worker process
|
||||||
|
@ -3,10 +3,10 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import * as fs from "node:fs";
|
import * as fs from "node:fs";
|
||||||
import { fileURLToPath } from "node:url";
|
|
||||||
import { dirname } from "node:path";
|
import { dirname } from "node:path";
|
||||||
|
import { fileURLToPath } from "node:url";
|
||||||
import * as yaml from "js-yaml";
|
import * as yaml from "js-yaml";
|
||||||
import type { Source, Mixin } from "./types.js";
|
import type { Mixin, Source } from "./types.js";
|
||||||
|
|
||||||
const _filename = fileURLToPath(import.meta.url);
|
const _filename = fileURLToPath(import.meta.url);
|
||||||
const _dirname = dirname(_filename);
|
const _dirname = dirname(_filename);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import config from "@/config/index.js";
|
import config from "@/config/index.js";
|
||||||
import {
|
import {
|
||||||
DB_MAX_NOTE_TEXT_LENGTH,
|
|
||||||
DB_MAX_IMAGE_COMMENT_LENGTH,
|
DB_MAX_IMAGE_COMMENT_LENGTH,
|
||||||
|
DB_MAX_NOTE_TEXT_LENGTH,
|
||||||
} from "@/misc/hard-limits.js";
|
} from "@/misc/hard-limits.js";
|
||||||
|
|
||||||
export const MAX_NOTE_TEXT_LENGTH = Math.min(
|
export const MAX_NOTE_TEXT_LENGTH = Math.min(
|
||||||
@ -68,6 +68,15 @@ export const FILE_TYPE_BROWSERSAFE = [
|
|||||||
"audio/x-flac",
|
"audio/x-flac",
|
||||||
"audio/flac",
|
"audio/flac",
|
||||||
"audio/vnd.wave",
|
"audio/vnd.wave",
|
||||||
|
|
||||||
|
"audio/mod",
|
||||||
|
"audio/x-mod",
|
||||||
|
"audio/s3m",
|
||||||
|
"audio/x-s3m",
|
||||||
|
"audio/xm",
|
||||||
|
"audio/x-xm",
|
||||||
|
"audio/it",
|
||||||
|
"audio/x-it",
|
||||||
];
|
];
|
||||||
/*
|
/*
|
||||||
https://github.com/sindresorhus/file-type/blob/main/supported.js
|
https://github.com/sindresorhus/file-type/blob/main/supported.js
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
import { deliverQueue, inboxQueue } from "@/queue/queues.js";
|
||||||
import Xev from "xev";
|
import Xev from "xev";
|
||||||
import { deliverQueue, inboxQueue } from "../queue/queues.js";
|
|
||||||
|
|
||||||
const ev = new Xev();
|
const ev = new Xev();
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
|
import meilisearch from "@/db/meilisearch.js";
|
||||||
|
import { fetchMeta } from "@/misc/fetch-meta.js";
|
||||||
|
import * as osUtils from "os-utils";
|
||||||
import si from "systeminformation";
|
import si from "systeminformation";
|
||||||
import Xev from "xev";
|
import Xev from "xev";
|
||||||
import * as osUtils from "os-utils";
|
|
||||||
import { fetchMeta } from "@/misc/fetch-meta.js";
|
|
||||||
import meilisearch from "../db/meilisearch.js";
|
|
||||||
|
|
||||||
const ev = new Xev();
|
const ev = new Xev();
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import * as elasticsearch from "@elastic/elasticsearch";
|
|
||||||
import config from "@/config/index.js";
|
import config from "@/config/index.js";
|
||||||
|
import * as elasticsearch from "@elastic/elasticsearch";
|
||||||
|
|
||||||
const index = {
|
const index = {
|
||||||
settings: {
|
settings: {
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
import { Health, Index, MeiliSearch, Stats } from "meilisearch";
|
import { Health, Index, MeiliSearch, Stats } from "meilisearch";
|
||||||
import { dbLogger } from "./logger.js";
|
import { dbLogger } from "./logger.js";
|
||||||
|
|
||||||
|
import * as url from "url";
|
||||||
import config from "@/config/index.js";
|
import config from "@/config/index.js";
|
||||||
import { Note } from "@/models/entities/note.js";
|
import { Note } from "@/models/entities/note.js";
|
||||||
import * as url from "url";
|
|
||||||
import { ILocalUser } from "@/models/entities/user.js";
|
import { ILocalUser } from "@/models/entities/user.js";
|
||||||
import { Followings, Users } from "@/models/index.js";
|
import { Followings, Users } from "@/models/index.js";
|
||||||
|
|
||||||
|
@ -2,81 +2,82 @@
|
|||||||
import pg from "pg";
|
import pg from "pg";
|
||||||
pg.types.setTypeParser(20, Number);
|
pg.types.setTypeParser(20, Number);
|
||||||
|
|
||||||
|
import config from "@/config/index.js";
|
||||||
|
import * as highlight from "cli-highlight";
|
||||||
import type { Logger } from "typeorm";
|
import type { Logger } from "typeorm";
|
||||||
import { DataSource } from "typeorm";
|
import { DataSource } from "typeorm";
|
||||||
import * as highlight from "cli-highlight";
|
|
||||||
import config from "@/config/index.js";
|
|
||||||
|
|
||||||
import { User } from "@/models/entities/user.js";
|
|
||||||
import { DriveFile } from "@/models/entities/drive-file.js";
|
|
||||||
import { DriveFolder } from "@/models/entities/drive-folder.js";
|
|
||||||
import { AccessToken } from "@/models/entities/access-token.js";
|
|
||||||
import { App } from "@/models/entities/app.js";
|
|
||||||
import { PollVote } from "@/models/entities/poll-vote.js";
|
|
||||||
import { Note } from "@/models/entities/note.js";
|
|
||||||
import { NoteReaction } from "@/models/entities/note-reaction.js";
|
|
||||||
import { NoteWatching } from "@/models/entities/note-watching.js";
|
|
||||||
import { NoteThreadMuting } from "@/models/entities/note-thread-muting.js";
|
|
||||||
import { NoteUnread } from "@/models/entities/note-unread.js";
|
|
||||||
import { Notification } from "@/models/entities/notification.js";
|
|
||||||
import { Meta } from "@/models/entities/meta.js";
|
|
||||||
import { Following } from "@/models/entities/following.js";
|
|
||||||
import { Instance } from "@/models/entities/instance.js";
|
|
||||||
import { Muting } from "@/models/entities/muting.js";
|
|
||||||
import { RenoteMuting } from "@/models/entities/renote-muting.js";
|
|
||||||
import { SwSubscription } from "@/models/entities/sw-subscription.js";
|
|
||||||
import { Blocking } from "@/models/entities/blocking.js";
|
|
||||||
import { UserList } from "@/models/entities/user-list.js";
|
|
||||||
import { UserListJoining } from "@/models/entities/user-list-joining.js";
|
|
||||||
import { UserGroup } from "@/models/entities/user-group.js";
|
|
||||||
import { UserGroupJoining } from "@/models/entities/user-group-joining.js";
|
|
||||||
import { UserGroupInvitation } from "@/models/entities/user-group-invitation.js";
|
|
||||||
import { Hashtag } from "@/models/entities/hashtag.js";
|
|
||||||
import { NoteFavorite } from "@/models/entities/note-favorite.js";
|
|
||||||
import { AbuseUserReport } from "@/models/entities/abuse-user-report.js";
|
import { AbuseUserReport } from "@/models/entities/abuse-user-report.js";
|
||||||
import { RegistrationTicket } from "@/models/entities/registration-tickets.js";
|
import { AccessToken } from "@/models/entities/access-token.js";
|
||||||
import { MessagingMessage } from "@/models/entities/messaging-message.js";
|
import { Ad } from "@/models/entities/ad.js";
|
||||||
import { Signin } from "@/models/entities/signin.js";
|
|
||||||
import { AuthSession } from "@/models/entities/auth-session.js";
|
|
||||||
import { FollowRequest } from "@/models/entities/follow-request.js";
|
|
||||||
import { Emoji } from "@/models/entities/emoji.js";
|
|
||||||
import { UserNotePining } from "@/models/entities/user-note-pining.js";
|
|
||||||
import { Poll } from "@/models/entities/poll.js";
|
|
||||||
import { UserKeypair } from "@/models/entities/user-keypair.js";
|
|
||||||
import { UserPublickey } from "@/models/entities/user-publickey.js";
|
|
||||||
import { UserProfile } from "@/models/entities/user-profile.js";
|
|
||||||
import { UserSecurityKey } from "@/models/entities/user-security-key.js";
|
|
||||||
import { AttestationChallenge } from "@/models/entities/attestation-challenge.js";
|
|
||||||
import { Page } from "@/models/entities/page.js";
|
|
||||||
import { PageLike } from "@/models/entities/page-like.js";
|
|
||||||
import { GalleryPost } from "@/models/entities/gallery-post.js";
|
|
||||||
import { GalleryLike } from "@/models/entities/gallery-like.js";
|
|
||||||
import { ModerationLog } from "@/models/entities/moderation-log.js";
|
|
||||||
import { UsedUsername } from "@/models/entities/used-username.js";
|
|
||||||
import { Announcement } from "@/models/entities/announcement.js";
|
|
||||||
import { AnnouncementRead } from "@/models/entities/announcement-read.js";
|
import { AnnouncementRead } from "@/models/entities/announcement-read.js";
|
||||||
import { Clip } from "@/models/entities/clip.js";
|
import { Announcement } from "@/models/entities/announcement.js";
|
||||||
import { ClipNote } from "@/models/entities/clip-note.js";
|
|
||||||
import { Antenna } from "@/models/entities/antenna.js";
|
import { Antenna } from "@/models/entities/antenna.js";
|
||||||
import { PromoNote } from "@/models/entities/promo-note.js";
|
import { App } from "@/models/entities/app.js";
|
||||||
import { PromoRead } from "@/models/entities/promo-read.js";
|
import { AttestationChallenge } from "@/models/entities/attestation-challenge.js";
|
||||||
import { Relay } from "@/models/entities/relay.js";
|
import { AuthSession } from "@/models/entities/auth-session.js";
|
||||||
import { MutedNote } from "@/models/entities/muted-note.js";
|
import { Blocking } from "@/models/entities/blocking.js";
|
||||||
import { Channel } from "@/models/entities/channel.js";
|
|
||||||
import { ChannelFollowing } from "@/models/entities/channel-following.js";
|
import { ChannelFollowing } from "@/models/entities/channel-following.js";
|
||||||
import { ChannelNotePining } from "@/models/entities/channel-note-pining.js";
|
import { ChannelNotePining } from "@/models/entities/channel-note-pining.js";
|
||||||
import { RegistryItem } from "@/models/entities/registry-item.js";
|
import { Channel } from "@/models/entities/channel.js";
|
||||||
import { Ad } from "@/models/entities/ad.js";
|
import { ClipNote } from "@/models/entities/clip-note.js";
|
||||||
import { PasswordResetRequest } from "@/models/entities/password-reset-request.js";
|
import { Clip } from "@/models/entities/clip.js";
|
||||||
import { UserPending } from "@/models/entities/user-pending.js";
|
import { DriveFile } from "@/models/entities/drive-file.js";
|
||||||
import { Webhook } from "@/models/entities/webhook.js";
|
import { DriveFolder } from "@/models/entities/drive-folder.js";
|
||||||
import { UserIp } from "@/models/entities/user-ip.js";
|
import { Emoji } from "@/models/entities/emoji.js";
|
||||||
|
import { FollowRequest } from "@/models/entities/follow-request.js";
|
||||||
|
import { Following } from "@/models/entities/following.js";
|
||||||
|
import { GalleryLike } from "@/models/entities/gallery-like.js";
|
||||||
|
import { GalleryPost } from "@/models/entities/gallery-post.js";
|
||||||
|
import { Hashtag } from "@/models/entities/hashtag.js";
|
||||||
|
import { Instance } from "@/models/entities/instance.js";
|
||||||
|
import { MessagingMessage } from "@/models/entities/messaging-message.js";
|
||||||
|
import { Meta } from "@/models/entities/meta.js";
|
||||||
|
import { ModerationLog } from "@/models/entities/moderation-log.js";
|
||||||
|
import { MutedNote } from "@/models/entities/muted-note.js";
|
||||||
|
import { Muting } from "@/models/entities/muting.js";
|
||||||
import { NoteEdit } from "@/models/entities/note-edit.js";
|
import { NoteEdit } from "@/models/entities/note-edit.js";
|
||||||
|
import { NoteFavorite } from "@/models/entities/note-favorite.js";
|
||||||
|
import { NoteReaction } from "@/models/entities/note-reaction.js";
|
||||||
|
import { NoteThreadMuting } from "@/models/entities/note-thread-muting.js";
|
||||||
|
import { NoteUnread } from "@/models/entities/note-unread.js";
|
||||||
|
import { NoteWatching } from "@/models/entities/note-watching.js";
|
||||||
|
import { Note } from "@/models/entities/note.js";
|
||||||
|
import { Notification } from "@/models/entities/notification.js";
|
||||||
|
import { PageLike } from "@/models/entities/page-like.js";
|
||||||
|
import { Page } from "@/models/entities/page.js";
|
||||||
|
import { PasswordResetRequest } from "@/models/entities/password-reset-request.js";
|
||||||
|
import { PollVote } from "@/models/entities/poll-vote.js";
|
||||||
|
import { Poll } from "@/models/entities/poll.js";
|
||||||
|
import { PromoNote } from "@/models/entities/promo-note.js";
|
||||||
|
import { PromoRead } from "@/models/entities/promo-read.js";
|
||||||
|
import { RegistrationTicket } from "@/models/entities/registration-tickets.js";
|
||||||
|
import { RegistryItem } from "@/models/entities/registry-item.js";
|
||||||
|
import { Relay } from "@/models/entities/relay.js";
|
||||||
|
import { RenoteMuting } from "@/models/entities/renote-muting.js";
|
||||||
|
import { Signin } from "@/models/entities/signin.js";
|
||||||
|
import { SwSubscription } from "@/models/entities/sw-subscription.js";
|
||||||
|
import { UsedUsername } from "@/models/entities/used-username.js";
|
||||||
|
import { UserGroupInvitation } from "@/models/entities/user-group-invitation.js";
|
||||||
|
import { UserGroupJoining } from "@/models/entities/user-group-joining.js";
|
||||||
|
import { UserGroup } from "@/models/entities/user-group.js";
|
||||||
|
import { UserIp } from "@/models/entities/user-ip.js";
|
||||||
|
import { UserKeypair } from "@/models/entities/user-keypair.js";
|
||||||
|
import { UserListJoining } from "@/models/entities/user-list-joining.js";
|
||||||
|
import { UserList } from "@/models/entities/user-list.js";
|
||||||
|
import { UserNotePining } from "@/models/entities/user-note-pining.js";
|
||||||
|
import { UserPending } from "@/models/entities/user-pending.js";
|
||||||
|
import { UserProfile } from "@/models/entities/user-profile.js";
|
||||||
|
import { UserPublickey } from "@/models/entities/user-publickey.js";
|
||||||
|
import { UserSecurityKey } from "@/models/entities/user-security-key.js";
|
||||||
|
import { User } from "@/models/entities/user.js";
|
||||||
|
import { Webhook } from "@/models/entities/webhook.js";
|
||||||
|
|
||||||
import { entities as charts } from "@/services/chart/entities.js";
|
import { entities as charts } from "@/services/chart/entities.js";
|
||||||
import { envOption } from "../env.js";
|
|
||||||
import { dbLogger } from "./logger.js";
|
import { dbLogger } from "./logger.js";
|
||||||
import { redisClient } from "./redis.js";
|
import { redisClient } from "./redis.js";
|
||||||
|
|
||||||
|
// TODO?: should we avoid importing things from built directory?
|
||||||
import { nativeInitDatabase } from "native-utils/built/index.js";
|
import { nativeInitDatabase } from "native-utils/built/index.js";
|
||||||
|
|
||||||
const sqlLogger = dbLogger.createSubLogger("sql", "gray", false);
|
const sqlLogger = dbLogger.createSubLogger("sql", "gray", false);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import Redis from "ioredis";
|
|
||||||
import config from "@/config/index.js";
|
import config from "@/config/index.js";
|
||||||
|
import Redis from "ioredis";
|
||||||
|
|
||||||
export function createConnection() {
|
export function createConnection() {
|
||||||
let source = config.redis;
|
let source = config.redis;
|
||||||
|
2
packages/backend/src/global.d.ts
vendored
@ -1,2 +1,2 @@
|
|||||||
// rome-ignore lint/suspicious/noExplicitAny: i have no idea
|
// biome-ignore lint/suspicious/noExplicitAny: i have no idea
|
||||||
type FIXME = any;
|
type FIXME = any;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* Misskey Entry Point!
|
* Firefish Entry Point
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { EventEmitter } from "node:events";
|
import { EventEmitter } from "node:events";
|
||||||
|
@ -110,9 +110,8 @@ export function fromHtml(html: string, hashtagNames?: string[]): string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
case "h1": {
|
case "h1": {
|
||||||
text += "【";
|
|
||||||
appendChildren(node.childNodes);
|
appendChildren(node.childNodes);
|
||||||
text += "】\n";
|
text += "\n";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
|
import config from "@/config/index.js";
|
||||||
|
import type { IMentionedRemoteUsers } from "@/models/entities/note.js";
|
||||||
|
import { intersperse } from "@/prelude/array.js";
|
||||||
import { Window } from "happy-dom";
|
import { Window } from "happy-dom";
|
||||||
import type * as mfm from "mfm-js";
|
import type * as mfm from "mfm-js";
|
||||||
import config from "@/config/index.js";
|
|
||||||
import { intersperse } from "@/prelude/array.js";
|
|
||||||
import type { IMentionedRemoteUsers } from "@/models/entities/note.js";
|
|
||||||
|
|
||||||
export function toHtml(
|
export function toHtml(
|
||||||
nodes: mfm.MfmNode[] | null,
|
nodes: mfm.MfmNode[] | null,
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { Antennas } from "@/models/index.js";
|
|
||||||
import type { Antenna } from "@/models/entities/antenna.js";
|
|
||||||
import { subscriber } from "@/db/redis.js";
|
import { subscriber } from "@/db/redis.js";
|
||||||
|
import type { Antenna } from "@/models/entities/antenna.js";
|
||||||
|
import { Antennas } from "@/models/index.js";
|
||||||
|
|
||||||
let antennasFetched = false;
|
let antennasFetched = false;
|
||||||
let antennas: Antenna[] = [];
|
let antennas: Antenna[] = [];
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { redisClient } from "../db/redis.js";
|
import { redisClient } from "@/db/redis.js";
|
||||||
import { Mutex } from "redis-semaphore";
|
import { Mutex } from "redis-semaphore";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
// https://gist.github.com/nfantone/1eaa803772025df69d07f4dbf5df7e58
|
// https://gist.github.com/nfantone/1eaa803772025df69d07f4dbf5df7e58
|
||||||
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @callback BeforeShutdownListener
|
* @callback BeforeShutdownListener
|
||||||
* @param {string} [signalOrEvent] The exit signal or event name received on the process.
|
* @param {string} [signalOrEvent] The exit signal or event name received on the process.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { redisClient } from "@/db/redis.js";
|
import { redisClient } from "@/db/redis.js";
|
||||||
import { encode, decode } from "msgpackr";
|
|
||||||
import { ChainableCommander } from "ioredis";
|
import { ChainableCommander } from "ioredis";
|
||||||
|
import { decode, encode } from "msgpackr";
|
||||||
|
|
||||||
export class Cache<T> {
|
export class Cache<T> {
|
||||||
private ttl: number;
|
private ttl: number;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import fetch from "node-fetch";
|
|
||||||
import { URLSearchParams } from "node:url";
|
import { URLSearchParams } from "node:url";
|
||||||
import { getAgentByUrl } from "./fetch.js";
|
|
||||||
import config from "@/config/index.js";
|
import config from "@/config/index.js";
|
||||||
|
import { getAgentByUrl } from "@/misc/fetch.js";
|
||||||
|
import fetch from "node-fetch";
|
||||||
|
|
||||||
export async function verifyRecaptcha(secret: string, response: string) {
|
export async function verifyRecaptcha(secret: string, response: string) {
|
||||||
const result = await getCaptchaResponse(
|
const result = await getCaptchaResponse(
|
||||||
|
@ -1,76 +1,29 @@
|
|||||||
|
import * as Acct from "@/misc/acct.js";
|
||||||
|
import { Cache } from "@/misc/cache.js";
|
||||||
|
import { getWordHardMute } from "@/misc/check-word-mute.js";
|
||||||
|
import { getFullApAccount } from "@/misc/convert-host.js";
|
||||||
|
import type { Packed } from "@/misc/schema.js";
|
||||||
import type { Antenna } from "@/models/entities/antenna.js";
|
import type { Antenna } from "@/models/entities/antenna.js";
|
||||||
import type { Note } from "@/models/entities/note.js";
|
import type { Note } from "@/models/entities/note.js";
|
||||||
import type { User } from "@/models/entities/user.js";
|
import type { User } from "@/models/entities/user.js";
|
||||||
import {
|
import { Blockings, UserProfiles } from "@/models/index.js";
|
||||||
UserListJoinings,
|
|
||||||
UserGroupJoinings,
|
|
||||||
Blockings,
|
|
||||||
} from "@/models/index.js";
|
|
||||||
import { getFullApAccount } from "./convert-host.js";
|
|
||||||
import * as Acct from "@/misc/acct.js";
|
|
||||||
import type { Packed } from "./schema.js";
|
|
||||||
import { Cache } from "./cache.js";
|
|
||||||
|
|
||||||
const blockingCache = new Cache<User["id"][]>("blocking", 60 * 5);
|
const blockingCache = new Cache<User["id"][]>("blocking", 60 * 5);
|
||||||
|
const mutedWordsCache = new Cache<string[][] | undefined>("mutedWords", 60 * 5);
|
||||||
|
|
||||||
// NOTE: フォローしているユーザーのノート、リストのユーザーのノート、グループのユーザーのノート指定はパフォーマンス上の理由で無効になっている
|
|
||||||
|
|
||||||
/**
|
|
||||||
* noteUserFollowers / antennaUserFollowing はどちらか一方が指定されていればよい
|
|
||||||
*/
|
|
||||||
export async function checkHitAntenna(
|
export async function checkHitAntenna(
|
||||||
antenna: Antenna,
|
antenna: Antenna,
|
||||||
note: Note | Packed<"Note">,
|
note: Note | Packed<"Note">,
|
||||||
noteUser: { id: User["id"]; username: string; host: string | null },
|
noteUser: { id: User["id"]; username: string; host: string | null },
|
||||||
noteUserFollowers?: User["id"][],
|
|
||||||
antennaUserFollowing?: User["id"][],
|
|
||||||
): Promise<boolean> {
|
): Promise<boolean> {
|
||||||
if (note.visibility === "specified") return false;
|
if (note.visibility === "specified") return false;
|
||||||
if (note.visibility === "home") return false;
|
if (note.visibility === "home") return false;
|
||||||
|
if (!antenna.withReplies && note.replyId != null) return false;
|
||||||
// アンテナ作成者がノート作成者にブロックされていたらスキップ
|
if (antenna.withFile) {
|
||||||
const blockings = await blockingCache.fetch(noteUser.id, () =>
|
if (note.fileIds && note.fileIds.length === 0) return false;
|
||||||
Blockings.findBy({ blockerId: noteUser.id }).then((res) =>
|
|
||||||
res.map((x) => x.blockeeId),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
if (blockings.some((blocking) => blocking === antenna.userId)) return false;
|
|
||||||
|
|
||||||
if (note.visibility === "followers") {
|
|
||||||
if (noteUserFollowers && !noteUserFollowers.includes(antenna.userId))
|
|
||||||
return false;
|
|
||||||
if (antennaUserFollowing && !antennaUserFollowing.includes(note.userId))
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!antenna.withReplies && note.replyId != null) return false;
|
if (antenna.src === "users") {
|
||||||
|
|
||||||
if (antenna.src === "home") {
|
|
||||||
if (noteUserFollowers && !noteUserFollowers.includes(antenna.userId))
|
|
||||||
return false;
|
|
||||||
if (antennaUserFollowing && !antennaUserFollowing.includes(note.userId))
|
|
||||||
return false;
|
|
||||||
} else if (antenna.src === "list") {
|
|
||||||
const listUsers = (
|
|
||||||
await UserListJoinings.findBy({
|
|
||||||
userListId: antenna.userListId!,
|
|
||||||
})
|
|
||||||
).map((x) => x.userId);
|
|
||||||
|
|
||||||
if (!listUsers.includes(note.userId)) return false;
|
|
||||||
} else if (antenna.src === "group") {
|
|
||||||
const joining = await UserGroupJoinings.findOneByOrFail({
|
|
||||||
id: antenna.userGroupJoiningId!,
|
|
||||||
});
|
|
||||||
|
|
||||||
const groupUsers = (
|
|
||||||
await UserGroupJoinings.findBy({
|
|
||||||
userGroupId: joining.userGroupId,
|
|
||||||
})
|
|
||||||
).map((x) => x.userId);
|
|
||||||
|
|
||||||
if (!groupUsers.includes(note.userId)) return false;
|
|
||||||
} else if (antenna.src === "users") {
|
|
||||||
const accts = antenna.users.map((x) => {
|
const accts = antenna.users.map((x) => {
|
||||||
const { username, host } = Acct.parse(x);
|
const { username, host } = Acct.parse(x);
|
||||||
return getFullApAccount(username, host).toLowerCase();
|
return getFullApAccount(username, host).toLowerCase();
|
||||||
@ -128,9 +81,20 @@ export async function checkHitAntenna(
|
|||||||
if (matched) return false;
|
if (matched) return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (antenna.withFile) {
|
// アンテナ作成者がノート作成者にブロックされていたらスキップ
|
||||||
if (note.fileIds && note.fileIds.length === 0) return false;
|
const blockings = await blockingCache.fetch(noteUser.id, () =>
|
||||||
}
|
Blockings.findBy({ blockerId: noteUser.id }).then((res) =>
|
||||||
|
res.map((x) => x.blockeeId),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
if (blockings.includes(antenna.userId)) return false;
|
||||||
|
|
||||||
|
const mutedWords = await mutedWordsCache.fetch(antenna.userId, () =>
|
||||||
|
UserProfiles.findOneBy({ userId: antenna.userId }).then(
|
||||||
|
(profile) => profile?.mutedWords,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
if (await getWordHardMute(note, antenna.userId, mutedWords)) return false;
|
||||||
|
|
||||||
// TODO: eval expression
|
// TODO: eval expression
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import RE2 from "re2";
|
|
||||||
import type { Note } from "@/models/entities/note.js";
|
import type { Note } from "@/models/entities/note.js";
|
||||||
import type { User } from "@/models/entities/user.js";
|
import RE2 from "re2";
|
||||||
|
|
||||||
type NoteLike = {
|
type NoteLike = {
|
||||||
userId: Note["userId"];
|
userId: Note["userId"];
|
||||||
@ -9,10 +8,6 @@ type NoteLike = {
|
|||||||
cw?: Note["cw"];
|
cw?: Note["cw"];
|
||||||
};
|
};
|
||||||
|
|
||||||
type UserLike = {
|
|
||||||
id: User["id"];
|
|
||||||
};
|
|
||||||
|
|
||||||
function checkWordMute(
|
function checkWordMute(
|
||||||
note: NoteLike,
|
note: NoteLike,
|
||||||
mutedWords: Array<string | string[]>,
|
mutedWords: Array<string | string[]>,
|
||||||
@ -61,13 +56,10 @@ function checkWordMute(
|
|||||||
|
|
||||||
export async function getWordHardMute(
|
export async function getWordHardMute(
|
||||||
note: NoteLike,
|
note: NoteLike,
|
||||||
me: UserLike | null | undefined,
|
meId: string | null | undefined,
|
||||||
mutedWords: Array<string | string[]>,
|
mutedWords?: Array<string | string[]>,
|
||||||
): Promise<boolean> {
|
): Promise<boolean> {
|
||||||
// 自分自身
|
if (note.userId === meId || mutedWords == null) return false;
|
||||||
if (me && note.userId === me.id) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mutedWords.length > 0) {
|
if (mutedWords.length > 0) {
|
||||||
return (
|
return (
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { URL } from "node:url";
|
import { URL } from "node:url";
|
||||||
import config from "@/config/index.js";
|
|
||||||
import { toASCII } from "punycode";
|
import { toASCII } from "punycode";
|
||||||
|
import config from "@/config/index.js";
|
||||||
|
|
||||||
export function getFullApAccount(username: string, host: string | null) {
|
export function getFullApAccount(username: string, host: string | null) {
|
||||||
return host
|
return host
|
||||||
|
11
packages/backend/src/misc/detect-language.ts
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
import * as mfm from "mfm-js";
|
||||||
|
import { detect } from "tinyld";
|
||||||
|
|
||||||
|
export default function detectLanguage(text: string): string {
|
||||||
|
const nodes = mfm.parse(text);
|
||||||
|
const filtered = mfm.extract(nodes, (node) => {
|
||||||
|
return node.type === "text" || node.type === "quote";
|
||||||
|
});
|
||||||
|
const purified = mfm.toString(filtered);
|
||||||
|
return detect(purified);
|
||||||
|
}
|
@ -1,13 +1,13 @@
|
|||||||
import * as fs from "node:fs";
|
import * as fs from "node:fs";
|
||||||
import * as stream from "node:stream";
|
import * as stream from "node:stream";
|
||||||
import * as util from "node:util";
|
import * as util from "node:util";
|
||||||
import got, * as Got from "got";
|
|
||||||
import { httpAgent, httpsAgent, StatusError } from "./fetch.js";
|
|
||||||
import config from "@/config/index.js";
|
import config from "@/config/index.js";
|
||||||
import chalk from "chalk";
|
|
||||||
import Logger from "@/services/logger.js";
|
import Logger from "@/services/logger.js";
|
||||||
|
import chalk from "chalk";
|
||||||
|
import got, * as Got from "got";
|
||||||
import IPCIDR from "ip-cidr";
|
import IPCIDR from "ip-cidr";
|
||||||
import PrivateIp from "private-ip";
|
import PrivateIp from "private-ip";
|
||||||
|
import { StatusError, httpAgent, httpsAgent } from "./fetch.js";
|
||||||
|
|
||||||
const pipeline = util.promisify(stream.pipeline);
|
const pipeline = util.promisify(stream.pipeline);
|
||||||
|
|
||||||
|
@ -2,9 +2,9 @@ import probeImageSize from "probe-image-size";
|
|||||||
import { Mutex } from "redis-semaphore";
|
import { Mutex } from "redis-semaphore";
|
||||||
|
|
||||||
import { FILE_TYPE_BROWSERSAFE } from "@/const.js";
|
import { FILE_TYPE_BROWSERSAFE } from "@/const.js";
|
||||||
|
import { redisClient } from "@/db/redis.js";
|
||||||
import Logger from "@/services/logger.js";
|
import Logger from "@/services/logger.js";
|
||||||
import { Cache } from "./cache.js";
|
import { Cache } from "./cache.js";
|
||||||
import { redisClient } from "@/db/redis.js";
|
|
||||||
|
|
||||||
export type Size = {
|
export type Size = {
|
||||||
width: number;
|
width: number;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import * as mfm from "mfm-js";
|
|
||||||
import { unique } from "@/prelude/array.js";
|
import { unique } from "@/prelude/array.js";
|
||||||
|
import * as mfm from "mfm-js";
|
||||||
|
|
||||||
export function extractCustomEmojisFromMfm(nodes: mfm.MfmNode[]): string[] {
|
export function extractCustomEmojisFromMfm(nodes: mfm.MfmNode[]): string[] {
|
||||||
const emojiNodes = mfm.extract(nodes, (node) => {
|
const emojiNodes = mfm.extract(nodes, (node) => {
|
||||||
|