diff --git a/.circleci/config.yml b/.circleci/config.yml index a9ad92145..b9228f996 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,8 +1,8 @@ version: 2.1 orbs: - ruby: circleci/ruby@1.2.0 - node: circleci/node@4.7.0 + ruby: circleci/ruby@1.4.1 + node: circleci/node@5.0.1 executors: default: @@ -23,7 +23,7 @@ executors: environment: POSTGRES_USER: root POSTGRES_HOST_AUTH_METHOD: trust - - image: circleci/redis:6-alpine + - image: cimg/redis:6.2 commands: install-system-dependencies: @@ -45,7 +45,7 @@ commands: bundle config without 'development production' name: Set bundler settings - ruby/install-deps: - bundler-version: '2.2.31' + bundler-version: '2.3.8' key: ruby<< parameters.ruby-version >>-gems-v1 wait-db: steps: @@ -127,9 +127,18 @@ jobs: - run: command: ./bin/rails tests:migrations:populate_v2 name: Populate database with test data + - run: + command: ./bin/rails db:migrate VERSION=20180514140000 + name: Run migrations up to v2.4.0 + - run: + command: ./bin/rails tests:migrations:populate_v2_4 + name: Populate database with test data - run: command: ./bin/rails db:migrate name: Run all remaining migrations + - run: + command: ./bin/rails tests:migrations:check_database + name: Check migration result test-two-step-migrations: executor: @@ -150,14 +159,25 @@ jobs: - run: command: ./bin/rails tests:migrations:populate_v2 name: Populate database with test data + - run: + command: ./bin/rails db:migrate VERSION=20180514140000 + name: Run pre-deployment migrations up to v2.4.0 + environment: + SKIP_POST_DEPLOYMENT_MIGRATIONS: true + - run: + command: ./bin/rails tests:migrations:populate_v2_4 + name: Populate database with test data - run: command: ./bin/rails db:migrate name: Run all pre-deployment migrations - evironment: + environment: SKIP_POST_DEPLOYMENT_MIGRATIONS: true - run: command: ./bin/rails db:migrate name: Run all post-deployment remaining migrations + - run: + command: ./bin/rails tests:migrations:check_database + name: Check migration result workflows: version: 2 diff --git a/.codeclimate.yml b/.codeclimate.yml index c253bd95a..ee9022cda 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -1,4 +1,4 @@ -version: "2" +version: '2' checks: argument-count: enabled: false @@ -34,8 +34,8 @@ plugins: sass-lint: enabled: true exclude_patterns: -- spec/ -- vendor/asset/ + - spec/ + - vendor/asset/ -- app/javascript/mastodon/locales/**/*.json -- config/locales/**/*.yml + - app/javascript/mastodon/locales/**/*.json + - config/locales/**/*.yml diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 000000000..ac495e1c9 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,24 @@ +# [Choice] Ruby version (use -bullseye variants on local arm64/Apple Silicon): 3, 3.1, 3.0, 2, 2.7, 2.6, 3-bullseye, 3.1-bullseye, 3.0-bullseye, 2-bullseye, 2.7-bullseye, 2.6-bullseye, 3-buster, 3.1-buster, 3.0-buster, 2-buster, 2.7-buster, 2.6-buster +ARG VARIANT=3.1-bullseye +FROM mcr.microsoft.com/vscode/devcontainers/ruby:${VARIANT} + +# Install Rails +# RUN gem install rails webdrivers + +# Default value to allow debug server to serve content over GitHub Codespace's port forwarding service +# The value is a comma-separated list of allowed domains +ENV RAILS_DEVELOPMENT_HOSTS=".githubpreview.dev" + +# [Choice] Node.js version: lts/*, 16, 14, 12, 10 +ARG NODE_VERSION="lts/*" +RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1" + +# [Optional] Uncomment this section to install additional OS packages. +RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ + && apt-get -y install --no-install-recommends libicu-dev libidn11-dev ffmpeg imagemagick libpam-dev + +# [Optional] Uncomment this line to install additional gems. +RUN gem install foreman + +# [Optional] Uncomment this line to install global node packages. +RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g yarn" 2>&1 diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 000000000..628efc8ec --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,26 @@ +{ + "name": "Mastodon", + "dockerComposeFile": "docker-compose.yml", + "service": "app", + "workspaceFolder": "/workspaces/mastodon", + + // Set *default* container specific settings.json values on container create. + "settings": {}, + + // Add the IDs of extensions you want installed when the container is created. + "extensions": [ + "EditorConfig.EditorConfig", + "dbaeumer.vscode-eslint", + "rebornix.Ruby" + ], + + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // This can be used to network with other containers or the host. + "forwardPorts": [3000, 4000], + + // Use 'postCreateCommand' to run commands after the container is created. + "postCreateCommand": "bundle install --path vendor/bundle && yarn install && ./bin/rails db:setup", + + // Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. + "remoteUser": "vscode" +} diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml new file mode 100644 index 000000000..538f6cccd --- /dev/null +++ b/.devcontainer/docker-compose.yml @@ -0,0 +1,83 @@ +version: '3' + +services: + app: + build: + context: . + dockerfile: Dockerfile + args: + # Update 'VARIANT' to pick a version of Ruby: 3, 3.1, 3.0, 2, 2.7, 2.6 + # Append -bullseye or -buster to pin to an OS version. + # Use -bullseye variants on local arm64/Apple Silicon. + VARIANT: '3.0-bullseye' + # Optional Node.js version to install + NODE_VERSION: '14' + volumes: + - ..:/workspaces/mastodon:cached + environment: + RAILS_ENV: development + NODE_ENV: development + + REDIS_HOST: redis + REDIS_PORT: '6379' + DB_HOST: db + DB_USER: postgres + DB_PASS: postgres + DB_PORT: '5432' + ES_ENABLED: 'true' + ES_HOST: es + ES_PORT: '9200' + # Overrides default command so things don't shut down after the process ends. + command: sleep infinity + networks: + - external_network + - internal_network + user: vscode + + db: + image: postgres:14-alpine + restart: unless-stopped + volumes: + - postgres-data:/var/lib/postgresql/data + environment: + POSTGRES_USER: postgres + POSTGRES_DB: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_HOST_AUTH_METHOD: trust + networks: + - internal_network + + redis: + image: redis:6-alpine + restart: unless-stopped + volumes: + - redis-data:/data + networks: + - internal_network + + es: + image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2 + restart: unless-stopped + environment: + ES_JAVA_OPTS: -Xms512m -Xmx512m + cluster.name: es-mastodon + discovery.type: single-node + bootstrap.memory_lock: 'true' + volumes: + - es-data:/usr/share/elasticsearch/data + networks: + - internal_network + ulimits: + memlock: + soft: -1 + hard: -1 + +volumes: + postgres-data: + redis-data: + es-data: + +networks: + external_network: + internal_network: + internal: true diff --git a/.env.production.sample b/.env.production.sample index 8eeff3794..4fc58072f 100644 --- a/.env.production.sample +++ b/.env.production.sample @@ -58,7 +58,7 @@ SMTP_SERVER=smtp.mailgun.org SMTP_PORT=587 SMTP_LOGIN= SMTP_PASSWORD= -SMTP_FROM_ADDRESS=notificatons@example.com +SMTP_FROM_ADDRESS=notifications@example.com # File storage (optional) # ----------------------- diff --git a/.eslintrc.js b/.eslintrc.js index 7dda01108..2a882f59c 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -79,6 +79,11 @@ module.exports = { 'no-irregular-whitespace': 'error', 'no-mixed-spaces-and-tabs': 'warn', 'no-nested-ternary': 'warn', + 'no-restricted-properties': [ + 'error', + { property: 'substring', message: 'Use .slice instead of .substring.' }, + { property: 'substr', message: 'Use .slice instead of .substr.' }, + ], 'no-trailing-spaces': 'warn', 'no-undef': 'error', 'no-unreachable': 'error', diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS deleted file mode 100644 index fd6f74689..000000000 --- a/.github/CODEOWNERS +++ /dev/null @@ -1,32 +0,0 @@ -# CODEOWNERS for mastodon/mastodon - -# Translators -# To add translator, copy these lines, replace `fr` with appropriate language code and replace `@żelipapą` with user's GitHub nickname preceded by `@` sign or e-mail address. -# /app/javascript/mastodon/locales/fr.json @żelipapą -# /app/views/user_mailer/*.fr.html.erb @żelipapą -# /app/views/user_mailer/*.fr.text.erb @żelipapą -# /config/locales/*.fr.yml @żelipapą -# /config/locales/fr.yml @żelipapą - -# Polish -/app/javascript/mastodon/locales/pl.json @m4sk1n -/app/views/user_mailer/*.pl.html.erb @m4sk1n -/app/views/user_mailer/*.pl.text.erb @m4sk1n -/config/locales/*.pl.yml @m4sk1n -/config/locales/pl.yml @m4sk1n - -# French -/app/javascript/mastodon/locales/fr.json @aldarone -/app/javascript/mastodon/locales/whitelist_fr.json @aldarone -/app/views/user_mailer/*.fr.html.erb @aldarone -/app/views/user_mailer/*.fr.text.erb @aldarone -/config/locales/*.fr.yml @aldarone -/config/locales/fr.yml @aldarone - -# Dutch -/app/javascript/mastodon/locales/nl.json @jeroenpraat -/app/javascript/mastodon/locales/whitelist_nl.json @jeroenpraat -/app/views/user_mailer/*.nl.html.erb @jeroenpraat -/app/views/user_mailer/*.nl.text.erb @jeroenpraat -/config/locales/*.nl.yml @jeroenpraat -/config/locales/nl.yml @jeroenpraat diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 9526e17db..be750a5e4 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,3 +1,3 @@ patreon: mastodon open_collective: mastodon -github: [Gargron] +custom: https://sponsor.joinmastodon.org diff --git a/.github/ISSUE_TEMPLATE/2.feature_request.yml b/.github/ISSUE_TEMPLATE/2.feature_request.yml index 00aad1341..6626c2876 100644 --- a/.github/ISSUE_TEMPLATE/2.feature_request.yml +++ b/.github/ISSUE_TEMPLATE/2.feature_request.yml @@ -1,5 +1,6 @@ name: Feature Request description: I have a suggestion +labels: suggestion body: - type: markdown attributes: diff --git a/.github/ISSUE_TEMPLATE/3.support.md b/.github/ISSUE_TEMPLATE/3.support.md deleted file mode 100644 index e2217da8b..000000000 --- a/.github/ISSUE_TEMPLATE/3.support.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: Support -about: Ask for help with your deployment -title: DO NOT CREATE THIS ISSUE ---- - -We primarily use GitHub as a bug and feature tracker. For usage questions, troubleshooting of deployments and other individual technical assistance, please use one of the resources below: - -- https://discourse.joinmastodon.org -- #mastodon on irc.freenode.net diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 768868516..7c0dbaf67 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,5 +1,8 @@ blank_issues_enabled: false contact_links: - - name: Mastodon Meta Discussion Board - url: https://discourse.joinmastodon.org/ + - name: GitHub Discussions + url: https://github.com/mastodon/mastodon/discussions about: Please ask and answer questions here. + - name: Bug Bounty Program + url: https://app.intigriti.com/programs/mastodon/mastodonio/detail + about: Please report security vulnerabilities here. diff --git a/.github/dependabot.yml b/.github/dependabot.yml index c4cd48878..bb1fccf7c 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -6,7 +6,7 @@ version: 2 updates: - package-ecosystem: npm - directory: "/" + directory: '/' schedule: interval: weekly open-pull-requests-limit: 99 @@ -14,7 +14,7 @@ updates: - dependency-type: direct - package-ecosystem: bundler - directory: "/" + directory: '/' schedule: interval: weekly open-pull-requests-limit: 99 diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index f8b4a751d..75c7b54a6 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -3,9 +3,9 @@ on: workflow_dispatch: push: branches: - - "main" + - 'main' tags: - - "*" + - '*' pull_request: paths: - .github/workflows/build-image.yml @@ -30,7 +30,7 @@ jobs: latest=auto tags: | type=edge,branch=main - type=semver,pattern={{ raw }} + type=match,pattern=v(.*),group=0 type=ref,event=pr - uses: docker/build-push-action@v2 with: diff --git a/.github/workflows/check-i18n.yml b/.github/workflows/check-i18n.yml index 9cb98dd12..be38a096d 100644 --- a/.github/workflows/check-i18n.yml +++ b/.github/workflows/check-i18n.yml @@ -2,9 +2,9 @@ name: Check i18n on: push: - branches: [ main ] + branches: [main] pull_request: - branches: [ main ] + branches: [main] env: RAILS_ENV: test @@ -14,21 +14,21 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - name: Install system dependencies - run: | - sudo apt-get update - sudo apt-get install -y libicu-dev libidn11-dev - - name: Set up Ruby - uses: ruby/setup-ruby@v1 - with: - ruby-version: '3.0' - bundler-cache: true - - name: Check locale file normalization - run: bundle exec i18n-tasks check-normalized - - name: Check for unused strings - run: bundle exec i18n-tasks unused -l en - - name: Check for wrong string interpolations - run: bundle exec i18n-tasks check-consistent-interpolations - - name: Check that all required locale files exist - run: bundle exec rake repo:check_locales_files + - uses: actions/checkout@v2 + - name: Install system dependencies + run: | + sudo apt-get update + sudo apt-get install -y libicu-dev libidn11-dev + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: '3.0' + bundler-cache: true + - name: Check locale file normalization + run: bundle exec i18n-tasks check-normalized + - name: Check for unused strings + run: bundle exec i18n-tasks unused -l en + - name: Check for wrong string interpolations + run: bundle exec i18n-tasks check-consistent-interpolations + - name: Check that all required locale files exist + run: bundle exec rake repo:check_locales_files diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 000000000..de7673eb6 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,78 @@ +# See https://help.github.com/articles/ignoring-files for more about ignoring files. +# +# If you find yourself ignoring temporary files generated by your text editor +# or operating system, you probably want to add a global ignore instead: +# git config --global core.excludesfile '~/.gitignore_global' + +# Ignore bundler config and downloaded libraries. +/.bundle +/vendor/bundle + +# Ignore the default SQLite database. +/db/*.sqlite3 +/db/*.sqlite3-journal + +# Ignore all logfiles and tempfiles. +.eslintcache +/log/* +!/log/.keep +/tmp +/coverage +/public/system +/public/assets +/public/packs +/public/packs-test +.env +.env.production +.env.development +/node_modules/ +/build/ + +# Ignore Vagrant files +.vagrant/ + +# Ignore Capistrano customizations +/config/deploy/* + +# Ignore IDE files +.vscode/ +.idea/ + +# Ignore postgres + redis + elasticsearch volume optionally created by docker-compose +/postgres +/postgres14 +/redis +/elasticsearch + +# ignore Helm dependency charts +/chart/charts/*.tgz + +# Ignore Apple files +.DS_Store + +# Ignore vim files +*~ +*.swp + +# Ignore npm debug log +npm-debug.log + +# Ignore yarn log files +yarn-error.log +yarn-debug.log + +# Ignore vagrant log files +*-cloudimg-console.log + +# Ignore Docker option files +docker-compose.override.yml + +# Ignore Helm files +/chart + +# Ignore emoji map file +/app/javascript/mastodon/features/emoji/emoji_map.json + +# Ignore locale files +/app/javascript/mastodon/locales +/config/locales diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 000000000..1d70813d5 --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,3 @@ +module.exports = { + singleQuote: true +} diff --git a/.rubocop.yml b/.rubocop.yml index 68634e9e3..a76937426 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -5,17 +5,17 @@ AllCops: TargetRubyVersion: 2.5 NewCops: disable Exclude: - - 'spec/**/*' - - 'db/**/*' - - 'app/views/**/*' - - 'config/**/*' - - 'bin/*' - - 'Rakefile' - - 'node_modules/**/*' - - 'Vagrantfile' - - 'vendor/**/*' - - 'lib/json_ld/*' - - 'lib/templates/**/*' + - 'spec/**/*' + - 'db/**/*' + - 'app/views/**/*' + - 'config/**/*' + - 'bin/*' + - 'Rakefile' + - 'node_modules/**/*' + - 'Vagrantfile' + - 'vendor/**/*' + - 'lib/json_ld/*' + - 'lib/templates/**/*' Bundler/OrderedGems: Enabled: false @@ -29,6 +29,9 @@ Layout/EmptyLineAfterMagicComment: Layout/EmptyLineAfterGuardClause: Enabled: false +Layout/EmptyLineBetweenDefs: + AllowAdjacentOneLineDefs: true + Layout/EmptyLinesAroundAttributeAccessor: Enabled: true diff --git a/AUTHORS.md b/AUTHORS.md index 596451737..9fc5f44f1 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -12,31 +12,32 @@ and provided thanks to the work of the following contributors: * [akihikodaki](https://github.com/akihikodaki) * [mjankowski](https://github.com/mjankowski) * [unarist](https://github.com/unarist) +* [noellabo](https://github.com/noellabo) * [abcang](https://github.com/abcang) * [yiskah](https://github.com/yiskah) -* [noellabo](https://github.com/noellabo) -* [nolanlawson](https://github.com/nolanlawson) * [mayaeh](https://github.com/mayaeh) +* [nolanlawson](https://github.com/nolanlawson) * [ysksn](https://github.com/ysksn) +* [tribela](https://github.com/tribela) * [sorin-davidoi](https://github.com/sorin-davidoi) * [lynlynlynx](https://github.com/lynlynlynx) * [m4sk1n](mailto:me@m4sk.in) * [Marcin Mikołajczak](mailto:me@m4sk.in) -* [tribela](https://github.com/tribela) * [renatolond](https://github.com/renatolond) +* [shleeable](https://github.com/shleeable) * [alpaca-tc](https://github.com/alpaca-tc) * [zunda](https://github.com/zunda) * [nclm](https://github.com/nclm) * [ineffyble](https://github.com/ineffyble) -* [shleeable](https://github.com/shleeable) +* [ariasuni](https://github.com/ariasuni) * [Masoud Abkenar](mailto:ampbox@gmail.com) * [blackle](https://github.com/blackle) * [Quent-in](https://github.com/Quent-in) * [JantsoP](https://github.com/JantsoP) -* [ariasuni](https://github.com/ariasuni) +* [Brawaru](https://github.com/Brawaru) * [nullkal](https://github.com/nullkal) * [yookoala](https://github.com/yookoala) -* [Brawaru](https://github.com/Brawaru) +* [dunn](https://github.com/dunn) * [Aditoo17](https://github.com/Aditoo17) * [Quenty31](https://github.com/Quenty31) * [marek-lach](https://github.com/marek-lach) @@ -46,10 +47,9 @@ and provided thanks to the work of the following contributors: * [eramdam](https://github.com/eramdam) * [Jeroen](mailto:jeroenpraat@users.noreply.github.com) * [takayamaki](https://github.com/takayamaki) -* [dunn](https://github.com/dunn) * [masarakki](https://github.com/masarakki) -* [ticky](https://github.com/ticky) * [trwnh](https://github.com/trwnh) +* [ticky](https://github.com/ticky) * [ThisIsMissEm](https://github.com/ThisIsMissEm) * [hinaloe](https://github.com/hinaloe) * [hcmiya](https://github.com/hcmiya) @@ -73,13 +73,13 @@ and provided thanks to the work of the following contributors: * [MaciekBaron](https://github.com/MaciekBaron) * [SerCom_KC](mailto:sercom-kc@users.noreply.github.com) * [Sylvhem](https://github.com/Sylvhem) +* [koyuawsmbrtn](https://github.com/koyuawsmbrtn) * [MitarashiDango](https://github.com/MitarashiDango) * [rinsuki](https://github.com/rinsuki) * [angristan](https://github.com/angristan) * [JeanGauthier](https://github.com/JeanGauthier) * [kschaper](https://github.com/kschaper) * [beatrix-bitrot](https://github.com/beatrix-bitrot) -* [koyuawsmbrtn](https://github.com/koyuawsmbrtn) * [BenLubar](https://github.com/BenLubar) * [mkljczk](https://github.com/mkljczk) * [adbelle](https://github.com/adbelle) @@ -89,11 +89,12 @@ and provided thanks to the work of the following contributors: * [yhirano55](https://github.com/yhirano55) * [devkral](https://github.com/devkral) * [camponez](https://github.com/camponez) -* [hugogameiro](https://github.com/hugogameiro) +* [Hugo Gameiro](mailto:hmgameiro@gmail.com) * [SerCom_KC](mailto:szescxz@gmail.com) * [aschmitz](https://github.com/aschmitz) * [mfmfuyu](https://github.com/mfmfuyu) * [kedamaDQ](https://github.com/kedamaDQ) +* [mashirozx](https://github.com/mashirozx) * [fpiesche](https://github.com/fpiesche) * [gandaro](https://github.com/gandaro) * [johnsudaar](https://github.com/johnsudaar) @@ -115,41 +116,41 @@ and provided thanks to the work of the following contributors: * [pfm-eyesightjp](https://github.com/pfm-eyesightjp) * [fakenine](https://github.com/fakenine) * [tsuwatch](https://github.com/tsuwatch) +* [progval](https://github.com/progval) * [victorhck](https://github.com/victorhck) -* [manuelviens](https://github.com/manuelviens) +* [manuelviens](mailto:manuelviens@users.noreply.github.com) * [tateisu](https://github.com/tateisu) * [fvh-P](https://github.com/fvh-P) +* [lfuelling](https://github.com/lfuelling) * [rtucker](https://github.com/rtucker) * [Anna e só](mailto:contraexemplos@gmail.com) * [dariusk](https://github.com/dariusk) * [kazu9su](https://github.com/kazu9su) -* [Komic](https://github.com/Komic) +* [komic](https://github.com/komic) * [lmorchard](https://github.com/lmorchard) * [diomed](https://github.com/diomed) * [Neetshin](mailto:neetshin@neetsh.in) * [rainyday](https://github.com/rainyday) * [tcitworld](https://github.com/tcitworld) -* [ProgVal](https://github.com/ProgVal) * [valentin2105](https://github.com/valentin2105) * [yuntan](https://github.com/yuntan) * [goofy-bz](mailto:goofy@babelzilla.org) * [kadiix](https://github.com/kadiix) * [kodacs](https://github.com/kodacs) * [marcin mikołajczak](mailto:me@m4sk.in) +* [berkes](https://github.com/berkes) * [KScl](https://github.com/KScl) * [sterdev](https://github.com/sterdev) -* [mashirozx](https://github.com/mashirozx) * [TheKinrar](https://github.com/TheKinrar) -* [007lva](https://github.com/007lva) * [AA4ch1](https://github.com/AA4ch1) * [alexgleason](https://github.com/alexgleason) -* [Bèr Kessels](mailto:ber@berk.es) * [cpytel](https://github.com/cpytel) * [northerner](https://github.com/northerner) +* [weex](https://github.com/weex) * [fhemberger](https://github.com/fhemberger) * [Gomasy](https://github.com/Gomasy) * [greysteil](https://github.com/greysteil) -* [hendotcat](https://github.com/hendotcat) +* [henrycatalinismith](https://github.com/henrycatalinismith) * [d6rkaiz](https://github.com/d6rkaiz) * [ladyisatis](https://github.com/ladyisatis) * [JMendyk](https://github.com/JMendyk) @@ -160,6 +161,8 @@ and provided thanks to the work of the following contributors: * [pawelngei](https://github.com/pawelngei) * [reneklacan](https://github.com/reneklacan) * [ekiru](https://github.com/ekiru) +* [Izorkin](https://github.com/Izorkin) +* [unasuke](https://github.com/unasuke) * [geta6](https://github.com/geta6) * [happycoloredbanana](https://github.com/happycoloredbanana) * [joenepraat](https://github.com/joenepraat) @@ -168,11 +171,11 @@ and provided thanks to the work of the following contributors: * [spla](mailto:sp@mastodont.cat) * [tomfhowe](https://github.com/tomfhowe) * [noraworld](https://github.com/noraworld) -* [lfuelling](https://github.com/lfuelling) * [aji-su](https://github.com/aji-su) +* [ikuradon](https://github.com/ikuradon) * [nzws](https://github.com/nzws) * [duxovni](https://github.com/duxovni) -* [smorimoto](https://github.com/smorimoto) +* [SuperSandro2000](https://github.com/SuperSandro2000) * [178inaba](https://github.com/178inaba) * [acid-chicken](https://github.com/acid-chicken) * [xgess](https://github.com/xgess) @@ -194,37 +197,37 @@ and provided thanks to the work of the following contributors: * [Dar13](https://github.com/Dar13) * [nevillepark](https://github.com/nevillepark) * [ornithocoder](https://github.com/ornithocoder) -* [pwoolcoc](https://github.com/pwoolcoc) +* [Paul Woolcock](mailto:paul@woolcock.us) * [pierreozoux](https://github.com/pierreozoux) * [qguv](https://github.com/qguv) * [Ram Lmn](mailto:ramlmn@users.noreply.github.com) +* [rgroothuijsen](https://github.com/rgroothuijsen) * [Sascha](mailto:sascha@serenitylabs.cloud) * [harukasan](https://github.com/harukasan) * [stamak](https://github.com/stamak) * [Technowix](https://github.com/Technowix) * [Zoeille](https://github.com/Zoeille) -* [Thor Harald Johansen](mailto:thj@thj.no) +* [Thorwegian](https://github.com/Thorwegian) * [0x70b1a5](https://github.com/0x70b1a5) * [gled-rs](https://github.com/gled-rs) * [Valentin_NC](mailto:valentin.ouvrard@nautile.sarl) * [R0ckweb](https://github.com/R0ckweb) -* [Izorkin](https://github.com/Izorkin) -* [unasuke](https://github.com/unasuke) * [caasi](https://github.com/caasi) +* [chandrn7](https://github.com/chandrn7) * [chr-1x](https://github.com/chr-1x) * [esetomo](https://github.com/esetomo) * [foxiehkins](https://github.com/foxiehkins) * [highemerly](https://github.com/highemerly) * [hoodie](mailto:hoodiekitten@outlook.com) * [kaiyou](https://github.com/kaiyou) +* [007lva](https://github.com/007lva) * [luzi82](https://github.com/luzi82) * [slice](https://github.com/slice) * [tmm576](https://github.com/tmm576) * [unsmell](mailto:unsmell@users.noreply.github.com) * [valerauko](https://github.com/valerauko) +* [Grawl](https://github.com/Grawl) * [chriswmartin](https://github.com/chriswmartin) -* [SuperSandro2000](https://github.com/SuperSandro2000) -* [ikuradon](https://github.com/ikuradon) * [AndreLewin](https://github.com/AndreLewin) * [0xflotus](https://github.com/0xflotus) * [redtachyons](https://github.com/redtachyons) @@ -234,18 +237,21 @@ and provided thanks to the work of the following contributors: * [Andrew](mailto:andrewlchronister@gmail.com) * [arielrodrigues](https://github.com/arielrodrigues) * [aurelien-reeves](https://github.com/aurelien-reeves) +* [BSKY](mailto:git@bsky.moe) * [elegaanz](https://github.com/elegaanz) * [estuans](https://github.com/estuans) * [dissolve](https://github.com/dissolve) * [PurpleBooth](https://github.com/PurpleBooth) * [bradurani](https://github.com/bradurani) * [wavebeem](https://github.com/wavebeem) -* [bruwalfas](https://github.com/bruwalfas) +* [thermosflasche](https://github.com/thermosflasche) * [LottieVixen](https://github.com/LottieVixen) * [wchristian](https://github.com/wchristian) * [muffinista](https://github.com/muffinista) * [cdutson](https://github.com/cdutson) * [farlistener](https://github.com/farlistener) +* [baby-gnu](https://github.com/baby-gnu) +* [danieljakots](https://github.com/danieljakots) * [divergentdave](https://github.com/divergentdave) * [DavidLibeau](https://github.com/DavidLibeau) * [dmerejkowsky](https://github.com/dmerejkowsky) @@ -256,8 +262,10 @@ and provided thanks to the work of the following contributors: * [unstabler](https://github.com/unstabler) * [potato4d](https://github.com/potato4d) * [h-izumi](https://github.com/h-izumi) +* [HolgerHuo](https://github.com/HolgerHuo) * [ErikXXon](https://github.com/ErikXXon) * [ian-kelling](https://github.com/ian-kelling) +* [eltociear](https://github.com/eltociear) * [immae](https://github.com/immae) * [J0WI](https://github.com/J0WI) * [vahnj](https://github.com/vahnj) @@ -283,10 +291,12 @@ and provided thanks to the work of the following contributors: * [Nathaniel Suchy](mailto:me@lunorian.is) * [ndarville](https://github.com/ndarville) * [NimaBoscarino](https://github.com/NimaBoscarino) +* [aquarla](https://github.com/aquarla) * [Abzol](https://github.com/Abzol) * [PatOnTheBack](https://github.com/PatOnTheBack) * [xPaw](https://github.com/xPaw) * [petzah](https://github.com/petzah) +* [PeterDaveHello](https://github.com/PeterDaveHello) * [ignisf](https://github.com/ignisf) * [lumenwrites](https://github.com/lumenwrites) * [remram44](https://github.com/remram44) @@ -310,25 +320,30 @@ and provided thanks to the work of the following contributors: * [yannicka](https://github.com/yannicka) * [ikasoumen](https://github.com/ikasoumen) * [zacanger](https://github.com/zacanger) +* [l2dy](https://github.com/l2dy) * [amazedkoumei](https://github.com/amazedkoumei) * [anon5r](https://github.com/anon5r) * [aus-social](https://github.com/aus-social) +* [bsky](mailto:git@bsky.moe) * [bsky](mailto:me@imbsky.net) -* [chandrn7](https://github.com/chandrn7) * [codl](https://github.com/codl) * [cpsdqs](https://github.com/cpsdqs) * [barzamin](https://github.com/barzamin) * [gol-cha](https://github.com/gol-cha) +* [gunchleoc](https://github.com/gunchleoc) * [fhalna](https://github.com/fhalna) * [haoyayoi](https://github.com/haoyayoi) * [ik11235](https://github.com/ik11235) * [kawax](https://github.com/kawax) * [shrft](https://github.com/shrft) +* [luigi](mailto:lvargas@rankia.com) +* [luzpaz](https://github.com/luzpaz) * [mbajur](https://github.com/mbajur) * [matsurai25](https://github.com/matsurai25) * [mecab](https://github.com/mecab) * [nicobz25](https://github.com/nicobz25) * [niwatori24](https://github.com/niwatori24) +* [noiob](https://github.com/noiob) * [oliverkeeble](https://github.com/oliverkeeble) * [partev](https://github.com/partev) * [pinfort](https://github.com/pinfort) @@ -341,7 +356,6 @@ and provided thanks to the work of the following contributors: * [vidarlee](https://github.com/vidarlee) * [vjackson725](https://github.com/vjackson725) * [wxcafe](https://github.com/wxcafe) -* [Grawl](https://github.com/Grawl) * [新都心(Neet Shin)](mailto:nucx@dio-vox.com) * [clarfonthey](https://github.com/clarfonthey) * [cygnan](https://github.com/cygnan) @@ -390,7 +404,6 @@ and provided thanks to the work of the following contributors: * [Brad Janke](mailto:brad.janke@gmail.com) * [bclindner](https://github.com/bclindner) * [brycied00d](https://github.com/brycied00d) -* [berkes](https://github.com/berkes) * [carlosjs23](https://github.com/carlosjs23) * [cgxxx](https://github.com/cgxxx) * [kibitan](https://github.com/kibitan) @@ -411,7 +424,6 @@ and provided thanks to the work of the following contributors: * [dalehenries](https://github.com/dalehenries) * [daprice](https://github.com/daprice) * [da2x](https://github.com/da2x) -* [danieljakots](https://github.com/danieljakots) * [codesections](https://github.com/codesections) * [dar5hak](https://github.com/dar5hak) * [kant](https://github.com/kant) @@ -420,7 +432,7 @@ and provided thanks to the work of the following contributors: * [caldwell](https://github.com/caldwell) * [davidcelis](https://github.com/davidcelis) * [davefp](https://github.com/davefp) -* [yipdw](https://github.com/yipdw) +* [hannahwhy](https://github.com/hannahwhy) * [debanshuk](https://github.com/debanshuk) * [mascali33](https://github.com/mascali33) * [DerekNonGeneric](https://github.com/DerekNonGeneric) @@ -445,20 +457,20 @@ and provided thanks to the work of the following contributors: * [GenbuHase](https://github.com/GenbuHase) * [nilsding](https://github.com/nilsding) * [hattori6789](https://github.com/hattori6789) -* [algernon](https://github.com/algernon) -* [Fastbyte01](https://github.com/Fastbyte01) -* [unrelentingtech](https://github.com/unrelentingtech) -* [gfaivre](https://github.com/gfaivre) -* [Fiaxhs](https://github.com/Fiaxhs) -* [rasjonell](https://github.com/rasjonell) -* [reedcourty](https://github.com/reedcourty) -* [anneau](https://github.com/anneau) -* [lanodan](https://github.com/lanodan) -* [Harmon758](https://github.com/Harmon758) -* [HellPie](https://github.com/HellPie) -* [Habu-Kagumba](https://github.com/Habu-Kagumba) -* [suzukaze](https://github.com/suzukaze) -* [Hiromi-Kai](https://github.com/Hiromi-Kai) +* [Gergely Nagy](mailto:algernon@users.noreply.github.com) +* [Giuseppe Pignataro](mailto:rogepix@gmail.com) +* [Greg V](mailto:greg@unrelenting.technology) +* [Guewen FAIVRE](mailto:guewen.faivre@elao.com) +* [Guillaume Lo Re](mailto:lowreg@gmail.com) +* [Gurgen Hayrapetyan](mailto:info.gurgen@gmail.com) +* [György Nádudvari](mailto:reedcourty@users.noreply.github.com) +* [HIKARU KOBORI](mailto:hk.uec.univ@gmail.com) +* [Haelwenn Monnier](mailto:lanodan@users.noreply.github.com) +* [Harmon](mailto:harmon758@gmail.com) +* [HellPie](mailto:hellpie@users.noreply.github.com) +* [Herbert Kagumba](mailto:habukagumba@gmail.com) +* [Hiroe Jun](mailto:jun.hiroe@gmail.com) +* [Hiromi Kai](mailto:pie05041008@gmail.com) * [Hisham Muhammad](mailto:hisham@gobolinux.org) * [Hugo "Slaynash" Flores](mailto:hugoflores@hotmail.fr) * [INAGAKI Hiroshi](mailto:musashino205@users.noreply.github.com) @@ -466,7 +478,6 @@ and provided thanks to the work of the following contributors: * [Ian McCowan](mailto:imccowan@gmail.com) * [Ian McDowell](mailto:me@ianmcdowell.net) * [Iijima Yasushi](mailto:kurage.cc@gmail.com) -* [Ikko Ashimine](mailto:eltociear@gmail.com) * [Ingo Blechschmidt](mailto:iblech@web.de) * [J Yeary](mailto:usbsnowcrash@users.noreply.github.com) * [Jack Michaud](mailto:jack-michaud@users.noreply.github.com) @@ -486,6 +497,7 @@ and provided thanks to the work of the following contributors: * [Jordan Guerder](mailto:jguerder@fr.pulseheberg.net) * [Joseph Mingrone](mailto:jehops@users.noreply.github.com) * [Josh Leeb-du Toit](mailto:mail@joshleeb.com) +* [Josh Soref](mailto:2119212+jsoref@users.noreply.github.com) * [Joshua Wood](mailto:josh@joshuawood.net) * [Julien](mailto:tiwy57@users.noreply.github.com) * [Julien Deswaef](mailto:juego@requiem4tv.com) @@ -502,6 +514,7 @@ and provided thanks to the work of the following contributors: * [Leo Wzukw](mailto:leowzukw@users.noreply.github.com) * [Leonie](mailto:62470640+bubblineyuri@users.noreply.github.com) * [Lex Alexander](mailto:l.alexander10@gmail.com) +* [LinAGKar](mailto:linus.kardell@gmail.com) * [Lorenz Diener](mailto:lorenzd@gmail.com) * [Luc Didry](mailto:ldidry@users.noreply.github.com) * [Lukas Burk](mailto:jemus42@users.noreply.github.com) @@ -534,6 +547,7 @@ and provided thanks to the work of the following contributors: * [Milton Mazzarri](mailto:milmazz@gmail.com) * [Minku Lee](mailto:premist@me.com) * [Minori Hiraoka](mailto:mnkai@users.noreply.github.com) +* [MitarashiDango](mailto:mitarashi_dango@mail.matcha-soft.com) * [Mitchell Hentges](mailto:mitch9654@gmail.com) * [Mostafa Ahangarha](mailto:ahangarha@users.noreply.github.com) * [Mouse Reeve](mailto:mousereeve@riseup.net) @@ -553,7 +567,6 @@ and provided thanks to the work of the following contributors: * [Norayr Chilingarian](mailto:norayr@arnet.am) * [Noëlle Anthony](mailto:noelle.d.anthony@gmail.com) * [N氏](mailto:uenok.htc@gmail.com) -* [OSAMU SATO](mailto:satosamu@gmail.com) * [Olivier Nicole](mailto:olivierthnicole@gmail.com) * [Oskari Noppa](mailto:noppa@users.noreply.github.com) * [Otakan](mailto:otakan951@gmail.com) @@ -566,6 +579,7 @@ and provided thanks to the work of the following contributors: * [Ratmir Karabut](mailto:rkarabut@sfmodern.ru) * [Reto Kromer](mailto:retokromer@users.noreply.github.com) * [Rob Watson](mailto:rfwatson@users.noreply.github.com) +* [Rohan Sharma](mailto:i.am.lone.survivor@protonmail.com) * [Ryan Freebern](mailto:ryan@freebern.org) * [Ryan Wade](mailto:ryan.wade@protonmail.com) * [Ryo Kajiwara](mailto:kfe-fecn6.prussian@s01.info) @@ -595,6 +609,8 @@ and provided thanks to the work of the following contributors: * [StefOfficiel](mailto:pichard.stephane@free.fr) * [Steven Tappert](mailto:admin@dark-it.net) * [Stéphane Guillou](mailto:stephane.guillou@member.fsf.org) +* [Su Yang](mailto:soulteary@users.noreply.github.com) +* [Sumak](mailto:44816995+kawsay@users.noreply.github.com) * [Svetlozar Todorov](mailto:svetlik@users.noreply.github.com) * [Sébastien Santoro](mailto:dereckson@espace-win.org) * [Tad Thorley](mailto:phaedryx@users.noreply.github.com) @@ -611,6 +627,7 @@ and provided thanks to the work of the following contributors: * [Tomonori Murakami](mailto:crosslife777@gmail.com) * [TomoyaShibata](mailto:wind.of.hometown@gmail.com) * [Treyssat-Vincent Nino](mailto:treyssatvincent@users.noreply.github.com) +* [Truong Nguyen](mailto:truongnmt.dev@gmail.com) * [Udo Kramer](mailto:optik@fluffel.io) * [Una](mailto:una@unascribed.com) * [Ushitora Anqou](mailto:ushitora@anqou.net) @@ -621,6 +638,7 @@ and provided thanks to the work of the following contributors: * [Wenceslao Páez Chávez](mailto:wcpaez@gmail.com) * [Wesley Ellis](mailto:tahnok@gmail.com) * [Wiktor](mailto:wiktor@metacode.biz) +* [Wonderfall](mailto:wonderfall@protonmail.com) * [Wonderfall](mailto:wonderfall@schrodinger.io) * [Y.Yamashiro](mailto:shukukei@mojizuri.jp) * [YDrogen](mailto:ydrogen45@gmail.com) @@ -634,11 +652,13 @@ and provided thanks to the work of the following contributors: * [Yeechan Lu](mailto:wz.bluesnow@gmail.com) * [Your Name](mailto:lorenzd@gmail.com) * [Yusuke Abe](mailto:moonset20@gmail.com) +* [Zach Neill](mailto:neillz@berea.edu) * [Zachary Spector](mailto:logicaldash@gmail.com) * [ZiiX](mailto:ziix@users.noreply.github.com) * [asria-jp](mailto:is@alicematic.com) * [ava](mailto:vladooku@users.noreply.github.com) * [benklop](mailto:benklop@gmail.com) +* [bobbyd0g](mailto:93697464+bobbyd0g@users.noreply.github.com) * [bsky](mailto:git@imbsky.net) * [caesarologia](mailto:lopesgemelli.1@gmail.com) * [cbayerlein](mailto:c.bayerlein@gmail.com) @@ -646,6 +666,7 @@ and provided thanks to the work of the following contributors: * [chrolis](mailto:chrolis@users.noreply.github.com) * [cormo](mailto:cormorant2+github@gmail.com) * [d0p1](mailto:dopi-sama@hush.com) +* [dogelover911](mailto:84288771+dogelover911@users.noreply.github.com) * [dxwc](mailto:dxwc@users.noreply.github.com) * [evilny0](mailto:evilny0@moomoocamp.net) * [febrezo](mailto:felixbrezo@gmail.com) @@ -656,6 +677,8 @@ and provided thanks to the work of the following contributors: * [guigeekz](mailto:pattusg@gmail.com) * [hakoai](mailto:hk--76@qa2.so-net.ne.jp) * [haosbvnker](mailto:github@chaosbunker.com) +* [heguro](mailto:65112898+heguro@users.noreply.github.com) +* [helloworldstack](mailto:66512512+helloworldstack@users.noreply.github.com) * [ichi_i](mailto:51489410+ichi-i@users.noreply.github.com) * [isati](mailto:phil@juchnowi.cz) * [jacob](mailto:jacobherringtondeveloper@gmail.com) @@ -671,7 +694,7 @@ and provided thanks to the work of the following contributors: * [kedama](mailto:32974885+kedamadq@users.noreply.github.com) * [kuro5hin](mailto:rusty@kuro5hin.org) * [leo60228](mailto:leo@60228.dev) -* [luzpaz](mailto:luzpaz@users.noreply.github.com) +* [matildepark](mailto:matilde.park@pm.me) * [maxypy](mailto:maxime@mpigou.fr) * [mhe](mailto:mail@marcus-herrmann.com) * [mike castleman](mailto:m@mlcastle.net) @@ -681,14 +704,15 @@ and provided thanks to the work of the following contributors: * [muan](mailto:muan@github.com) * [namelessGonbai](mailto:43787036+namelessgonbai@users.noreply.github.com) * [neetshin](mailto:neetshin@neetsh.in) -* [noiob](mailto:8197071+noiob@users.noreply.github.com) * [notozeki](mailto:notozeki@users.noreply.github.com) * [ntl-purism](mailto:57806346+ntl-purism@users.noreply.github.com) * [nzws](mailto:git-yuzu@svk.jp) +* [potpro](mailto:pptppctt@gmail.com) * [proxy](mailto:51172302+3n-k1@users.noreply.github.com) * [rch850](mailto:rich850@gmail.com) * [roikale](mailto:roikale@users.noreply.github.com) * [rysiekpl](mailto:rysiek@hackerspace.pl) +* [sasanquaneuf](mailto:sasanquaneuf@gmail.com) * [saturday06](mailto:dyob@lunaport.net) * [scd31](mailto:57571338+scd31@users.noreply.github.com) * [scriptjunkie](mailto:scriptjunkie@scriptjunkie.us) @@ -698,6 +722,7 @@ and provided thanks to the work of the following contributors: * [syui](mailto:syui@users.noreply.github.com) * [tackeyy](mailto:mailto.takita.yusuke@gmail.com) * [taicv](mailto:chuvantai@gmail.com) +* [tkr](mailto:account@kgtkr.net) * [tmyt](mailto:shigure@refy.net) * [trevDev()](mailto:trev@trevdev.ca) * [tsia](mailto:github@tsia.de) @@ -707,6 +732,7 @@ and provided thanks to the work of the following contributors: * [y-temp4](mailto:y.temp4@gmail.com) * [ymmtmdk](mailto:ymmtmdk@gmail.com) * [yoshipc](mailto:yoooo@yoshipc.net) +* [zunda](mailto:zundan@gmail.com) * [Özcan Zafer AYAN](mailto:ozcanzaferayan@gmail.com) * [ばん](mailto:detteiu0321@gmail.com) * [ふるふる](mailto:frfs@users.noreply.github.com) @@ -726,107 +752,126 @@ This document is provided for informational purposes only. Since it is only upda Following people have contributed to translation of Mastodon: - GunChleoc (*Scottish Gaelic*) -- ᛤᚤᛠᛥⴲ 👽 (KNTRO) (*Spanish, Argentina*) -- adrmzz (*Sardinian*) -- Hồ Nhất Duy (kantcer) (*Vietnamese*) -- Zoltán Gera (gerazo) (*Hungarian*) +- ケインツロ 👾 (KNTRO) (*Spanish, Argentina*) - Sveinn í Felli (sveinki) (*Icelandic*) -- qezwan (*Persian, Sorani (Kurdish)*) -- NCAA (*Danish*) -- Ramdziana F Y (rafeyu) (*Indonesian*) -- taicv (*Vietnamese*) -- ButterflyOfFire (BoFFire) (*French, Arabic, Kabyle*) +- Hồ Nhất Duy (honhatduy) (*Vietnamese*) +- Zoltán Gera (gerazo) (*Hungarian*) +- Kristaps_M (*Latvian*) +- NCAA (*French, Danish*) +- adrmzz (*Sardinian*) - Xosé M. (XoseM) (*Spanish, Galician*) -- Evert Prants (IcyDiamond) (*Estonian*) -- Besnik_b (*Albanian*) +- Ramdziana F Y (rafeyu) (*Indonesian*) +- Jeong Arm (Kjwon15) (*Spanish, Japanese, Korean, Esperanto*) - Emanuel Pina (emanuelpina) (*Portuguese*) -- Jeong Arm (Kjwon15) (*Japanese, Korean, Esperanto*) -- Alix Rossi (palindromordnilap) (*French, Esperanto, Corsican*) +- qezwan (*Persian, Sorani (Kurdish)*) +- Besnik_b (*Albanian*) +- ButterflyOfFire (BoFFire) (*French, Arabic, Kabyle*) - Thai Localization (thl10n) (*Thai*) +- Cyax (Cyaxares) (*Kurmanji (Kurdish)*) +- taicv (*Vietnamese*) - Daniele Lira Mereb (danilmereb) (*Portuguese, Brazilian*) -- Joene (joenepraat) (*Dutch*) -- Kristijan Tkalec (lapor) (*Slovenian*) -- stan ionut (stanionut12) (*Romanian*) - spla (*Spanish, Catalan*) -- мачко (ma4ko) (*Bulgarian*) -- 奈卜拉 (nebula_moe) (*Chinese Simplified*) -- kamee (*Armenian*) -- AJ-عجائب البرمجة (Esmail_Hazem) (*Arabic*) -- Michal Stanke (mstanke) (*Czech*) -- Danial Behzadi (danialbehzadi) (*Persian*) -- borys_sh (*Ukrainian*) -- Asier Iturralde Sarasola (aldatsa) (*Basque*) -- Imre Kristoffer Eilertsen (DandelionSprout) (*Norwegian*) +- Evert Prants (IcyDiamond) (*Estonian*) - koyu (*German*) +- Alix Rossi (palindromordnilap) (*French, Esperanto, Corsican*) +- Joene (joenepraat) (*Dutch*) +- stan ionut (stanionut12) (*Romanian*) +- Mastodon 中文译者 (mastodon-linguist) (*Chinese Simplified*) +- Kristijan Tkalec (lapor) (*Slovenian*) +- Danial Behzadi (danialbehzadi) (*Persian*) +- Asier Iturralde Sarasola (aldatsa) (*Basque*) +- ManeraKai (*Arabic*) +- мачко (ma4ko) (*Bulgarian*) +- Roboron (*Spanish*) +- Alessandro Levati (Oct326) (*Italian*) +- xatier (*Chinese Traditional, Chinese Traditional, Hong Kong*) +- Ondřej Pokorný (unextro) (*Czech*) +- Alexander Sorokin (Brawaru) (*French, Catalan, Danish, German, Greek, Hungarian, Armenian, Korean, Portuguese, Russian, Albanian, Swedish, Ukrainian, Vietnamese, Galician*) +- kamee (*Armenian*) +- Michal Stanke (mstanke) (*Czech*) +- borys_sh (*Ukrainian*) +- Imre Kristoffer Eilertsen (DandelionSprout) (*Norwegian*) - yeft (*Chinese Traditional, Chinese Traditional, Hong Kong*) - Miguel Mayol (mitcoes) (*Spanish, Catalan*) -- Sasha Sorokin (Brawaru) (*French, Catalan, Danish, German, Greek, Hungarian, Armenian, Korean, Russian, Albanian, Swedish, Ukrainian, Vietnamese, Galician*) -- Roboron (*Spanish*) +- Marek Ľach (mareklach) (*Polish, Slovak*) +- Manuel Viens (manuelviens) (*French*) +- Kimmo Kujansuu (mrkujansuu) (*Finnish*) - Koala Yeung (yookoala) (*Chinese Traditional, Hong Kong*) -- Ondřej Pokorný (unextro) (*Czech*) +- enolp (*Asturian*) - Osoitz (*Basque*) - Peterandre (*Norwegian, Norwegian Nynorsk*) - tzium (*Sardinian*) -- Mélanie Chauvel (ariasuni) (*French, Arabic, Czech, German, Greek, Hungarian, Slovenian, Ukrainian, Chinese Simplified, Portuguese, Brazilian, Persian, Norwegian Nynorsk, Esperanto, Breton, Corsican, Sardinian, Kabyle*) -- Iváns (Ivans_translator) (*Galician*) - Maya Minatsuki (mayaeh) (*Japanese*) -- Manuel Viens (manuelviens) (*French*) -- Alessandro Levati (Oct326) (*Italian*) +- Mélanie Chauvel (ariasuni) (*French, Arabic, Czech, German, Greek, Hungarian, Slovenian, Ukrainian, Chinese Simplified, Portuguese, Brazilian, Persian, Norwegian Nynorsk, Esperanto, Breton, Corsican, Sardinian, Kabyle*) +- T. E. Kalaycı (tekrei) (*Turkish*) +- Takeçi (polygoat) (*French, Italian*) +- Galician Translator (Galician_translator) (*Galician*) - lamnatos (*Greek*) - Sean Young (assanges) (*Chinese Traditional*) - tolstoevsky (*Russian*) -- enolp (*Asturian*) +- Ihor Hordiichuk (ihor_ck) (*Ukrainian*) +- Ali Demirtaş (alidemirtas) (*Turkish*) - Jasmine Cam Andrever (gourmas) (*Cornish*) +- coxde (*Chinese Simplified*) - gagik_ (*Armenian*) - Masoud Abkenar (mabkenar) (*Persian*) - arshat (*Kazakh*) - Marcin Mikołajczak (mkljczkk) (*Czech, Polish, Russian*) -- Marek Ľach (mareklach) (*Polish, Slovak*) -- Ali Demirtaş (alidemirtas) (*Turkish*) +- Jeff Huang (s8321414) (*Chinese Traditional*) - Blak Ouille (BlakOuille16) (*French*) +- e (diveedd) (*Kurmanji (Kurdish)*) - Em St Cenydd (cancennau) (*Welsh*) - Diluns (*Occitan*) -- Muha Aliss (muhaaliss) (*Turkish*) +- Nurul Azeera Hidayah @ Muhammad Nur Hidayat Yasuyoshi (MNH48.moe) (mnh48) (*Malay*) +- Tagomago (tagomago) (*French, Spanish*) - Jurica (ahjk) (*Croatian*) - Aditoo17 (*Czech*) +- Tigran (tigransimonyan) (*Armenian*) - vishnuvaratharajan (*Tamil*) - pulmonarycosignerkindness (*Swedish*) +- calypsoopenmail (*French*) - cybergene (cyber-gene) (*Japanese*) -- Takeçi (polygoat) (*French, Italian*) -- xatier (*Chinese Traditional*) -- Ihor Hordiichuk (ihor_ck) (*Ukrainian*) +- Bran_Ruz (*Breton*) +- Gearguy (*Finnish*) +- GiorgioHerbie (*Italian*) +- Balázs Meskó (mesko.balazs) (*Czech, Hungarian*) +- Martin (miles) (*Slovenian*) - regulartranslator (*Portuguese, Brazilian*) +- Saederup92 (*Danish*) - ozzii (*French, Serbian (Cyrillic)*) - Irfan (Irfan_Radz) (*Malay*) -- Saederup92 (*Danish*) -- Akarshan Biswas (biswasab) (*Bengali, Sanskrit*) - Yi-Jyun Pan (pan93412) (*Chinese Traditional*) +- ClearlyClaire (*French, Icelandic*) +- Akarshan Biswas (biswasab) (*Bengali, Sanskrit*) +- Kristoffer Grundström (Umeaboy) (*Swedish*) - Rafael H L Moretti (Moretti) (*Portuguese, Brazilian*) - d5Ziif3K (*Ukrainian*) -- GiorgioHerbie (*Italian*) +- හෙළබස (HelaBasa) (*Sinhala*) +- xpil (*Polish*) +- Rojdayek (*Kurmanji (Kurdish)*) - christalleras (*Norwegian Nynorsk*) +- Allen Zhong (AstroProfundis) (*Chinese Simplified*) - Taloran (*Norwegian Nynorsk*) -- ThibG (*French, Icelandic*) +- Sokratis Alichanidis (alichani) (*Greek*) +- Catalina (catalina.st) (*Romanian*) - otrapersona (*Spanish, Spanish, Mexico*) -- Store (HelaBasa) (*Sinhala*) +- Ryo (DrRyo) (*Korean*) - Mauzi (*German, Swedish*) - atarashiako (*Chinese Simplified*) -- 101010 (101010pl) (*Polish*) - erictapen (*German*) -- Tagomago (tagomago) (*French, Spanish*) +- 101010 (101010pl) (*Polish*) - Jaz-Michael King (jazmichaelking) (*Welsh*) -- coxde (*Chinese Simplified*) -- T. E. Kalaycı (tekrei) (*Turkish*) +- axi (*Finnish*) - silkevicious (*Italian*) - Floxu (fredrikdim1) (*Norwegian Nynorsk*) -- Ryo (DrRyo) (*Korean*) +- NadieAishi (*Spanish, Spanish, Mexico*) - Bertil Hedkvist (Berrahed) (*Swedish*) - William(ѕ)ⁿ (wmlgr) (*Spanish*) +- Eshagh (eshagh79) (*Persian*) +- LNDDYL (*Chinese Traditional*) - norayr (*Armenian*) - Satnam S Virdi (pika10singh) (*Punjabi*) - Tiago Epifânio (tfve) (*Portuguese*) -- Balázs Meskó (mesko.balazs) (*Hungarian*) -- Sokratis Alichanidis (alichani) (*Greek*) - Mentor Gashi (mentorgashi.com) (*Albanian*) - carolinagiorno (*Portuguese, Brazilian*) - Hayk Khachatryan (brutusromanus123) (*Armenian*) @@ -834,394 +879,472 @@ Following people have contributed to translation of Mastodon: - Bharat Kumar (Marwari) (*Hindi*) - Austra Muizniece (aus_m) (*Latvian*) - ThonyVezbe (*Breton*) +- Just Spanish (7_7) (*Spanish, Mexico*) - v4vachan (*Malayalam*) +- bilfri (*Danish*) - dkdarshan760 (*Sanskrit*) -- tykayn (*French*) -- axi (*Finnish*) -- Selyan Slimane AMIRI (SelyanKab) (*Kabyle*) - Timur Seber (seber) (*Tatar*) +- Slimane Selyan AMIRI (SelyanKab) (*Kabyle*) +- VaiTon (*Italian*) +- Vik (ViktorOn) (*Danish, Russian*) +- tykayn (*French*) +- GCardo (*Portuguese, Brazilian*) - taoxvx (*Danish*) - Hrach Mkrtchyan (mhrach87) (*Armenian*) - sabri (thetomatoisavegetable) (*Spanish, Spanish, Argentina*) - Dewi (Unkorneg) (*French, Breton*) - CoelacanthusHex (*Chinese Simplified*) -- syncopams (*Chinese Simplified, Chinese Traditional, Chinese Traditional, Hong Kong*) - Rhys Harrison (rhedders) (*Esperanto*) -- Hakim Oubouali (zenata1) (*Standard Moroccan Tamazight*) +- syncopams (*Chinese Simplified, Chinese Traditional, Chinese Traditional, Hong Kong*) - SteinarK (*Norwegian Nynorsk*) +- Maxine B. Vågnes (vagnes) (*Norwegian, Norwegian Nynorsk*) +- Hakim Oubouali (zenata1) (*Standard Moroccan Tamazight*) +- ahangarha (*Persian*) - Lalo Tafolla (lalotafo) (*Spanish, Spanish, Mexico*) -- Mathias B. Vagnes (vagnes) (*Norwegian*) - dashersyed (*Urdu (Pakistan)*) -- Acolyte (666noob404) (*Ukrainian*) - Conight Wang (xfddwhh) (*Chinese Simplified*) - liffon (*Swedish*) - Damjan Dimitrioski (gnud) (*Macedonian*) +- Rikard Linde (rikardlinde) (*Swedish*) +- rondnunes (*Portuguese, Brazilian*) +- strubbl (*German*) - PPNplus (*Thai*) +- Frontier Translation Ltd. (frontier-translation) (*Chinese Simplified*) - shioko (*Chinese Simplified*) +- Kahina Mess (K_hina) (*Kabyle*) - ZiriSut (*Kabyle*) -- Evgeny Petrov (kondra007) (*Russian*) +- Groosha (groosha) (*Russian*) +- Hexandcube (hexandcube) (*Polish*) - Gwenn (Belvar) (*Breton*) +- 游荡 (MamaShip) (*Chinese Simplified*) - StanleyFrew (*French*) +- mynameismonkey (*Welsh*) +- Edward Navarro (EdwardNavarro) (*Spanish*) - Nikita Epifanov (Nikets) (*Russian*) - jaranta (*Finnish*) - Slobodan Simić (Слободан Симић) (slsimic) (*Serbian (Cyrillic)*) +- retiolus (*Catalan*) +- iVampireSP (*Chinese Simplified, Chinese Traditional*) - Felicia Jongleur (midsommar) (*Swedish*) - Denys (dector) (*Ukrainian*) -- iVampireSP (*Chinese Simplified, Chinese Traditional*) -- Pukima (pukimaaa) (*German*) -- 游荡 (MamaShip) (*Chinese Simplified*) +- Mo_der Steven (SakuraPuare) (*Chinese Simplified*) - Vanege (*Esperanto*) -- Rikard Linde (rikardlinde) (*Swedish*) - Jess Rafn (therealyez) (*Danish*) -- strubbl (*German*) - Stasiek Michalski (hellcp) (*Polish*) - dxwc (*Bengali*) -- jmontane (*Catalan*) +- Filbert Salim (gamesbert6) (*Indonesian*) - Liboide (*Spanish*) -- Hexandcube (hexandcube) (*Polish*) +- jmontane (*Catalan*) - Chris Kay (chriskarasoulis) (*Greek*) - Johan Schiff (schyffel) (*Swedish*) +- Rex_sa (rex07) (*Arabic*) - Arunmozhi (tecoholic) (*Tamil*) - zer0-x (ZER0-X) (*Arabic*) - kat (katktv) (*Russian, Ukrainian*) - Lauren Liberda (selfisekai) (*Polish*) -- mynameismonkey (*Welsh*) - oti4500 (*Hungarian, Ukrainian*) +- Delta (Delta-Time) (*Japanese*) +- Michael Zeevi (maze88) (*Hebrew*) +- SarfarazAhmed (*Urdu (Pakistan)*) - Mats Gunnar Ahlqvist (goqbi) (*Swedish*) - diazepan (*Spanish, Spanish, Argentina*) - marzuquccen (*Kabyle*) +- atriix (*Swedish*) - VictorCorreia (victorcorreia1984) (*Afrikaans*) -- Tigran (tigransimonyan) (*Armenian*) +- Remito (remitocat) (*Japanese*) +- AlexKoala (alexkoala) (*Korean*) - Juan José Salvador Piedra (JuanjoSalvador) (*Spanish*) - BurekzFinezt (*Serbian (Cyrillic)*) +- 森の子リスのミーコの大冒険 (Phroneris) (*Japanese*) +- asnomgtu (*Hungarian*) - SHeija (*Finnish*) -- Gearguy (*Finnish*) -- atriix (*Swedish*) +- Врабац (Slovorad) (*Serbian (Cyrillic)*) +- Dženan (Dzenan) (*Swedish*) - Jack R (isaac.97_WT) (*Spanish*) - antonyho (*Chinese Traditional, Hong Kong*) -- asnomgtu (*Hungarian*) -- ahangarha (*Persian*) +- FreddyG (*Esperanto*) - andruhov (*Russian, Ukrainian*) - phena109 (*Chinese Traditional, Hong Kong*) - Aryamik Sharma (Aryamik) (*Swedish, Hindi*) - Unmual (*Spanish*) -- 森の子リスのミーコの大冒険 (Phroneris) (*Japanese*) +- Adrián Graña (alaris83) (*Spanish*) +- cruz2020 (*Portuguese*) +- vpei (*Chinese Simplified*) - るいーね (ruine) (*Japanese*) - Sam Tux (imahbub) (*Bengali*) -- Kristoffer Grundström (Umeaboy) (*Swedish*) - igordrozniak (*Polish*) +- Michał Sidor (michcioperz) (*Polish*) - Isaac Huang (caasih) (*Chinese Traditional*) - AW Unad (awcodify) (*Indonesian*) -- Allen Zhong (AstroProfundis) (*Chinese Simplified*) +- 1Alino (*Slovak*) - Cutls (cutls) (*Japanese*) -- Falling Snowdin (tghgg) (*Vietnamese*) -- Ray (Ipsumry) (*Spanish*) -- Gianfranco Fronteddu (gianfro.gianfro) (*Sardinian*) -- Rasmus Lindroth (RasmusLindroth) (*Swedish*) -- Andrea Lo Iacono (niels0n) (*Italian*) +- Goudarz Jafari (Goudarz) (*Persian*) - Parodper (*Galician*) +- 1 (Ipsumry) (*Spanish*) +- Falling Snowdin (tghgg) (*Vietnamese*) +- Rasmus Lindroth (RasmusLindroth) (*Swedish*) +- Gianfranco Fronteddu (gianfro.gianfro) (*Sardinian*) +- Andrea Lo Iacono (niels0n) (*Italian*) - fucsia (*Italian*) -- NadieAishi (*Spanish, Spanish, Mexico*) +- Vedran Serbu (SerenoXGen) (*Croatian*) - Kinshuk Sunil (kinshuksunil) (*Hindi*) - Ullas Joseph (ullasjoseph) (*Malayalam*) -- Goudarz Jafari (Goudarz) (*Persian*) +- al_._ (*German, Russian*) +- Matthías Páll Gissurarson (icetritlo) (*Icelandic*) +- Percy (kecrily) (*Chinese Simplified*) - Yu-Pai Liu (tedliou) (*Chinese Traditional*) +- KcKcZi (*Chinese Simplified*) - Amarin Cemthong (acitmaster) (*Thai*) - Johannes Nilsson (nlssn) (*Swedish*) - juanda097 (juanda-097) (*Spanish*) +- xsml (*Chinese Simplified*) - Anunnakey (*Macedonian*) - erikkemp (*Dutch*) - erikstl (*Esperanto*) -- bobchao (*Chinese Traditional*) - twpenguin (*Chinese Traditional*) -- MadeInSteak (*Finnish*) +- Po-chiang Chao (bobchao) (*Chinese Traditional*) +- Marcus Myge (mygg-priv) (*Norwegian*) - Esther (esthermations) (*Portuguese*) +- MadeInSteak (*Finnish*) - t_aus_m (*German*) +- serapolis (*Japanese, Chinese Simplified, Chinese Traditional, Chinese Traditional, Hong Kong*) - Heimen Stoffels (Vistaus) (*Dutch*) - Rajarshi Guha (rajarshiguha) (*Bengali*) -- Mo_der Steven (SakuraPuare) (*Chinese Simplified*) - Gopal Sharma (gopalvirat) (*Hindi*) -- arethsu (*Swedish*) -- Carlos Solís (csolisr) (*Esperanto*) +- Linnéa (lesbian_subnet) (*Swedish*) +- 北䑓如法 (Nyoho) (*Japanese*) +- abidin toumi (Zet24) (*Arabic*) - Tofiq Abdula (Xwla) (*Sorani (Kurdish)*) +- Carlos Solís (csolisr) (*Esperanto*) +- Yamagishi Kazutoshi (ykzts) (*Japanese, Vietnamese, Icelandic, Sorani (Kurdish)*) - Parthan S Ramanujam (parthan) (*Tamil*) - Kasper Nymand (KasperNymand) (*Danish*) -- Jeff Huang (s8321414) (*Chinese Traditional*) -- TS (morte) (*Finnish*) - subram (*Turkish*) +- TS (morte) (*Finnish*) - SensDeViata (*Ukrainian*) - Ptrcmd (ptrcmd) (*Chinese Traditional*) +- megaleo (*Portuguese, Brazilian*) - SergioFMiranda (*Portuguese, Brazilian*) -- Percy (scvoet) (*Chinese Simplified*) -- Vivek K J (Vivekkj) (*Malayalam*) - hiroTS (*Chinese Traditional*) +- Vivek K J (Vivekkj) (*Malayalam*) +- arielcostas3 (*Galician*) - johne32rus23 (*Russian*) - AzureNya (*Chinese Simplified*) - OctolinGamer (octolingamer) (*Portuguese, Brazilian*) +- filippodb (*Italian*) - Ram varma (ram4varma) (*Tamil*) -- 北䑓如法 (Nyoho) (*Japanese*) +- sanser (*Russian*) +- Y.Yamashiro (uist1idrju3i) (*Japanese*) - Pukima (Pukimaa) (*German*) - diorama (*Italian*) -- Daniel Dimitrov (daniel.dimitrov) (*Bulgarian*) - frumble (*German*) +- Daniel Dimitrov (daniel.dimitrov) (*Bulgarian*) - kekkepikkuni (*Tamil*) +- MODcraft (*Chinese Simplified*) - oorsutri (*Tamil*) - Neo_Chen (NeoChen1024) (*Chinese Traditional*) - Nithin V (Nithin896) (*Tamil*) -- Marcus Myge (mygg-priv) (*Norwegian*) - Miro Rauhala (mirorauhala) (*Finnish*) -- AlexKoala (alexkoala) (*Korean*) +- Oymate (*Bengali*) - ಚಿರಾಗ್ ನಟರಾಜ್ (chiraag-nataraj) (*Kannada*) -- Aswin C (officialcjunior) (*Malayalam*) - Guillaume Turchini (orion78fr) (*French*) +- Aswin C (officialcjunior) (*Malayalam*) - Ganesh D (auntgd) (*Marathi*) +- Yuval Nehemia (yuvalne) (*Hebrew*) - mawoka-myblock (mawoka) (*German*) - dragnucs2 (*Arabic*) - Ryan Ho (koungho) (*Chinese Traditional*) -- Pedro Henrique (exploronauta) (*Portuguese, Brazilian*) - Tejas Harad (h_tejas) (*Marathi*) +- Pedro Henrique (exploronauta) (*Portuguese, Brazilian*) +- Amir Reza (ElAmir) (*Persian*) +- Tatsuto "Laminne" Yamamoto (laminne) (*Japanese*) - Vasanthan (vasanthan) (*Tamil*) - 硫酸鶏 (acid_chicken) (*Japanese*) -- clarmin b8 (clarminb8) (*Sorani (Kurdish)*) - programizer (*German*) +- clarmin b8 (clarminb8) (*Sorani (Kurdish)*) - manukp (*Malayalam*) -- earth dweller (sanethoughtyt) (*Marathi*) - psymyn (*Hebrew*) +- earth dweller (sanethoughtyt) (*Marathi*) +- Marek Ľach (marek-lach) (*Slovak*) - meijerivoi (toilet) (*Finnish*) - essaar (*Tamil*) +- Nemuj (Dentrado) (*Japanese, Esperanto*) - serubeena (*Swedish*) - Rintan (*Japanese*) - Karol Kosek (krkkPL) (*Polish*) -- Khó͘ Tiat-lêng (khotiatleng) (*Chinese Traditional, Taigi*) -- Hernik (hernik27) (*Czech*) +- Khó͘ Tiatlêng (khotiatleng) (*Chinese Traditional, Taigi*) - valarivan (*Tamil*) -- kuchengrab (*German*) +- Hernik (hernik27) (*Czech*) +- revarioba (*Spanish*) - friedbeans (*Croatian*) +- kuchengrab (*German*) - Abi Turi (abi123) (*Georgian*) - Hinaloe (hinaloe) (*Japanese*) - Sebastián Andil (Selrond) (*Slovak*) -- KEINOS (*Japanese*) -- filippodb (*Italian*) +- Ifnuth (*German*) - Asbjørn Olling (a2) (*Danish*) +- KEINOS (*Japanese*) - Balázs Meskó (meskobalazs) (*Hungarian*) +- Artem Mikhalitsin (artemmikhalitsin) (*Russian*) +- Algustionesa Yoshi (algustionesa) (*Indonesian*) - Bottle (suryasalem2010) (*Tamil*) - Wrya ali (John12) (*Sorani (Kurdish)*) - JzshAC (*Chinese Simplified*) +- siamano (*Thai, Esperanto*) +- gnu-ewm (*Polish*) - Antillion (antillion99) (*Spanish*) - Steven Tappert (sammy8806) (*German*) - Reg3xp (*Persian*) - Wassim EL BOUHAMIDI (elbouhamidiw) (*Arabic*) +- Maciej Błędkowski (mble) (*Polish*) - gowthamanb (*Tamil*) - hiphipvargas (*Portuguese*) -- Ch. (sftblw) (*Korean*) +- tunisiano187 (*French*) - Arttu Ylhävuori (arttu.ylhavuori) (*Finnish*) -- tctovsli (*Norwegian Nynorsk*) -- Timo Tijhof (Krinkle) (*Dutch*) +- Ch. (sftblw) (*Korean*) +- eorn (*Breton*) +- Jona (88wcJoWl) (*Spanish*) - Mikkel B. Goldschmidt (mikkelbjoern) (*Danish*) +- Timo Tijhof (Krinkle) (*Dutch*) +- Ka2n (kaanmetu) (*Turkish*) +- tctovsli (*Norwegian Nynorsk*) - mecqor labi (mecqorlabi) (*Persian*) - Odyssey346 (alexader612) (*Norwegian*) -- Yamagishi Kazutoshi (ykzts) (*Japanese, Icelandic, Sorani (Kurdish)*) -- Eban (ebanDev) (*French, Esperanto*) - vjasiegd (*Polish*) +- Eban (ebanDev) (*French, Esperanto*) - SamitiMed (samiti3d) (*Thai*) - Nícolas Lavinicki (nclavinicki) (*Portuguese, Brazilian*) -- snatcher (*Portuguese, Brazilian*) - Rekan Adl (rekan-adl1) (*Sorani (Kurdish)*) +- Antara2Cinta (Se7enTime) (*Indonesian*) +- Yassine Aït-El-Mouden (yaitelmouden) (*Standard Moroccan Tamazight*) - VSx86 (*Russian*) - umelard (*Hebrew*) -- Antara2Cinta (Se7enTime) (*Indonesian*) - parnikkapore (*Thai*) +- Lagash (lagash) (*Esperanto*) - Sherwan Othman (sherwanothman11) (*Sorani (Kurdish)*) -- Yassine Aït-El-Mouden (yaitelmouden) (*Standard Moroccan Tamazight*) - SKELET (*Danish*) +- Exbu (*Dutch*) +- Chine Sebastien (chine.sebastien) (*French*) - Fei Yang (Fei1Yang) (*Chinese Traditional*) +- A A (sebastien.chine) (*French*) - Ğani (freegnu) (*Tatar*) -- Renato "Lond" Cerqueira (renatolond) (*Portuguese, Brazilian*) - enipra (*Armenian*) -- ALEM FARID (faridatcemlulaqbayli) (*Kabyle*) +- Renato "Lond" Cerqueira (renatolond) (*Portuguese, Brazilian*) - musix (*Persian*) - ギャラ (gyara) (*Japanese, Chinese Simplified*) +- ALEM FARID (faridatcemlulaqbayli) (*Kabyle*) - Hougo (hougo) (*French*) -- ybardapurkar (*Marathi*) -- 亜緯丹穂 (ayiniho) (*Japanese*) -- Adrián Lattes (haztecaso) (*Spanish*) - Mordi Sacks (MordiSacks) (*Hebrew*) - Trinsec (*Dutch*) +- Adrián Lattes (haztecaso) (*Spanish*) - Tigran's Tips (tigrank08) (*Armenian*) -- TracyJacks (*Chinese Simplified*) +- 亜緯丹穂 (ayiniho) (*Japanese*) +- ybardapurkar (*Marathi*) - Szabolcs Gál (galszabolcs810624) (*Hungarian*) - Vladislav Săcrieriu (vladislavs14) (*Romanian*) -- danreznik (*Hebrew*) +- TracyJacks (*Chinese Simplified*) - rasheedgm (*Kannada*) -- omquylzu (*Latvian*) -- c6ristian (*German*) -- Belkacem Mohammed (belkacem77) (*Kabyle*) +- danreznik (*Hebrew*) +- Cirelli (cirelli94) (*Italian*) +- Siddharastro Doraku (sidharastro) (*Spanish, Mexico*) - lexxai (*Ukrainian*) +- omquylzu (*Latvian*) - Navjot Singh (nspeaks) (*Hindi*) +- mkljczk (*Polish*) +- Belkacem Mohammed (belkacem77) (*Kabyle*) +- c6ristian (*German*) +- damascene (*Arabic*) - Ozai (*German*) - Sahak Petrosyan (petrosyan) (*Armenian*) -- Oymate (*Bengali*) - Viorel-Cătălin Răpițeanu (rapiteanu) (*Romanian*) -- siamano (*Thai, Esperanto*) - Siddhartha Sarathi Basu (quinoa_biryani) (*Bengali*) - Pachara Chantawong (pachara2202) (*Thai*) -- Zijian Zhao (jobs2512821228) (*Chinese Simplified*) - Skew (noan.perrot) (*French*) -- mkljczk (*Polish*) +- Zijian Zhao (jobs2512821228) (*Chinese Simplified*) +- Overflow Cat (OverflowCat) (*Chinese Simplified, Chinese Traditional*) +- dbeaver (*German*) +- zordsdavini (*Lithuanian*) - Guru Prasath Anandapadmanaban (guruprasath) (*Tamil*) - turtle836 (*German*) - Marcepanek_ (thekingmarcepan) (*Polish*) -- Lamin (laminne) (*Japanese*) -- Yann Aguettaz (yann-a) (*French*) - Feruz Oripov (FeruzOripov) (*Russian*) -- serapolis (*Chinese Simplified, Chinese Traditional*) +- Yann Aguettaz (yann-a) (*French*) - Mick Onio (xgc.redes) (*Asturian*) - Malik Mann (dermalikmann) (*German*) +- padulafacundo (*Spanish*) - dadosch (*German*) -- r3dsp1 (*Chinese Traditional, Hong Kong*) - hg6 (*Hindi*) - Tianqi Zhang (tina.zhang040609) (*Chinese Simplified*) -- padulafacundo (*Spanish*) +- r3dsp1 (*Chinese Traditional, Hong Kong*) - johannes hove-henriksen (J0hsHH) (*Norwegian*) - Orlando Murcio (Atos20) (*Spanish, Mexico*) -- Padraic Calpin (padraic-padraic) (*Slovenian*) - cenegd (*Chinese Simplified*) -- piupiupiudiu (*Chinese Simplified*) +- Youngeon Lee (YoungeonLee) (*Korean*) - shdy (*German*) +- Umi (mtrumi) (*Chinese Simplified, Chinese Traditional, Hong Kong*) +- Padraic Calpin (padraic-padraic) (*Slovenian*) - Ильзира Рахматуллина (rahmatullinailzira53) (*Tatar*) -- Hugh Liu (youloveonlymeh) (*Chinese Simplified*) +- piupiupiudiu (*Chinese Simplified*) - Pixelcode (realpixelcode) (*German*) +- Dennis Reimund (reimunddennis7) (*German*) - Yogesh K S (yogi) (*Kannada*) - Adithya K (adithyak04) (*Malayalam*) -- Dennis Reimund (reimunddennis7) (*German*) +- DAI JIE (daijie) (*Chinese Simplified*) +- Hugh Liu (youloveonlymeh) (*Chinese Simplified*) - Rakino (rakino) (*Chinese Simplified*) -- Michał Sidor (michcioperz) (*Polish*) -- AmazighNM (*Kabyle*) -- Miquel Sabaté Solà (mssola) (*Catalan*) +- ZQYD (*Chinese Simplified*) +- X.M (kimonoki) (*Chinese Simplified*) +- boni777 (*Chinese Simplified*) - Jothipazhani Nagarajan (jothipazhani.n) (*Tamil*) -- hallomaurits (*Dutch*) +- Miquel Sabaté Solà (mssola) (*Catalan*) +- Stanisław Jelnicki (JelNiSlaw) (*Polish*) +- AmazighNM (*Kabyle*) - alnd hezh (alndhezh) (*Sorani (Kurdish)*) +- CloudSet (*Chinese Simplified*) - Clash Clans (KURD12345) (*Sorani (Kurdish)*) -- Solid Rhino (SolidRhino) (*Dutch*) - Metehan Özyürek (MetehanOzyurek) (*Turkish*) +- Paula SIMON (EncoreEutIlFalluQueJeLeSusse) (*French*) +- Solid Rhino (SolidRhino) (*Dutch*) +- nua_kr (*Korean*) +- hallomaurits (*Dutch*) - 林水溶 (shuiRong) (*Chinese Simplified*) -- Sébastien Feugère (smonff) (*French*) -- Y.Yamashiro (uist1idrju3i) (*Japanese*) +- rikrise (*Swedish*) - Takeshi Umeda (noellabo) (*Japanese*) - k_taka (peaceroad) (*Japanese*) -- hussama (*Portuguese, Brazilian*) +- Sébastien Feugère (smonff) (*French*) - Hallo Abdullah (hallo_hamza12) (*Sorani (Kurdish)*) -- Ashok314 (ashok314) (*Hindi*) -- PifyZ (*French*) -- OminousCry (*Russian*) +- hussama (*Portuguese, Brazilian*) +- EzigboOmenana (*Cornish*) - Robert Yano (throwcalmbobaway) (*Spanish, Mexico*) -- Tom_ (*Czech*) -- Tagada (Tagadda) (*French*) -- shafouz (*Portuguese, Brazilian*) - Yasin İsa YILDIRIM (redsfyre) (*Turkish*) +- PifyZ (*French*) +- Tagada (Tagadda) (*French*) - eichkat3r (*German*) +- Ashok314 (ashok314) (*Hindi*) +- Zlr- (cZeler) (*French*) - SnDer (*Dutch*) -- Kahina Mess (K_hina) (*Kabyle*) -- Swati Sani (swatisani) (*Urdu (Pakistan)*) -- Kk (kishorkumara3) (*Kannada*) -- Daniel M. (daniconil) (*Catalan*) +- OminousCry (*Russian*) +- Adam Sapiński (Adamos9898) (*Polish*) +- Tom_ (*Czech*) +- shafouz (*Portuguese, Brazilian*) - Shrinivasan T (tshrinivasan) (*Tamil*) -- 夜楓Yoka (Yoka2627) (*Chinese Simplified*) -- Nathaël Noguès (NatNgs) (*French*) +- Kk (kishorkumara3) (*Kannada*) +- Swati Sani (swatisani) (*Urdu (Pakistan)*) +- papayaisnotafood (*Chinese Traditional*) - さっかりんにーさん (saccharin23) (*Japanese*) -- Rex_sa (rex07) (*Arabic*) +- Daniel M. (daniconil) (*Catalan*) +- César Daniel Cavanzo Quintero (LeinadCQ) (*Esperanto*) +- Nathaël Noguès (NatNgs) (*French*) +- 夜楓Yoka (Yoka2627) (*Chinese Simplified*) +- Mt Front (mtfront) (*Chinese Simplified*) +- Artem (Artem4ik) (*Russian*) - Robin van der Vliet (RobinvanderVliet) (*Esperanto*) -- Vikatakavi (*Kannada*) - Tradjincal (tradjincal) (*French*) -- pullopen (*Chinese Simplified*) - SusVersiva (*Catalan*) -- Marvin (magicmarvman) (*German*) - Zinkokooo (*Basque*) -- Livingston Samuel (livingston) (*Tamil*) -- CyberAmoeba (pseudoobscura) (*Chinese Simplified*) -- tsundoker (*Malayalam*) -- eorn (*Breton*) -- prabhjot (*Hindi*) -- mmokhi (*Persian*) +- Marvin (magicmarvman) (*German*) +- Vikatakavi (*Kannada*) +- pullopen (*Chinese Simplified*) - sergioaraujo1 (*Portuguese, Brazilian*) +- prabhjot (*Hindi*) +- CyberAmoeba (pseudoobscura) (*Chinese Simplified*) +- mmokhi (*Persian*) - Entelekheia-ousia (*Chinese Simplified*) -- Pierre Morvan (Iriep) (*Breton*) -- oscfd (*Spanish*) +- Livingston Samuel (livingston) (*Tamil*) +- tsundoker (*Malayalam*) - skaaarrr (*German*) -- mkljczk (mykylyjczyk) (*Polish*) -- fedot (*Russian*) +- Pierre Morvan (Iriep) (*Breton*) - Paz Galindo (paz.almendra.g) (*Spanish*) +- fedot (*Russian*) +- mkljczk (mykylyjczyk) (*Polish*) - Ricardo Colin (rysard) (*Spanish*) - Philipp Fischbeck (PFischbeck) (*German*) +- oscfd (*Spanish*) - Zoé Bőle (zoe1337) (*German*) -- EzigboOmenana (*Cornish*) - GaggiX (*Italian*) -- Lukas Fülling (lfuelling) (*German*) - JackXu (Merman-Jack) (*Chinese Simplified*) +- Lukas Fülling (lfuelling) (*German*) - ralozkolya (*Georgian*) -- Apple (blackteaovo) (*Chinese Simplified*) -- asala4544 (*Basque*) -- Xurxo Guerra (xguerrap) (*Galician*) -- qwerty287 (*German*) -- Anoop (anoopp) (*Malayalam*) -- pezcurrel (*Italian*) -- Samir Tighzert (samir_t7) (*Kabyle*) +- Jason Gibson (barberpike606) (*Slovenian, Chinese Simplified*) - Dremski (*Bulgarian*) -- Dennis Reimund (reimund_dennis) (*German*) -- ru_mactunnag (*Scottish Gaelic*) -- Nocta (*French*) +- Kaede (kaedech) (*Japanese*) - Aymeric (AymBroussier) (*French*) - mashirozx (*Chinese Simplified*) +- María José Vera (mjverap) (*Spanish*) +- asala4544 (*Basque*) +- ronee (*Kurmanji (Kurdish)*) +- qwerty287 (*German*) +- pezcurrel (*Italian*) +- Anoop (anoopp) (*Malayalam*) +- Apple (blackteaovo) (*Chinese Simplified*) +- Lilian Nabati (Lilounab49) (*French*) +- ru_mactunnag (*Scottish Gaelic*) +- Nocta (*French*) +- Tangcuyu (*Chinese Simplified*) +- Dennis Reimund (reimund_dennis) (*German*) - Albatroz Jeremias (albjeremias) (*Portuguese*) -- Matias Lavik (matiaslavik) (*Norwegian Nynorsk*) -- Amith Raj Shetty (amithraj1989) (*Kannada*) -- abidin toumi (Zet24) (*Arabic*) -- mikel (mikelalas) (*Spanish*) -- OpenAlgeria (*Arabic*) -- random_person (*Spanish*) -- Sais Lakshmanan (Saislakshmanan) (*Tamil*) -- Trond Boksasp (boksasp) (*Norwegian*) -- xpac1985 (xpac) (*German*) -- Zlr- (cZeler) (*French*) -- Mohammad Adnan Mahmood (adnanmig) (*Arabic*) -- mimikun (*Japanese*) -- smedvedev (*Russian*) -- asretro (*Chinese Traditional, Hong Kong*) +- Xurxo Guerra (xguerrap) (*Galician*) +- Samir Tighzert (samir_t7) (*Kabyle*) +- lokalisoija (*Finnish*) +- codl (*French*) +- thisdudeisvegan (braydofficial) (*German*) - tamaina (*Japanese*) +- Matias Lavik (matiaslavik) (*Norwegian Nynorsk*) - Aman Alam (aalam) (*Punjabi*) +- Holger Huo (holgerhuo) (*Chinese Simplified*) +- Amith Raj Shetty (amithraj1989) (*Kannada*) +- mimikun (*Japanese*) +- Ragnars Eggerts (rmegg1933) (*Latvian*) - ÀŘǾŚ PÀŚĦÀÍ (arospashai) (*Sorani (Kurdish)*) -- Kaede (kaedech) (*Japanese*) +- smedvedev (*Russian*) +- Sais Lakshmanan (Saislakshmanan) (*Tamil*) +- Mohammad Adnan Mahmood (adnanmig) (*Arabic*) +- OpenAlgeria (*Arabic*) +- Trond Boksasp (boksasp) (*Norwegian*) - Doug (douglasalvespe) (*Portuguese, Brazilian*) +- Mohd Bilal (mdb571) (*Malayalam*) - Fleva (*Sardinian*) -- Abijeet Patro (Abijeet) (*Basque*) -- SamOak (*Portuguese, Brazilian*) -- Aries (orlea) (*Japanese*) -- Bartek Fijałkowski (brateq) (*Polish*) -- NeverMine17 (*Russian*) -- Brodi (brodi1) (*Dutch*) -- Ács Zoltán (zoli111) (*Hungarian*) -- capiscuas (*Spanish*) -- Benjamin Cobb (benjamincobb) (*German*) -- djoerd (*Dutch*) -- waweic (*German*) -- Amir Kurdo (kuraking202) (*Sorani (Kurdish)*) -- dobrado (*Portuguese, Brazilian*) -- Baban Abdulrahman (baban.abdulrehman) (*Sorani (Kurdish)*) -- dcapillae (*Spanish*) -- Azad ahmad (dashty) (*Sorani (Kurdish)*) -- Salh_haji6 (*Sorani (Kurdish)*) -- Ranj A Abdulqadir (RanjAhmed) (*Sorani (Kurdish)*) -- tateisu (*Japanese*) -- Savarín Electrográfico Marmota Intergalactica (herrero.maty) (*Spanish*) -- ebrezhoneg (*Breton*) -- 于晚霞 (xissshawww) (*Chinese Simplified*) -- silverscat_3 (SilversCat) (*Japanese*) -- centumix (*Japanese*) -- umonaca (*Chinese Simplified*) -- Ni Futchi (futchitwo) (*Japanese*) -- おさ (osapon) (*Japanese*) -- kavitha129 (*Tamil*) -- Hannah (Aniqueper1) (*Chinese Simplified*) -- Jiniux (*Italian*) -- Jari Ronkainen (ronchaine) (*Finnish*) +- xpac1985 (xpac) (*German*) +- mikel (mikelalas) (*Spanish*) +- random_person (*Spanish*) +- asretro (*Chinese Traditional, Hong Kong*) +- Arĝentakato (argxentakato) (*Japanese*) - Nithya Mary (nithyamary25) (*Tamil*) +- Azad ahmad (dashty) (*Sorani (Kurdish)*) +- Bartek Fijałkowski (brateq) (*Polish*) +- ebrezhoneg (*Breton*) +- maksutheam (*Finnish*) +- majorblazr (*Danish*) +- Jill H. (kokakiwi) (*French*) +- Patrice Boivin (patriceboivin58) (*French*) +- centumix (*Japanese*) +- 江尚寒 (jiangshanghan) (*Chinese Simplified*) +- hud5634j (*Spanish*) +- おさ (osapon) (*Japanese*) +- Jiniux (*Italian*) +- Hannah (Aniqueper1) (*Chinese Simplified*) +- Ni Futchi (futchitwo) (*Japanese*) +- dobrado (*Portuguese, Brazilian*) +- dcapillae (*Spanish*) +- Ranj A Abdulqadir (RanjAhmed) (*Sorani (Kurdish)*) +- Kurdish Translator (Kurdish.boy) (*Sorani (Kurdish)*) +- Amir Kurdo (kuraking202) (*Sorani (Kurdish)*) +- umonaca (*Chinese Simplified*) +- Jari Ronkainen (ronchaine) (*Finnish*) +- djoerd (*Dutch*) +- Savarín Electrográfico Marmota Intergalactica (herrero.maty) (*Spanish*) +- 于晚霞 (xissshawww) (*Chinese Simplified*) +- tateisu (*Japanese*) +- NeverMine17 (*Russian*) +- soheilkhanalipur (*Persian*) +- SamOak (*Portuguese, Brazilian*) +- kavitha129 (*Tamil*) +- Salh_haji6 (*Sorani (Kurdish)*) +- Brodi (brodi1) (*Dutch*) +- capiscuas (*Spanish*) +- HSD Channel (kvdbve34) (*Russian*) +- Abijeet Patro (Abijeet) (*Basque*) +- Ács Zoltán (zoli111) (*Hungarian*) +- Benjamin Cobb (benjamincobb) (*German*) +- waweic (*German*) +- Aries (orlea) (*Japanese*) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8e9d6ea1d..8814d5a4c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,248 @@ Changelog All notable changes to this project will be documented in this file. +## [3.5.1] - 2022-04-08 +### Added + +- Add pagination for trending statuses in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/17976)) + +### Changed + +- Change e-mail notifications to only be sent when recipient is offline ([Gargron](https://github.com/mastodon/mastodon/pull/17984)) + - Send e-mails for mentions and follows by default again + - But only when recipient does not have push notifications through an app +- Change `website` attribute to be nullable on `Application` entity in REST API ([rinsuki](https://github.com/mastodon/mastodon/pull/17962)) + +### Removed + +- Remove sign-in token authentication, instead send e-mail about new sign-in ([Gargron](https://github.com/mastodon/mastodon/pull/17970)) + - You no longer need to enter a security code sent through e-mail + - Instead you get an e-mail about a new sign-in from an unfamiliar IP address + +### Fixed + +- Fix error resposes for `from` search prefix ([single-right-quote](https://github.com/mastodon/mastodon/pull/17963)) +- Fix dangling language-specific trends ([Gargron](https://github.com/mastodon/mastodon/pull/17997)) +- Fix extremely rare race condition when deleting a status or account ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17994)) +- Fix trends returning less results per page when filtered in REST API ([Gargron](https://github.com/mastodon/mastodon/pull/17996)) +- Fix pagination header on empty trends responses in REST API ([Gargron](https://github.com/mastodon/mastodon/pull/17986)) +- Fix cookies secure flag being set when served over Tor ([Gargron](https://github.com/mastodon/mastodon/pull/17992)) +- Fix migration error handling ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17991)) +- Fix error when re-running some migrations if they get interrupted at the wrong moment ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17989)) +- Fix potentially missing statuses when reconnecting to streaming API in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17981), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17987), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17980)) +- Fix error when sending warning emails with custom text ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17983)) +- Fix unset `SMTP_RETURN_PATH` environment variable causing e-mail not to send ([Gargron](https://github.com/mastodon/mastodon/pull/17982)) +- Fix possible duplicate statuses in timelines in some edge cases in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17971)) +- Fix spurious edits and require incoming edits to be explicitly marked as such ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17918)) +- Fix error when encountering invalid pinned statuses ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17964)) +- Fix inconsistency in error handling when removing a status ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17974)) +- Fix admin API unconditionally requiring CSRF token ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17975)) +- Fix trending tags endpoint missing `offset` param in REST API ([Gargron](https://github.com/mastodon/mastodon/pull/17973)) +- Fix unusual number formatting in some locales ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17929)) +- Fix `S3_FORCE_SINGLE_REQUEST` environment variable not working ([HolgerHuo](https://github.com/mastodon/mastodon/pull/17922)) +- Fix failure to build assets with OpenSSL 3 ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17930)) +- Fix PWA manifest using outdated routes ([HolgerHuo](https://github.com/mastodon/mastodon/pull/17921)) +- Fix error when indexing statuses into Elasticsearch ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17912)) + +## [3.5.0] - 2022-03-30 +### Added + +- **Add support for incoming edited posts** ([Gargron](https://github.com/mastodon/mastodon/pull/16697), [Gargron](https://github.com/mastodon/mastodon/pull/17727), [Gargron](https://github.com/mastodon/mastodon/pull/17728), [Gargron](https://github.com/mastodon/mastodon/pull/17320), [Gargron](https://github.com/mastodon/mastodon/pull/17404), [Gargron](https://github.com/mastodon/mastodon/pull/17390), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17335), [Gargron](https://github.com/mastodon/mastodon/pull/17696), [Gargron](https://github.com/mastodon/mastodon/pull/17745), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17740), [Gargron](https://github.com/mastodon/mastodon/pull/17697), [Gargron](https://github.com/mastodon/mastodon/pull/17648), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17531), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17499), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17498), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17380), [Gargron](https://github.com/mastodon/mastodon/pull/17373), [Gargron](https://github.com/mastodon/mastodon/pull/17334), [Gargron](https://github.com/mastodon/mastodon/pull/17333), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17699), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17748)) + - Previous versions remain available for perusal and comparison + - People who reblogged a post are notified when it's edited + - New REST APIs: + - `PUT /api/v1/statuses/:id` + - `GET /api/v1/statuses/:id/history` + - `GET /api/v1/statuses/:id/source` + - New streaming API event: + - `status.update` +- **Add appeals for moderator decisions** ([Gargron](https://github.com/mastodon/mastodon/pull/17364), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17725), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17566), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17652), [Gargron](https://github.com/mastodon/mastodon/pull/17616), [Gargron](https://github.com/mastodon/mastodon/pull/17615), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17554), [Gargron](https://github.com/mastodon/mastodon/pull/17523)) + - All default moderator decisions now notify the affected user by e-mail + - They now link to an appeal page instead of suggesting replying to the e-mail + - They can now be found in account settings and not just e-mail + - Users can submit one appeal within 20 days of the decision + - Moderators can approve or reject the appeal +- **Add notifications for posts deleted by moderators** ([Gargron](https://github.com/mastodon/mastodon/pull/17204), [Gargron](https://github.com/mastodon/mastodon/pull/17668), [Gargron](https://github.com/mastodon/mastodon/pull/17746), [Gargron](https://github.com/mastodon/mastodon/pull/17679), [Gargron](https://github.com/mastodon/mastodon/pull/17487)) + - New, redesigned report view in admin UI + - Common report actions now only take one click to complete + - Deleting posts or marking as sensitive from report now notifies user + - Reports can be categorized by reason and specific rules violated + - The reasons are automatically cited in the notifications, except for spam + - Marking posts as sensitive now federates using post editing +- **Add explore page with trending posts and links** ([Gargron](https://github.com/mastodon/mastodon/pull/17123), [Gargron](https://github.com/mastodon/mastodon/pull/17431), [Gargron](https://github.com/mastodon/mastodon/pull/16917), [Gargron](https://github.com/mastodon/mastodon/pull/17677), [Gargron](https://github.com/mastodon/mastodon/pull/16938), [Gargron](https://github.com/mastodon/mastodon/pull/17044), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/16978), [Gargron](https://github.com/mastodon/mastodon/pull/16979), [tribela](https://github.com/mastodon/mastodon/pull/17066), [Gargron](https://github.com/mastodon/mastodon/pull/17072), [Gargron](https://github.com/mastodon/mastodon/pull/17403), [noiob](https://github.com/mastodon/mastodon/pull/17624), [mayaeh](https://github.com/mastodon/mastodon/pull/17755), [mayaeh](https://github.com/mastodon/mastodon/pull/17757), [Gargron](https://github.com/mastodon/mastodon/pull/17760), [mayaeh](https://github.com/mastodon/mastodon/pull/17762)) + - Hashtag trends algorithm is extended to work for posts and links + - Links are only considered if they have an adequate preview card + - Preview card generation has been improved to support structured data + - Links can only trend if the publisher (domain) has been approved + - Posts can only trend if the author has been approved + - Individual approval and rejection for posts and links is also available + - Moderators are notified about pending trends at most once every 2 hours + - Posts and link trends are language-specific + - Search page is redesigned into explore page in web UI + - Discovery tab is coming soon in official iOS and Android apps + - New REST APIs: + - `GET /api/v1/trends/links` + - `GET /api/v1/trends/statuses` + - `GET /api/v1/trends/tags` (alias of `GET /api/v1/trends`) + - `GET /api/v1/admin/trends/links` + - `GET /api/v1/admin/trends/statuses` + - `GET /api/v1/admin/trends/tags` +- **Add graphs and retention metrics to admin dashboard** ([Gargron](https://github.com/mastodon/mastodon/pull/16829), [Gargron](https://github.com/mastodon/mastodon/pull/17617), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17570), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/16910), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/16909), [mashirozx](https://github.com/mastodon/mastodon/pull/16884), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/16854)) + - Dashboard shows more numbers with development over time + - Other data such as most used interface languages and sign-up sources + - User retention graph shows how many new users stick around + - New REST APIs: + - `POST /api/v1/admin/measures` + - `POST /api/v1/admin/dimensions` + - `POST /api/v1/admin/retention` +- Add `GET /api/v1/accounts/familiar_followers` to REST API ([Gargron](https://github.com/mastodon/mastodon/pull/17700)) +- Add `POST /api/v1/accounts/:id/remove_from_followers` to REST API ([noellabo](https://github.com/mastodon/mastodon/pull/16864)) +- Add `category` and `rule_ids` params to `POST /api/v1/reports` IN REST API ([Gargron](https://github.com/mastodon/mastodon/pull/17492), [Gargron](https://github.com/mastodon/mastodon/pull/17682), [Gargron](https://github.com/mastodon/mastodon/pull/17713)) + - `category` can be one of: `spam`, `violation`, `other` (default) + - `rule_ids` must reference `rules` returned in `GET /api/v1/instance` +- Add global `lang` param to REST API ([Gargron](https://github.com/mastodon/mastodon/pull/17464), [Gargron](https://github.com/mastodon/mastodon/pull/17592)) +- Add `types` param to `GET /api/v1/notifications` in REST API ([Gargron](https://github.com/mastodon/mastodon/pull/17767)) +- **Add notifications for moderators about new sign-ups** ([Gargron](https://github.com/mastodon/mastodon/pull/16953), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17629)) + - When a new user confirms e-mail, moderators receive a notification + - New notification type: + - `admin.sign_up` +- Add authentication history ([Gargron](https://github.com/mastodon/mastodon/pull/16408), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/16428), [baby-gnu](https://github.com/mastodon/mastodon/pull/16654)) +- Add ability to automatically delete old posts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/16529), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17691), [tribela](https://github.com/mastodon/mastodon/pull/16653)) +- Add ability to pin private posts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/16954), [tribela](https://github.com/mastodon/mastodon/pull/17326), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17304), [MitarashiDango](https://github.com/mastodon/mastodon/pull/17647)) +- Add ability to filter search results by author using `from:` syntax ([tribela](https://github.com/mastodon/mastodon/pull/16526)) +- Add ability to delete canonical email blocks in admin UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/16644)) +- Add ability to purge undeliverable domains in admin UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/16686), [tribela](https://github.com/mastodon/mastodon/pull/17210), [tribela](https://github.com/mastodon/mastodon/pull/17741), [tribela](https://github.com/mastodon/mastodon/pull/17209)) +- Add ability to disable e-mail token authentication for specific users in admin UI ([Gargron](https://github.com/mastodon/mastodon/pull/16427)) +- **Add ability to suspend accounts in batches in admin UI** ([Gargron](https://github.com/mastodon/mastodon/pull/17009), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17301), [Gargron](https://github.com/mastodon/mastodon/pull/17444)) + - New, redesigned accounts list in admin UI + - Batch suspensions are meant to help clean up spam and bot accounts + - They do not generate notifications +- Add ability to filter reports by origin of target account in admin UI ([Gargron](https://github.com/mastodon/mastodon/pull/16487)) +- Add support for login through OpenID Connect ([chandrn7](https://github.com/mastodon/mastodon/pull/16221)) +- Add lazy loading for emoji picker in web UI ([mashirozx](https://github.com/mastodon/mastodon/pull/16907), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17011)) +- Add single option votes tooltip in polls in web UI ([Brawaru](https://github.com/mastodon/mastodon/pull/16849)) +- Add confirmation modal when closing media edit modal with unsaved changes in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/16518)) +- Add hint about missing media attachment description in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/17845)) +- Add support for fetching Create and Announce activities by URI in ActivityPub ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/16383)) +- Add `S3_FORCE_SINGLE_REQUEST` environment variable ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/16866)) +- Add `OMNIAUTH_ONLY` environment variable ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17288), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17345)) +- Add `ES_USER` and `ES_PASS` environment variables for Elasticsearch authentication ([tribela](https://github.com/mastodon/mastodon/pull/16890)) +- Add `CAS_SECURITY_ASSUME_EMAIL_IS_VERIFIED` environment variable ([baby-gnu](https://github.com/mastodon/mastodon/pull/16655)) +- Add ability to pass specific domains to `tootctl accounts cull` ([tribela](https://github.com/mastodon/mastodon/pull/16511)) +- Add `--by-uri` option to `tootctl domains purge` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/16434)) +- Add `--batch-size` option to `tootctl search deploy` ([aquarla](https://github.com/mastodon/mastodon/pull/17049)) +- Add `--remove-orphans` option to `tootctl statuses remove` ([noellabo](https://github.com/mastodon/mastodon/pull/17067)) + +### Changed + +- Change design of federation pages in admin UI ([Gargron](https://github.com/mastodon/mastodon/pull/17704), [noellabo](https://github.com/mastodon/mastodon/pull/17735), [Gargron](https://github.com/mastodon/mastodon/pull/17765)) +- Change design of account cards in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/17689)) +- Change `follow` scope to be covered by `read` and `write` scopes in REST API ([Gargron](https://github.com/mastodon/mastodon/pull/17678)) +- Change design of authorized applications page ([Gargron](https://github.com/mastodon/mastodon/pull/17656), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17686)) +- Change e-mail domain blocks to block IPs dynamically ([Gargron](https://github.com/mastodon/mastodon/pull/17635), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17650), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17649)) +- Change report modal to include category selection in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/17565), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17734), [Gargron](https://github.com/mastodon/mastodon/pull/17654), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17632)) +- Change reblogs to not count towards hashtag trends anymore ([Gargron](https://github.com/mastodon/mastodon/pull/17501)) +- Change languages to be listed under standard instead of native name in admin UI ([Gargron](https://github.com/mastodon/mastodon/pull/17485)) +- Change routing paths to use usernames in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/16171), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/16772), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/16773), [mashirozx](https://github.com/mastodon/mastodon/pull/16793), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17060)) +- Change list title input design in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17092)) +- Change "Opt-in to profile directory" preference to be general discoverability preference ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/16637)) +- Change API rate limits to use /64 masking on IPv6 addresses ([tribela](https://github.com/mastodon/mastodon/pull/17588), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17600), [zunda](https://github.com/mastodon/mastodon/pull/17590)) +- Change allowed formats for locally uploaded custom emojis to include GIF ([rgroothuijsen](https://github.com/mastodon/mastodon/pull/17706), [Gargron](https://github.com/mastodon/mastodon/pull/17759)) +- Change error message when chosen password is too long ([rgroothuijsen](https://github.com/mastodon/mastodon/pull/17082)) +- Change minimum required Elasticsearch version from 6 to 7 ([noellabo](https://github.com/mastodon/mastodon/pull/16915)) + +### Removed + +- Remove profile directory link from main navigation panel in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/17688)) +- **Remove language detection through cld3** ([Gargron](https://github.com/mastodon/mastodon/pull/17478), [ykzts](https://github.com/mastodon/mastodon/pull/17539), [Gargron](https://github.com/mastodon/mastodon/pull/17496), [Gargron](https://github.com/mastodon/mastodon/pull/17722)) + - cld3 is very inaccurate on short-form content even with unique alphabets + - Post language can be overriden individually using `language` param + - Otherwise, it defaults to the user's interface language +- Remove support for `OAUTH_REDIRECT_AT_SIGN_IN` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17287)) + - Use `OMNIAUTH_ONLY` instead +- Remove Keybase integration ([Gargron](https://github.com/mastodon/mastodon/pull/17045)) +- Remove old columns and indexes ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17245), [Gargron](https://github.com/mastodon/mastodon/pull/16409), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17191)) +- Remove shortcodes from newly-created media attachments ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/16730), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/16763)) + +### Deprecated + +- `GET /api/v1/trends` → `GET /api/v1/trends/tags` +- OAuth `follow` scope → `read` and/or `write` +- `text` attribute on `DELETE /api/v1/statuses/:id` → `GET /api/v1/statuses/:id/source` + +### Fixed + +- Fix IDN domains not being rendered correctly in a few left-over places ([Gargron](https://github.com/mastodon/mastodon/pull/17848)) +- Fix Sanskrit translation not being used in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17820)) +- Fix Kurdish languages having the wrong language codes ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17812)) +- Fix pghero making database schema suggestions ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17807)) +- Fix encoding glitch in the OpenGraph description of a profile page ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17821)) +- Fix web manifest not permitting PWA usage from alternate domains ([HolgerHuo](https://github.com/mastodon/mastodon/pull/16714)) +- Fix not being able to edit media attachments for scheduled posts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17690)) +- Fix subscribed relay activities being recorded as boosts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17571)) +- Fix streaming API server error messages when JSON parsing fails not specifying the source ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17559)) +- Fix browsers autofilling new password field with old password ([mashirozx](https://github.com/mastodon/mastodon/pull/17702)) +- Fix text being invisible before fonts load in web UI ([tribela](https://github.com/mastodon/mastodon/pull/16330)) +- Fix public profile pages of unconfirmed users being accessible ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17385), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17457)) +- Fix nil error when trying to fetch key for signature verification ([Gargron](https://github.com/mastodon/mastodon/pull/17747)) +- Fix null values being included in some indexes ([Gargron](https://github.com/mastodon/mastodon/pull/17711)) +- Fix `POST /api/v1/emails/confirmations` not being available after sign-up ([Gargron](https://github.com/mastodon/mastodon/pull/17743)) +- Fix rare race condition when reblogged post is deleted ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17693), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17730)) +- Fix being able to add more than 4 hashtags to hashtag column in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/17729)) +- Fix data integrity of featured tags ([Gargron](https://github.com/mastodon/mastodon/pull/17712)) +- Fix performance of account timelines ([Gargron](https://github.com/mastodon/mastodon/pull/17709)) +- Fix returning empty `

` tag for blank account `note` in REST API ([Gargron](https://github.com/mastodon/mastodon/pull/17687)) +- Fix leak of existence of otherwise inaccessible posts in REST API ([Gargron](https://github.com/mastodon/mastodon/pull/17684)) +- Fix not showing loading indicator when searching in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/17655)) +- Fix media modal footer's “external link” not being a link ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17561)) +- Fix reply button on media modal not giving focus to compose form ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17626)) +- Fix some media attachments being converted with too high framerates ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17619)) +- Fix sign in token and warning emails failing to send when contact e-mail address is malformed ([helloworldstack](https://github.com/mastodon/mastodon/pull/17589)) +- Fix opening the emoji picker scrolling the single-column view to the top ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17579)) +- Fix edge case where settings/admin page sidebar would be incorrectly hidden ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17580)) +- Fix performance of server-side filtering ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17575)) +- Fix privacy policy link not being visible on small screens ([Gargron](https://github.com/mastodon/mastodon/pull/17533)) +- Fix duplicate accounts when searching by IP range in admin UI ([Gargron](https://github.com/mastodon/mastodon/pull/17524), [tribela](https://github.com/mastodon/mastodon/pull/17150)) +- Fix error when performing a batch action on posts in admin UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17532)) +- Fix deletes not being signed in authorized fetch mode ([Gargron](https://github.com/mastodon/mastodon/pull/17484)) +- Fix Undo Announce sometimes inlining the originally Announced status ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17516)) +- Fix localization of cold-start follow recommendations ([Gargron](https://github.com/mastodon/mastodon/pull/17479), [Gargron](https://github.com/mastodon/mastodon/pull/17486)) +- Fix replies collection incorrectly looping ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17462)) +- Fix errors when multiple Delete are received for a given actor ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17460)) +- Fixed prototype pollution bug and only allow trusted origin ([r0hanSH](https://github.com/mastodon/mastodon/pull/17420)) +- Fix text being incorrectly pre-selected in composer textarea on /share ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17339)) +- Fix SMTP_ENABLE_STARTTLS_AUTO/SMTP_TLS/SMTP_SSL environment variables don't work ([kgtkr](https://github.com/mastodon/mastodon/pull/17216)) +- Fix media upload specific rate limits only being applied to v1 endpoint in REST API ([tribela](https://github.com/mastodon/mastodon/pull/17272)) +- Fix media descriptions not being used for client-side filtering ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17206)) +- Fix cold-start follow recommendation favouring older accounts due to wrong sorting ([noellabo](https://github.com/mastodon/mastodon/pull/17126)) +- Fix not redirect to the right page after authenticating with WebAuthn ([heguro](https://github.com/mastodon/mastodon/pull/17098)) +- Fix searching for additional hashtags in hashtag column ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17054)) +- Fix color of hashtag column settings inputs ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17058)) +- Fix performance of `tootctl statuses remove` ([noellabo](https://github.com/mastodon/mastodon/pull/17052)) +- Fix `tootctl accounts cull` not excluding domains on timeouts and certificate issues ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/16433)) +- Fix 404 error when filtering admin action logs by non-existent target account ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/16643)) +- Fix error when accessing streaming API without any OAuth scopes ([Brawaru](https://github.com/mastodon/mastodon/pull/16823)) +- Fix follow request count not updating when new follow requests arrive over streaming API in web UI ([matildepark](https://github.com/mastodon/mastodon/pull/16652)) +- Fix error when unsuspending a local account ([HolgerHuo](https://github.com/mastodon/mastodon/pull/16605)) +- Fix crash when a notification contains a not yet processed media attachment in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/16573)) +- Fix wrong color of download button in audio player in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/16572)) +- Fix notes for others accounts not being deleted when an account is deleted ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/16579)) +- Fix error when logging occurrence of unsupported video file ([noellabo](https://github.com/mastodon/mastodon/pull/16581)) +- Fix wrong elements in trends widget being hidden on smaller screens in web UI ([tribela](https://github.com/mastodon/mastodon/pull/16570)) +- Fix link to about page being displayed in limited federation mode ([weex](https://github.com/mastodon/mastodon/pull/16432)) +- Fix styling of boost button in media modal not reflecting ability to boost ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/16387)) +- Fix OCR failure when erroneous lang data is in cache ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/16386)) +- Fix downloading media from blocked domains in `tootctl media refresh` ([tribela](https://github.com/mastodon/mastodon/pull/16914)) +- Fix login form being displayed on landing page when already logged in ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17348)) +- Fix polling for media processing status too frequently in web UI ([tribela](https://github.com/mastodon/mastodon/pull/17271)) +- Fix hashtag autocomplete overriding user-typed case ([weex](https://github.com/mastodon/mastodon/pull/16460)) +- Fix WebAuthn authentication setup to not prompt for PIN ([truongnmt](https://github.com/mastodon/mastodon/pull/16545)) + +### Security + +- Fix being able to post URLs longer than 4096 characters ([Gargron](https://github.com/mastodon/mastodon/pull/17908)) +- Fix being able to bypass e-mail restrictions ([Gargron](https://github.com/mastodon/mastodon/pull/17909)) + ## [3.4.6] - 2022-02-03 ### Fixed @@ -87,7 +329,7 @@ All notable changes to this project will be documented in this file. - Fix suspended accounts statuses being merged back into timelines ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/16628)) - Fix crash when encountering invalid account fields ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/16598)) - Fix invalid blurhash handling for remote activities ([noellabo](https://github.com/mastodon/mastodon/pull/16583)) -- Fix newlines being added to accout notes when an account moves ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/16415), [noellabo](https://github.com/mastodon/mastodon/pull/16576)) +- Fix newlines being added to account notes when an account moves ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/16415), [noellabo](https://github.com/mastodon/mastodon/pull/16576)) - Fix crash when creating an announcement with links ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/16941)) - Fix logging out from one browser logging out all other sessions ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/16943)) @@ -420,7 +662,7 @@ All notable changes to this project will be documented in this file. - Fix inefficiency when fetching bookmarks ([akihikodaki](https://github.com/mastodon/mastodon/pull/14674)) - Fix inefficiency when fetching favourites ([akihikodaki](https://github.com/mastodon/mastodon/pull/14673)) - Fix inefficiency when fetching media-only account timeline ([akihikodaki](https://github.com/mastodon/mastodon/pull/14675)) -- Fix inefficieny when deleting accounts ([Gargron](https://github.com/mastodon/mastodon/pull/15387), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/15409), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/15407), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/15408), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/15402), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/15416), [Gargron](https://github.com/mastodon/mastodon/pull/15421)) +- Fix inefficiency when deleting accounts ([Gargron](https://github.com/mastodon/mastodon/pull/15387), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/15409), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/15407), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/15408), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/15402), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/15416), [Gargron](https://github.com/mastodon/mastodon/pull/15421)) - Fix redundant query when processing batch actions on custom emojis ([niwatori24](https://github.com/mastodon/mastodon/pull/14534)) - Fix slow distinct queries where grouped queries are faster ([Gargron](https://github.com/mastodon/mastodon/pull/15287)) - Fix performance on instances list in admin UI ([Gargron](https://github.com/mastodon/mastodon/pull/15282)) @@ -507,7 +749,7 @@ All notable changes to this project will be documented in this file. - Add blurhash to link previews ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/13984), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/14143), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/13985), [Sasha-Sorokin](https://github.com/mastodon/mastodon/pull/14267), [Sasha-Sorokin](https://github.com/mastodon/mastodon/pull/14278), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/14126), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/14261), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/14260)) - In web UI, toots cannot be marked as sensitive unless there is media attached - However, it's possible to do via API or ActivityPub - - Thumnails of link previews of such posts now use blurhash in web UI + - Thumbnails of link previews of such posts now use blurhash in web UI - The Card entity in REST API has a new `blurhash` attribute - Add support for `summary` field for media description in ActivityPub ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/13763)) - Add hints about incomplete remote content to web UI ([Gargron](https://github.com/mastodon/mastodon/pull/14031), [noellabo](https://github.com/mastodon/mastodon/pull/14195)) @@ -530,7 +772,7 @@ All notable changes to this project will be documented in this file. - The `meta` attribute on the Media Attachment entity in REST API can now have a `colors` attribute which in turn contains three hex colors: `background`, `foreground`, and `accent` - The background color is chosen from the most dominant color around the edges of the thumbnail - The foreground and accent colors are chosen from the colors that are the most different from the background color using the CIEDE2000 algorithm - - The most satured color of the two is designated as the accent color + - The most saturated color of the two is designated as the accent color - The one with the highest W3C contrast is designated as the foreground color - If there are not enough colors in the thumbnail, new ones are generated using a monochrome pattern - Add a visibility indicator to toots in web UI ([noellabo](https://github.com/mastodon/mastodon/pull/14123), [highemerly](https://github.com/mastodon/mastodon/pull/14292)) @@ -556,7 +798,7 @@ All notable changes to this project will be documented in this file. - Change boost button to no longer serve as visibility indicator in web UI ([noellabo](https://github.com/mastodon/mastodon/pull/14132), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/14373)) - Change contrast of flash messages ([cchoi12](https://github.com/mastodon/mastodon/pull/13892)) - Change wording from "Hide media" to "Hide image/images" in web UI ([ariasuni](https://github.com/mastodon/mastodon/pull/13834)) -- Change appearence of settings pages to be more consistent ([ariasuni](https://github.com/mastodon/mastodon/pull/13938)) +- Change appearance of settings pages to be more consistent ([ariasuni](https://github.com/mastodon/mastodon/pull/13938)) - Change "Add media" tooltip to not include long list of formats in web UI ([ariasuni](https://github.com/mastodon/mastodon/pull/13954)) - Change how badly contrasting emoji are rendered in web UI ([leo60228](https://github.com/mastodon/mastodon/pull/13773), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/13772), [mfmfuyu](https://github.com/mastodon/mastodon/pull/14020), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/14015)) - Change structure of unavailable content section on about page ([ariasuni](https://github.com/mastodon/mastodon/pull/13930)) @@ -572,14 +814,14 @@ All notable changes to this project will be documented in this file. - `EMAIL_DOMAIN_WHITELIST` → `EMAIL_DOMAIN_ALLOWLIST` - CLI option changed: - `tootctl domains purge --whitelist-mode` → `tootctl domains purge --limited-federation-mode` -- Remove some unnecessary database indices ([lfuelling](https://github.com/mastodon/mastodon/pull/13695), [noellabo](https://github.com/mastodon/mastodon/pull/14259)) +- Remove some unnecessary database indexes ([lfuelling](https://github.com/mastodon/mastodon/pull/13695), [noellabo](https://github.com/mastodon/mastodon/pull/14259)) - Remove unnecessary Node.js version upper bound ([ykzts](https://github.com/mastodon/mastodon/pull/14139)) ### Fixed - Fix `following` param not working when exact match is found in account search ([noellabo](https://github.com/mastodon/mastodon/pull/14394)) -- Fix sometimes occuring duplicate mention notifications ([noellabo](https://github.com/mastodon/mastodon/pull/14378)) -- Fix RSS feeds not being cachable ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/14368)) +- Fix sometimes occurring duplicate mention notifications ([noellabo](https://github.com/mastodon/mastodon/pull/14378)) +- Fix RSS feeds not being cacheable ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/14368)) - Fix lack of locking around processing of Announce activities in ActivityPub ([noellabo](https://github.com/mastodon/mastodon/pull/14365)) - Fix boosted toots from blocked account not being retroactively removed from TL ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/14339)) - Fix large shortened numbers (like 1.2K) using incorrect pluralization ([Sasha-Sorokin](https://github.com/mastodon/mastodon/pull/14061)) @@ -591,7 +833,7 @@ All notable changes to this project will be documented in this file. - Fix new posts pushing down origin of opened dropdown in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/14271), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/14348)) - Fix timeline markers not being saved sometimes ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/13887), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/13889), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/14155)) - Fix CSV uploads being rejected ([noellabo](https://github.com/mastodon/mastodon/pull/13835)) -- Fix incompatibility with ElasticSearch 7.x ([noellabo](https://github.com/mastodon/mastodon/pull/13828)) +- Fix incompatibility with Elasticsearch 7.x ([noellabo](https://github.com/mastodon/mastodon/pull/13828)) - Fix being able to search posts where you're in the target audience but not actively mentioned ([noellabo](https://github.com/mastodon/mastodon/pull/13829)) - Fix non-local posts appearing on local-only hashtag timelines in web UI ([noellabo](https://github.com/mastodon/mastodon/pull/13827)) - Fix `tootctl media remove-orphans` choking on unknown files in storage ([Gargron](https://github.com/mastodon/mastodon/pull/13765)) @@ -706,7 +948,7 @@ All notable changes to this project will be documented in this file. - Fix poll refresh button not being debounced in web UI ([rasjonell](https://github.com/mastodon/mastodon/pull/13485), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/13490)) - Fix confusing error when failing to add an alias to an unknown account ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/13480)) - Fix "Email changed" notification sometimes having wrong e-mail ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/13475)) -- Fix varioues issues on the account aliases page ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/13452)) +- Fix various issues on the account aliases page ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/13452)) - Fix API footer link in web UI ([bubblineyuri](https://github.com/mastodon/mastodon/pull/13441)) - Fix pagination of following, followers, follow requests, blocks and mutes lists in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/13445)) - Fix styling of polls in JS-less fallback on public pages ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/13436)) @@ -1195,7 +1437,7 @@ All notable changes to this project will be documented in this file. - Fix URLs appearing twice in errors of ActivityPub::DeliveryWorker ([Gargron](https://github.com/mastodon/mastodon/pull/11231)) - Fix support for HTTP proxies ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/11245)) - Fix HTTP requests to IPv6 hosts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/11240)) -- Fix error in ElasticSearch index import ([mayaeh](https://github.com/mastodon/mastodon/pull/11192)) +- Fix error in Elasticsearch index import ([mayaeh](https://github.com/mastodon/mastodon/pull/11192)) - Fix duplicate account error when seeding development database ([ysksn](https://github.com/mastodon/mastodon/pull/11366)) - Fix performance of session clean-up scheduler ([abcang](https://github.com/mastodon/mastodon/pull/11871)) - Fix older migrations not running ([zunda](https://github.com/mastodon/mastodon/pull/11377)) @@ -1205,8 +1447,8 @@ All notable changes to this project will be documented in this file. - Fix muted text color not applying to all text ([trwnh](https://github.com/mastodon/mastodon/pull/11996)) - Fix follower/following lists resetting on back-navigation in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/11986)) - Fix n+1 query when approving multiple follow requests ([abcang](https://github.com/mastodon/mastodon/pull/12004)) -- Fix records not being indexed into ElasticSearch sometimes ([Gargron](https://github.com/mastodon/mastodon/pull/12024)) -- Fix needlessly indexing unsearchable statuses into ElasticSearch ([Gargron](https://github.com/mastodon/mastodon/pull/12041)) +- Fix records not being indexed into Elasticsearch sometimes ([Gargron](https://github.com/mastodon/mastodon/pull/12024)) +- Fix needlessly indexing unsearchable statuses into Elasticsearch ([Gargron](https://github.com/mastodon/mastodon/pull/12041)) - Fix new user bootstrapping crashing when to-be-followed accounts are invalid ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/12037)) - Fix featured hashtag URL being interpreted as media or replies tab ([Gargron](https://github.com/mastodon/mastodon/pull/12048)) - Fix account counters being overwritten by parallel writes ([Gargron](https://github.com/mastodon/mastodon/pull/12045)) @@ -1496,7 +1738,7 @@ All notable changes to this project will be documented in this file. - Change Docker image to use Ubuntu with jemalloc ([Sir-Boops](https://github.com/mastodon/mastodon/pull/10100), [BenLubar](https://github.com/mastodon/mastodon/pull/10212)) - Change public pages to be cacheable by proxies ([BenLubar](https://github.com/mastodon/mastodon/pull/9059)) - Change the 410 gone response for suspended accounts to be cacheable by proxies ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/10339)) -- Change web UI to not not empty timeline of blocked users on block ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/10359)) +- Change web UI to not empty timeline of blocked users on block ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/10359)) - Change JSON serializer to remove unused `@context` values ([Gargron](https://github.com/mastodon/mastodon/pull/10378)) - Change GIFV file size limit to be the same as for other videos ([rinsuki](https://github.com/mastodon/mastodon/pull/9924)) - Change Webpack to not use @babel/preset-env to compile node_modules ([ykzts](https://github.com/mastodon/mastodon/pull/10289)) @@ -1673,7 +1915,7 @@ All notable changes to this project will be documented in this file. - Limit maximum visibility of local silenced users to unlisted ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/9583)) - Change API error message for unconfirmed accounts ([noellabo](https://github.com/mastodon/mastodon/pull/9625)) - Change the icon to "reply-all" when it's a reply to other accounts ([mayaeh](https://github.com/mastodon/mastodon/pull/9378)) -- Do not ignore federated reports targetting already-reported accounts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/9534)) +- Do not ignore federated reports targeting already-reported accounts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/9534)) - Upgrade default Ruby version to 2.6.0 ([Gargron](https://github.com/mastodon/mastodon/pull/9688)) - Change e-mail digest frequency ([Gargron](https://github.com/mastodon/mastodon/pull/9689)) - Change Docker images for Tor support in docker-compose.yml ([Sir-Boops](https://github.com/mastodon/mastodon/pull/9438)) diff --git a/Dockerfile b/Dockerfile index 1b3661561..2073cbebf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,7 @@ SHELL ["/bin/bash", "-c"] RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections # Install Node v16 (LTS) -ENV NODE_VER="16.13.2" +ENV NODE_VER="16.14.2" RUN ARCH= && \ dpkgArch="$(dpkg --print-architecture)" && \ case "${dpkgArch##*-}" in \ diff --git a/Gemfile b/Gemfile index b5d15da61..6bcec97ad 100644 --- a/Gemfile +++ b/Gemfile @@ -7,7 +7,7 @@ gem 'pkg-config', '~> 1.4' gem 'rexml', '~> 3.2' gem 'puma', '~> 5.6' -gem 'rails', '~> 6.1.4' +gem 'rails', '~> 6.1.5' gem 'sprockets', '~> 3.7.2' gem 'thor', '~> 1.2' gem 'rack', '~> 2.2.3' @@ -26,7 +26,7 @@ gem 'blurhash', '~> 0.1' gem 'active_model_serializers', '~> 0.10' gem 'addressable', '~> 2.8' -gem 'bootsnap', '~> 1.10.3', require: false +gem 'bootsnap', '~> 1.11.1', require: false gem 'browser' gem 'charlock_holmes', '~> 0.7.7' gem 'chewy', '~> 7.2' @@ -40,6 +40,7 @@ end gem 'net-ldap', '~> 0.17' gem 'omniauth-cas', '~> 2.0' gem 'omniauth-saml', '~> 1.10' +gem 'gitlab-omniauth-openid-connect', '~>0.9.1', require: 'omniauth_openid_connect' gem 'omniauth', '~> 1.9' gem 'omniauth-rails_csrf_protection', '~> 0.1' @@ -67,7 +68,7 @@ gem 'parslet' gem 'posix-spawn' gem 'pundit', '~> 2.2' gem 'premailer-rails' -gem 'rack-attack', '~> 6.5' +gem 'rack-attack', '~> 6.6' gem 'rack-cors', '~> 1.1', require: 'rack/cors' gem 'rails-i18n', '~> 6.0' gem 'rails-settings-cached', '~> 0.6' @@ -78,7 +79,7 @@ gem 'ruby-progressbar', '~> 1.11' gem 'sanitize', '~> 6.0' gem 'scenic', '~> 1.6' gem 'sidekiq', '~> 6.4' -gem 'sidekiq-scheduler', '~> 3.1' +gem 'sidekiq-scheduler', '~> 3.2' gem 'sidekiq-unique-jobs', '~> 7.1' gem 'sidekiq-bulk', '~>0.2.0' gem 'simple-navigation', '~> 4.3' @@ -88,7 +89,7 @@ gem 'stoplight', '~> 2.2.1' gem 'strong_migrations', '~> 0.7' gem 'tty-prompt', '~> 0.23', require: false gem 'twitter-text', '~> 3.1.0' -gem 'tzinfo-data', '~> 1.2021' +gem 'tzinfo-data', '~> 1.2022' gem 'webpacker', '~> 5.4' gem 'webpush', '~> 0.3' gem 'webauthn', '~> 3.0.0.alpha1' @@ -98,9 +99,9 @@ gem 'json-ld-preloaded', '~> 3.2' gem 'rdf-normalize', '~> 0.5' group :development, :test do - gem 'fabrication', '~> 2.27' + gem 'fabrication', '~> 2.28' gem 'fuubar', '~> 2.5' - gem 'i18n-tasks', '~> 0.9', require: false + gem 'i18n-tasks', '~> 1.0', require: false gem 'pry-byebug', '~> 3.9' gem 'pry-rails', '~> 0.3' gem 'rspec-rails', '~> 5.1' @@ -113,7 +114,7 @@ end group :test do gem 'capybara', '~> 3.36' gem 'climate_control', '~> 0.2' - gem 'faker', '~> 2.19' + gem 'faker', '~> 2.20' gem 'microformats', '~> 4.2' gem 'rails-controller-testing', '~> 1.0' gem 'rspec-sidekiq', '~> 3.1' @@ -128,15 +129,15 @@ group :development do gem 'better_errors', '~> 2.9' gem 'binding_of_caller', '~> 1.0' gem 'bullet', '~> 7.0' - gem 'letter_opener', '~> 1.7' + gem 'letter_opener', '~> 1.8' gem 'letter_opener_web', '~> 2.0' gem 'memory_profiler' - gem 'rubocop', '~> 1.25', require: false - gem 'rubocop-rails', '~> 2.13', require: false + gem 'rubocop', '~> 1.27', require: false + gem 'rubocop-rails', '~> 2.14', require: false gem 'brakeman', '~> 5.2', require: false gem 'bundler-audit', '~> 0.9', require: false - gem 'capistrano', '~> 3.16' + gem 'capistrano', '~> 3.17' gem 'capistrano-rails', '~> 1.6' gem 'capistrano-rbenv', '~> 2.2' gem 'capistrano-yarn', '~> 2.0' @@ -145,7 +146,7 @@ group :development do end group :production do - gem 'lograge', '~> 0.11' + gem 'lograge', '~> 0.12' end gem 'concurrent-ruby', require: false diff --git a/Gemfile.lock b/Gemfile.lock index 48337d9ff..8751775ef 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,40 +1,40 @@ GEM remote: https://rubygems.org/ specs: - actioncable (6.1.4.6) - actionpack (= 6.1.4.6) - activesupport (= 6.1.4.6) + actioncable (6.1.5) + actionpack (= 6.1.5) + activesupport (= 6.1.5) nio4r (~> 2.0) websocket-driver (>= 0.6.1) - actionmailbox (6.1.4.6) - actionpack (= 6.1.4.6) - activejob (= 6.1.4.6) - activerecord (= 6.1.4.6) - activestorage (= 6.1.4.6) - activesupport (= 6.1.4.6) + actionmailbox (6.1.5) + actionpack (= 6.1.5) + activejob (= 6.1.5) + activerecord (= 6.1.5) + activestorage (= 6.1.5) + activesupport (= 6.1.5) mail (>= 2.7.1) - actionmailer (6.1.4.6) - actionpack (= 6.1.4.6) - actionview (= 6.1.4.6) - activejob (= 6.1.4.6) - activesupport (= 6.1.4.6) + actionmailer (6.1.5) + actionpack (= 6.1.5) + actionview (= 6.1.5) + activejob (= 6.1.5) + activesupport (= 6.1.5) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 2.0) - actionpack (6.1.4.6) - actionview (= 6.1.4.6) - activesupport (= 6.1.4.6) + actionpack (6.1.5) + actionview (= 6.1.5) + activesupport (= 6.1.5) rack (~> 2.0, >= 2.0.9) rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.2.0) - actiontext (6.1.4.6) - actionpack (= 6.1.4.6) - activerecord (= 6.1.4.6) - activestorage (= 6.1.4.6) - activesupport (= 6.1.4.6) + actiontext (6.1.5) + actionpack (= 6.1.5) + activerecord (= 6.1.5) + activestorage (= 6.1.5) + activesupport (= 6.1.5) nokogiri (>= 1.8.5) - actionview (6.1.4.6) - activesupport (= 6.1.4.6) + actionview (6.1.5) + activesupport (= 6.1.5) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) @@ -45,22 +45,22 @@ GEM case_transform (>= 0.2) jsonapi-renderer (>= 0.1.1.beta1, < 0.3) active_record_query_trace (1.8) - activejob (6.1.4.6) - activesupport (= 6.1.4.6) + activejob (6.1.5) + activesupport (= 6.1.5) globalid (>= 0.3.6) - activemodel (6.1.4.6) - activesupport (= 6.1.4.6) - activerecord (6.1.4.6) - activemodel (= 6.1.4.6) - activesupport (= 6.1.4.6) - activestorage (6.1.4.6) - actionpack (= 6.1.4.6) - activejob (= 6.1.4.6) - activerecord (= 6.1.4.6) - activesupport (= 6.1.4.6) - marcel (~> 1.0.0) + activemodel (6.1.5) + activesupport (= 6.1.5) + activerecord (6.1.5) + activemodel (= 6.1.5) + activesupport (= 6.1.5) + activestorage (6.1.5) + actionpack (= 6.1.5) + activejob (= 6.1.5) + activerecord (= 6.1.5) + activesupport (= 6.1.5) + marcel (~> 1.0) mini_mime (>= 1.1.0) - activesupport (6.1.4.6) + activesupport (6.1.5) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 1.6, < 2) minitest (>= 5.1) @@ -68,6 +68,7 @@ GEM zeitwerk (~> 2.3) addressable (2.8.0) public_suffix (>= 2.0.2, < 5.0) + aes_key_wrap (1.1.0) airbrussh (1.4.0) sshkit (>= 1.6.1, != 1.7.0) android_key_attestation (0.3.0) @@ -77,36 +78,45 @@ GEM ast (2.4.2) attr_encrypted (3.1.0) encryptor (~> 3.0.0) + attr_required (1.0.1) awrence (1.1.1) aws-eventstream (1.2.0) - aws-partitions (1.558.0) - aws-sdk-core (3.127.0) + aws-partitions (1.579.0) + aws-sdk-core (3.130.2) aws-eventstream (~> 1, >= 1.0.2) aws-partitions (~> 1, >= 1.525.0) aws-sigv4 (~> 1.1) jmespath (~> 1.0) - aws-sdk-kms (1.55.0) + aws-sdk-kms (1.56.0) aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.113.0) + aws-sdk-s3 (1.113.1) aws-sdk-core (~> 3, >= 3.127.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.4) - aws-sigv4 (1.4.0) + aws-sigv4 (1.5.0) aws-eventstream (~> 1, >= 1.0.2) - bcrypt (3.1.16) + bcrypt (3.1.17) better_errors (2.9.1) coderay (>= 1.0.0) erubi (>= 1.0.0) rack (>= 0.9.0) + better_html (1.0.16) + actionview (>= 4.0) + activesupport (>= 4.0) + ast (~> 2.0) + erubi (~> 1.4) + html_tokenizer (~> 0.0.6) + parser (>= 2.4) + smart_properties bindata (2.4.10) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - blurhash (0.1.5) + blurhash (0.1.6) ffi (~> 1.14) - bootsnap (1.10.3) + bootsnap (1.11.1) msgpack (~> 1.2) - brakeman (5.2.1) + brakeman (5.2.2) browser (4.2.0) brpoplpush-redis_script (0.1.2) concurrent-ruby (~> 1.0, >= 1.0.5) @@ -119,14 +129,14 @@ GEM bundler (>= 1.2.0, < 3) thor (~> 1.0) byebug (11.1.3) - capistrano (3.16.0) + capistrano (3.17.0) airbrussh (>= 1.0.0) i18n rake (>= 10.0.0) sshkit (>= 1.9.0) capistrano-bundler (2.0.1) capistrano (~> 3.1) - capistrano-rails (1.6.1) + capistrano-rails (1.6.2) capistrano (~> 3.1) capistrano-bundler (>= 1.1, < 3) capistrano-rbenv (2.2.0) @@ -155,7 +165,7 @@ GEM climate_control (0.2.0) coderay (1.1.3) color_diff (0.1) - concurrent-ruby (1.1.9) + concurrent-ruby (1.1.10) connection_pool (2.2.5) cose (1.0.0) cbor (~> 0.5.9) @@ -172,11 +182,11 @@ GEM railties (>= 4.1.0) responders warden (~> 1.2.3) - devise-two-factor (4.0.1) - activesupport (< 6.2) + devise-two-factor (4.0.2) + activesupport (< 7.1) attr_encrypted (>= 1.3, < 4, != 2) devise (~> 4.0) - railties (< 6.2) + railties (< 7.1) rotp (~> 6.0) devise_pam_authenticatable2 (9.2.0) devise (>= 4.0.0) @@ -206,12 +216,12 @@ GEM multi_json encryptor (3.0.0) erubi (1.10.0) - et-orbi (1.2.6) + et-orbi (1.2.7) tzinfo excon (0.76.0) - fabrication (2.27.0) - faker (2.19.0) - i18n (>= 1.6, < 2) + fabrication (2.28.0) + faker (2.20.0) + i18n (>= 1.8.11, < 2) faraday (1.9.3) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) @@ -254,12 +264,16 @@ GEM fog-json (>= 1.0) ipaddress (>= 0.8) formatador (0.2.5) - fugit (1.5.2) - et-orbi (~> 1.1, >= 1.1.8) + fugit (1.5.3) + et-orbi (~> 1, >= 1.2.7) raabro (~> 1.4) fuubar (2.5.1) rspec-core (~> 3.0) ruby-progressbar (~> 1.4) + gitlab-omniauth-openid-connect (0.9.1) + addressable (~> 2.7) + omniauth (~> 1.9) + openid_connect (~> 1.2) globalid (1.0.0) activesupport (>= 5.0) hamlit (2.13.0) @@ -272,10 +286,11 @@ GEM hamlit (>= 1.2.0) railties (>= 4.0.1) hashdiff (1.0.1) - hashie (4.1.0) + hashie (5.0.0) highline (2.0.3) hiredis (0.6.3) hkdf (0.3.0) + html_tokenizer (0.0.7) htmlentities (4.3.4) http (5.0.4) addressable (~> 2.8) @@ -286,14 +301,16 @@ GEM domain_name (~> 0.5) http-form_data (2.3.0) http_accept_language (2.1.1) + httpclient (2.8.3) httplog (1.5.0) rack (>= 1.0) rainbow (>= 2.0.0) - i18n (1.9.1) + i18n (1.10.0) concurrent-ruby (~> 1.0) - i18n-tasks (0.9.37) + i18n-tasks (1.0.9) activesupport (>= 4.0.2) ast (>= 2.1.0) + better_html (~> 1.0) erubi highline (>= 2.0.0) i18n @@ -303,9 +320,13 @@ GEM terminal-table (>= 1.5.1) idn-ruby (0.1.4) ipaddress (0.8.3) - jmespath (1.6.0) + jmespath (1.6.1) json (2.5.1) json-canonicalization (0.3.0) + json-jwt (1.13.0) + activesupport (>= 4.2) + aes_key_wrap + bindata json-ld (3.2.0) htmlentities (~> 4.3) json-canonicalization (~> 0.3) @@ -338,8 +359,8 @@ GEM terrapin (~> 0.6.0) launchy (2.5.0) addressable (~> 2.7) - letter_opener (1.7.0) - launchy (~> 2.2) + letter_opener (1.8.1) + launchy (>= 2.2, < 3) letter_opener_web (2.0.0) actionmailer (>= 5.2) letter_opener (~> 1.7) @@ -349,12 +370,12 @@ GEM llhttp-ffi (0.4.0) ffi-compiler (~> 1.0) rake (~> 13.0) - lograge (0.11.2) + lograge (0.12.0) actionpack (>= 4) activesupport (>= 4) railties (>= 4) request_store (~> 1.0) - loofah (2.14.0) + loofah (2.16.0) crass (~> 1.0.2) nokogiri (>= 1.5.9) mail (2.7.1) @@ -376,7 +397,7 @@ GEM mini_mime (1.1.2) mini_portile2 (2.8.0) minitest (5.15.0) - msgpack (1.4.4) + msgpack (1.5.1) multi_json (1.15.0) multipart-post (2.1.1) net-ldap (0.17.0) @@ -384,7 +405,7 @@ GEM net-ssh (>= 2.6.5, < 7.0.0) net-ssh (6.1.0) nio4r (2.5.8) - nokogiri (1.13.3) + nokogiri (1.13.4) mini_portile2 (~> 2.8.0) racc (~> 1.4) nsa (0.2.8) @@ -406,17 +427,27 @@ GEM omniauth-saml (1.10.3) omniauth (~> 1.3, >= 1.3.2) ruby-saml (~> 1.9) + openid_connect (1.3.0) + activemodel + attr_required (>= 1.0.0) + json-jwt (>= 1.5.0) + rack-oauth2 (>= 1.6.1) + swd (>= 1.0.0) + tzinfo + validate_email + validate_url + webfinger (>= 1.0.1) openssl (2.2.0) openssl-signature_algorithm (0.4.0) orm_adapter (0.5.0) - ox (2.14.9) - parallel (1.21.0) - parser (3.1.0.0) + ox (2.14.11) + parallel (1.22.1) + parser (3.1.1.0) ast (~> 2.4.1) parslet (2.0.0) pastel (0.8.0) tty-color (~> 0.5) - pg (1.3.3) + pg (1.3.5) pghero (2.8.2) activerecord (>= 5) pkg-config (1.4.7) @@ -438,35 +469,41 @@ GEM pry-rails (0.3.9) pry (>= 0.10.4) public_suffix (4.0.6) - puma (5.6.2) + puma (5.6.4) nio4r (~> 2.0) pundit (2.2.0) activesupport (>= 3.0.0) raabro (1.4.0) racc (1.6.0) rack (2.2.3) - rack-attack (6.5.0) + rack-attack (6.6.1) rack (>= 1.0, < 3) rack-cors (1.1.1) rack (>= 2.0.0) + rack-oauth2 (1.19.0) + activesupport + attr_required + httpclient + json-jwt (>= 1.11.0) + rack (>= 2.1.0) rack-proxy (0.7.0) rack rack-test (1.1.0) rack (>= 1.0, < 3) - rails (6.1.4.6) - actioncable (= 6.1.4.6) - actionmailbox (= 6.1.4.6) - actionmailer (= 6.1.4.6) - actionpack (= 6.1.4.6) - actiontext (= 6.1.4.6) - actionview (= 6.1.4.6) - activejob (= 6.1.4.6) - activemodel (= 6.1.4.6) - activerecord (= 6.1.4.6) - activestorage (= 6.1.4.6) - activesupport (= 6.1.4.6) + rails (6.1.5) + actioncable (= 6.1.5) + actionmailbox (= 6.1.5) + actionmailer (= 6.1.5) + actionpack (= 6.1.5) + actiontext (= 6.1.5) + actionview (= 6.1.5) + activejob (= 6.1.5) + activemodel (= 6.1.5) + activerecord (= 6.1.5) + activestorage (= 6.1.5) + activesupport (= 6.1.5) bundler (>= 1.15.0) - railties (= 6.1.4.6) + railties (= 6.1.5) sprockets-rails (>= 2.0.0) rails-controller-testing (1.0.5) actionpack (>= 5.0.1.rc1) @@ -482,11 +519,11 @@ GEM railties (>= 6.0.0, < 7) rails-settings-cached (0.6.6) rails (>= 4.2.0) - railties (6.1.4.6) - actionpack (= 6.1.4.6) - activesupport (= 6.1.4.6) + railties (6.1.5) + actionpack (= 6.1.5) + activesupport (= 6.1.5) method_source - rake (>= 0.13) + rake (>= 12.2) thor (~> 1.0) rainbow (3.1.1) rake (13.0.6) @@ -495,10 +532,10 @@ GEM rdf-normalize (0.5.0) rdf (~> 3.2) redis (4.5.1) - redis-namespace (1.8.1) + redis-namespace (1.8.2) redis (>= 3.0.4) - regexp_parser (2.2.0) - request_store (1.5.0) + regexp_parser (2.3.0) + request_store (1.5.1) rack (>= 1.4) responders (3.0.1) actionpack (>= 5.0) @@ -518,7 +555,7 @@ GEM rspec-mocks (3.11.0) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.11.0) - rspec-rails (5.1.0) + rspec-rails (5.1.1) actionpack (>= 5.2) activesupport (>= 5.2) railties (>= 5.2) @@ -532,18 +569,18 @@ GEM rspec-support (3.11.0) rspec_junit_formatter (0.5.1) rspec-core (>= 2, < 4, != 2.12.0) - rubocop (1.25.1) + rubocop (1.27.0) parallel (~> 1.10) parser (>= 3.1.0.0) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 1.8, < 3.0) rexml - rubocop-ast (>= 1.15.1, < 2.0) + rubocop-ast (>= 1.16.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 1.4.0, < 3.0) - rubocop-ast (1.15.1) - parser (>= 3.0.1.1) - rubocop-rails (2.13.2) + rubocop-ast (1.17.0) + parser (>= 3.1.1.0) + rubocop-rails (2.14.2) activesupport (>= 4.2.0) rack (>= 1.1) rubocop (>= 1.7.0, < 2.0) @@ -570,14 +607,14 @@ GEM redis (>= 4.2.0) sidekiq-bulk (0.2.0) sidekiq - sidekiq-scheduler (3.1.1) + sidekiq-scheduler (3.2.0) e2mmap redis (>= 3, < 5) rufus-scheduler (~> 3.2) sidekiq (>= 3) thwait tilt (>= 1.4.0) - sidekiq-unique-jobs (7.1.15) + sidekiq-unique-jobs (7.1.21) brpoplpush-redis_script (> 0.1.1, <= 2.0.0) concurrent-ruby (~> 1.0, >= 1.0.5) sidekiq (>= 5.0, < 8.0) @@ -593,6 +630,7 @@ GEM simplecov_json_formatter (~> 0.1) simplecov-html (0.12.3) simplecov_json_formatter (0.1.2) + smart_properties (1.17.0) sprockets (3.7.2) concurrent-ruby (~> 1.0) rack (> 1, < 3) @@ -603,11 +641,15 @@ GEM sshkit (1.21.2) net-scp (>= 1.1.2) net-ssh (>= 2.8.0) - stackprof (0.2.17) + stackprof (0.2.19) statsd-ruby (1.5.0) stoplight (2.2.1) strong_migrations (0.7.9) activerecord (>= 5) + swd (1.3.0) + activesupport (>= 3) + attr_required (>= 0.0.5) + httpclient (>= 2.4) temple (0.8.2) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) @@ -635,13 +677,19 @@ GEM unf (~> 0.1.0) tzinfo (2.0.4) concurrent-ruby (~> 1.0) - tzinfo-data (1.2021.5) + tzinfo-data (1.2022.1) tzinfo (>= 1.0.0) unf (0.1.4) unf_ext unf_ext (0.0.8) unicode-display_width (2.1.0) uniform_notifier (1.14.2) + validate_email (0.1.6) + activemodel (>= 3.0) + mail (>= 2.2.5) + validate_url (1.0.13) + activemodel (>= 3.0.0) + public_suffix warden (1.2.9) rack (>= 2.0.9) webauthn (3.0.0.alpha1) @@ -654,6 +702,9 @@ GEM safety_net_attestation (~> 0.4.0) securecompare (~> 1.0) tpm-key_attestation (~> 0.9.0) + webfinger (1.2.0) + activesupport + httpclient (>= 2.4) webmock (3.14.0) addressable (>= 2.8.0) crack (>= 0.3.2) @@ -687,12 +738,12 @@ DEPENDENCIES better_errors (~> 2.9) binding_of_caller (~> 1.0) blurhash (~> 0.1) - bootsnap (~> 1.10.3) + bootsnap (~> 1.11.1) brakeman (~> 5.2) browser bullet (~> 7.0) bundler-audit (~> 0.9) - capistrano (~> 3.16) + capistrano (~> 3.17) capistrano-rails (~> 1.6) capistrano-rbenv (~> 2.2) capistrano-yarn (~> 2.0) @@ -710,29 +761,30 @@ DEPENDENCIES doorkeeper (~> 5.5) dotenv-rails (~> 2.7) ed25519 (~> 1.3) - fabrication (~> 2.27) - faker (~> 2.19) + fabrication (~> 2.28) + faker (~> 2.20) fast_blank (~> 1.0) fastimage fog-core (<= 2.1.0) fog-openstack (~> 0.3) fuubar (~> 2.5) + gitlab-omniauth-openid-connect (~> 0.9.1) hamlit-rails (~> 0.2) hiredis (~> 0.6) htmlentities (~> 4.3) http (~> 5.0) http_accept_language (~> 2.1) httplog (~> 1.5.0) - i18n-tasks (~> 0.9) + i18n-tasks (~> 1.0) idn-ruby json-ld json-ld-preloaded (~> 3.2) kaminari (~> 1.2) kt-paperclip (~> 7.1) - letter_opener (~> 1.7) + letter_opener (~> 1.8) letter_opener_web (~> 2.0) link_header (~> 0.0) - lograge (~> 0.11) + lograge (~> 0.12) makara (~> 0.5) mario-redis-lock (~> 1.2) memory_profiler @@ -759,9 +811,9 @@ DEPENDENCIES puma (~> 5.6) pundit (~> 2.2) rack (~> 2.2.3) - rack-attack (~> 6.5) + rack-attack (~> 6.6) rack-cors (~> 1.1) - rails (~> 6.1.4) + rails (~> 6.1.5) rails-controller-testing (~> 1.0) rails-i18n (~> 6.0) rails-settings-cached (~> 0.6) @@ -773,14 +825,14 @@ DEPENDENCIES rspec-rails (~> 5.1) rspec-sidekiq (~> 3.1) rspec_junit_formatter (~> 0.5) - rubocop (~> 1.25) - rubocop-rails (~> 2.13) + rubocop (~> 1.27) + rubocop-rails (~> 2.14) ruby-progressbar (~> 1.11) sanitize (~> 6.0) scenic (~> 1.6) sidekiq (~> 6.4) sidekiq-bulk (~> 0.2.0) - sidekiq-scheduler (~> 3.1) + sidekiq-scheduler (~> 3.2) sidekiq-unique-jobs (~> 7.1) simple-navigation (~> 4.3) simple_form (~> 5.1) @@ -793,7 +845,7 @@ DEPENDENCIES thor (~> 1.2) tty-prompt (~> 0.23) twitter-text (~> 3.1.0) - tzinfo-data (~> 1.2021) + tzinfo-data (~> 1.2022) webauthn (~> 3.0.0.alpha1) webmock (~> 3.14) webpacker (~> 5.4) diff --git a/README.md b/README.md index 8aa575b45..4b48e071d 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ Click below to **learn more** in a video: - [View sponsors](https://joinmastodon.org/sponsors) - [Blog](https://blog.joinmastodon.org) - [Documentation](https://docs.joinmastodon.org) -- [Browse Mastodon servers](https://joinmastodon.org/#getting-started) +- [Browse Mastodon servers](https://joinmastodon.org/communities) - [Browse Mastodon apps](https://joinmastodon.org/apps) [patreon]: https://www.patreon.com/mastodon @@ -92,7 +92,7 @@ You can open issues for bugs you've found or features you think are missing. You ## License -Copyright (C) 2016-2021 Eugen Rochko & other Mastodon contributors (see [AUTHORS.md](AUTHORS.md)) +Copyright (C) 2016-2022 Eugen Rochko & other Mastodon contributors (see [AUTHORS.md](AUTHORS.md)) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. diff --git a/SECURITY.md b/SECURITY.md index 9d351fce6..12f50ed88 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,13 +1,20 @@ # Security Policy +If you believe you've identified a security vulnerability in Mastodon (a bug that allows something to happen that shouldn't be possible), you should submit the report through our [Bug Bounty Program][bug-bounty]. Alternatively, you can reach us at . + +You should *not* report such issues on GitHub or in other public spaces to give us time to publish a fix for the issue without exposing Mastodon's users to increased risk. + +## Scope + +A "vulnerability in Mastodon" is a vulnerability in the code distributed through our main source code repository on GitHub. Vulnerabilities that are specific to a given installation (e.g. misconfiguration) should be reported to the owner of that installation and not us. + ## Supported Versions | Version | Supported | | ------- | ------------------ | -| 3.4.x | :white_check_mark: | -| 3.3.x | :white_check_mark: | -| < 3.3 | :x: | +| 3.5.x | Yes | +| 3.4.x | Yes | +| 3.3.x | Yes | +| < 3.3 | No | -## Reporting a Vulnerability - -hello@joinmastodon.org +[bug-bounty]: https://app.intigriti.com/programs/mastodon/mastodonio/detail diff --git a/app.json b/app.json index 6b4365383..c694908c5 100644 --- a/app.json +++ b/app.json @@ -95,8 +95,5 @@ "scripts": { "postdeploy": "bundle exec rails db:migrate && bundle exec rails db:seed" }, - "addons": [ - "heroku-postgresql", - "heroku-redis" - ] + "addons": ["heroku-postgresql", "heroku-redis"] } diff --git a/app/chewy/statuses_index.rb b/app/chewy/statuses_index.rb index 1903c2ea3..1304aeedb 100644 --- a/app/chewy/statuses_index.rb +++ b/app/chewy/statuses_index.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true class StatusesIndex < Chewy::Index + include FormattingHelper + settings index: { refresh_interval: '15m' }, analysis: { filter: { english_stop: { @@ -53,11 +55,16 @@ class StatusesIndex < Chewy::Index data.each.with_object({}) { |(id, name), result| (result[id] ||= []).push(name) } end + crutch :votes do |collection| + data = ::PollVote.joins(:poll).where(poll: { status_id: collection.map(&:id) }).where(account: Account.local).pluck(:status_id, :account_id) + data.each.with_object({}) { |(id, name), result| (result[id] ||= []).push(name) } + end + root date_detection: false do field :id, type: 'long' field :account_id, type: 'long' - field :text, type: 'text', value: ->(status) { [status.spoiler_text, Formatter.instance.plaintext(status)].concat(status.media_attachments.map(&:description)).concat(status.preloadable_poll ? status.preloadable_poll.options : []).join("\n\n") } do + field :text, type: 'text', value: ->(status) { status.searchable_text } do field :stemmed, type: 'text', analyzer: 'content' end diff --git a/app/controllers/activitypub/base_controller.rb b/app/controllers/activitypub/base_controller.rb index 4cbc3ab8f..196d85a32 100644 --- a/app/controllers/activitypub/base_controller.rb +++ b/app/controllers/activitypub/base_controller.rb @@ -2,6 +2,7 @@ class ActivityPub::BaseController < Api::BaseController skip_before_action :require_authenticated_user! + skip_around_action :set_locale private diff --git a/app/controllers/activitypub/outboxes_controller.rb b/app/controllers/activitypub/outboxes_controller.rb index b2aab56a5..cd3992502 100644 --- a/app/controllers/activitypub/outboxes_controller.rb +++ b/app/controllers/activitypub/outboxes_controller.rb @@ -62,7 +62,7 @@ class ActivityPub::OutboxesController < ActivityPub::BaseController return unless page_requested? @statuses = cache_collection_paginated_by_id( - @account.statuses.permitted_for(@account, signed_request_account), + AccountStatusesFilter.new(@account, signed_request_account).results, Status, LIMIT, params_slice(:max_id, :min_id, :since_id) diff --git a/app/controllers/admin/dashboard_controller.rb b/app/controllers/admin/dashboard_controller.rb index e376baab2..da9c6dd16 100644 --- a/app/controllers/admin/dashboard_controller.rb +++ b/app/controllers/admin/dashboard_controller.rb @@ -2,6 +2,8 @@ module Admin class DashboardController < BaseController + include Redisable + def index @system_checks = Admin::SystemCheck.perform @time_period = (29.days.ago.to_date...Time.now.utc.to_date) @@ -15,10 +17,10 @@ module Admin def redis_info @redis_info ||= begin - if Redis.current.is_a?(Redis::Namespace) - Redis.current.redis.info + if redis.is_a?(Redis::Namespace) + redis.redis.info else - Redis.current.info + redis.info end end end diff --git a/app/controllers/admin/domain_blocks_controller.rb b/app/controllers/admin/domain_blocks_controller.rb index b140c454c..16defc1ea 100644 --- a/app/controllers/admin/domain_blocks_controller.rb +++ b/app/controllers/admin/domain_blocks_controller.rb @@ -56,10 +56,6 @@ module Admin end end - def show - authorize @domain_block, :show? - end - def destroy authorize @domain_block, :destroy? UnblockDomainService.new.call(@domain_block) diff --git a/app/controllers/admin/instances_controller.rb b/app/controllers/admin/instances_controller.rb index 306ec1f53..5c82331de 100644 --- a/app/controllers/admin/instances_controller.rb +++ b/app/controllers/admin/instances_controller.rb @@ -4,28 +4,26 @@ module Admin class InstancesController < BaseController before_action :set_instances, only: :index before_action :set_instance, except: :index - before_action :set_exhausted_deliveries_days, only: :show def index authorize :instance, :index? + preload_delivery_failures! end def show authorize :instance, :show? + @time_period = (6.days.ago.to_date...Time.now.utc.to_date) end def destroy authorize :instance, :destroy? - Admin::DomainPurgeWorker.perform_async(@instance.domain) - log_action :destroy, @instance redirect_to admin_instances_path, notice: I18n.t('admin.instances.destroyed_msg', domain: @instance.domain) end def clear_delivery_errors authorize :delivery, :clear_delivery_errors? - @instance.delivery_failure_tracker.clear_failures! redirect_to admin_instance_path(@instance.domain) end @@ -33,11 +31,9 @@ module Admin def restart_delivery authorize :delivery, :restart_delivery? - last_unavailable_domain = unavailable_domain - - if last_unavailable_domain.present? + if @instance.unavailable? @instance.delivery_failure_tracker.track_success! - log_action :destroy, last_unavailable_domain + log_action :destroy, @instance.unavailable_domain end redirect_to admin_instance_path(@instance.domain) @@ -45,8 +41,7 @@ module Admin def stop_delivery authorize :delivery, :stop_delivery? - - UnavailableDomain.create(domain: @instance.domain) + unavailable_domain = UnavailableDomain.create!(domain: @instance.domain) log_action :create, unavailable_domain redirect_to admin_instance_path(@instance.domain) end @@ -57,12 +52,11 @@ module Admin @instance = Instance.find(params[:id]) end - def set_exhausted_deliveries_days - @exhausted_deliveries_days = @instance.delivery_failure_tracker.exhausted_deliveries_days - end - def set_instances @instances = filtered_instances.page(params[:page]) + end + + def preload_delivery_failures! warning_domains_map = DeliveryFailureTracker.warning_domains_map @instances.each do |instance| @@ -70,10 +64,6 @@ module Admin end end - def unavailable_domain - UnavailableDomain.find_by(domain: @instance.domain) - end - def filtered_instances InstanceFilter.new(whitelist_mode? ? { allowed: true } : filter_params).results end diff --git a/app/controllers/admin/reports/actions_controller.rb b/app/controllers/admin/reports/actions_controller.rb index 05a4fb63d..5cb5c744f 100644 --- a/app/controllers/admin/reports/actions_controller.rb +++ b/app/controllers/admin/reports/actions_controller.rb @@ -7,7 +7,7 @@ class Admin::Reports::ActionsController < Admin::BaseController authorize @report, :show? case action_from_button - when 'delete' + when 'delete', 'mark_as_sensitive' status_batch_action = Admin::StatusBatchAction.new( type: action_from_button, status_ids: @report.status_ids, @@ -41,6 +41,8 @@ class Admin::Reports::ActionsController < Admin::BaseController def action_from_button if params[:delete] 'delete' + elsif params[:mark_as_sensitive] + 'mark_as_sensitive' elsif params[:silence] 'silence' elsif params[:suspend] diff --git a/app/controllers/admin/sign_in_token_authentications_controller.rb b/app/controllers/admin/sign_in_token_authentications_controller.rb deleted file mode 100644 index e620ab292..000000000 --- a/app/controllers/admin/sign_in_token_authentications_controller.rb +++ /dev/null @@ -1,27 +0,0 @@ -# frozen_string_literal: true - -module Admin - class SignInTokenAuthenticationsController < BaseController - before_action :set_target_user - - def create - authorize @user, :enable_sign_in_token_auth? - @user.update(skip_sign_in_token: false) - log_action :enable_sign_in_token_auth, @user - redirect_to admin_account_path(@user.account_id) - end - - def destroy - authorize @user, :disable_sign_in_token_auth? - @user.update(skip_sign_in_token: true) - log_action :disable_sign_in_token_auth, @user - redirect_to admin_account_path(@user.account_id) - end - - private - - def set_target_user - @user = User.find(params[:user_id]) - end - end -end diff --git a/app/controllers/api/base_controller.rb b/app/controllers/api/base_controller.rb index b863d8643..d96285b44 100644 --- a/app/controllers/api/base_controller.rb +++ b/app/controllers/api/base_controller.rb @@ -5,6 +5,7 @@ class Api::BaseController < ApplicationController DEFAULT_ACCOUNTS_LIMIT = 40 include RateLimitHeaders + include AccessTokenTrackingConcern skip_before_action :store_current_location skip_before_action :require_functional!, unless: :whitelist_mode? @@ -14,8 +15,6 @@ class Api::BaseController < ApplicationController protect_from_forgery with: :null_session - skip_around_action :set_locale - rescue_from ActiveRecord::RecordInvalid, Mastodon::ValidationError do |e| render json: { error: e.to_s }, status: 422 end diff --git a/app/controllers/api/v1/accounts/familiar_followers_controller.rb b/app/controllers/api/v1/accounts/familiar_followers_controller.rb new file mode 100644 index 000000000..b0bd8018a --- /dev/null +++ b/app/controllers/api/v1/accounts/familiar_followers_controller.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +class Api::V1::Accounts::FamiliarFollowersController < Api::BaseController + before_action -> { doorkeeper_authorize! :read, :'read:follows' } + before_action :require_user! + before_action :set_accounts + + def index + render json: familiar_followers.accounts, each_serializer: REST::FamiliarFollowersSerializer + end + + private + + def set_accounts + @accounts = Account.without_suspended.where(id: account_ids).select('id, hide_collections').index_by(&:id).values_at(*account_ids).compact + end + + def familiar_followers + FamiliarFollowersPresenter.new(@accounts, current_user.account_id) + end + + def account_ids + Array(params[:id]).map(&:to_i) + end +end diff --git a/app/controllers/api/v1/accounts/lookup_controller.rb b/app/controllers/api/v1/accounts/lookup_controller.rb index aee6be18a..8597f891d 100644 --- a/app/controllers/api/v1/accounts/lookup_controller.rb +++ b/app/controllers/api/v1/accounts/lookup_controller.rb @@ -12,5 +12,7 @@ class Api::V1::Accounts::LookupController < Api::BaseController def set_account @account = ResolveAccountService.new.call(params[:acct], skip_webfinger: true) || raise(ActiveRecord::RecordNotFound) + rescue Addressable::URI::InvalidURIError + raise(ActiveRecord::RecordNotFound) end end diff --git a/app/controllers/api/v1/accounts/statuses_controller.rb b/app/controllers/api/v1/accounts/statuses_controller.rb index f855f4fbe..3799c3a5e 100644 --- a/app/controllers/api/v1/accounts/statuses_controller.rb +++ b/app/controllers/api/v1/accounts/statuses_controller.rb @@ -25,53 +25,16 @@ class Api::V1::Accounts::StatusesController < Api::BaseController end def cached_account_statuses - statuses = truthy_param?(:pinned) ? pinned_scope : permitted_account_statuses - - statuses.merge!(only_media_scope) if truthy_param?(:only_media) - statuses.merge!(no_replies_scope) if truthy_param?(:exclude_replies) - statuses.merge!(no_reblogs_scope) if truthy_param?(:exclude_reblogs) - statuses.merge!(hashtag_scope) if params[:tagged].present? - cache_collection_paginated_by_id( - statuses, + AccountStatusesFilter.new(@account, current_account, params).results, Status, limit_param(DEFAULT_STATUSES_LIMIT), params_slice(:max_id, :since_id, :min_id) ) end - def permitted_account_statuses - @account.statuses.permitted_for(@account, current_account) - end - - def only_media_scope - Status.joins(:media_attachments).merge(@account.media_attachments.reorder(nil)).group(:id) - end - - def pinned_scope - @account.pinned_statuses.permitted_for(@account, current_account) - end - - def no_replies_scope - Status.without_replies - end - - def no_reblogs_scope - Status.without_reblogs - end - - def hashtag_scope - tag = Tag.find_normalized(params[:tagged]) - - if tag - Status.tagged_with(tag.id) - else - Status.none - end - end - def pagination_params(core_params) - params.slice(:limit, :only_media, :exclude_replies).permit(:limit, :only_media, :exclude_replies).merge(core_params) + params.slice(:limit, *AccountStatusesFilter::KEYS).permit(:limit, *AccountStatusesFilter::KEYS).merge(core_params) end def insert_pagination_headers diff --git a/app/controllers/api/v1/accounts_controller.rb b/app/controllers/api/v1/accounts_controller.rb index 5c47158e0..5134bfb94 100644 --- a/app/controllers/api/v1/accounts_controller.rb +++ b/app/controllers/api/v1/accounts_controller.rb @@ -2,9 +2,9 @@ class Api::V1::AccountsController < Api::BaseController before_action -> { authorize_if_got_token! :read, :'read:accounts' }, except: [:create, :follow, :unfollow, :remove_from_followers, :block, :unblock, :mute, :unmute] - before_action -> { doorkeeper_authorize! :follow, :'write:follows' }, only: [:follow, :unfollow, :remove_from_followers] - before_action -> { doorkeeper_authorize! :follow, :'write:mutes' }, only: [:mute, :unmute] - before_action -> { doorkeeper_authorize! :follow, :'write:blocks' }, only: [:block, :unblock] + before_action -> { doorkeeper_authorize! :follow, :write, :'write:follows' }, only: [:follow, :unfollow, :remove_from_followers] + before_action -> { doorkeeper_authorize! :follow, :write, :'write:mutes' }, only: [:mute, :unmute] + before_action -> { doorkeeper_authorize! :follow, :write, :'write:blocks' }, only: [:block, :unblock] before_action -> { doorkeeper_authorize! :write, :'write:accounts' }, only: [:create] before_action :require_user!, except: [:show, :create] diff --git a/app/controllers/api/v1/admin/account_actions_controller.rb b/app/controllers/api/v1/admin/account_actions_controller.rb index 15af50822..6c9e04402 100644 --- a/app/controllers/api/v1/admin/account_actions_controller.rb +++ b/app/controllers/api/v1/admin/account_actions_controller.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true class Api::V1::Admin::AccountActionsController < Api::BaseController - protect_from_forgery with: :exception - before_action -> { authorize_if_got_token! :'admin:write', :'admin:write:accounts' } before_action :require_staff! before_action :set_account diff --git a/app/controllers/api/v1/admin/accounts_controller.rb b/app/controllers/api/v1/admin/accounts_controller.rb index 65330b8c8..65ed69f7b 100644 --- a/app/controllers/api/v1/admin/accounts_controller.rb +++ b/app/controllers/api/v1/admin/accounts_controller.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true class Api::V1::Admin::AccountsController < Api::BaseController - protect_from_forgery with: :exception - include Authorization include AccountableConcern @@ -67,8 +65,9 @@ class Api::V1::Admin::AccountsController < Api::BaseController def destroy authorize @account, :destroy? + json = render_to_body json: @account, serializer: REST::Admin::AccountSerializer Admin::AccountDeletionWorker.perform_async(@account.id) - render json: @account, serializer: REST::Admin::AccountSerializer + render json: json end def unsensitive @@ -104,13 +103,27 @@ class Api::V1::Admin::AccountsController < Api::BaseController end def filtered_accounts - AccountFilter.new(filter_params).results + AccountFilter.new(translated_filter_params).results end def filter_params params.permit(*FILTER_PARAMS) end + def translated_filter_params + translated_params = { origin: 'local', status: 'active' }.merge(filter_params.slice(*AccountFilter::KEYS)) + + translated_params[:origin] = 'remote' if params[:remote].present? + + %i(active pending disabled silenced suspended).each do |status| + translated_params[:status] = status.to_s if params[status].present? + end + + translated_params[:permissions] = 'staff' if params[:staff].present? + + translated_params + end + def insert_pagination_headers set_pagination_headers(next_path, prev_path) end diff --git a/app/controllers/api/v1/admin/dimensions_controller.rb b/app/controllers/api/v1/admin/dimensions_controller.rb index b1f738990..49a5be1c3 100644 --- a/app/controllers/api/v1/admin/dimensions_controller.rb +++ b/app/controllers/api/v1/admin/dimensions_controller.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true class Api::V1::Admin::DimensionsController < Api::BaseController - protect_from_forgery with: :exception - before_action -> { authorize_if_got_token! :'admin:read' } before_action :require_staff! before_action :set_dimensions diff --git a/app/controllers/api/v1/admin/measures_controller.rb b/app/controllers/api/v1/admin/measures_controller.rb index d64c3cdf7..da95d3422 100644 --- a/app/controllers/api/v1/admin/measures_controller.rb +++ b/app/controllers/api/v1/admin/measures_controller.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true class Api::V1::Admin::MeasuresController < Api::BaseController - protect_from_forgery with: :exception - before_action -> { authorize_if_got_token! :'admin:read' } before_action :require_staff! before_action :set_measures diff --git a/app/controllers/api/v1/admin/reports_controller.rb b/app/controllers/api/v1/admin/reports_controller.rb index fbfd0ee12..865ba3d23 100644 --- a/app/controllers/api/v1/admin/reports_controller.rb +++ b/app/controllers/api/v1/admin/reports_controller.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true class Api::V1::Admin::ReportsController < Api::BaseController - protect_from_forgery with: :exception - include Authorization include AccountableConcern diff --git a/app/controllers/api/v1/admin/retention_controller.rb b/app/controllers/api/v1/admin/retention_controller.rb index 4af5a5c4d..98d1a3d81 100644 --- a/app/controllers/api/v1/admin/retention_controller.rb +++ b/app/controllers/api/v1/admin/retention_controller.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true class Api::V1::Admin::RetentionController < Api::BaseController - protect_from_forgery with: :exception - before_action -> { authorize_if_got_token! :'admin:read' } before_action :require_staff! before_action :set_cohorts diff --git a/app/controllers/api/v1/admin/trends/links_controller.rb b/app/controllers/api/v1/admin/trends/links_controller.rb index 63b3d9358..0a191fe4b 100644 --- a/app/controllers/api/v1/admin/trends/links_controller.rb +++ b/app/controllers/api/v1/admin/trends/links_controller.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true class Api::V1::Admin::Trends::LinksController < Api::BaseController - protect_from_forgery with: :exception - before_action -> { authorize_if_got_token! :'admin:read' } before_action :require_staff! before_action :set_links diff --git a/app/controllers/api/v1/admin/trends/statuses_controller.rb b/app/controllers/api/v1/admin/trends/statuses_controller.rb index 86633cc74..cb145f165 100644 --- a/app/controllers/api/v1/admin/trends/statuses_controller.rb +++ b/app/controllers/api/v1/admin/trends/statuses_controller.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true class Api::V1::Admin::Trends::StatusesController < Api::BaseController - protect_from_forgery with: :exception - before_action -> { authorize_if_got_token! :'admin:read' } before_action :require_staff! before_action :set_statuses diff --git a/app/controllers/api/v1/admin/trends/tags_controller.rb b/app/controllers/api/v1/admin/trends/tags_controller.rb index 5cc4c269d..9c28b0412 100644 --- a/app/controllers/api/v1/admin/trends/tags_controller.rb +++ b/app/controllers/api/v1/admin/trends/tags_controller.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true class Api::V1::Admin::Trends::TagsController < Api::BaseController - protect_from_forgery with: :exception - before_action -> { authorize_if_got_token! :'admin:read' } before_action :require_staff! before_action :set_tags diff --git a/app/controllers/api/v1/blocks_controller.rb b/app/controllers/api/v1/blocks_controller.rb index 586cdfca9..a65e762c9 100644 --- a/app/controllers/api/v1/blocks_controller.rb +++ b/app/controllers/api/v1/blocks_controller.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class Api::V1::BlocksController < Api::BaseController - before_action -> { doorkeeper_authorize! :follow, :'read:blocks' } + before_action -> { doorkeeper_authorize! :follow, :read, :'read:blocks' } before_action :require_user! after_action :insert_pagination_headers diff --git a/app/controllers/api/v1/bookmarks_controller.rb b/app/controllers/api/v1/bookmarks_controller.rb index 46621ed5d..8bc616216 100644 --- a/app/controllers/api/v1/bookmarks_controller.rb +++ b/app/controllers/api/v1/bookmarks_controller.rb @@ -24,7 +24,7 @@ class Api::V1::BookmarksController < Api::BaseController end def results - @_results ||= account_bookmarks.eager_load(:status).to_a_paginated_by_id( + @_results ||= account_bookmarks.joins(:status).eager_load(:status).to_a_paginated_by_id( limit_param(DEFAULT_STATUSES_LIMIT), params_slice(:max_id, :since_id, :min_id) ) diff --git a/app/controllers/api/v1/domain_blocks_controller.rb b/app/controllers/api/v1/domain_blocks_controller.rb index 5bb02d834..1891261b9 100644 --- a/app/controllers/api/v1/domain_blocks_controller.rb +++ b/app/controllers/api/v1/domain_blocks_controller.rb @@ -3,8 +3,8 @@ class Api::V1::DomainBlocksController < Api::BaseController BLOCK_LIMIT = 100 - before_action -> { doorkeeper_authorize! :follow, :'read:blocks' }, only: :show - before_action -> { doorkeeper_authorize! :follow, :'write:blocks' }, except: :show + before_action -> { doorkeeper_authorize! :follow, :read, :'read:blocks' }, only: :show + before_action -> { doorkeeper_authorize! :follow, :write, :'write:blocks' }, except: :show before_action :require_user! after_action :insert_pagination_headers, only: :show diff --git a/app/controllers/api/v1/emails/confirmations_controller.rb b/app/controllers/api/v1/emails/confirmations_controller.rb index f1d9954d0..3faaea2fb 100644 --- a/app/controllers/api/v1/emails/confirmations_controller.rb +++ b/app/controllers/api/v1/emails/confirmations_controller.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class Api::V1::Emails::ConfirmationsController < Api::BaseController - before_action :doorkeeper_authorize! + before_action -> { doorkeeper_authorize! :write, :'write:accounts' } before_action :require_user_owned_by_application! before_action :require_user_not_confirmed! @@ -19,6 +19,6 @@ class Api::V1::Emails::ConfirmationsController < Api::BaseController end def require_user_not_confirmed! - render json: { error: 'This method is only available while the e-mail is awaiting confirmation' }, status: :forbidden if current_user.confirmed? || current_user.unconfirmed_email.blank? + render json: { error: 'This method is only available while the e-mail is awaiting confirmation' }, status: :forbidden unless !current_user.confirmed? || current_user.unconfirmed_email.present? end end diff --git a/app/controllers/api/v1/favourites_controller.rb b/app/controllers/api/v1/favourites_controller.rb index 45c7c3c3a..194ca0266 100644 --- a/app/controllers/api/v1/favourites_controller.rb +++ b/app/controllers/api/v1/favourites_controller.rb @@ -24,7 +24,7 @@ class Api::V1::FavouritesController < Api::BaseController end def results - @_results ||= account_favourites.eager_load(:status).to_a_paginated_by_id( + @_results ||= account_favourites.joins(:status).eager_load(:status).to_a_paginated_by_id( limit_param(DEFAULT_STATUSES_LIMIT), params_slice(:max_id, :since_id, :min_id) ) diff --git a/app/controllers/api/v1/follow_requests_controller.rb b/app/controllers/api/v1/follow_requests_controller.rb index f4b2a74d0..54ff0e11d 100644 --- a/app/controllers/api/v1/follow_requests_controller.rb +++ b/app/controllers/api/v1/follow_requests_controller.rb @@ -1,8 +1,8 @@ # frozen_string_literal: true class Api::V1::FollowRequestsController < Api::BaseController - before_action -> { doorkeeper_authorize! :follow, :'read:follows' }, only: :index - before_action -> { doorkeeper_authorize! :follow, :'write:follows' }, except: :index + before_action -> { doorkeeper_authorize! :follow, :read, :'read:follows' }, only: :index + before_action -> { doorkeeper_authorize! :follow, :write, :'write:follows' }, except: :index before_action :require_user! after_action :insert_pagination_headers, only: :index @@ -13,7 +13,7 @@ class Api::V1::FollowRequestsController < Api::BaseController def authorize AuthorizeFollowService.new.call(account, current_account) - NotifyService.new.call(current_account, :follow, Follow.find_by(account: account, target_account: current_account)) + LocalNotificationWorker.perform_async(current_account.id, Follow.find_by(account: account, target_account: current_account).id, 'Follow', 'follow') render json: account, serializer: REST::RelationshipSerializer, relationships: relationships end diff --git a/app/controllers/api/v1/media_controller.rb b/app/controllers/api/v1/media_controller.rb index 72094790f..f9c935bf3 100644 --- a/app/controllers/api/v1/media_controller.rb +++ b/app/controllers/api/v1/media_controller.rb @@ -31,7 +31,7 @@ class Api::V1::MediaController < Api::BaseController end def set_media_attachment - @media_attachment = current_account.media_attachments.unattached.find(params[:id]) + @media_attachment = current_account.media_attachments.where(status_id: nil).find(params[:id]) end def check_processing diff --git a/app/controllers/api/v1/mutes_controller.rb b/app/controllers/api/v1/mutes_controller.rb index fd52511d7..6cde53a2a 100644 --- a/app/controllers/api/v1/mutes_controller.rb +++ b/app/controllers/api/v1/mutes_controller.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class Api::V1::MutesController < Api::BaseController - before_action -> { doorkeeper_authorize! :follow, :'read:mutes' } + before_action -> { doorkeeper_authorize! :follow, :read, :'read:mutes' } before_action :require_user! after_action :insert_pagination_headers diff --git a/app/controllers/api/v1/notifications_controller.rb b/app/controllers/api/v1/notifications_controller.rb index f9d780839..6d464997e 100644 --- a/app/controllers/api/v1/notifications_controller.rb +++ b/app/controllers/api/v1/notifications_controller.rb @@ -35,13 +35,18 @@ class Api::V1::NotificationsController < Api::BaseController limit_param(DEFAULT_NOTIFICATIONS_LIMIT), params_slice(:max_id, :since_id, :min_id) ) + Notification.preload_cache_collection_target_statuses(notifications) do |target_statuses| cache_collection(target_statuses, Status) end end def browserable_account_notifications - current_account.notifications.without_suspended.browserable(exclude_types, from_account) + current_account.notifications.without_suspended.browserable( + types: Array(browserable_params[:types]), + exclude_types: Array(browserable_params[:exclude_types]), + from_account_id: browserable_params[:account_id] + ) end def target_statuses_from_notifications @@ -72,17 +77,11 @@ class Api::V1::NotificationsController < Api::BaseController @notifications.first.id end - def exclude_types - val = params.permit(exclude_types: [])[:exclude_types] || [] - val = [val] unless val.is_a?(Enumerable) - val - end - - def from_account - params[:account_id] + def browserable_params + params.permit(:account_id, types: [], exclude_types: []) end def pagination_params(core_params) - params.slice(:limit, :exclude_types).permit(:limit, exclude_types: []).merge(core_params) + params.slice(:limit, :account_id, :types, :exclude_types).permit(:limit, :account_id, types: [], exclude_types: []).merge(core_params) end end diff --git a/app/controllers/api/v1/reports_controller.rb b/app/controllers/api/v1/reports_controller.rb index 052d70cc8..8ff6c8fe5 100644 --- a/app/controllers/api/v1/reports_controller.rb +++ b/app/controllers/api/v1/reports_controller.rb @@ -10,9 +10,7 @@ class Api::V1::ReportsController < Api::BaseController @report = ReportService.new.call( current_account, reported_account, - status_ids: reported_status_ids, - comment: report_params[:comment], - forward: report_params[:forward] + report_params ) render json: @report, serializer: REST::ReportSerializer @@ -20,14 +18,6 @@ class Api::V1::ReportsController < Api::BaseController private - def reported_status_ids - reported_account.statuses.with_discarded.find(status_ids).pluck(:id) - end - - def status_ids - Array(report_params[:status_ids]) - end - def reported_account Account.find(report_params[:account_id]) end diff --git a/app/controllers/api/v1/statuses_controller.rb b/app/controllers/api/v1/statuses_controller.rb index dc63241de..6c4625fb3 100644 --- a/app/controllers/api/v1/statuses_controller.rb +++ b/app/controllers/api/v1/statuses_controller.rb @@ -10,6 +10,7 @@ class Api::V1::StatusesController < Api::BaseController before_action :set_thread, only: [:create] override_rate_limit_headers :create, family: :statuses + override_rate_limit_headers :update, family: :statuses # This API was originally unlimited, pagination cannot be introduced without # breaking backwards-compatibility. Arbitrarily high number to cover most @@ -80,10 +81,12 @@ class Api::V1::StatusesController < Api::BaseController authorize @status, :destroy? @status.discard - RemovalWorker.perform_async(@status.id, { 'redraft' => true }) @status.account.statuses_count = @status.account.statuses_count - 1 + json = render_to_body json: @status, serializer: REST::StatusSerializer, source_requested: true - render json: @status, serializer: REST::StatusSerializer, source_requested: true + RemovalWorker.perform_async(@status.id, { 'redraft' => true }) + + render json: json end private @@ -96,8 +99,9 @@ class Api::V1::StatusesController < Api::BaseController end def set_thread - @thread = status_params[:in_reply_to_id].blank? ? nil : Status.find(status_params[:in_reply_to_id]) - rescue ActiveRecord::RecordNotFound + @thread = Status.find(status_params[:in_reply_to_id]) if status_params[:in_reply_to_id].present? + authorize(@thread, :show?) if @thread.present? + rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError render json: { error: I18n.t('statuses.errors.in_reply_not_found') }, status: 404 end diff --git a/app/controllers/api/v1/trends/links_controller.rb b/app/controllers/api/v1/trends/links_controller.rb index ad20e7f8b..2385fe438 100644 --- a/app/controllers/api/v1/trends/links_controller.rb +++ b/app/controllers/api/v1/trends/links_controller.rb @@ -3,6 +3,10 @@ class Api::V1::Trends::LinksController < Api::BaseController before_action :set_links + after_action :insert_pagination_headers + + DEFAULT_LINKS_LIMIT = 10 + def index render json: @links, each_serializer: REST::Trends::LinkSerializer end @@ -20,6 +24,30 @@ class Api::V1::Trends::LinksController < Api::BaseController end def links_from_trends - Trends.links.query.allowed.in_locale(content_locale).limit(limit_param(10)) + Trends.links.query.allowed.in_locale(content_locale).offset(offset_param).limit(limit_param(DEFAULT_LINKS_LIMIT)) + end + + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + + def pagination_params(core_params) + params.slice(:limit).permit(:limit).merge(core_params) + end + + def next_path + api_v1_trends_links_url pagination_params(offset: offset_param + limit_param(DEFAULT_LINKS_LIMIT)) if records_continue? + end + + def prev_path + api_v1_trends_links_url pagination_params(offset: offset_param - limit_param(DEFAULT_LINKS_LIMIT)) if offset_param > limit_param(DEFAULT_LINKS_LIMIT) + end + + def records_continue? + @links.size == limit_param(DEFAULT_LINKS_LIMIT) + end + + def offset_param + params[:offset].to_i end end diff --git a/app/controllers/api/v1/trends/statuses_controller.rb b/app/controllers/api/v1/trends/statuses_controller.rb index d4ec97ae5..1f2fff582 100644 --- a/app/controllers/api/v1/trends/statuses_controller.rb +++ b/app/controllers/api/v1/trends/statuses_controller.rb @@ -3,6 +3,8 @@ class Api::V1::Trends::StatusesController < Api::BaseController before_action :set_statuses + after_action :insert_pagination_headers + def index render json: @statuses, each_serializer: REST::StatusSerializer end @@ -22,6 +24,30 @@ class Api::V1::Trends::StatusesController < Api::BaseController def statuses_from_trends scope = Trends.statuses.query.allowed.in_locale(content_locale) scope = scope.filtered_for(current_account) if user_signed_in? - scope.limit(limit_param(DEFAULT_STATUSES_LIMIT)) + scope.offset(offset_param).limit(limit_param(DEFAULT_STATUSES_LIMIT)) + end + + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + + def pagination_params(core_params) + params.slice(:limit).permit(:limit).merge(core_params) + end + + def next_path + api_v1_trends_statuses_url pagination_params(offset: offset_param + limit_param(DEFAULT_STATUSES_LIMIT)) if records_continue? + end + + def prev_path + api_v1_trends_statuses_url pagination_params(offset: offset_param - limit_param(DEFAULT_STATUSES_LIMIT)) if offset_param > limit_param(DEFAULT_STATUSES_LIMIT) + end + + def offset_param + params[:offset].to_i + end + + def records_continue? + @statuses.size == limit_param(DEFAULT_STATUSES_LIMIT) end end diff --git a/app/controllers/api/v1/trends/tags_controller.rb b/app/controllers/api/v1/trends/tags_controller.rb index 1334b72d2..38003f599 100644 --- a/app/controllers/api/v1/trends/tags_controller.rb +++ b/app/controllers/api/v1/trends/tags_controller.rb @@ -3,6 +3,10 @@ class Api::V1::Trends::TagsController < Api::BaseController before_action :set_tags + after_action :insert_pagination_headers + + DEFAULT_TAGS_LIMIT = 10 + def index render json: @tags, each_serializer: REST::TagSerializer end @@ -12,10 +16,34 @@ class Api::V1::Trends::TagsController < Api::BaseController def set_tags @tags = begin if Setting.trends - Trends.tags.query.allowed.limit(limit_param(10)) + Trends.tags.query.allowed.offset(offset_param).limit(limit_param(DEFAULT_TAGS_LIMIT)) else [] end end end + + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + + def pagination_params(core_params) + params.slice(:limit).permit(:limit).merge(core_params) + end + + def next_path + api_v1_trends_tags_url pagination_params(offset: offset_param + limit_param(DEFAULT_TAGS_LIMIT)) if records_continue? + end + + def prev_path + api_v1_trends_tags_url pagination_params(offset: offset_param - limit_param(DEFAULT_TAGS_LIMIT)) if offset_param > limit_param(DEFAULT_TAGS_LIMIT) + end + + def offset_param + params[:offset].to_i + end + + def records_continue? + @tags.size == limit_param(DEFAULT_TAGS_LIMIT) + end end diff --git a/app/controllers/api/v2/admin/accounts_controller.rb b/app/controllers/api/v2/admin/accounts_controller.rb new file mode 100644 index 000000000..a89e6835e --- /dev/null +++ b/app/controllers/api/v2/admin/accounts_controller.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +class Api::V2::Admin::AccountsController < Api::V1::Admin::AccountsController + FILTER_PARAMS = %i( + origin + status + permissions + username + by_domain + display_name + email + ip + invited_by + ).freeze + + PAGINATION_PARAMS = (%i(limit) + FILTER_PARAMS).freeze + + private + + def filtered_accounts + AccountFilter.new(filter_params).results + end + + def filter_params + params.permit(*FILTER_PARAMS) + end + + def pagination_params(core_params) + params.slice(*PAGINATION_PARAMS).permit(*PAGINATION_PARAMS).merge(core_params) + end +end diff --git a/app/controllers/api/v2/search_controller.rb b/app/controllers/api/v2/search_controller.rb index f17431dd1..a30560133 100644 --- a/app/controllers/api/v2/search_controller.rb +++ b/app/controllers/api/v2/search_controller.rb @@ -11,6 +11,10 @@ class Api::V2::SearchController < Api::BaseController def index @search = Search.new(search_results) render json: @search, serializer: REST::SearchSerializer + rescue Mastodon::SyntaxError + unprocessable_entity + rescue ActiveRecord::RecordNotFound + not_found end private diff --git a/app/controllers/api/web/embeds_controller.rb b/app/controllers/api/web/embeds_controller.rb index 741ba910f..58f6345e6 100644 --- a/app/controllers/api/web/embeds_controller.rb +++ b/app/controllers/api/web/embeds_controller.rb @@ -15,7 +15,7 @@ class Api::Web::EmbedsController < Api::Web::BaseController return not_found if oembed.nil? begin - oembed[:html] = Formatter.instance.sanitize(oembed[:html], Sanitize::Config::MASTODON_OEMBED) + oembed[:html] = Sanitize.fragment(oembed[:html], Sanitize::Config::MASTODON_OEMBED) rescue ArgumentError return not_found end diff --git a/app/controllers/auth/omniauth_callbacks_controller.rb b/app/controllers/auth/omniauth_callbacks_controller.rb index 991a50b03..f9cf6d655 100644 --- a/app/controllers/auth/omniauth_callbacks_controller.rb +++ b/app/controllers/auth/omniauth_callbacks_controller.rb @@ -4,8 +4,6 @@ class Auth::OmniauthCallbacksController < Devise::OmniauthCallbacksController skip_before_action :verify_authenticity_token def self.provides_callback_for(provider) - provider_id = provider.to_s.chomp '_oauth2' - define_method provider do @user = User.find_for_oauth(request.env['omniauth.auth'], current_user) @@ -20,7 +18,7 @@ class Auth::OmniauthCallbacksController < Devise::OmniauthCallbacksController ) sign_in_and_redirect @user, event: :authentication - set_flash_message(:notice, :success, kind: provider_id.capitalize) if is_navigational_format? + set_flash_message(:notice, :success, kind: Devise.omniauth_configs[provider].strategy.display_name.capitalize) if is_navigational_format? else session["devise.#{provider}_data"] = request.env['omniauth.auth'] redirect_to new_user_registration_url @@ -33,7 +31,7 @@ class Auth::OmniauthCallbacksController < Devise::OmniauthCallbacksController end def after_sign_in_path_for(resource) - if resource.email_verified? + if resource.email_present? root_path else auth_setup_path(missing_email: '1') diff --git a/app/controllers/auth/registrations_controller.rb b/app/controllers/auth/registrations_controller.rb index 3b025838b..1c3adbd78 100644 --- a/app/controllers/auth/registrations_controller.rb +++ b/app/controllers/auth/registrations_controller.rb @@ -127,7 +127,7 @@ class Auth::RegistrationsController < Devise::RegistrationsController end def set_strikes - @strikes = current_account.strikes.active.latest + @strikes = current_account.strikes.recent.latest end def require_not_suspended! diff --git a/app/controllers/auth/sessions_controller.rb b/app/controllers/auth/sessions_controller.rb index 4d2695bf5..c4c8151e3 100644 --- a/app/controllers/auth/sessions_controller.rb +++ b/app/controllers/auth/sessions_controller.rb @@ -8,7 +8,6 @@ class Auth::SessionsController < Devise::SessionsController skip_before_action :update_user_sign_in include TwoFactorAuthenticationConcern - include SignInTokenAuthenticationConcern before_action :set_instance_presenter, only: [:new] before_action :set_body_classes @@ -66,7 +65,7 @@ class Auth::SessionsController < Devise::SessionsController end def user_params - params.require(:user).permit(:email, :password, :otp_attempt, :sign_in_token_attempt, credential: {}) + params.require(:user).permit(:email, :password, :otp_attempt, credential: {}) end def after_sign_in_path_for(resource) @@ -142,6 +141,12 @@ class Auth::SessionsController < Devise::SessionsController ip: request.remote_ip, user_agent: request.user_agent ) + + UserMailer.suspicious_sign_in(user, request.remote_ip, request.user_agent, Time.now.utc).deliver_later! if suspicious_sign_in?(user) + end + + def suspicious_sign_in?(user) + SuspiciousSignInDetector.new(user).suspicious?(request) end def on_authentication_failure(user, security_measure, failure_reason) diff --git a/app/controllers/authorize_interactions_controller.rb b/app/controllers/authorize_interactions_controller.rb index 29c0288d0..02a6b6d06 100644 --- a/app/controllers/authorize_interactions_controller.rb +++ b/app/controllers/authorize_interactions_controller.rb @@ -13,7 +13,7 @@ class AuthorizeInteractionsController < ApplicationController if @resource.is_a?(Account) render :show elsif @resource.is_a?(Status) - redirect_to web_url("statuses/#{@resource.id}") + redirect_to web_url("@#{@resource.account.pretty_acct}/#{@resource.id}") else render :error end @@ -25,15 +25,17 @@ class AuthorizeInteractionsController < ApplicationController else render :error end - rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError + rescue ActiveRecord::RecordNotFound render :error end private def set_resource - @resource = located_resource || render(:error) + @resource = located_resource authorize(@resource, :show?) if @resource.is_a?(Status) + rescue Mastodon::NotPermittedError + not_found end def located_resource diff --git a/app/controllers/concerns/access_token_tracking_concern.rb b/app/controllers/concerns/access_token_tracking_concern.rb new file mode 100644 index 000000000..cf60cfb99 --- /dev/null +++ b/app/controllers/concerns/access_token_tracking_concern.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +module AccessTokenTrackingConcern + extend ActiveSupport::Concern + + ACCESS_TOKEN_UPDATE_FREQUENCY = 24.hours.freeze + + included do + before_action :update_access_token_last_used + end + + private + + def update_access_token_last_used + doorkeeper_token.update_last_used(request) if access_token_needs_update? + end + + def access_token_needs_update? + doorkeeper_token.present? && (doorkeeper_token.last_used_at.nil? || doorkeeper_token.last_used_at < ACCESS_TOKEN_UPDATE_FREQUENCY.ago) + end +end diff --git a/app/controllers/concerns/session_tracking_concern.rb b/app/controllers/concerns/session_tracking_concern.rb index 45361b019..eaaa4ac59 100644 --- a/app/controllers/concerns/session_tracking_concern.rb +++ b/app/controllers/concerns/session_tracking_concern.rb @@ -3,7 +3,7 @@ module SessionTrackingConcern extend ActiveSupport::Concern - UPDATE_SIGN_IN_HOURS = 24 + SESSION_UPDATE_FREQUENCY = 24.hours.freeze included do before_action :set_session_activity @@ -17,6 +17,6 @@ module SessionTrackingConcern end def session_needs_update? - !current_session.nil? && current_session.updated_at < UPDATE_SIGN_IN_HOURS.hours.ago + !current_session.nil? && current_session.updated_at < SESSION_UPDATE_FREQUENCY.ago end end diff --git a/app/controllers/concerns/sign_in_token_authentication_concern.rb b/app/controllers/concerns/sign_in_token_authentication_concern.rb deleted file mode 100644 index 384c5c50c..000000000 --- a/app/controllers/concerns/sign_in_token_authentication_concern.rb +++ /dev/null @@ -1,56 +0,0 @@ -# frozen_string_literal: true - -module SignInTokenAuthenticationConcern - extend ActiveSupport::Concern - - included do - prepend_before_action :authenticate_with_sign_in_token, if: :sign_in_token_required?, only: [:create] - end - - def sign_in_token_required? - find_user&.suspicious_sign_in?(request.remote_ip) - end - - def valid_sign_in_token_attempt?(user) - Devise.secure_compare(user.sign_in_token, user_params[:sign_in_token_attempt]) - end - - def authenticate_with_sign_in_token - if user_params[:email].present? - user = self.resource = find_user_from_params - prompt_for_sign_in_token(user) if user&.external_or_valid_password?(user_params[:password]) - elsif session[:attempt_user_id] - user = self.resource = User.find_by(id: session[:attempt_user_id]) - return if user.nil? - - if session[:attempt_user_updated_at] != user.updated_at.to_s - restart_session - elsif user_params.key?(:sign_in_token_attempt) - authenticate_with_sign_in_token_attempt(user) - end - end - end - - def authenticate_with_sign_in_token_attempt(user) - if valid_sign_in_token_attempt?(user) - on_authentication_success(user, :sign_in_token) - else - on_authentication_failure(user, :sign_in_token, :invalid_sign_in_token) - flash.now[:alert] = I18n.t('users.invalid_sign_in_token') - prompt_for_sign_in_token(user) - end - end - - def prompt_for_sign_in_token(user) - if user.sign_in_token_expired? - user.generate_sign_in_token && user.save - UserMailer.sign_in_token(user, request.remote_ip, request.user_agent, Time.now.utc.to_s).deliver_later! - end - - set_attempt_session(user) - - @body_classes = 'lighter' - - set_locale { render :sign_in_token } - end -end diff --git a/app/controllers/concerns/user_tracking_concern.rb b/app/controllers/concerns/user_tracking_concern.rb index 45f3aab0d..e960cce53 100644 --- a/app/controllers/concerns/user_tracking_concern.rb +++ b/app/controllers/concerns/user_tracking_concern.rb @@ -3,7 +3,7 @@ module UserTrackingConcern extend ActiveSupport::Concern - UPDATE_SIGN_IN_FREQUENCY = 24.hours.freeze + SIGN_IN_UPDATE_FREQUENCY = 24.hours.freeze included do before_action :update_user_sign_in @@ -16,6 +16,6 @@ module UserTrackingConcern end def user_needs_sign_in_update? - user_signed_in? && (current_user.current_sign_in_at.nil? || current_user.current_sign_in_at < UPDATE_SIGN_IN_FREQUENCY.ago) + user_signed_in? && (current_user.current_sign_in_at.nil? || current_user.current_sign_in_at < SIGN_IN_UPDATE_FREQUENCY.ago) end end diff --git a/app/controllers/disputes/strikes_controller.rb b/app/controllers/disputes/strikes_controller.rb index d41c5c727..d85dcb4d5 100644 --- a/app/controllers/disputes/strikes_controller.rb +++ b/app/controllers/disputes/strikes_controller.rb @@ -1,7 +1,11 @@ # frozen_string_literal: true class Disputes::StrikesController < Disputes::BaseController - before_action :set_strike + before_action :set_strike, only: [:show] + + def index + @strikes = current_account.strikes.latest + end def show authorize @strike, :show? diff --git a/app/controllers/follower_accounts_controller.rb b/app/controllers/follower_accounts_controller.rb index b3589a39f..f3f8336c9 100644 --- a/app/controllers/follower_accounts_controller.rb +++ b/app/controllers/follower_accounts_controller.rb @@ -15,13 +15,13 @@ class FollowerAccountsController < ApplicationController format.html do expires_in 0, public: true unless user_signed_in? - next if @account.user_hides_network? + next if @account.hide_collections? follows end format.json do - raise Mastodon::NotPermittedError if page_requested? && @account.user_hides_network? + raise Mastodon::NotPermittedError if page_requested? && @account.hide_collections? expires_in(page_requested? ? 0 : 3.minutes, public: public_fetch_mode?) @@ -82,7 +82,7 @@ class FollowerAccountsController < ApplicationController end def restrict_fields_to - if page_requested? || !@account.user_hides_network? + if page_requested? || !@account.hide_collections? # Return all fields else %i(id type total_items) diff --git a/app/controllers/following_accounts_controller.rb b/app/controllers/following_accounts_controller.rb index 8a72dc475..69f0321f8 100644 --- a/app/controllers/following_accounts_controller.rb +++ b/app/controllers/following_accounts_controller.rb @@ -15,13 +15,16 @@ class FollowingAccountsController < ApplicationController format.html do expires_in 0, public: true unless user_signed_in? - next if @account.user_hides_network? + next if @account.hide_collections? follows end format.json do - raise Mastodon::NotPermittedError if page_requested? && @account.user_hides_network? + if page_requested? && @account.hide_collections? + forbidden + next + end expires_in(page_requested? ? 0 : 3.minutes, public: public_fetch_mode?) @@ -82,7 +85,7 @@ class FollowingAccountsController < ApplicationController end def restrict_fields_to - if page_requested? || !@account.user_hides_network? + if page_requested? || !@account.hide_collections? # Return all fields else %i(id type total_items) diff --git a/app/controllers/media_proxy_controller.rb b/app/controllers/media_proxy_controller.rb index 5596e92d1..d2a4cb207 100644 --- a/app/controllers/media_proxy_controller.rb +++ b/app/controllers/media_proxy_controller.rb @@ -3,6 +3,7 @@ class MediaProxyController < ApplicationController include RoutingHelper include Authorization + include Redisable skip_before_action :store_current_location skip_before_action :require_functional! @@ -45,7 +46,7 @@ class MediaProxyController < ApplicationController end def lock_options - { redis: Redis.current, key: "media_download:#{params[:id]}", autorelease: 15.minutes.seconds } + { redis: redis, key: "media_download:#{params[:id]}", autorelease: 15.minutes.seconds } end def reject_media? diff --git a/app/controllers/oauth/tokens_controller.rb b/app/controllers/oauth/tokens_controller.rb index fa6d58f25..34087b20b 100644 --- a/app/controllers/oauth/tokens_controller.rb +++ b/app/controllers/oauth/tokens_controller.rb @@ -2,7 +2,8 @@ class Oauth::TokensController < Doorkeeper::TokensController def revoke - unsubscribe_for_token if authorized? && token.accessible? + unsubscribe_for_token if token.present? && authorized? && token.accessible? + super end diff --git a/app/controllers/settings/exports_controller.rb b/app/controllers/settings/exports_controller.rb index 30138d29e..1638d3412 100644 --- a/app/controllers/settings/exports_controller.rb +++ b/app/controllers/settings/exports_controller.rb @@ -2,6 +2,7 @@ class Settings::ExportsController < Settings::BaseController include Authorization + include Redisable skip_before_action :require_functional! @@ -28,6 +29,6 @@ class Settings::ExportsController < Settings::BaseController end def lock_options - { redis: Redis.current, key: "backup:#{current_user.id}" } + { redis: redis, key: "backup:#{current_user.id}" } end end diff --git a/app/controllers/settings/preferences_controller.rb b/app/controllers/settings/preferences_controller.rb index 32b5d7948..bfe651bc6 100644 --- a/app/controllers/settings/preferences_controller.rb +++ b/app/controllers/settings/preferences_controller.rb @@ -47,7 +47,6 @@ class Settings::PreferencesController < Settings::BaseController :setting_system_font_ui, :setting_noindex, :setting_theme, - :setting_hide_network, :setting_aggregate_reblogs, :setting_show_application, :setting_advanced_layout, @@ -55,7 +54,8 @@ class Settings::PreferencesController < Settings::BaseController :setting_use_pending_items, :setting_trends, :setting_crop_images, - notification_emails: %i(follow follow_request reblog favourite mention digest report pending_account trending_tag), + :setting_always_send_emails, + notification_emails: %i(follow follow_request reblog favourite mention digest report pending_account trending_tag appeal), interactions: %i(must_be_follower must_be_following must_be_following_dm) ) end diff --git a/app/controllers/settings/profiles_controller.rb b/app/controllers/settings/profiles_controller.rb index 0c15447a6..be5b4f302 100644 --- a/app/controllers/settings/profiles_controller.rb +++ b/app/controllers/settings/profiles_controller.rb @@ -20,7 +20,7 @@ class Settings::ProfilesController < Settings::BaseController private def account_params - params.require(:account).permit(:display_name, :note, :avatar, :header, :locked, :bot, :discoverable, fields_attributes: [:name, :value]) + params.require(:account).permit(:display_name, :note, :avatar, :header, :locked, :bot, :discoverable, :hide_collections, fields_attributes: [:name, :value]) end def set_account diff --git a/app/helpers/accounts_helper.rb b/app/helpers/accounts_helper.rb index db3da2b05..557f60f26 100644 --- a/app/helpers/accounts_helper.rb +++ b/app/helpers/accounts_helper.rb @@ -2,10 +2,12 @@ module AccountsHelper def display_name(account, **options) + str = account.display_name.presence || account.username + if options[:custom_emojify] - Formatter.instance.format_display_name(account, **options) + prerender_custom_emojis(h(str), account.emojis) else - account.display_name.presence || account.username + str end end @@ -95,7 +97,7 @@ module AccountsHelper ].join(' '), ].join(', ') - [prepend_str, account.note].join(' · ') + [prepend_str, account.note].join(' · ') end def svg_logo diff --git a/app/helpers/admin/trends/statuses_helper.rb b/app/helpers/admin/trends/statuses_helper.rb index d16e3dd12..214c1e2a6 100644 --- a/app/helpers/admin/trends/statuses_helper.rb +++ b/app/helpers/admin/trends/statuses_helper.rb @@ -12,9 +12,6 @@ module Admin::Trends::StatusesHelper return '' if text.blank? - html = Formatter.instance.send(:encode, text) - html = Formatter.instance.send(:encode_custom_emojis, html, status.emojis, prefers_autoplay?) - - html.html_safe # rubocop:disable Rails/OutputSafety + prerender_custom_emojis(h(text), status.emojis) end end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 36c66b7d1..9984820da 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -9,9 +9,9 @@ module ApplicationHelper RTL_LOCALES = %i( ar + ckb fa he - ku ).freeze def friendly_number_to_human(number, **options) @@ -19,8 +19,11 @@ module ApplicationHelper # is looked up from the locales definition, and rails-i18n comes with # values that don't seem to make much sense for many languages, so # override these values with a default of 3 digits of precision. - options[:precision] = 3 - options[:strip_insignificant_zeros] = true + options = options.merge( + precision: 3, + strip_insignificant_zeros: true, + significant: true + ) number_to_human(number, **options) end @@ -224,4 +227,23 @@ module ApplicationHelper content_tag(:script, json_escape(json).html_safe, id: 'initial-state', type: 'application/json') # rubocop:enable Rails/OutputSafety end + + def grouped_scopes(scopes) + scope_parser = ScopeParser.new + scope_transformer = ScopeTransformer.new + + scopes.each_with_object({}) do |str, h| + scope = scope_transformer.apply(scope_parser.parse(str)) + + if h[scope.key] + h[scope.key].merge!(scope) + else + h[scope.key] = scope + end + end.values + end + + def prerender_custom_emojis(html, custom_emojis) + EmojiFormatter.new(html, custom_emojis, animate: prefers_autoplay?).to_s + end end diff --git a/app/helpers/formatting_helper.rb b/app/helpers/formatting_helper.rb new file mode 100644 index 000000000..0df6d1c3f --- /dev/null +++ b/app/helpers/formatting_helper.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +module FormattingHelper + def html_aware_format(text, local, options = {}) + HtmlAwareFormatter.new(text, local, options).to_s + end + + def linkify(text, options = {}) + TextFormatter.new(text, options).to_s + end + + def extract_status_plain_text(status) + PlainTextFormatter.new(status.text, status.local?).to_s + end + module_function :extract_status_plain_text + + def status_content_format(status) + html_aware_format( + status.text, + status.local?, + preloaded_accounts: [status.account] + (status.respond_to?(:active_mentions) ? status.active_mentions.map(&:account) : []), + quote: status.respond_to?(:quote) && status.quote, + ) + end + + def account_bio_format(account) + html_aware_format(account.note, account.local?) + end + + def account_field_value_format(field, with_rel_me: true) + html_aware_format(field.value, field.account.local?, with_rel_me: with_rel_me, with_domains: true, multiline: false) + end +end diff --git a/app/helpers/jsonld_helper.rb b/app/helpers/jsonld_helper.rb index c6557817d..102e4b132 100644 --- a/app/helpers/jsonld_helper.rb +++ b/app/helpers/jsonld_helper.rb @@ -15,6 +15,14 @@ module JsonLdHelper value.is_a?(Array) ? value.first : value end + def uri_from_bearcap(str) + if str&.start_with?('bear:') + Addressable::URI.parse(str).query_values['u'] + else + str + end + end + # The url attribute can be a string, an array of strings, or an array of objects. # The objects could include a mimeType. Not-included mimeType means it's text/html. def url_to_href(value, preferred_type = nil) @@ -54,7 +62,7 @@ module JsonLdHelper end def unsupported_uri_scheme?(uri) - !uri.start_with?('http://', 'https://') + uri.nil? || !uri.start_with?('http://', 'https://') end def invalid_origin?(url) diff --git a/app/helpers/languages_helper.rb b/app/helpers/languages_helper.rb index f22cc6d28..d39bb6c93 100644 --- a/app/helpers/languages_helper.rb +++ b/app/helpers/languages_helper.rb @@ -88,7 +88,7 @@ module LanguagesHelper ko: ['Korean', '한국어'].freeze, kr: ['Kanuri', 'Kanuri'].freeze, ks: ['Kashmiri', 'कश्मीरी'].freeze, - ku: ['Kurdish', 'Kurdî'].freeze, + ku: ['Kurmanji (Kurdish)', 'Kurmancî'].freeze, kv: ['Komi', 'коми кыв'].freeze, kw: ['Cornish', 'Kernewek'].freeze, ky: ['Kyrgyz', 'Кыргызча'].freeze, @@ -108,7 +108,7 @@ module LanguagesHelper ml: ['Malayalam', 'മലയാളം'].freeze, mn: ['Mongolian', 'Монгол хэл'].freeze, mr: ['Marathi', 'मराठी'].freeze, - ms: ['Malay', 'Bahasa Malaysia'].freeze, + ms: ['Malay', 'Bahasa Melayu'].freeze, mt: ['Maltese', 'Malti'].freeze, my: ['Burmese', 'ဗမာစာ'].freeze, na: ['Nauru', 'Ekakairũ Naoero'].freeze, @@ -117,7 +117,7 @@ module LanguagesHelper ne: ['Nepali', 'नेपाली'].freeze, ng: ['Ndonga', 'Owambo'].freeze, nl: ['Dutch', 'Nederlands'].freeze, - nn: ['Norwegian Nynorsk', 'Norsk nynorsk'].freeze, + nn: ['Norwegian Nynorsk', 'Norsk Nynorsk'].freeze, no: ['Norwegian', 'Norsk'].freeze, nr: ['Southern Ndebele', 'isiNdebele'].freeze, nv: ['Navajo', 'Diné bizaad'].freeze, @@ -188,8 +188,9 @@ module LanguagesHelper ISO_639_3 = { ast: ['Asturian', 'Asturianu'].freeze, + ckb: ['Sorani (Kurdish)', 'سۆرانی'].freeze, kab: ['Kabyle', 'Taqbaylit'].freeze, - kmr: ['Northern Kurdish', 'Kurmancî'].freeze, + kmr: ['Kurmanji (Kurdish)', 'Kurmancî'].freeze, zgh: ['Standard Moroccan Tamazight', 'ⵜⴰⵎⴰⵣⵉⵖⵜ'].freeze, }.freeze @@ -241,6 +242,15 @@ module LanguagesHelper code end + def valid_locale_cascade(*arr) + arr.each do |str| + locale = valid_locale_or_nil(str) + return locale if locale.present? + end + + nil + end + def valid_locale?(locale) locale.present? && SUPPORTED_LOCALES.key?(locale.to_sym) end diff --git a/app/helpers/routing_helper.rb b/app/helpers/routing_helper.rb index fb24a1b28..f95f46a56 100644 --- a/app/helpers/routing_helper.rb +++ b/app/helpers/routing_helper.rb @@ -2,6 +2,7 @@ module RoutingHelper extend ActiveSupport::Concern + include Rails.application.routes.url_helpers include ActionView::Helpers::AssetTagHelper include Webpacker::Helper @@ -22,8 +23,6 @@ module RoutingHelper full_asset_url(asset_pack_path(source, **options)) end - private - def use_storage? Rails.configuration.x.use_s3 || Rails.configuration.x.use_swift end diff --git a/app/helpers/statuses_helper.rb b/app/helpers/statuses_helper.rb index 25f079e9d..e92b4c839 100644 --- a/app/helpers/statuses_helper.rb +++ b/app/helpers/statuses_helper.rb @@ -113,26 +113,12 @@ module StatusesHelper end end - private - - def simplified_text(text) - text.dup.tap do |new_text| - URI.extract(new_text).each do |url| - new_text.gsub!(url, '') - end - - new_text.gsub!(Account::MENTION_RE, '') - new_text.gsub!(Tag::HASHTAG_RE, '') - new_text.gsub!(/\s+/, '') - end - end - def embedded_view? params[:controller] == EMBEDDED_CONTROLLER && params[:action] == EMBEDDED_ACTION end def render_video_component(status, **options) - video = status.media_attachments.first + video = status.ordered_media_attachments.first meta = video.file.meta || {} @@ -150,12 +136,12 @@ module StatusesHelper }.merge(**options) react_component :video, component_params do - render partial: 'statuses/attachment_list', locals: { attachments: status.media_attachments } + render partial: 'statuses/attachment_list', locals: { attachments: status.ordered_media_attachments } end end def render_audio_component(status, **options) - audio = status.media_attachments.first + audio = status.ordered_media_attachments.first meta = audio.file.meta || {} @@ -170,7 +156,7 @@ module StatusesHelper }.merge(**options) react_component :audio, component_params do - render partial: 'statuses/attachment_list', locals: { attachments: status.media_attachments } + render partial: 'statuses/attachment_list', locals: { attachments: status.ordered_media_attachments } end end @@ -178,11 +164,11 @@ module StatusesHelper component_params = { sensitive: sensitized?(status, current_account), autoplay: prefers_autoplay?, - media: status.media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json }, + media: status.ordered_media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json }, }.merge(**options) react_component :media_gallery, component_params do - render partial: 'statuses/attachment_list', locals: { attachments: status.media_attachments } + render partial: 'statuses/attachment_list', locals: { attachments: status.ordered_media_attachments } end end diff --git a/app/javascript/mastodon/actions/streaming.js b/app/javascript/mastodon/actions/streaming.js index 8fbb22271..d76f045c8 100644 --- a/app/javascript/mastodon/actions/streaming.js +++ b/app/javascript/mastodon/actions/streaming.js @@ -7,6 +7,10 @@ import { expandHomeTimeline, connectTimeline, disconnectTimeline, + fillHomeTimelineGaps, + fillPublicTimelineGaps, + fillCommunityTimelineGaps, + fillListTimelineGaps, } from './timelines'; import { updateNotifications, expandNotifications } from './notifications'; import { updateConversations } from './conversations'; @@ -35,6 +39,7 @@ const randomUpTo = max => * @param {Object.} params * @param {Object} options * @param {function(Function, Function): void} [options.fallback] + * @param {function(): void} [options.fillGaps] * @param {function(object): boolean} [options.accept] * @return {function(): void} */ @@ -61,6 +66,10 @@ export const connectTimelineStream = (timelineId, channelName, params = {}, opti clearTimeout(pollingId); pollingId = null; } + + if (options.fillGaps) { + dispatch(options.fillGaps()); + } }, onDisconnect() { @@ -119,7 +128,7 @@ const refreshHomeTimelineAndNotification = (dispatch, done) => { * @return {function(): void} */ export const connectUserStream = () => - connectTimelineStream('home', 'user', {}, { fallback: refreshHomeTimelineAndNotification }); + connectTimelineStream('home', 'user', {}, { fallback: refreshHomeTimelineAndNotification, fillGaps: fillHomeTimelineGaps }); /** * @param {Object} options @@ -127,7 +136,7 @@ export const connectUserStream = () => * @return {function(): void} */ export const connectCommunityStream = ({ onlyMedia } = {}) => - connectTimelineStream(`community${onlyMedia ? ':media' : ''}`, `public:local${onlyMedia ? ':media' : ''}`); + connectTimelineStream(`community${onlyMedia ? ':media' : ''}`, `public:local${onlyMedia ? ':media' : ''}`, {}, { fillGaps: () => (fillCommunityTimelineGaps({ onlyMedia })) }); /** * @param {Object} options @@ -136,7 +145,7 @@ export const connectCommunityStream = ({ onlyMedia } = {}) => * @return {function(): void} */ export const connectPublicStream = ({ onlyMedia, onlyRemote } = {}) => - connectTimelineStream(`public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`, `public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`); + connectTimelineStream(`public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`, `public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`, {}, { fillGaps: () => fillPublicTimelineGaps({ onlyMedia, onlyRemote }) }); /** * @param {string} columnId @@ -159,4 +168,4 @@ export const connectDirectStream = () => * @return {function(): void} */ export const connectListStream = listId => - connectTimelineStream(`list:${listId}`, 'list', { list: listId }); + connectTimelineStream(`list:${listId}`, 'list', { list: listId }, { fillGaps: () => fillListTimelineGaps(listId) }); diff --git a/app/javascript/mastodon/actions/timelines.js b/app/javascript/mastodon/actions/timelines.js index 5bd4a9930..043b9fd47 100644 --- a/app/javascript/mastodon/actions/timelines.js +++ b/app/javascript/mastodon/actions/timelines.js @@ -128,6 +128,22 @@ export function expandTimeline(timelineId, path, params = {}, done = noOp) { }; }; +export function fillTimelineGaps(timelineId, path, params = {}, done = noOp) { + return (dispatch, getState) => { + const timeline = getState().getIn(['timelines', timelineId], ImmutableMap()); + const items = timeline.get('items'); + const nullIndexes = items.map((statusId, index) => statusId === null ? index : null); + const gaps = nullIndexes.map(index => index > 0 ? items.get(index - 1) : null); + + // Only expand at most two gaps to avoid doing too many requests + done = gaps.take(2).reduce((done, maxId) => { + return (() => dispatch(expandTimeline(timelineId, path, { ...params, maxId }, done))); + }, done); + + done(); + }; +} + export const expandHomeTimeline = ({ maxId } = {}, done = noOp) => expandTimeline('home', '/api/v1/timelines/home', { max_id: maxId }, done); export const expandPublicTimeline = ({ maxId, onlyMedia, onlyRemote } = {}, done = noOp) => expandTimeline(`public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { remote: !!onlyRemote, max_id: maxId, only_media: !!onlyMedia }, done); export const expandCommunityTimeline = ({ maxId, onlyMedia } = {}, done = noOp) => expandTimeline(`community${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { local: true, max_id: maxId, only_media: !!onlyMedia }, done); @@ -145,6 +161,11 @@ export const expandHashtagTimeline = (hashtag, { maxId, tags, local } = }, done); }; +export const fillHomeTimelineGaps = (done = noOp) => fillTimelineGaps('home', '/api/v1/timelines/home', {}, done); +export const fillPublicTimelineGaps = ({ onlyMedia, onlyRemote } = {}, done = noOp) => fillTimelineGaps(`public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { remote: !!onlyRemote, only_media: !!onlyMedia }, done); +export const fillCommunityTimelineGaps = ({ onlyMedia } = {}, done = noOp) => fillTimelineGaps(`community${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { local: true, only_media: !!onlyMedia }, done); +export const fillListTimelineGaps = (id, done = noOp) => fillTimelineGaps(`list:${id}`, `/api/v1/timelines/list/${id}`, {}, done); + export function expandTimelineRequest(timeline, isLoadingMore) { return { type: TIMELINE_EXPAND_REQUEST, @@ -188,6 +209,7 @@ export function connectTimeline(timeline) { return { type: TIMELINE_CONNECT, timeline, + usePendingItems: preferPendingItems, }; }; diff --git a/app/javascript/mastodon/actions/trends.js b/app/javascript/mastodon/actions/trends.js index 304bbebef..edda0b5b5 100644 --- a/app/javascript/mastodon/actions/trends.js +++ b/app/javascript/mastodon/actions/trends.js @@ -1,4 +1,4 @@ -import api from '../api'; +import api, { getLinks } from '../api'; import { importFetchedStatuses } from './importer'; export const TRENDS_TAGS_FETCH_REQUEST = 'TRENDS_TAGS_FETCH_REQUEST'; @@ -13,6 +13,10 @@ export const TRENDS_STATUSES_FETCH_REQUEST = 'TRENDS_STATUSES_FETCH_REQUEST'; export const TRENDS_STATUSES_FETCH_SUCCESS = 'TRENDS_STATUSES_FETCH_SUCCESS'; export const TRENDS_STATUSES_FETCH_FAIL = 'TRENDS_STATUSES_FETCH_FAIL'; +export const TRENDS_STATUSES_EXPAND_REQUEST = 'TRENDS_STATUSES_EXPAND_REQUEST'; +export const TRENDS_STATUSES_EXPAND_SUCCESS = 'TRENDS_STATUSES_EXPAND_SUCCESS'; +export const TRENDS_STATUSES_EXPAND_FAIL = 'TRENDS_STATUSES_EXPAND_FAIL'; + export const fetchTrendingHashtags = () => (dispatch, getState) => { dispatch(fetchTrendingHashtagsRequest()); @@ -68,11 +72,16 @@ export const fetchTrendingLinksFail = error => ({ }); export const fetchTrendingStatuses = () => (dispatch, getState) => { + if (getState().getIn(['status_lists', 'trending', 'isLoading'])) { + return; + } + dispatch(fetchTrendingStatusesRequest()); - api(getState).get('/api/v1/trends/statuses').then(({ data }) => { - dispatch(importFetchedStatuses(data)); - dispatch(fetchTrendingStatusesSuccess(data)); + api(getState).get('/api/v1/trends/statuses').then(response => { + const next = getLinks(response).refs.find(link => link.rel === 'next'); + dispatch(importFetchedStatuses(response.data)); + dispatch(fetchTrendingStatusesSuccess(response.data, next ? next.uri : null)); }).catch(err => dispatch(fetchTrendingStatusesFail(err))); }; @@ -81,9 +90,10 @@ export const fetchTrendingStatusesRequest = () => ({ skipLoading: true, }); -export const fetchTrendingStatusesSuccess = statuses => ({ +export const fetchTrendingStatusesSuccess = (statuses, next) => ({ type: TRENDS_STATUSES_FETCH_SUCCESS, statuses, + next, skipLoading: true, }); @@ -93,3 +103,37 @@ export const fetchTrendingStatusesFail = error => ({ skipLoading: true, skipAlert: true, }); + + +export const expandTrendingStatuses = () => (dispatch, getState) => { + const url = getState().getIn(['status_lists', 'trending', 'next'], null); + + if (url === null || getState().getIn(['status_lists', 'trending', 'isLoading'])) { + return; + } + + dispatch(expandTrendingStatusesRequest()); + + api(getState).get(url).then(response => { + const next = getLinks(response).refs.find(link => link.rel === 'next'); + dispatch(importFetchedStatuses(response.data)); + dispatch(expandTrendingStatusesSuccess(response.data, next ? next.uri : null)); + }).catch(error => { + dispatch(expandTrendingStatusesFail(error)); + }); +}; + +export const expandTrendingStatusesRequest = () => ({ + type: TRENDS_STATUSES_EXPAND_REQUEST, +}); + +export const expandTrendingStatusesSuccess = (statuses, next) => ({ + type: TRENDS_STATUSES_EXPAND_SUCCESS, + statuses, + next, +}); + +export const expandTrendingStatusesFail = error => ({ + type: TRENDS_STATUSES_EXPAND_FAIL, + error, +}); diff --git a/app/javascript/mastodon/components/admin/Counter.js b/app/javascript/mastodon/components/admin/Counter.js index 047e864b2..5a5b2b869 100644 --- a/app/javascript/mastodon/components/admin/Counter.js +++ b/app/javascript/mastodon/components/admin/Counter.js @@ -33,6 +33,7 @@ export default class Counter extends React.PureComponent { label: PropTypes.string.isRequired, href: PropTypes.string, params: PropTypes.object, + target: PropTypes.string, }; state = { @@ -54,7 +55,7 @@ export default class Counter extends React.PureComponent { } render () { - const { label, href } = this.props; + const { label, href, target } = this.props; const { loading, data } = this.state; let content; @@ -68,12 +69,12 @@ export default class Counter extends React.PureComponent { ); } else { const measure = data[0]; - const percentChange = percIncrease(measure.previous_total * 1, measure.total * 1); + const percentChange = measure.previous_total && percIncrease(measure.previous_total * 1, measure.total * 1); content = ( - - 0, negative: percentChange < 0 })}>{percentChange > 0 && '+'} + {measure.human_value || } + {measure.previous_total && ( 0, negative: percentChange < 0 })}>{percentChange > 0 && '+'})} ); } @@ -100,7 +101,7 @@ export default class Counter extends React.PureComponent { if (href) { return ( - + {inner} ); diff --git a/app/javascript/mastodon/components/common_counter.js b/app/javascript/mastodon/components/common_counter.js index e10cd9b76..dd9b62de9 100644 --- a/app/javascript/mastodon/components/common_counter.js +++ b/app/javascript/mastodon/components/common_counter.js @@ -25,7 +25,7 @@ export function counterRenderer(counterType, isBold = true) { return (displayNumber, pluralReady) => ( { + const { height, width } = this.props; + + return ( +

+ ); + } + + renderLoadingVideoPlayer = () => { + const { height, width } = this.props; + + return ( +
+ ); + } + + renderLoadingAudioPlayer = () => { + const { height, width } = this.props; + + return ( +
+ ); + } + + render () { + const { status, width, height } = this.props; + const mediaAttachments = status.get('media_attachments'); + + if (mediaAttachments.size === 0) { + return null; + } + + if (mediaAttachments.getIn([0, 'type']) === 'audio') { + const audio = mediaAttachments.get(0); + + return ( + + {Component => ( + + )} + + ); + } else if (mediaAttachments.getIn([0, 'type']) === 'video') { + const video = mediaAttachments.get(0); + + return ( + + {Component => ( + + )} + + ); + } else { + return ( + + {Component => ( + + )} + + ); + } + } + +} diff --git a/app/javascript/mastodon/components/scrollable_list.js b/app/javascript/mastodon/components/scrollable_list.js index 68a178512..91d04bf4d 100644 --- a/app/javascript/mastodon/components/scrollable_list.js +++ b/app/javascript/mastodon/components/scrollable_list.js @@ -151,7 +151,7 @@ class ScrollableList extends PureComponent { attachFullscreenListener(this.onFullScreenChange); - // Handle initial scroll posiiton + // Handle initial scroll position this.handleScroll(); } diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js index 6387a7236..fa0ac46ef 100644 --- a/app/javascript/mastodon/components/status.js +++ b/app/javascript/mastodon/components/status.js @@ -80,7 +80,7 @@ const messages = defineMessages({ public_short: { id: 'privacy.public.short', defaultMessage: 'Public' }, unlisted_short: { id: 'privacy.unlisted.short', defaultMessage: 'Unlisted' }, private_short: { id: 'privacy.private.short', defaultMessage: 'Followers-only' }, - direct_short: { id: 'privacy.direct.short', defaultMessage: 'Direct' }, + direct_short: { id: 'privacy.direct.short', defaultMessage: 'Mentioned people only' }, edited: { id: 'status.edited', defaultMessage: 'Edited {date}' }, }); @@ -449,7 +449,7 @@ class Status extends ImmutablePureComponent { prepend = (
- +
); } else if (status.get('reblog', null) !== null && typeof status.get('reblog') === 'object') { diff --git a/app/javascript/mastodon/components/status_action_bar.js b/app/javascript/mastodon/components/status_action_bar.js index b1cb1e951..6e809c590 100644 --- a/app/javascript/mastodon/components/status_action_bar.js +++ b/app/javascript/mastodon/components/status_action_bar.js @@ -281,7 +281,6 @@ class StatusActionBar extends ImmutablePureComponent { menu.push({ text: intl.formatMessage(messages.redraft), action: this.handleRedraftClick }); } else { menu.push({ text: intl.formatMessage(messages.mention, { name: account.get('username') }), action: this.handleMentionClick }); - menu.push({ text: intl.formatMessage(messages.direct, { name: account.get('username') }), action: this.handleDirectClick }); menu.push(null); if (relationship && relationship.get('muting')) { diff --git a/app/javascript/mastodon/containers/media_container.js b/app/javascript/mastodon/containers/media_container.js index 2f42a084f..6ee1f0bd8 100644 --- a/app/javascript/mastodon/containers/media_container.js +++ b/app/javascript/mastodon/containers/media_container.js @@ -43,7 +43,7 @@ export default class MediaContainer extends PureComponent { handleOpenVideo = (options) => { const { components } = this.props; - const { media } = JSON.parse(components[options.componetIndex].getAttribute('data-props')); + const { media } = JSON.parse(components[options.componentIndex].getAttribute('data-props')); const mediaList = fromJS(media); document.body.classList.add('with-modals--active'); @@ -87,7 +87,7 @@ export default class MediaContainer extends PureComponent { ...(hashtag ? { hashtag: fromJS(hashtag) } : {}), ...(componentName === 'Video' ? { - componetIndex: i, + componentIndex: i, onOpenVideo: this.handleOpenVideo, } : { onOpenMedia: this.handleOpenMedia, diff --git a/app/javascript/mastodon/features/account/components/header.js b/app/javascript/mastodon/features/account/components/header.js index 48ec49d81..83dc8d9b8 100644 --- a/app/javascript/mastodon/features/account/components/header.js +++ b/app/javascript/mastodon/features/account/components/header.js @@ -38,7 +38,7 @@ const messages = defineMessages({ showReblogs: { id: 'account.show_reblogs', defaultMessage: 'Show boosts from @{name}' }, enableNotifications: { id: 'account.enable_notifications', defaultMessage: 'Notify me when @{name} posts' }, disableNotifications: { id: 'account.disable_notifications', defaultMessage: 'Stop notifying me when @{name} posts' }, - pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned toots' }, + pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned posts' }, preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' }, follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' }, favourites: { id: 'navigation_bar.favourites', defaultMessage: 'Favourites' }, @@ -177,7 +177,6 @@ class Header extends ImmutablePureComponent { if (account.get('id') !== me) { menu.push({ text: intl.formatMessage(messages.mention, { name: account.get('username') }), action: this.props.onMention }); - menu.push({ text: intl.formatMessage(messages.direct, { name: account.get('username') }), action: this.props.onDirect }); menu.push(null); } diff --git a/app/javascript/mastodon/features/account_timeline/components/header.js b/app/javascript/mastodon/features/account_timeline/components/header.js index 33bea4c17..507b6c895 100644 --- a/app/javascript/mastodon/features/account_timeline/components/header.js +++ b/app/javascript/mastodon/features/account_timeline/components/header.js @@ -121,8 +121,8 @@ export default class Header extends ImmutablePureComponent { {!hideTabs && (
- - + +
)} diff --git a/app/javascript/mastodon/features/account_timeline/index.js b/app/javascript/mastodon/features/account_timeline/index.js index 37df2818b..5122aec4e 100644 --- a/app/javascript/mastodon/features/account_timeline/index.js +++ b/app/javascript/mastodon/features/account_timeline/index.js @@ -45,7 +45,7 @@ const mapStateToProps = (state, { params: { acct, id }, withReplies = false }) = }; const RemoteHint = ({ url }) => ( - } /> + } /> ); RemoteHint.propTypes = { @@ -156,7 +156,7 @@ class AccountTimeline extends ImmutablePureComponent { } else if (remote && statusIds.isEmpty()) { emptyMessage = ; } else { - emptyMessage = ; + emptyMessage = ; } const remoteMessage = remote ? : null; diff --git a/app/javascript/mastodon/features/bookmarked_statuses/index.js b/app/javascript/mastodon/features/bookmarked_statuses/index.js index cf067d954..8f41b0f95 100644 --- a/app/javascript/mastodon/features/bookmarked_statuses/index.js +++ b/app/javascript/mastodon/features/bookmarked_statuses/index.js @@ -70,7 +70,7 @@ class Bookmarks extends ImmutablePureComponent { const { intl, statusIds, columnId, multiColumn, hasMore, isLoading } = this.props; const pinned = !!columnId; - const emptyMessage = ; + const emptyMessage = ; return ( diff --git a/app/javascript/mastodon/features/compose/components/action_bar.js b/app/javascript/mastodon/features/compose/components/action_bar.js index 07d92bb7e..4ff0b7b94 100644 --- a/app/javascript/mastodon/features/compose/components/action_bar.js +++ b/app/javascript/mastodon/features/compose/components/action_bar.js @@ -6,7 +6,7 @@ import { defineMessages, injectIntl } from 'react-intl'; const messages = defineMessages({ edit_profile: { id: 'account.edit_profile', defaultMessage: 'Edit profile' }, - pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned toots' }, + pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned posts' }, preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' }, follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' }, favourites: { id: 'navigation_bar.favourites', defaultMessage: 'Favourites' }, diff --git a/app/javascript/mastodon/features/compose/components/privacy_dropdown.js b/app/javascript/mastodon/features/compose/components/privacy_dropdown.js index 599467cdb..c94db59c5 100644 --- a/app/javascript/mastodon/features/compose/components/privacy_dropdown.js +++ b/app/javascript/mastodon/features/compose/components/privacy_dropdown.js @@ -11,12 +11,12 @@ import Icon from 'mastodon/components/icon'; const messages = defineMessages({ public_short: { id: 'privacy.public.short', defaultMessage: 'Public' }, - public_long: { id: 'privacy.public.long', defaultMessage: 'Visible for all, shown in public timelines' }, + public_long: { id: 'privacy.public.long', defaultMessage: 'Visible for all' }, unlisted_short: { id: 'privacy.unlisted.short', defaultMessage: 'Unlisted' }, - unlisted_long: { id: 'privacy.unlisted.long', defaultMessage: 'Visible for all, but not in public timelines' }, - private_short: { id: 'privacy.private.short', defaultMessage: 'Followers-only' }, + unlisted_long: { id: 'privacy.unlisted.long', defaultMessage: 'Visible for all, but opted-out of discovery features' }, + private_short: { id: 'privacy.private.short', defaultMessage: 'Followers only' }, private_long: { id: 'privacy.private.long', defaultMessage: 'Visible for followers only' }, - direct_short: { id: 'privacy.direct.short', defaultMessage: 'Direct' }, + direct_short: { id: 'privacy.direct.short', defaultMessage: 'Only people I mention' }, direct_long: { id: 'privacy.direct.long', defaultMessage: 'Visible for mentioned users only' }, change_privacy: { id: 'privacy.change', defaultMessage: 'Adjust status privacy' }, }); @@ -242,7 +242,7 @@ class PrivacyDropdown extends React.PureComponent { if (!this.props.noDirect) { this.options.push( - { icon: 'envelope', value: 'direct', text: formatMessage(messages.direct_short), meta: formatMessage(messages.direct_long) }, + { icon: 'at', value: 'direct', text: formatMessage(messages.direct_short), meta: formatMessage(messages.direct_long) }, ); } } diff --git a/app/javascript/mastodon/features/compose/components/search_results.js b/app/javascript/mastodon/features/compose/components/search_results.js index 9b3d01cfd..e2493a6c6 100644 --- a/app/javascript/mastodon/features/compose/components/search_results.js +++ b/app/javascript/mastodon/features/compose/components/search_results.js @@ -91,7 +91,7 @@ class SearchResults extends ImmutablePureComponent { count += results.get('statuses').size; statuses = (
-
+
{results.get('statuses').map(statusId => )} @@ -101,10 +101,10 @@ class SearchResults extends ImmutablePureComponent { } else if(results.get('statuses') && results.get('statuses').size === 0 && !searchEnabled && !(searchTerm.startsWith('@') || searchTerm.startsWith('#') || searchTerm.includes(' '))) { statuses = (
-
+
- +
); diff --git a/app/javascript/mastodon/features/compose/components/upload.js b/app/javascript/mastodon/features/compose/components/upload.js index 1289d6b94..706824dc7 100644 --- a/app/javascript/mastodon/features/compose/components/upload.js +++ b/app/javascript/mastodon/features/compose/components/upload.js @@ -5,7 +5,6 @@ import Motion from '../../ui/util/optional_motion'; import spring from 'react-motion/lib/spring'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { FormattedMessage } from 'react-intl'; -import classNames from 'classnames'; import Icon from 'mastodon/components/icon'; export default class Upload extends ImmutablePureComponent { @@ -43,10 +42,16 @@ export default class Upload extends ImmutablePureComponent { {({ scale }) => (
-
+
{!isEditingStatus && ()}
+ + {(media.get('description') || '').length === 0 && ( +
+ +
+ )}
)} diff --git a/app/javascript/mastodon/features/compose/containers/warning_container.js b/app/javascript/mastodon/features/compose/containers/warning_container.js index bf0660ea9..571d1d838 100644 --- a/app/javascript/mastodon/features/compose/containers/warning_container.js +++ b/app/javascript/mastodon/features/compose/containers/warning_container.js @@ -42,13 +42,13 @@ const WarningWrapper = ({ needsLockWarning, hashtagWarning, directMessageWarning } if (hashtagWarning) { - return } />; + return } />; } if (directMessageWarning) { const message = ( - + ); diff --git a/app/javascript/mastodon/features/compose/index.js b/app/javascript/mastodon/features/compose/index.js index 663dd324f..711a55904 100644 --- a/app/javascript/mastodon/features/compose/index.js +++ b/app/javascript/mastodon/features/compose/index.js @@ -26,7 +26,7 @@ const messages = defineMessages({ community: { id: 'navigation_bar.community_timeline', defaultMessage: 'Local timeline' }, preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' }, logout: { id: 'navigation_bar.logout', defaultMessage: 'Logout' }, - compose: { id: 'navigation_bar.compose', defaultMessage: 'Compose new toot' }, + compose: { id: 'navigation_bar.compose', defaultMessage: 'Compose new post' }, logoutMessage: { id: 'confirmations.logout.message', defaultMessage: 'Are you sure you want to log out?' }, logoutConfirm: { id: 'confirmations.logout.confirm', defaultMessage: 'Log out' }, }); diff --git a/app/javascript/mastodon/features/direct_timeline/index.js b/app/javascript/mastodon/features/direct_timeline/index.js index 68523666c..46a56e942 100644 --- a/app/javascript/mastodon/features/direct_timeline/index.js +++ b/app/javascript/mastodon/features/direct_timeline/index.js @@ -10,7 +10,7 @@ import { connectDirectStream } from '../../actions/streaming'; import ConversationsListContainer from './containers/conversations_list_container'; const messages = defineMessages({ - title: { id: 'column.direct', defaultMessage: 'Direct messages' }, + title: { id: 'column.conversations', defaultMessage: 'Conversations' }, }); export default @connect() @@ -76,7 +76,7 @@ class DirectTimeline extends React.PureComponent { return ( } + emptyMessage={} /> ); diff --git a/app/javascript/mastodon/features/directory/components/account_card.js b/app/javascript/mastodon/features/directory/components/account_card.js index 03e13f28e..27ba4e7f4 100644 --- a/app/javascript/mastodon/features/directory/components/account_card.js +++ b/app/javascript/mastodon/features/directory/components/account_card.js @@ -7,31 +7,28 @@ import { makeGetAccount } from 'mastodon/selectors'; import Avatar from 'mastodon/components/avatar'; import DisplayName from 'mastodon/components/display_name'; import Permalink from 'mastodon/components/permalink'; -import RelativeTimestamp from 'mastodon/components/relative_timestamp'; -import IconButton from 'mastodon/components/icon_button'; +import Button from 'mastodon/components/button'; import { FormattedMessage, injectIntl, defineMessages } from 'react-intl'; import { autoPlayGif, me, unfollowModal } from 'mastodon/initial_state'; import ShortNumber from 'mastodon/components/short_number'; import { followAccount, unfollowAccount, - blockAccount, unblockAccount, unmuteAccount, } from 'mastodon/actions/accounts'; import { openModal } from 'mastodon/actions/modal'; -import { initMuteModal } from 'mastodon/actions/mutes'; +import classNames from 'classnames'; const messages = defineMessages({ - follow: { id: 'account.follow', defaultMessage: 'Follow' }, unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' }, - requested: { id: 'account.requested', defaultMessage: 'Awaiting approval' }, - unblock: { id: 'account.unblock', defaultMessage: 'Unblock @{name}' }, - unmute: { id: 'account.unmute', defaultMessage: 'Unmute @{name}' }, - unfollowConfirm: { - id: 'confirmations.unfollow.confirm', - defaultMessage: 'Unfollow', - }, + follow: { id: 'account.follow', defaultMessage: 'Follow' }, + cancel_follow_request: { id: 'account.cancel_follow_request', defaultMessage: 'Cancel follow request' }, + requested: { id: 'account.requested', defaultMessage: 'Awaiting approval. Click to cancel follow request' }, + unblock: { id: 'account.unblock_short', defaultMessage: 'Unblock' }, + unmute: { id: 'account.unmute_short', defaultMessage: 'Unmute' }, + unfollowConfirm: { id: 'confirmations.unfollow.confirm', defaultMessage: 'Unfollow' }, + edit_profile: { id: 'account.edit_profile', defaultMessage: 'Edit profile' }, }); const makeMapStateToProps = () => { @@ -75,18 +72,15 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ onBlock(account) { if (account.getIn(['relationship', 'blocking'])) { dispatch(unblockAccount(account.get('id'))); - } else { - dispatch(blockAccount(account.get('id'))); } }, onMute(account) { if (account.getIn(['relationship', 'muting'])) { dispatch(unmuteAccount(account.get('id'))); - } else { - dispatch(initMuteModal(account)); } }, + }); export default @@ -138,130 +132,92 @@ class AccountCard extends ImmutablePureComponent { handleMute = () => { this.props.onMute(this.props.account); - }; + } + + handleEditProfile = () => { + window.open('/settings/profile', '_blank'); + } render() { const { account, intl } = this.props; - let buttons; + let actionBtn; - if ( - account.get('id') !== me && - account.get('relationship', null) !== null - ) { - const following = account.getIn(['relationship', 'following']); - const requested = account.getIn(['relationship', 'requested']); - const blocking = account.getIn(['relationship', 'blocking']); - const muting = account.getIn(['relationship', 'muting']); - - if (requested) { - buttons = ( - - ); - } else if (blocking) { - buttons = ( - - ); - } else if (muting) { - buttons = ( - - ); - } else if (!account.get('moved') || following) { - buttons = ( - - ); + if (me !== account.get('id')) { + if (!account.get('relationship')) { // Wait until the relationship is loaded + actionBtn = ''; + } else if (account.getIn(['relationship', 'requested'])) { + actionBtn = - +
- {isLoading ? () : filteredResults} + {isLoading ? : filteredResults}
); diff --git a/app/javascript/mastodon/features/explore/statuses.js b/app/javascript/mastodon/features/explore/statuses.js index 4e5530d84..33e5b4179 100644 --- a/app/javascript/mastodon/features/explore/statuses.js +++ b/app/javascript/mastodon/features/explore/statuses.js @@ -4,11 +4,13 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import StatusList from 'mastodon/components/status_list'; import { FormattedMessage } from 'react-intl'; import { connect } from 'react-redux'; -import { fetchTrendingStatuses } from 'mastodon/actions/trends'; +import { fetchTrendingStatuses, expandTrendingStatuses } from 'mastodon/actions/trends'; +import { debounce } from 'lodash'; const mapStateToProps = state => ({ statusIds: state.getIn(['status_lists', 'trending', 'items']), isLoading: state.getIn(['status_lists', 'trending', 'isLoading'], true), + hasMore: !!state.getIn(['status_lists', 'trending', 'next']), }); export default @connect(mapStateToProps) @@ -17,6 +19,7 @@ class Statuses extends React.PureComponent { static propTypes = { statusIds: ImmutablePropTypes.list, isLoading: PropTypes.bool, + hasMore: PropTypes.bool, multiColumn: PropTypes.bool, dispatch: PropTypes.func.isRequired, }; @@ -26,8 +29,13 @@ class Statuses extends React.PureComponent { dispatch(fetchTrendingStatuses()); } + handleLoadMore = debounce(() => { + const { dispatch } = this.props; + dispatch(expandTrendingStatuses()); + }, 300, { leading: true }) + render () { - const { isLoading, statusIds, multiColumn } = this.props; + const { isLoading, hasMore, statusIds, multiColumn } = this.props; const emptyMessage = ; @@ -36,8 +44,9 @@ class Statuses extends React.PureComponent { trackScroll statusIds={statusIds} scrollKey='explore-statuses' - hasMore={false} + hasMore={hasMore} isLoading={isLoading} + onLoadMore={this.handleLoadMore} emptyMessage={emptyMessage} bindToDocument={!multiColumn} withCounters diff --git a/app/javascript/mastodon/features/explore/suggestions.js b/app/javascript/mastodon/features/explore/suggestions.js index c094a8d93..0c6a7ef8a 100644 --- a/app/javascript/mastodon/features/explore/suggestions.js +++ b/app/javascript/mastodon/features/explore/suggestions.js @@ -1,7 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import Account from 'mastodon/containers/account_container'; +import AccountCard from 'mastodon/features/directory/components/account_card'; import LoadingIndicator from 'mastodon/components/loading_indicator'; import { connect } from 'react-redux'; import { fetchSuggestions } from 'mastodon/actions/suggestions'; @@ -29,9 +29,9 @@ class Suggestions extends React.PureComponent { const { isLoading, suggestions } = this.props; return ( -
- {isLoading ? () : suggestions.map(suggestion => ( - +
+ {isLoading ? : suggestions.map(suggestion => ( + ))}
); diff --git a/app/javascript/mastodon/features/favourited_statuses/index.js b/app/javascript/mastodon/features/favourited_statuses/index.js index 9606a144c..73631946a 100644 --- a/app/javascript/mastodon/features/favourited_statuses/index.js +++ b/app/javascript/mastodon/features/favourited_statuses/index.js @@ -70,7 +70,7 @@ class Favourites extends ImmutablePureComponent { const { intl, statusIds, columnId, multiColumn, hasMore, isLoading } = this.props; const pinned = !!columnId; - const emptyMessage = ; + const emptyMessage = ; return ( diff --git a/app/javascript/mastodon/features/favourites/index.js b/app/javascript/mastodon/features/favourites/index.js index ac94ae18a..f060068a4 100644 --- a/app/javascript/mastodon/features/favourites/index.js +++ b/app/javascript/mastodon/features/favourites/index.js @@ -59,7 +59,7 @@ class Favourites extends ImmutablePureComponent { ); } - const emptyMessage = ; + const emptyMessage = ; return ( diff --git a/app/javascript/mastodon/features/getting_started/index.js b/app/javascript/mastodon/features/getting_started/index.js index 5508adb80..678fb089c 100644 --- a/app/javascript/mastodon/features/getting_started/index.js +++ b/app/javascript/mastodon/features/getting_started/index.js @@ -7,7 +7,7 @@ import { connect } from 'react-redux'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { me, profile_directory, showTrends } from '../../initial_state'; +import { me, showTrends } from '../../initial_state'; import { fetchFollowRequests } from 'mastodon/actions/accounts'; import { List as ImmutableList } from 'immutable'; import NavigationContainer from '../compose/containers/navigation_container'; @@ -21,7 +21,8 @@ const messages = defineMessages({ public_timeline: { id: 'navigation_bar.public_timeline', defaultMessage: 'Federated timeline' }, settings_subheading: { id: 'column_subheading.settings', defaultMessage: 'Settings' }, community_timeline: { id: 'navigation_bar.community_timeline', defaultMessage: 'Local timeline' }, - direct: { id: 'navigation_bar.direct', defaultMessage: 'Direct messages' }, + explore: { id: 'navigation_bar.explore', defaultMessage: 'Explore' }, + direct: { id: 'column.conversations', defaultMessage: 'Conversations' }, bookmarks: { id: 'navigation_bar.bookmarks', defaultMessage: 'Bookmarks' }, preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' }, follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' }, @@ -29,13 +30,12 @@ const messages = defineMessages({ blocks: { id: 'navigation_bar.blocks', defaultMessage: 'Blocked users' }, domain_blocks: { id: 'navigation_bar.domain_blocks', defaultMessage: 'Hidden domains' }, mutes: { id: 'navigation_bar.mutes', defaultMessage: 'Muted users' }, - pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned toots' }, + pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned posts' }, lists: { id: 'navigation_bar.lists', defaultMessage: 'Lists' }, discover: { id: 'navigation_bar.discover', defaultMessage: 'Discover' }, personal: { id: 'navigation_bar.personal', defaultMessage: 'Personal' }, security: { id: 'navigation_bar.security', defaultMessage: 'Security' }, menu: { id: 'getting_started.heading', defaultMessage: 'Getting started' }, - profile_directory: { id: 'getting_started.directory', defaultMessage: 'Profile directory' }, }); const mapStateToProps = state => ({ @@ -98,31 +98,28 @@ class GettingStarted extends ImmutablePureComponent { if (multiColumn) { navItems.push( , + ); + height += 34; + } + + navItems.push( + , + ); + height += 48; + + if (multiColumn) { + navItems.push( , , ); - height += 34 + 48*2; - - if (profile_directory) { - navItems.push( - , - ); - - height += 48; - } + height += 48*2; navItems.push( , ); height += 34; - } else if (profile_directory) { - navItems.push( - , - ); - - height += 48; } if (multiColumn && !columns.find(item => item.get('id') === 'HOME')) { @@ -133,7 +130,7 @@ class GettingStarted extends ImmutablePureComponent { } navItems.push( - , + , , , , diff --git a/app/javascript/mastodon/features/hashtag_timeline/components/column_settings.js b/app/javascript/mastodon/features/hashtag_timeline/components/column_settings.js index 142118cef..ede8907e5 100644 --- a/app/javascript/mastodon/features/hashtag_timeline/components/column_settings.js +++ b/app/javascript/mastodon/features/hashtag_timeline/components/column_settings.js @@ -40,7 +40,17 @@ class ColumnSettings extends React.PureComponent { } }; - onSelect = mode => value => this.props.onChange(['tags', mode], value); + onSelect = mode => value => { + const oldValue = this.tags(mode); + + // Prevent changes that add more than 4 tags, but allow removing + // tags that were already added before + if ((value.length > 4) && !(value < oldValue)) { + return; + } + + this.props.onChange(['tags', mode], value); + }; onToggle = () => { if (this.state.open && this.hasTags()) { diff --git a/app/javascript/mastodon/features/keyboard_shortcuts/index.js b/app/javascript/mastodon/features/keyboard_shortcuts/index.js index d278d2b26..5f38e2f4e 100644 --- a/app/javascript/mastodon/features/keyboard_shortcuts/index.js +++ b/app/javascript/mastodon/features/keyboard_shortcuts/index.js @@ -86,7 +86,7 @@ class KeyboardShortcuts extends ImmutablePureComponent { alt+n - + alt+x @@ -122,7 +122,7 @@ class KeyboardShortcuts extends ImmutablePureComponent { g+d - + g+s @@ -134,7 +134,7 @@ class KeyboardShortcuts extends ImmutablePureComponent { g+p - + g+u diff --git a/app/javascript/mastodon/features/notifications/components/column_settings.js b/app/javascript/mastodon/features/notifications/components/column_settings.js index 84db04430..1cdb24086 100644 --- a/app/javascript/mastodon/features/notifications/components/column_settings.js +++ b/app/javascript/mastodon/features/notifications/components/column_settings.js @@ -145,7 +145,7 @@ export default class ColumnSettings extends React.PureComponent {
- +
diff --git a/app/javascript/mastodon/features/pinned_statuses/index.js b/app/javascript/mastodon/features/pinned_statuses/index.js index f32bd6d23..67b13f10a 100644 --- a/app/javascript/mastodon/features/pinned_statuses/index.js +++ b/app/javascript/mastodon/features/pinned_statuses/index.js @@ -10,7 +10,7 @@ import { defineMessages, injectIntl } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; const messages = defineMessages({ - heading: { id: 'column.pins', defaultMessage: 'Pinned toot' }, + heading: { id: 'column.pins', defaultMessage: 'Pinned post' }, }); const mapStateToProps = state => ({ diff --git a/app/javascript/mastodon/features/reblogs/index.js b/app/javascript/mastodon/features/reblogs/index.js index 0fbd09415..7704a049f 100644 --- a/app/javascript/mastodon/features/reblogs/index.js +++ b/app/javascript/mastodon/features/reblogs/index.js @@ -59,7 +59,7 @@ class Reblogs extends ImmutablePureComponent { ); } - const emptyMessage = ; + const emptyMessage = ; return ( diff --git a/app/javascript/mastodon/features/report/category.js b/app/javascript/mastodon/features/report/category.js index 122b51c7c..9215b3f51 100644 --- a/app/javascript/mastodon/features/report/category.js +++ b/app/javascript/mastodon/features/report/category.js @@ -1,5 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import { connect } from 'react-redux'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import Button from 'mastodon/components/button'; import Option from './components/option'; @@ -8,7 +10,7 @@ const messages = defineMessages({ dislike: { id: 'report.reasons.dislike', defaultMessage: 'I don\'t like it' }, dislike_description: { id: 'report.reasons.dislike_description', defaultMessage: 'It is not something you want to see' }, spam: { id: 'report.reasons.spam', defaultMessage: 'It\'s spam' }, - spam_description: { id: 'report.reasons.spam_description', defaultMessage: 'Malicious links, fake engagement, or repetetive replies' }, + spam_description: { id: 'report.reasons.spam_description', defaultMessage: 'Malicious links, fake engagement, or repetitive replies' }, violation: { id: 'report.reasons.violation', defaultMessage: 'It violates server rules' }, violation_description: { id: 'report.reasons.violation_description', defaultMessage: 'You are aware that it breaks specific rules' }, other: { id: 'report.reasons.other', defaultMessage: 'It\'s something else' }, @@ -17,11 +19,17 @@ const messages = defineMessages({ account: { id: 'report.category.title_account', defaultMessage: 'profile' }, }); -export default @injectIntl +const mapStateToProps = state => ({ + rules: state.get('rules'), +}); + +export default @connect(mapStateToProps) +@injectIntl class Category extends React.PureComponent { static propTypes = { onNextStep: PropTypes.func.isRequired, + rules: ImmutablePropTypes.list, category: PropTypes.string, onChangeCategory: PropTypes.func.isRequired, startedFrom: PropTypes.oneOf(['status', 'account']), @@ -53,13 +61,17 @@ class Category extends React.PureComponent { }; render () { - const { category, startedFrom, intl } = this.props; + const { category, startedFrom, rules, intl } = this.props; - const options = [ + const options = rules.size > 0 ? [ 'dislike', 'spam', 'violation', 'other', + ] : [ + 'dislike', + 'spam', + 'other', ]; return ( diff --git a/app/javascript/mastodon/features/report/comment.js b/app/javascript/mastodon/features/report/comment.js index 8d1a4e21f..cde156415 100644 --- a/app/javascript/mastodon/features/report/comment.js +++ b/app/javascript/mastodon/features/report/comment.js @@ -74,7 +74,7 @@ class Comment extends React.PureComponent {
- +
); diff --git a/app/javascript/mastodon/features/report/components/status_check_box.js b/app/javascript/mastodon/features/report/components/status_check_box.js index a2eb3d6f5..373c60e21 100644 --- a/app/javascript/mastodon/features/report/components/status_check_box.js +++ b/app/javascript/mastodon/features/report/components/status_check_box.js @@ -1,14 +1,12 @@ import React from 'react'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import noop from 'lodash/noop'; import StatusContent from 'mastodon/components/status_content'; -import { MediaGallery, Video } from 'mastodon/features/ui/util/async-components'; -import Bundle from 'mastodon/features/ui/components/bundle'; import Avatar from 'mastodon/components/avatar'; import DisplayName from 'mastodon/components/display_name'; import RelativeTimestamp from 'mastodon/components/relative_timestamp'; import Option from './option'; +import MediaAttachments from 'mastodon/components/media_attachments'; export default class StatusCheckBox extends React.PureComponent { @@ -27,51 +25,10 @@ export default class StatusCheckBox extends React.PureComponent { render () { const { status, checked } = this.props; - let media = null; - if (status.get('reblog')) { return null; } - if (status.get('media_attachments').size > 0) { - if (status.get('media_attachments').some(item => item.get('type') === 'unknown')) { - - } else if (status.getIn(['media_attachments', 0, 'type']) === 'video') { - const video = status.getIn(['media_attachments', 0]); - - media = ( - - {Component => ( - - )} - - ); - } else { - media = ( - - {Component => ( - - )} - - ); - } - } - const labelComponent = (
@@ -79,12 +36,13 @@ export default class StatusCheckBox extends React.PureComponent {
-
·
+
+ · +
- - {media} +
); diff --git a/app/javascript/mastodon/features/report/statuses.js b/app/javascript/mastodon/features/report/statuses.js index 5999a0e06..d5d86034f 100644 --- a/app/javascript/mastodon/features/report/statuses.js +++ b/app/javascript/mastodon/features/report/statuses.js @@ -6,9 +6,11 @@ import StatusCheckBox from 'mastodon/features/report/containers/status_check_box import { OrderedSet } from 'immutable'; import { FormattedMessage } from 'react-intl'; import Button from 'mastodon/components/button'; +import LoadingIndicator from 'mastodon/components/loading_indicator'; const mapStateToProps = (state, { accountId }) => ({ availableStatusIds: OrderedSet(state.getIn(['timelines', `account:${accountId}:with_replies`, 'items'])), + isLoading: state.getIn(['timelines', `account:${accountId}:with_replies`, 'isLoading']), }); export default @connect(mapStateToProps) @@ -19,6 +21,7 @@ class Statuses extends React.PureComponent { accountId: PropTypes.string.isRequired, availableStatusIds: ImmutablePropTypes.set.isRequired, selectedStatusIds: ImmutablePropTypes.set.isRequired, + isLoading: PropTypes.bool, onToggle: PropTypes.func.isRequired, }; @@ -28,7 +31,7 @@ class Statuses extends React.PureComponent { }; render () { - const { availableStatusIds, selectedStatusIds, onToggle } = this.props; + const { availableStatusIds, selectedStatusIds, onToggle, isLoading } = this.props; return ( @@ -36,7 +39,7 @@ class Statuses extends React.PureComponent {

- {availableStatusIds.union(selectedStatusIds).map(statusId => ( + {isLoading ? : availableStatusIds.union(selectedStatusIds).map(statusId => ( { return text; } - return text.substring(0, cut) + (text.length > len ? '…' : ''); + return text.slice(0, cut) + (text.length > len ? '…' : ''); }; const domParser = new DOMParser(); diff --git a/app/javascript/mastodon/features/ui/components/compare_history_modal.js b/app/javascript/mastodon/features/ui/components/compare_history_modal.js index 40cfba335..ecccc8f7d 100644 --- a/app/javascript/mastodon/features/ui/components/compare_history_modal.js +++ b/app/javascript/mastodon/features/ui/components/compare_history_modal.js @@ -9,6 +9,7 @@ import escapeTextContentForBrowser from 'escape-html'; import InlineAccount from 'mastodon/components/inline_account'; import IconButton from 'mastodon/components/icon_button'; import RelativeTimestamp from 'mastodon/components/relative_timestamp'; +import MediaAttachments from 'mastodon/components/media_attachments'; const mapStateToProps = (state, { statusId }) => ({ versions: state.getIn(['history', statusId, 'items']), @@ -70,6 +71,25 @@ class CompareHistoryModal extends React.PureComponent { )}
+ + {!!currentVersion.get('poll') && ( +
+
    + {currentVersion.getIn(['poll', 'options']).map(option => ( +
  • + + + +
  • + ))} +
+
+ )} + +
diff --git a/app/javascript/mastodon/features/ui/components/link_footer.js b/app/javascript/mastodon/features/ui/components/link_footer.js index 4a9243c9e..edf1104c4 100644 --- a/app/javascript/mastodon/features/ui/components/link_footer.js +++ b/app/javascript/mastodon/features/ui/components/link_footer.js @@ -3,7 +3,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import { FormattedMessage, defineMessages, injectIntl } from 'react-intl'; import { Link } from 'react-router-dom'; -import { invitesEnabled, limitedFederationMode, version, repository, source_url } from 'mastodon/initial_state'; +import { invitesEnabled, limitedFederationMode, version, repository, source_url, profile_directory as profileDirectory } from 'mastodon/initial_state'; import { logOut } from 'mastodon/utils/log_out'; import { openModal } from 'mastodon/actions/modal'; @@ -52,6 +52,7 @@ class LinkFooter extends React.PureComponent { {withHotkeys &&
  • ·
  • }
  • ·
  • {!limitedFederationMode &&
  • ·
  • } + {profileDirectory &&
  • ·
  • }
  • ·
  • ·
  • ·
  • diff --git a/app/javascript/mastodon/features/ui/components/navigation_panel.js b/app/javascript/mastodon/features/ui/components/navigation_panel.js index a70e5ab61..9a3940b5b 100644 --- a/app/javascript/mastodon/features/ui/components/navigation_panel.js +++ b/app/javascript/mastodon/features/ui/components/navigation_panel.js @@ -2,7 +2,7 @@ import React from 'react'; import { NavLink, withRouter } from 'react-router-dom'; import { FormattedMessage } from 'react-intl'; import Icon from 'mastodon/components/icon'; -import { profile_directory, showTrends } from 'mastodon/initial_state'; +import { showTrends } from 'mastodon/initial_state'; import NotificationsCounterIcon from './notifications_counter_icon'; import FollowRequestsNavLink from './follow_requests_nav_link'; import ListPanel from './list_panel'; @@ -13,14 +13,13 @@ const NavigationPanel = () => ( - + - + - {profile_directory && } diff --git a/app/javascript/mastodon/features/ui/components/tabs_bar.js b/app/javascript/mastodon/features/ui/components/tabs_bar.js index 195403fd3..55668cab6 100644 --- a/app/javascript/mastodon/features/ui/components/tabs_bar.js +++ b/app/javascript/mastodon/features/ui/components/tabs_bar.js @@ -10,9 +10,9 @@ import NotificationsCounterIcon from './notifications_counter_icon'; export const links = [ , , - , - , - , + , + , + , , ]; diff --git a/app/javascript/mastodon/features/ui/index.js b/app/javascript/mastodon/features/ui/index.js index 2d0136992..1ee038223 100644 --- a/app/javascript/mastodon/features/ui/index.js +++ b/app/javascript/mastodon/features/ui/index.js @@ -14,6 +14,7 @@ import { uploadCompose, resetCompose, changeComposeSpoilerness } from '../../act import { expandHomeTimeline } from '../../actions/timelines'; import { expandNotifications } from '../../actions/notifications'; import { fetchFilters } from '../../actions/filters'; +import { fetchRules } from '../../actions/rules'; import { clearHeight } from '../../actions/height_cache'; import { focusApp, unfocusApp, changeLayout } from 'mastodon/actions/app'; import { synchronouslySubmitMarkers, submitMarkers, fetchMarkers } from 'mastodon/actions/markers'; @@ -368,6 +369,7 @@ class UI extends React.PureComponent { this.props.dispatch(expandHomeTimeline()); this.props.dispatch(expandNotifications()); setTimeout(() => this.props.dispatch(fetchFilters()), 500); + setTimeout(() => this.props.dispatch(fetchRules()), 3000); this.hotkeys.__mousetrap__.stopCallback = (e, element) => { return ['TEXTAREA', 'SELECT', 'INPUT'].includes(element.tagName); diff --git a/app/javascript/mastodon/features/video/index.js b/app/javascript/mastodon/features/video/index.js index f9ce5c0fc..e746b46fe 100644 --- a/app/javascript/mastodon/features/video/index.js +++ b/app/javascript/mastodon/features/video/index.js @@ -91,7 +91,7 @@ export const fileNameFromURL = str => { const pathname = url.pathname; const index = pathname.lastIndexOf('/'); - return pathname.substring(index + 1); + return pathname.slice(index + 1); }; export default @injectIntl @@ -122,7 +122,7 @@ class Video extends React.PureComponent { volume: PropTypes.number, muted: PropTypes.bool, quote: PropTypes.bool, - componetIndex: PropTypes.number, + componentIndex: PropTypes.number, }; static defaultProps = { @@ -503,7 +503,7 @@ class Video extends React.PureComponent { startTime: this.video.currentTime, autoPlay: !this.state.paused, defaultVolume: this.state.volume, - componetIndex: this.props.componetIndex, + componentIndex: this.props.componentIndex, }); } diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index 5456eb88e..fe91569bc 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -1,58 +1,59 @@ { - "account.account_note_header": "Note", - "account.add_or_remove_from_list": "Add or Remove from lists", + "account.account_note_header": "Nota", + "account.add_or_remove_from_list": "Voeg by of verwyder van lyste", "account.badges.bot": "Bot", - "account.badges.group": "Group", - "account.block": "Block @{name}", - "account.block_domain": "Block domain {domain}", - "account.blocked": "Blocked", - "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Cancel follow request", - "account.direct": "Direct message @{name}", + "account.badges.group": "Groep", + "account.block": "Blok @{name}", + "account.block_domain": "Blokeer alles van {domain}", + "account.blocked": "Geblok", + "account.browse_more_on_origin_server": "Snuffel rond op oorspronklike profiel", + "account.cancel_follow_request": "Kanselleer volgversoek", + "account.direct": "Stuur direkte boodskap aan @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain blocked", - "account.edit_profile": "Edit profile", - "account.enable_notifications": "Notify me when @{name} posts", - "account.endorse": "Feature on profile", - "account.follow": "Follow", - "account.followers": "Followers", - "account.followers.empty": "No one follows this user yet.", + "account.edit_profile": "Redigeer profiel", + "account.enable_notifications": "Stel my in kennis wanneer @{name} plasings maak", + "account.endorse": "Beklemtoon op profiel", + "account.follow": "Volg", + "account.followers": "Volgelinge", + "account.followers.empty": "Niemand volg tans hierdie gebruiker nie.", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", - "account.follows_you": "Follows you", - "account.hide_reblogs": "Hide boosts from @{name}", - "account.joined": "Joined {date}", - "account.last_status": "Last active", - "account.link_verified_on": "Ownership of this link was checked on {date}", + "account.follows_you": "Volg jou", + "account.hide_reblogs": "Versteek hupstoot vanaf @{name}", + "account.joined": "{date} aangesluit", + "account.link_verified_on": "Eienaarskap van die skakel was getoets op {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", - "account.mention": "Mention @{name}", - "account.moved_to": "{name} has moved to:", - "account.mute": "Mute @{name}", - "account.mute_notifications": "Mute notifications from @{name}", - "account.muted": "Muted", - "account.never_active": "Never", + "account.mention": "Noem @{name}", + "account.moved_to": "{name} is geskuif na:", + "account.mute": "Demp @{name}", + "account.mute_notifications": "Demp kennisgewings van @{name}", + "account.muted": "Gedemp", "account.posts": "Toots", "account.posts_with_replies": "Toots and replies", - "account.report": "Report @{name}", + "account.report": "Rapporteer @{name}", "account.requested": "Awaiting approval", - "account.share": "Share @{name}'s profile", - "account.show_reblogs": "Show boosts from @{name}", + "account.share": "Deel @{name} se profiel", + "account.show_reblogs": "Wys hupstote vanaf @{name}", "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", - "account.unblock": "Unblock @{name}", - "account.unblock_domain": "Unblock domain {domain}", - "account.unendorse": "Don't feature on profile", + "account.unblock": "Ontblok @{name}", + "account.unblock_domain": "Ontblok domein {domain}", + "account.unblock_short": "Ontblok", + "account.unendorse": "Moenie beklemtoon op profiel nie", "account.unfollow": "Unfollow", - "account.unmute": "Unmute @{name}", - "account.unmute_notifications": "Unmute notifications from @{name}", + "account.unmute": "Ontdemp @{name}", + "account.unmute_notifications": "Ontdemp kennisgewings vanaf @{name}", + "account.unmute_short": "Ontdemp", "account_note.placeholder": "Click to add a note", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", - "admin.dashboard.retention.average": "Average", + "admin.dashboard.retention.average": "Gemiddeld", "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", - "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.", + "admin.dashboard.retention.cohort_size": "Nuwe gebruikers", + "alert.rate_limited.message": "Probeer asb. weer na {retry_time, time, medium}.", "alert.rate_limited.title": "Rate limited", "alert.unexpected.message": "An unexpected error occurred.", "alert.unexpected.title": "Oops!", @@ -69,7 +70,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.conversations": "Conversations", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Remote only", - "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.", "compose_form.direct_message_warning_learn_more": "Learn more", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "locked", @@ -165,8 +166,9 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "There are no blocked domains yet.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", "errors.unexpected_crash.report_issue": "Report issue", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Favourites", "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", "notification.follow_request": "{name} has requested to follow you", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.filter_bar.advanced": "Display all categories", @@ -359,9 +369,9 @@ "privacy.direct.short": "Direct", "privacy.private.long": "Visible for followers only", "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all, shown in public timelines", + "privacy.public.long": "Visible for all", "privacy.public.short": "Public", - "privacy.unlisted.long": "Visible for all, but not in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "Cancel", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", - "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", - "report.placeholder": "Additional comments", - "report.submit": "Submit", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", + "report.placeholder": "Type or paste additional comments", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", + "report.submit": "Submit report", "report.target": "Report {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Search", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", "search_popout.tips.user": "user", "search_results.accounts": "People", + "search_results.all": "All", "search_results.hashtags": "Hashtags", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", @@ -474,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Delete", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 33a78afa3..ac93bf706 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -2,8 +2,8 @@ "account.account_note_header": "مُلاحظة", "account.add_or_remove_from_list": "الإضافة أو الإزالة من القائمة", "account.badges.bot": "روبوت", - "account.badges.group": "مجموعة", - "account.block": "حظر @{name}", + "account.badges.group": "فريق", + "account.block": "احجب @{name}", "account.block_domain": "حظر اسم النِّطاق {domain}", "account.blocked": "محظور", "account.browse_more_on_origin_server": "تصفح المزيد في الملف الشخصي الأصلي", @@ -11,19 +11,19 @@ "account.direct": "مراسلة @{name} بشكل مباشر", "account.disable_notifications": "توقف عن إشعاري عندما ينشر @{name}", "account.domain_blocked": "اسم النِّطاق محظور", - "account.edit_profile": "تحرير الملف الشخصي", + "account.edit_profile": "تعديل الملف الشخصي", "account.enable_notifications": "أشعرني عندما ينشر @{name}", "account.endorse": "أوصِ به على صفحتك الشخصية", - "account.follow": "المُتابعة", - "account.followers": "المُتابِعون", - "account.followers.empty": "لا أحدَ يُتابع هذا المُستخدم حتى الآن.", + "account.follow": "متابعة", + "account.followers": "مُتابِعون", + "account.followers.empty": "لا أحدَ يُتابع هذا المُستخدم إلى حد الآن.", "account.followers_counter": "{count, plural, zero{لا مُتابع} one {مُتابعٌ واحِد} two{مُتابعانِ اِثنان} few{{counter} مُتابِعين} many{{counter} مُتابِعًا} other {{counter} مُتابع}}", + "account.following": "الإشتراكات", "account.following_counter": "{count, plural, zero{لا يُتابِع} one {يُتابِعُ واحد} two{يُتابِعُ اِثنان} few{يُتابِعُ {counter}} many{يُتابِعُ {counter}} other {يُتابِعُ {counter}}}", "account.follows.empty": "لا يُتابع هذا المُستخدمُ أيَّ أحدٍ حتى الآن.", "account.follows_you": "يُتابِعُك", "account.hide_reblogs": "إخفاء مشاركات @{name}", "account.joined": "انضم في {date}", - "account.last_status": "آخر نشاط", "account.link_verified_on": "تمَّ التَّحقق مِن مِلْكيّة هذا الرابط بتاريخ {date}", "account.locked_info": "تمَّ تعيين حالة خصوصية هذا الحساب إلى مُقفَل. يُراجع المالك يدويًا من يمكنه متابعته.", "account.media": "وسائط", @@ -32,20 +32,21 @@ "account.mute": "كَتم @{name}", "account.mute_notifications": "كَتم الإشعارات من @{name}", "account.muted": "مَكتوم", - "account.never_active": "أبدًا", "account.posts": "منشورات", "account.posts_with_replies": "المنشورات والرُدود", "account.report": "الإبلاغ عن @{name}", - "account.requested": "في اِنتظر القُبول. اِنقُر لإلغاء طلب المُتابعة", + "account.requested": "في انتظار القبول. اضغط لإلغاء طلب المُتابعة", "account.share": "مُشاركة الملف الشخصي لـ @{name}", "account.show_reblogs": "عرض مشاركات @{name}", - "account.statuses_counter": "{count, plural, zero {لَا تَبويقات} one {تَبويقةٌ واحدة} two {تَبويقَتانِ اِثنتان} few {{counter} تَبويقات} many {{counter} تَبويقتًا} other {{counter} تَبويقة}}", + "account.statuses_counter": "{count, plural, zero {لَا منشورات} one {منشور واحد} two {منشوران إثنان} few {{counter} منشورات} many {{counter} منشورًا} other {{counter} منشور}}", "account.unblock": "إلغاء الحَظر عن @{name}", "account.unblock_domain": "إلغاء الحَظر عن النِّطاق {domain}", + "account.unblock_short": "ألغ الحجب", "account.unendorse": "لا تُرَوِّج لهُ في الملف الشخصي", "account.unfollow": "إلغاء المُتابعة", "account.unmute": "إلغاء الكَتم عن @{name}", "account.unmute_notifications": "إلغاء كَتم الإشعارات عن @{name}", + "account.unmute_short": "إلغاء الكتم", "account_note.placeholder": "اضغط لإضافة مُلاحظة", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "المُستَخدِمون المَحظورون", "column.bookmarks": "الفواصل المرجعية", "column.community": "الخيط الزمني المحلي", - "column.direct": "الرسائل المباشرة", + "column.conversations": "المحادثات", "column.directory": "تَصَفُّحُ المَلفات الشخصية", "column.domain_blocks": "النِّطاقَاتُ المَحظُورَة", "column.favourites": "المُفَضَّلَة", @@ -77,7 +78,7 @@ "column.home": "الرئيسية", "column.lists": "القوائم", "column.mutes": "المُستَخدِمون المَكتومون", - "column.notifications": "الإشعارَات", + "column.notifications": "الإشعارات", "column.pins": "المنشورات المُثَبَّتَة", "column.public": "الخَطُّ الزَّمَنِيُّ المُوَحَّد", "column_back_button.label": "العودة", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "المحلي فقط", "community.column_settings.media_only": "الوسائط فقط", "community.column_settings.remote_only": "عن بُعد فقط", - "compose_form.direct_message_warning": "سوف تُرسَل هذه التَّبويقة فقط للمُستَخدِمين المَذكورين.", "compose_form.direct_message_warning_learn_more": "تَعَلَّم المَزيد", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "لن يُدرَج هذا المنشور تحت أي وسم بما أنَّه غير مُدرَج. فقط المنشورات العامة يُمكن البحث عنها بواسطة الوسم.", "compose_form.lock_disclaimer": "حسابُك غير {locked}. يُمكن لأي شخص مُتابعتك لرؤية (منشورات المتابعين فقط).", "compose_form.lock_disclaimer.lock": "مُقفَل", @@ -165,8 +166,9 @@ "empty_column.blocks": "لم تقم بحظر أي مستخدِم بعد.", "empty_column.bookmarked_statuses": "ليس لديك أية منشورات في الفواصل المرجعية بعد. عندما ستقوم بإضافة البعض منها، ستظهر هنا.", "empty_column.community": "الخط العام المحلي فارغ. أكتب شيئا ما للعامة كبداية!", - "empty_column.direct": "لم تتلق أية رسالة خاصة مباشِرة بعد. سوف يتم عرض الرسائل المباشرة هنا إن قمت بإرسال واحدة أو تلقيت البعض منها.", + "empty_column.conversations": "عندما ترسل أو تستلم منشورًا محصورٌا على الأشخاص المشار إليهم فيه، سيظهر هنا.", "empty_column.domain_blocks": "ليس هناك نطاقات مخفية بعد.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "ليس لديك أية منشورات مفضلة بعد. عندما ستقوم بالإعجاب بواحدة، ستظهر هنا.", "empty_column.favourites": "لم يقم أي أحد بالإعجاب بهذا المنشور بعد. عندما يقوم أحدهم بذلك سوف يظهر هنا.", "empty_column.follow_recommendations": "يبدو أنه لا يمكن إنشاء أي اقتراحات لك. يمكنك البحث عن أشخاص قد تعرفهم أو استكشاف الوسوم الرائجة.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "حاول تعطيلهم وإنعاش الصفحة. إن لم ينجح ذلك، يمكنك دائمًا استخدام ماستدون عبر متصفح آخر أو تطبيق أصلي.", "errors.unexpected_crash.copy_stacktrace": "انسخ تتبع الارتباطات إلى الحافظة", "errors.unexpected_crash.report_issue": "الإبلاغ عن خلل", + "explore.search_results": "نتائج البحث", + "explore.suggested_follows": "لك", + "explore.title": "استكشف", + "explore.trending_links": "الأخبار", + "explore.trending_statuses": "المنشورات", + "explore.trending_tags": "الوسوم", "follow_recommendations.done": "تم", "follow_recommendations.heading": "تابع الأشخاص الذين ترغب في رؤية منشوراتهم! إليك بعض الاقتراحات.", "follow_recommendations.lead": "ستظهر منشورات الأشخاص الذين تُتابعتهم بترتيب تسلسلي زمني على صفحتك الرئيسية. لا تخف إذا ارتكبت أي أخطاء، تستطيع إلغاء متابعة أي شخص في أي وقت تريد!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "للترقية", "keyboard_shortcuts.column": "للتركيز على منشور على أحد الأعمدة", "keyboard_shortcuts.compose": "للتركيز على نافذة تحرير النصوص", + "keyboard_shortcuts.conversations": "لفتح عمود المحادثات", "keyboard_shortcuts.description": "الوصف", - "keyboard_shortcuts.direct": "لفتح عمود الرسائل المباشرة", "keyboard_shortcuts.down": "للانتقال إلى أسفل القائمة", "keyboard_shortcuts.enter": "لفتح المنشور", "keyboard_shortcuts.favourite": "للإضافة إلى المفضلة", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "الفواصل المرجعية", "navigation_bar.community_timeline": "الخيط العام المحلي", "navigation_bar.compose": "لتحرير منشور جديد", - "navigation_bar.direct": "الرسائل المباشِرة", "navigation_bar.discover": "اكتشف", "navigation_bar.domain_blocks": "النطاقات المخفية", "navigation_bar.edit_profile": "عدّل الملف التعريفي", + "navigation_bar.explore": "استكشف", "navigation_bar.favourites": "المفضلة", "navigation_bar.filters": "الكلمات المكتومة", "navigation_bar.follow_requests": "طلبات المتابعة", @@ -300,17 +308,19 @@ "navigation_bar.preferences": "التفضيلات", "navigation_bar.public_timeline": "الخيط العام الموحد", "navigation_bar.security": "الأمان", + "notification.admin.sign_up": "أنشأ {name} حسابًا", "notification.favourite": "أُعجِب {name} بمنشورك", "notification.follow": "{name} يتابعك", "notification.follow_request": "لقد طلب {name} متابعتك", "notification.mention": "{name} ذكرك", "notification.own_poll": "انتهى استطلاعك للرأي", - "notification.poll": "لقد إنتها تصويت شاركت فيه", + "notification.poll": "لقد انتهى استطلاع رأي شاركتَ فيه", "notification.reblog": "قام {name} بمشاركة منشورك", "notification.status": "{name} نشر للتو", - "notification.update": "{name} edited a post", + "notification.update": "عدّلَ {name} منشورًا", "notifications.clear": "امسح الإخطارات", "notifications.clear_confirmation": "أمتأكد من أنك تود مسح جل الإخطارات الخاصة بك و المتلقاة إلى حد الآن ؟", + "notifications.column_settings.admin.sign_up": "التسجيلات الجديدة:", "notifications.column_settings.alert": "إشعارات سطح المكتب", "notifications.column_settings.favourite": "المُفَضَّلة:", "notifications.column_settings.filter_bar.advanced": "اعرض كافة الفئات", @@ -327,7 +337,7 @@ "notifications.column_settings.status": "منشورات جديدة:", "notifications.column_settings.unread_notifications.category": "إشعارات غير مقروءة", "notifications.column_settings.unread_notifications.highlight": "علّم الإشعارات غير المقرؤة", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.update": "التعديلات:", "notifications.filter.all": "الكل", "notifications.filter.boosts": "الترقيات", "notifications.filter.favourites": "المفضلة", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "إزالة استطلاع الرأي", "privacy.change": "اضبط خصوصية المنشور", "privacy.direct.long": "أنشر إلى المستخدمين المشار إليهم فقط", - "privacy.direct.short": "مباشر", + "privacy.direct.short": "للمشار إليهم فقط", "privacy.private.long": "أنشر لمتابعيك فقط", - "privacy.private.short": "لمتابعيك فقط", - "privacy.public.long": "أنشر على الخيوط العامة", + "privacy.private.short": "للمتابِعين فقط", + "privacy.public.long": "مرئي للكل", "privacy.public.short": "للعامة", - "privacy.unlisted.long": "لا تقم بإدراجه على الخيوط العامة", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "غير مدرج", "refresh": "أنعِش", "regeneration_indicator.label": "جارٍ التحميل…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}ثا", "relative_time.today": "اليوم", "reply_indicator.cancel": "إلغاء", + "report.block": "حظر", + "report.block_explanation": "لن ترى مشاركاتهم ولن يمكنهم متابعتك أو رؤية مشاركاتك، سيكون بديهيا لهم أنهم مكتمون.", "report.categories.other": "أخرى", "report.categories.spam": "مزعج", "report.categories.violation": "المحتوى ينتهك شرطا أو عدة شروط استخدام للخادم", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "ملف تعريفي", + "report.category.title_status": "منشور", + "report.close": "تم", + "report.comment.title": "هل لديك شيء آخر لتخبرنا به؟", "report.forward": "التحويل إلى {target}", "report.forward_hint": "هذا الحساب ينتمي إلى خادوم آخَر. هل تودّ إرسال نسخة مجهولة مِن التقرير إلى هنالك أيضًا؟", - "report.hint": "سوف يتم إرسال التقرير إلى المُشرِفين على خادومكم. بإمكانكم الإدلاء بشرح عن سبب الإبلاغ عن الحساب أسفله:", + "report.mute": "كتم", + "report.mute_explanation": "لن ترى مشاركاتهم. لكن سيبقى بإمكانهم متابعتك ورؤية مشاركاتك دون أن يعرفوا أنهم مكتمون.", + "report.next": "التالي", "report.placeholder": "تعليقات إضافية", + "report.reasons.dislike": "لايعجبني", + "report.reasons.dislike_description": "ألا ترغب برؤيته", + "report.reasons.other": "شيء آخر", + "report.reasons.other_description": "لا تندرج هذه المشكلة ضمن فئات أخرى", + "report.reasons.spam": "إنها رسالة مزعجة", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "ينتهك قواعد الخادم", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "ما هي القواعد المنتهكة؟", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "هل توجد مشاركات تدعم صحة هذا البلاغ؟", "report.submit": "إرسال", "report.target": "ابلغ عن {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "في أثناء مراجعتنا للبلاغ، يمكنك اتخاذ إجراء ضد @{name}:", + "report.thanks.title": "هل ترغب في مشاهدة هذا؟", + "report.thanks.title_actionable": "شُكرًا لَكَ على الإبلاغ، سَوفَ نَنظُرُ فِي هَذَا الأمر.", + "report.unfollow": "إلغاء متابعة @{name}", + "report.unfollow_explanation": "أنت تتابع هذا الحساب، لإزالة مَنشوراته من تغذيَتِكَ الرئيسة ألغ متابعته.", "search.placeholder": "ابحث", "search_popout.search_format": "نمط البحث المتقدم", "search_popout.tips.full_text": "النص البسيط يقوم بعرض المنشورات التي كتبتها أو قمت بإرسالها أو ترقيتها أو تمت الإشارة إليك فيها من طرف آخرين ، بالإضافة إلى مطابقة أسماء المستخدمين وأسماء العرض وعلامات التصنيف.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "جملة قصيرة تُمكّنُك من عرض أسماء و حسابات و كلمات رمزية", "search_popout.tips.user": "مستخدِم", "search_results.accounts": "أشخاص", + "search_results.all": "الكل", "search_results.hashtags": "الوُسوم", + "search_results.nothing_found": "تعذر العثور على نتائج تتضمن هذه المصطلحات", "search_results.statuses": "المنشورات", "search_results.statuses_fts_disabled": "البحث عن المنشورات عن طريق المحتوى ليس مفعل في خادم ماستدون هذا.", "search_results.total": "{count, number} {count, plural, zero {} one {نتيجة} two {نتيجتين} few {نتائج} many {نتائج} other {نتائج}}", @@ -415,8 +455,8 @@ "status.embed": "إدماج", "status.favourite": "أضف إلى المفضلة", "status.filtered": "مُصفّى", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "أنشأه {name} {date}", + "status.history.edited": "عدله {name} {date}", "status.load_more": "حمّل المزيد", "status.media_hidden": "الصورة مستترة", "status.mention": "أذكُر @{name}", @@ -429,7 +469,7 @@ "status.read_more": "اقرأ المزيد", "status.reblog": "رَقِّي", "status.reblog_private": "القيام بالترقية إلى الجمهور الأصلي", - "status.reblogged_by": "رقّاه {name}", + "status.reblogged_by": "شارَكَه {name}", "status.reblogs.empty": "لم يقم أي أحد بمشاركة هذا المنشور بعد. عندما يقوم أحدهم بذلك سوف يظهر هنا.", "status.redraft": "إزالة و إعادة الصياغة", "status.remove_bookmark": "احذفه مِن الفواصل المرجعية", @@ -474,6 +514,7 @@ "upload_error.poll": "لا يمكن إدراج ملفات في استطلاعات الرأي.", "upload_form.audio_description": "وصف للأشخاص ذي قِصر السمع", "upload_form.description": "وصف للمعاقين بصريا", + "upload_form.description_missing": "لم يُضف وصف", "upload_form.edit": "تعديل", "upload_form.thumbnail": "غيّر الصورة المصغرة", "upload_form.undo": "حذف", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 526c0f0f0..3400e3cd1 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -18,12 +18,12 @@ "account.followers": "Siguidores", "account.followers.empty": "Naide sigue a esti usuariu entá.", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "Esti usuariu entá nun sigue a naide.", "account.follows_you": "Síguete", "account.hide_reblogs": "Anubrir les comparticiones de @{name}", "account.joined": "Joined {date}", - "account.last_status": "Cabera actividá", "account.link_verified_on": "La propiedá d'esti enllaz foi comprobada'l {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", @@ -32,20 +32,21 @@ "account.mute": "Silenciar a @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", - "account.never_active": "Enxamás", "account.posts": "Barritos", "account.posts_with_replies": "Barritos y rempuestes", "account.report": "Report @{name}", "account.requested": "Esperando pola aprobación. Calca pa encaboxar la solicitú de siguimientu", "account.share": "Share @{name}'s profile", "account.show_reblogs": "Amosar les comparticiones de @{name}", - "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", + "account.statuses_counter": "{count, plural, one {{counter} artículu} other {{counter} artículos}}", "account.unblock": "Desbloquiar a @{name}", "account.unblock_domain": "Amosar {domain}", + "account.unblock_short": "Unblock", "account.unendorse": "Nun destacar nel perfil", "account.unfollow": "Dexar de siguir", "account.unmute": "Unmute @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", + "account.unmute_short": "Unmute", "account_note.placeholder": "Click to add a note", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "Usuarios bloquiaos", "column.bookmarks": "Marcadores", "column.community": "Llinia temporal llocal", - "column.direct": "Mensaxes direutos", + "column.conversations": "Conversations", "column.directory": "Browse profiles", "column.domain_blocks": "Dominios anubríos", "column.favourites": "Favoritos", @@ -91,9 +92,9 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Namái multimedia", "community.column_settings.remote_only": "Remote only", - "compose_form.direct_message_warning": "Esti barritu namái va unviase a los usuarios mentaos.", "compose_form.direct_message_warning_learn_more": "Saber más", - "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "locked", "compose_form.placeholder": "¿En qué pienses?", @@ -153,22 +154,23 @@ "emoji_button.nature": "Natura", "emoji_button.not_found": "¡Nun hai fustaxes! (╯°□°)╯︵ ┻━┻", "emoji_button.objects": "Oxetos", - "emoji_button.people": "Xente", + "emoji_button.people": "Persones", "emoji_button.recent": "Úsase davezu", - "emoji_button.search": "Guetar…", + "emoji_button.search": "Buscar…", "emoji_button.search_results": "Search results", "emoji_button.symbols": "Símbolos", "emoji_button.travel": "Viaxes y llugares", "empty_column.account_suspended": "Account suspended", "empty_column.account_timeline": "¡Equí nun hai barritos!", "empty_column.account_unavailable": "Profile unavailable", - "empty_column.blocks": "Entá nun bloquiesti a nunengún usuariu.", + "empty_column.blocks": "Entá nun bloquiesti a nengún usuariu.", "empty_column.bookmarked_statuses": "Entá nun tienes nengún barritu en Marcadores. Cuando amiestes unu, va amosase equí.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "Entá nun tienes nuengún mensaxe direutu. Cuando unvies o recibas dalgún, va apaecer equí.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Entá nun hai dominios anubríos.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Entá nun tienes nengún barritu en Favoritos. Cuando amiestes unu, va amosase equí.", - "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", + "empty_column.favourites": "No one has favourited this post yet. When someone does, they will show up here.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", "empty_column.follow_requests": "Entá nun tienes nenguna solicitú de siguimientu. Cuando recibas una, va amosase equí.", "empty_column.hashtag": "Entá nun hai nada nesta etiqueta.", @@ -180,11 +182,17 @@ "empty_column.notifications": "Entá nun tienes nunengún avisu. Interactúa con otros p'aniciar la conversación.", "empty_column.public": "¡Equí nun hai nada! Escribi daqué público o sigui a usuarios d'otros sirvidores pa rellenar esto", "error.unexpected_crash.explanation": "Pola mor d'un fallu nel códigu o un problema de compatibilidá del restolador, esta páxina nun se pudo amosar correutamente.", - "error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.", + "error.unexpected_crash.explanation_addons": "Esta páxina nun se pudo amosar correutamente. Ye probable que dalgún complementu del restolador o dalguna ferramienta de traducción automática produxere esti fallu.", "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", "errors.unexpected_crash.report_issue": "Report issue", + "explore.search_results": "Search results", + "explore.suggested_follows": "Pa ti", + "explore.title": "Explore", + "explore.trending_links": "Noticies", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Etiquetes", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -210,7 +218,7 @@ "hashtag.column_settings.tag_mode.none": "Nenguna d'estes", "hashtag.column_settings.tag_toggle": "Incluyir les etiquetes adicionales d'esta columna", "home.column_settings.basic": "Basic", - "home.column_settings.show_reblogs": "Amosar toots compartíos", + "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Amosar rempuestes", "home.hide_announcements": "Hide announcements", "home.show_announcements": "Show announcements", @@ -218,38 +226,38 @@ "intervals.full.hours": "{number, plural, one {# hora} other {# hores}}", "intervals.full.minutes": "{number, plural, one {# minutu} other {# minutos}}", "keyboard_shortcuts.back": "pa dir p'atrás", - "keyboard_shortcuts.blocked": "p'abrir la llista d'usuarios bloquiaos", + "keyboard_shortcuts.blocked": "Abrir la llista d'usuarios bloquiaos", "keyboard_shortcuts.boost": "pa compartir un toot", "keyboard_shortcuts.column": "to focus a status in one of the columns", - "keyboard_shortcuts.compose": "pa enfocar l'área de composición", + "keyboard_shortcuts.compose": "Enfocar l'área de composición", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Descripción", - "keyboard_shortcuts.direct": "p'abrir la columna de los mensaxes direutos", "keyboard_shortcuts.down": "pa baxar na llista", "keyboard_shortcuts.enter": "p'abrir estaos", "keyboard_shortcuts.favourite": "p'amestar a Favoritos", - "keyboard_shortcuts.favourites": "p'abrir la llista de favoritos", - "keyboard_shortcuts.federated": "p'abrir la llinia temporal federada", + "keyboard_shortcuts.favourites": "Abrir la llista de favoritos", + "keyboard_shortcuts.federated": "Abrir la llinia temporal federada", "keyboard_shortcuts.heading": "Atayos del tecláu", "keyboard_shortcuts.home": "p'abrir la llinia temporal d'aniciu", "keyboard_shortcuts.hotkey": "Atayu", "keyboard_shortcuts.legend": "p'amosar esta lleenda", "keyboard_shortcuts.local": "p'abrir la llinia temporal llocal", "keyboard_shortcuts.mention": "pa mentar al autor", - "keyboard_shortcuts.muted": "p'abrir la llista d'usuarios silenciaos", + "keyboard_shortcuts.muted": "Abrir la llista d'usuarios colos avisos desactivaos", "keyboard_shortcuts.my_profile": "p'abrir el to perfil", - "keyboard_shortcuts.notifications": "p'abrir la columna d'avisos", + "keyboard_shortcuts.notifications": "Abrir la columna d'avisos", "keyboard_shortcuts.open_media": "to open media", - "keyboard_shortcuts.pinned": "p'abrir la llista de barritos fixaos", - "keyboard_shortcuts.profile": "p'abrir el perfil del autor", + "keyboard_shortcuts.pinned": "Abrir la llista d'artículos fixaos", + "keyboard_shortcuts.profile": "Abrir el perfil del autor/a", "keyboard_shortcuts.reply": "pa responder", - "keyboard_shortcuts.requests": "p'abrir la llista de solicitúes de siguimientu", - "keyboard_shortcuts.search": "pa enfocar la gueta", + "keyboard_shortcuts.requests": "Abrir la llista de solicitúes de siguimientu", + "keyboard_shortcuts.search": "Enfocar la barra de busca", "keyboard_shortcuts.spoilers": "to show/hide CW field", - "keyboard_shortcuts.start": "p'abrir la columna «entamar»", + "keyboard_shortcuts.start": "Abrir la columna «Entamar»", "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW", "keyboard_shortcuts.toggle_sensitivity": "to show/hide media", "keyboard_shortcuts.toot": "p'apenzar un barritu nuevu", - "keyboard_shortcuts.unfocus": "pa desenfocar l'área de composición/gueta", + "keyboard_shortcuts.unfocus": "Desenfocar l'área de composición/busca", "keyboard_shortcuts.up": "pa xubir na llista", "lightbox.close": "Close", "lightbox.compress": "Compress image view box", @@ -267,25 +275,25 @@ "lists.replies_policy.list": "Members of the list", "lists.replies_policy.none": "No one", "lists.replies_policy.title": "Show replies to:", - "lists.search": "Guetar ente la xente que sigues", + "lists.search": "Buscar ente la xente que sigues", "lists.subheading": "Les tos llistes", "load_pending": "{count, plural, one {# elementu nuevu} other {# elementos nuevos}}", "loading_indicator.label": "Cargando…", "media_gallery.toggle_visible": "Alternar la visibilidá", - "missing_indicator.label": "Nun s'alcontró", - "missing_indicator.sublabel": "Esti recursu nun pudo alcontrase", - "mute_modal.duration": "Duration", + "missing_indicator.label": "Nun s'atopó", + "missing_indicator.sublabel": "Nun se pudo atopar esti recursu", + "mute_modal.duration": "Duración", "mute_modal.hide_notifications": "¿Anubrir los avisos d'esti usuariu?", "mute_modal.indefinite": "Indefinite", "navigation_bar.apps": "Aplicaciones pa móviles", "navigation_bar.blocks": "Usuarios bloquiaos", "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Llinia temporal llocal", - "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Mensaxes direutos", + "navigation_bar.compose": "Compose new post", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Dominios anubríos", "navigation_bar.edit_profile": "Editar el perfil", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Favoritos", "navigation_bar.filters": "Pallabres silenciaes", "navigation_bar.follow_requests": "Solicitúes de siguimientu", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Preferencies", "navigation_bar.public_timeline": "Llinia temporal federada", "navigation_bar.security": "Seguranza", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} siguióte", "notification.follow_request": "{name} solicitó siguite", @@ -307,10 +316,11 @@ "notification.own_poll": "Your poll has ended", "notification.poll": "Finó una encuesta na que votesti", "notification.reblog": "{name} compartió'l to estáu", - "notification.status": "{name} just posted", - "notification.update": "{name} edited a post", + "notification.status": "{name} ta acabante d'espublizar", + "notification.update": "{name} editó l'artículu", "notifications.clear": "Llimpiar avisos", "notifications.clear_confirmation": "¿De xuru que quies llimpiar dafechu tolos avisos?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Avisos d'escritoriu", "notifications.column_settings.favourite": "Favoritos:", "notifications.column_settings.filter_bar.advanced": "Amosar toles estayes", @@ -325,7 +335,7 @@ "notifications.column_settings.show": "Amosar en columna", "notifications.column_settings.sound": "Reproducir un soníu", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.category": "Avisos ensin lleer", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Too", @@ -340,7 +350,7 @@ "notifications.mark_as_read": "Mark every notification as read", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", - "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.", + "notifications.permission_required": "Los avisos d'escritoriu nun tán disponibles porque nun se concedió'l permisu riquíu.", "notifications_permission_banner.enable": "Activar los avisos d'escritoriu", "notifications_permission_banner.how_to_control": "Pa recibir avisos cuando Mastodon nun tea abiertu, activa los avisos del escritoriu. Pues controlar al milímetru qué tipu d'interaiciones xeneren avisos namás que s'activen, pente'l botón {icon} d'arriba.", "notifications_permission_banner.title": "Never miss a thing", @@ -351,43 +361,71 @@ "poll.total_votes": "{count, plural, one {# votu} other {# votos}}", "poll.vote": "Vote", "poll.voted": "You voted for this answer", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# votu} other {# votos}}", "poll_button.add_poll": "Amestar una encuesta", - "poll_button.remove_poll": "Desaniciar la encuesta", + "poll_button.remove_poll": "Quitar la encuesta", "privacy.change": "Adjust status privacy", "privacy.direct.long": "Post to mentioned users only", "privacy.direct.short": "Direct", "privacy.private.long": "Post to followers only", - "privacy.private.short": "Namái siguidores", - "privacy.public.long": "Post to public timelines", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Public", - "privacy.unlisted.long": "Nun apaez nes llinies temporales públiques", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Nun llistar", "refresh": "Refresh", "regeneration_indicator.label": "Cargando…", "regeneration_indicator.sublabel": "¡Tamos tresnando'l feed d'Aniciu!", - "relative_time.days": "{number}d", + "relative_time.days": "{number} d", "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", + "relative_time.full.just_now": "puramente agora", "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", - "relative_time.hours": "{number}h", + "relative_time.hours": "{number} h", "relative_time.just_now": "agora", - "relative_time.minutes": "{number}m", - "relative_time.seconds": "{number}s", + "relative_time.minutes": "{number} m", + "relative_time.seconds": "{number} s", "relative_time.today": "güei", "reply_indicator.cancel": "Encaboxar", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Forward to {target}", - "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", - "report.hint": "L'informe va unviase a los llendadores del to sirvidor. Embaxo, pues desplicar por qué informes d'esta cuenta:", + "report.forward_hint": "La cuenta ye d'otru sirvidor. ¿Quies unviar ellí tamién una copia anónima del informe?", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Siguiente", "report.placeholder": "Comentarios adicionales", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "Incumple les regles del sirvidor", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Unviar", "report.target": "Report {target}", - "search.placeholder": "Guetar", + "report.thanks.take_action": "Equí tan les opciones pa controlar qué ver en Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "search.placeholder": "Buscar", "search_popout.search_format": "Formatu de gueta avanzada", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "etiqueta", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", "search_popout.tips.user": "usuariu", "search_results.accounts": "Xente", + "search_results.all": "All", "search_results.hashtags": "Etiquetes", + "search_results.nothing_found": "Nun se pudo atopar nada con esos términos de busca", "search_results.statuses": "Barritos", "search_results.statuses_fts_disabled": "Esti sirvidor de Mastodon tien activada la gueta de barritos pol so conteníu.", "search_results.total": "{count, number} {count, plural, one {resultáu} other {resultaos}}", @@ -404,7 +444,7 @@ "status.block": "Bloquiar a @{name}", "status.bookmark": "Amestar a Marcadores", "status.cancel_reblog_private": "Dexar de compartir", - "status.cannot_reblog": "Esti artículu nun pue compartise", + "status.cannot_reblog": "Esti artículu nun se pue compartir", "status.copy": "Copiar l'enllaz al estáu", "status.delete": "Desaniciar", "status.detailed_status": "Detailed conversation view", @@ -454,33 +494,34 @@ "tabs_bar.notifications": "Avisos", "tabs_bar.search": "Search", "time_remaining.days": "{number, plural, one {Queda # día} other {Queden # díes}}", - "time_remaining.hours": "{number, plural, one {# hora restante} other {# hores restantes}}", + "time_remaining.hours": "{number, plural, one {Queda # hora} other {Queden # hores}}", "time_remaining.minutes": "{number, plural, one {Queda # minutu} other {Queden # minutos}}", "time_remaining.moments": "Moments remaining", - "time_remaining.seconds": "{number, plural, one {# segundu restante} other {# segundos restantes}}", + "time_remaining.seconds": "{number, plural, one {Queda # segundu} other {Queden # segundos}}", "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.", "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", - "timeline_hint.resources.statuses": "Older toots", + "timeline_hint.resources.statuses": "Older posts", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", "trends.trending_now": "Trending now", "ui.beforeunload": "El borrador va perdese si coles de Mastodon.", - "units.short.billion": "{count}B", - "units.short.million": "{count}M", - "units.short.thousand": "{count}K", + "units.short.billion": "{count} B", + "units.short.million": "{count} M", + "units.short.thousand": "{count} K", "upload_area.title": "Arrastra y suelta pa xubir", "upload_button.label": "Add images, a video or an audio file", "upload_error.limit": "File upload limit exceeded.", "upload_error.poll": "La xuba de ficheros nun ta permitida con encuestes.", "upload_form.audio_description": "Descripción pa persones con perda auditiva", "upload_form.description": "Descripción pa discapacitaos visuales", + "upload_form.description_missing": "No description added", "upload_form.edit": "Editar", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Desaniciar", "upload_form.video_description": "Descripción pa persones con perda auditiva o discapacidá visual", "upload_modal.analyzing_picture": "Analizando la semeya…", "upload_modal.apply": "Aplicar", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Aplicando…", "upload_modal.choose_image": "Choose image", "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog", "upload_modal.detect_text": "Detectar el testu de la semeya", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 14cbddaf3..42cd08f1f 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -18,12 +18,12 @@ "account.followers": "Последователи", "account.followers.empty": "Все още никой не следва този потребител.", "account.followers_counter": "{count, plural, one {{counter} Последовател} other {{counter} Последователи}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} Последван} other {{counter} Последвани}}", "account.follows.empty": "Този потребител все още не следва никого.", "account.follows_you": "Твой последовател", "account.hide_reblogs": "Скриване на споделяния от @{name}", "account.joined": "Joined {date}", - "account.last_status": "Последно активен/а", "account.link_verified_on": "Собствеността върху тази връзка е проверена на {date}", "account.locked_info": "Този акаунт е поверително заключен. Собственикът преглежда ръчно кой може да го следва.", "account.media": "Мултимедия", @@ -32,7 +32,6 @@ "account.mute": "Заглушаване на @{name}", "account.mute_notifications": "Заглушаване на известия от @{name}", "account.muted": "Заглушено", - "account.never_active": "Никога", "account.posts": "Публикации", "account.posts_with_replies": "Toots with replies", "account.report": "Докладване на @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Публикация} other {{counter} Публикации}}", "account.unblock": "Не блокирай", "account.unblock_domain": "Unhide {domain}", + "account.unblock_short": "Unblock", "account.unendorse": "Не включвайте в профила", "account.unfollow": "Не следвай", "account.unmute": "Раззаглушаване на @{name}", "account.unmute_notifications": "Раззаглушаване на известия от @{name}", + "account.unmute_short": "Unmute", "account_note.placeholder": "Click to add a note", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "Блокирани потребители", "column.bookmarks": "Отметки", "column.community": "Локална емисия", - "column.direct": "Директни съобщения", + "column.conversations": "Conversations", "column.directory": "Преглед на профили", "column.domain_blocks": "Hidden domains", "column.favourites": "Любими", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Само локално", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Само дистанционно", - "compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.", "compose_form.direct_message_warning_learn_more": "Още информация", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Тази публикация няма да бъде изброена под нито един хаштаг, тъй като е скрита. Само публични публикации могат да се търсят по хаштаг.", "compose_form.lock_disclaimer": "Вашият акаунт не е {locked}. Всеки може да ви последва, за да прегледа вашите публикации само за последователи.", "compose_form.lock_disclaimer.lock": "заключено", @@ -165,8 +166,9 @@ "empty_column.blocks": "Не сте блокирали потребители все още.", "empty_column.bookmarked_statuses": "Все още нямате отметнати публикации. Когато отметнете някоя, тя ще се покаже тук.", "empty_column.community": "Локалната емисия е празна. Напишете нещо публично, за да започнете!", - "empty_column.direct": "Все още нямате директни съобщения. Когато изпратите или получите някое, то ще се покаже тук.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "There are no hidden domains yet.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Все още нямате любими публикации. Когато поставите някоя в любими, тя ще се покаже тук.", "empty_column.favourites": "Все още никой не е поставил тази публикация в любими. Когато някой го направи, ще се покаже тук.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Опитайте да ги деактивирате и да опресните страницата. Ако това не помогне, може все още да използвате Mastodon чрез различен браузър или приложение.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", "errors.unexpected_crash.report_issue": "Сигнал за проблем", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Следвайте хора, които харесвате, за да виждате техните съобщения! Ето някои предложения.", "follow_recommendations.lead": "Съобщения от хора, които следвате, ще се показват в хронологичен ред на вашата главна страница. Не се страхувайте, че ще сгрешите, по всяко време много лесно можете да спрете да ги следвате!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "за споделяне", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "за фокусиране на текстовото пространство за композиране", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Описание", - "keyboard_shortcuts.direct": "за отваряне на колона за директни съобщения", "keyboard_shortcuts.down": "за придвижване надолу в списъка", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "за поставяне в любими", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Отметки", "navigation_bar.community_timeline": "Локална емисия", "navigation_bar.compose": "Композиране на нова публикация", - "navigation_bar.direct": "Директни съобщения", "navigation_bar.discover": "Откриване", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Редактирай профил", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Любими", "navigation_bar.filters": "Заглушени думи", "navigation_bar.follow_requests": "Заявки за последване", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Предпочитания", "navigation_bar.public_timeline": "Публичен канал", "navigation_bar.security": "Сигурност", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} хареса твоята публикация", "notification.follow": "{name} те последва", "notification.follow_request": "{name} поиска да ви последва", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Изчистване на известия", "notifications.clear_confirmation": "Сигурни ли сте, че искате да изчистите окончателно всичките си известия?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Десктоп известия", "notifications.column_settings.favourite": "Предпочитани:", "notifications.column_settings.filter_bar.advanced": "Показване на всички категории", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Премахване на анкета", "privacy.change": "Adjust status privacy", "privacy.direct.long": "Post to mentioned users only", - "privacy.direct.short": "Директно", + "privacy.direct.short": "Direct", "privacy.private.long": "Post to followers only", - "privacy.private.short": "Само за последователи", - "privacy.public.long": "Post to public timelines", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Публично", - "privacy.unlisted.long": "Do not show in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Скрито", "refresh": "Опресняване", "regeneration_indicator.label": "Зареждане…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}с", "relative_time.today": "днес", "reply_indicator.cancel": "Отказ", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Препращане към {target}", "report.forward_hint": "Акаунтът е от друг сървър. Изпращане на анонимно копие на доклада и там?", - "report.hint": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", "report.placeholder": "Допълнителни коментари", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Подаване", "report.target": "Reporting", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Търсене", "search_popout.search_format": "Формат за разширено търсене", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Обикновеният текст връща съответстващи показвани имена, потребителски имена и хаштагове", "search_popout.tips.user": "потребител", "search_results.accounts": "Хора", + "search_results.all": "All", "search_results.hashtags": "Хаштагове", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Публикации", "search_results.statuses_fts_disabled": "Търсенето на публикации по тяхното съдържание не е активирано за този Mastodon сървър.", "search_results.total": "{count, number} {count, plural, one {резултат} other {резултата}}", @@ -474,6 +514,7 @@ "upload_error.poll": "Качването на файлове не е позволено с анкети.", "upload_form.audio_description": "Опишете за хора със загуба на слуха", "upload_form.description": "Опишете за хора със зрителни увреждания", + "upload_form.description_missing": "No description added", "upload_form.edit": "Редакция", "upload_form.thumbnail": "Промяна на миниизображението", "upload_form.undo": "Отмяна", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index 0c0a1ca1b..b009d5964 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -18,12 +18,12 @@ "account.followers": "অনুসরণকারী", "account.followers.empty": "এই ব্যক্তিকে এখনো কেউ অনুসরণ করে না।", "account.followers_counter": "{count, plural,one {{counter} জন অনুসরণকারী } other {{counter} জন অনুসরণকারী}}", + "account.following": "Following", "account.following_counter": "{count, plural,one {{counter} জনকে অনুসরণ} other {{counter} জনকে অনুসরণ}}", "account.follows.empty": "এই সদস্য কাওকে এখনো অনুসরণ করেন না.", "account.follows_you": "তোমাকে অনুসরণ করে", "account.hide_reblogs": "@{name}'র সমর্থনগুলি লুকিয়ে ফেলুন", "account.joined": "Joined {date}", - "account.last_status": "শেষ সক্রিয় ছিল", "account.link_verified_on": "এই লিংকের মালিকানা চেক করা হয়েছে {date} তারিখে", "account.locked_info": "এই নিবন্ধনের গোপনীয়তার ক্ষেত্র তালা দেওয়া আছে। নিবন্ধনকারী অনুসরণ করার অনুমতি যাদেরকে দেবেন, শুধু তারাই অনুসরণ করতে পারবেন।", "account.media": "মিডিয়া", @@ -32,7 +32,6 @@ "account.mute": "@{name} কে নিঃশব্দ করুন", "account.mute_notifications": "@{name} র প্রজ্ঞাপন আপনার কাছে নিঃশব্দ করুন", "account.muted": "নিঃশব্দ", - "account.never_active": "কখনও নয়", "account.posts": "টুট", "account.posts_with_replies": "টুট এবং মতামত", "account.report": "@{name} কে রিপোর্ট করুন", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural,one {{counter} টুট} other {{counter} টুট}}", "account.unblock": "@{name} র কার্যকলাপ দেখুন", "account.unblock_domain": "{domain} কে আবার দেখুন", + "account.unblock_short": "Unblock", "account.unendorse": "আপনার নিজের পাতায় এটা দেখবেন না", "account.unfollow": "অনুসরণ করো না", "account.unmute": "@{name} র কার্যকলাপ আবার দেখুন", "account.unmute_notifications": "@{name} র প্রজ্ঞাপন দেখুন", + "account.unmute_short": "Unmute", "account_note.placeholder": "নোট যোগ করতে ক্লিক করুন", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "যাদের ব্লক করা হয়েছে", "column.bookmarks": "বুকমার্ক", "column.community": "স্থানীয় সময়সারি", - "column.direct": "সরাসরি লেখা", + "column.conversations": "Conversations", "column.directory": "প্রোফাইল ব্রাউজ করুন", "column.domain_blocks": "লুকোনো ডোমেনগুলি", "column.favourites": "পছন্দের গুলো", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "শুধুমাত্র স্থানীয়", "community.column_settings.media_only": "শুধুমাত্র ছবি বা ভিডিও", "community.column_settings.remote_only": "শুধুমাত্র দূরবর্তী", - "compose_form.direct_message_warning": "শুধুমাত্র যাদেরকে উল্লেখ করা হয়েছে তাদেরকেই এই টুটটি পাঠানো হবে ।", "compose_form.direct_message_warning_learn_more": "আরো জানুন", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "কোনো হ্যাশট্যাগের ভেতরে এই টুটটি থাকবেনা কারণ এটি তালিকাবহির্ভূত। শুধুমাত্র প্রকাশ্য ঠোটগুলো হ্যাশট্যাগের ভেতরে খুঁজে পাওয়া যাবে।", "compose_form.lock_disclaimer": "আপনার নিবন্ধনে তালা দেওয়া নেই, যে কেও আপনাকে অনুসরণ করতে পারবে এবং অনুশারকদের জন্য লেখা দেখতে পারবে।", "compose_form.lock_disclaimer.lock": "তালা দেওয়া", @@ -165,8 +166,9 @@ "empty_column.blocks": "আপনি কোনো ব্যবহারকারীদের ব্লক করেন নি।", "empty_column.bookmarked_statuses": "আপনার কাছে এখনও কোনও বুকমার্কড টুট নেই। আপনি যখন একটি বুকমার্ক করেন, এটি এখানে প্রদর্শিত হবে।", "empty_column.community": "স্থানীয় সময়রেখাতে কিছু নেই। প্রকাশ্যভাবে কিছু লিখে লেখালেখির উদ্বোধন করে ফেলুন!", - "empty_column.direct": "আপনার কাছে সরাসরি পাঠানো কোনো লেখা নেই। যদি কেও পাঠায়, সেটা এখানে দেখা যাবে।", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "এখনও কোনও লুকানো ডোমেন নেই।", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "আপনার পছন্দের কোনো টুট এখনো নেই। আপনি কোনো লেখা পছন্দের হিসেবে চিহ্নিত করলে এখানে পাওয়া যাবে।", "empty_column.favourites": "কেও এখনো এটাকে পছন্দের টুট হিসেবে চিহ্নিত করেনি। যদি করে, তখন তাদের এখানে পাওয়া যাবে।", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "স্টেকট্রেস ক্লিপবোর্ডে কপি করুন", "errors.unexpected_crash.report_issue": "সমস্যার প্রতিবেদন করুন", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "সম্পন্ন", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "সমর্থন করতে", "keyboard_shortcuts.column": "কোনো কলামএ কোনো লেখা ফোকাস করতে", "keyboard_shortcuts.compose": "লেখা সম্পদনার জায়গায় ফোকাস করতে", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "বিবরণ", - "keyboard_shortcuts.direct": "সরাসরি পাঠানো লেখা দেখতে", "keyboard_shortcuts.down": "তালিকার ভেতরে নিচে যেতে", "keyboard_shortcuts.enter": "অবস্থা দেখতে", "keyboard_shortcuts.favourite": "পছন্দের দেখতে", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "বুকমার্ক", "navigation_bar.community_timeline": "স্থানীয় সময়রেখা", "navigation_bar.compose": "নতুন টুট লিখুন", - "navigation_bar.direct": "সরাসরি লেখাগুলি", "navigation_bar.discover": "ঘুরে দেখুন", "navigation_bar.domain_blocks": "লুকানো ডোমেনগুলি", "navigation_bar.edit_profile": "নিজের পাতা সম্পাদনা করতে", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "পছন্দের", "navigation_bar.filters": "বন্ধ করা শব্দ", "navigation_bar.follow_requests": "অনুসরণের অনুরোধগুলি", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "পছন্দসমূহ", "navigation_bar.public_timeline": "যুক্তবিশ্বের সময়রেখা", "navigation_bar.security": "নিরাপত্তা", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} আপনার কার্যক্রম পছন্দ করেছেন", "notification.follow": "{name} আপনাকে অনুসরণ করেছেন", "notification.follow_request": "{name} আপনাকে অনুসরণ করার জন্য অনুরধ করেছে", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "প্রজ্ঞাপনগুলো মুছে ফেলতে", "notifications.clear_confirmation": "আপনি কি নির্চিত প্রজ্ঞাপনগুলো মুছে ফেলতে চান ?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "কম্পিউটারে প্রজ্ঞাপনগুলি", "notifications.column_settings.favourite": "পছন্দের:", "notifications.column_settings.filter_bar.advanced": "সব শ্রেণীগুলো দেখানো", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "নির্বাচন বাদ দিতে", "privacy.change": "লেখার গোপনীয়তা অবস্থা ঠিক করতে", "privacy.direct.long": "শুধুমাত্র উল্লেখিত ব্যবহারকারীদের কাছে লিখতে", - "privacy.direct.short": "সরাসরি", + "privacy.direct.short": "Direct", "privacy.private.long": "শুধুমাত্র আপনার অনুসরণকারীদের লিখতে", - "privacy.private.short": "শুধুমাত্র অনুসরণকারীদের জন্য", - "privacy.public.long": "সর্বজনীন প্রকাশ্য সময়রেখাতে লিখতে", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "সর্বজনীন প্রকাশ্য", - "privacy.unlisted.long": "সর্বজনীন প্রকাশ্য সময়রেখাতে না দেখাতে", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "প্রকাশ্য নয়", "refresh": "সতেজ করা", "regeneration_indicator.label": "আসছে…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number} সেকেন্ড", "relative_time.today": "আজ", "reply_indicator.cancel": "বাতিল করতে", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "এটা আরো পাঠান {target} তে", "report.forward_hint": "এই নিবন্ধনটি অন্য একটি সার্ভারে। অপ্রকাশিতনামাভাবে রিপোর্টের কপি সেখানেও কি পাঠাতে চান ?", - "report.hint": "রিপোর্টটি আপনার সার্ভারের পরিচালকের কাছে পাঠানো হবে। রিপোর্ট পাঠানোর কারণ নিচে বিস্তারিত লিখতে পারেন:", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", "report.placeholder": "অন্য কোনো মন্তব্য", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "জমা দিন", "report.target": "{target} রিপোর্ট করুন", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "অনুসন্ধান", "search_popout.search_format": "বিস্তারিতভাবে খোঁজার পদ্ধতি", "search_popout.tips.full_text": "সাধারণ লেখা দিয়ে খুঁজলে বের হবে সেরকম আপনার লেখা, পছন্দের লেখা, সমর্থন করা লেখা, আপনাকে উল্লেখকরা কোনো লেখা, যা খুঁজছেন সেরকম কোনো ব্যবহারকারীর নাম বা কোনো হ্যাশট্যাগগুলো।", @@ -395,7 +433,9 @@ "search_popout.tips.text": "সাধারণ লেখা দিয়ে খুঁজলে বের হবে সেরকম ব্যবহারকারীর নাম বা কোনো হ্যাশট্যাগগুলো", "search_popout.tips.user": "ব্যবহারকারী", "search_results.accounts": "মানুষ", + "search_results.all": "All", "search_results.hashtags": "হ্যাশট্যাগগুলি", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "টুট", "search_results.statuses_fts_disabled": "তাদের সামগ্রী দ্বারা টুটগুলি অনুসন্ধান এই মস্তোডন সার্ভারে সক্ষম নয়।", "search_results.total": "{count, number} {count, plural, one {ফলাফল} other {ফলাফল}}", @@ -474,6 +514,7 @@ "upload_error.poll": "নির্বাচনক্ষেত্রে কোনো ফাইল যুক্ত করা যাবেনা।", "upload_form.audio_description": "শ্রবণশক্তি লোকদের জন্য বর্ণনা করুন", "upload_form.description": "যারা দেখতে পায়না তাদের জন্য এটা বর্ণনা করতে", + "upload_form.description_missing": "No description added", "upload_form.edit": "সম্পাদন", "upload_form.thumbnail": "থাম্বনেল পরিবর্তন করুন", "upload_form.undo": "মুছে ফেলতে", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index daea18086..74d430b50 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -18,12 +18,12 @@ "account.followers": "Heulier·ezed·ien", "account.followers.empty": "Den na heul an implijer-mañ c'hoazh.", "account.followers_counter": "{count, plural, other{{counter} Heulier}}", + "account.following": "Following", "account.following_counter": "{count, plural, other {{counter} Heuliañ}}", "account.follows.empty": "An implijer·ez-mañ na heul den ebet.", "account.follows_you": "Ho heul", "account.hide_reblogs": "Kuzh toudoù rannet gant @{name}", "account.joined": "Amañ abaoe {date}", - "account.last_status": "Oberiantiz zivezhañ", "account.link_verified_on": "Gwiriet eo bet perc'hennidigezh al liamm d'an deiziad-mañ : {date}", "account.locked_info": "Prennet eo ar gont-mañ. Dibab a ra ar perc'henn ar re a c'hall heuliañ anezhi pe anezhañ.", "account.media": "Media", @@ -32,7 +32,6 @@ "account.mute": "Kuzhat @{name}", "account.mute_notifications": "Kuzh kemennoù eus @{name}", "account.muted": "Kuzhet", - "account.never_active": "Birviken", "account.posts": "a doudoù", "account.posts_with_replies": "Toudoù ha respontoù", "account.report": "Disklêriañ @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Toud} other {{counter} Toud}}", "account.unblock": "Diverzañ @{name}", "account.unblock_domain": "Diverzañ an domani {domain}", + "account.unblock_short": "Unblock", "account.unendorse": "Paouez da lakaat war-wel war ar profil", "account.unfollow": "Diheuliañ", "account.unmute": "Diguzhat @{name}", "account.unmute_notifications": "Diguzhat kemennoù a @{name}", + "account.unmute_short": "Unmute", "account_note.placeholder": "Klikit evit ouzhpenniñ un notenn", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "Implijer·ezed·ien berzet", "column.bookmarks": "Sinedoù", "column.community": "Red-amzer lec'hel", - "column.direct": "Kemennadoù prevez", + "column.conversations": "Conversations", "column.directory": "Mont a-dreuz ar profiloù", "column.domain_blocks": "Domani berzet", "column.favourites": "Muiañ-karet", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Nemet lec'hel", "community.column_settings.media_only": "Nemet Mediaoù", "community.column_settings.remote_only": "Nemet a-bell", - "compose_form.direct_message_warning": "An toud-mañ a vo kaset nemet d'an implijer·ezed·ien meneget.", "compose_form.direct_message_warning_learn_more": "Gouzout hiroc'h", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Ne vo ket lakaet an toud-mañ er rolloù gerioù-klik dre mard eo anlistennet. N'eus nemet an toudoù foran a c'hall bezañ klasket dre c'her-klik.", "compose_form.lock_disclaimer": "N'eo ket {locked} ho kont. An holl a c'hal heuliañ ac'hanoc'h evit gwelout ho toudoù prevez.", "compose_form.lock_disclaimer.lock": "prennet", @@ -165,8 +166,9 @@ "empty_column.blocks": "N'eus ket bet berzet implijer·ez ganeoc'h c'hoazh.", "empty_column.bookmarked_statuses": "N'ho peus toud ebet enrollet en ho sinedoù c'hoazh. Pa vo ouzhpennet unan ganeoc'h e teuio war wel amañ.", "empty_column.community": "Goulo eo ar red-amzer lec'hel. Skrivit'ta un dra evit lakaat tan dezhi !", - "empty_column.direct": "N'ho peus kemennad prevez ebet c'hoazh. Pa vo resevet pe kaset unan ganeoc'h e teuio war wel amañ.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "N'eus domani kuzh ebet c'hoazh.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "N'ho peus toud muiañ-karet ebet c'hoazh. Pa vo lakaet unan ganeoc'h e vo diskouezet amañ.", "empty_column.favourites": "Den ebet n'eus lakaet an toud-mañ en e reoù muiañ-karet. Pa vo graet gant unan bennak e vo diskouezet amañ.", "empty_column.follow_recommendations": "Seblant a ra ne vez ket genelet damvenegoù evidoc'h. Gallout a rit implijout un enklask evit klask tud hag a vefe anavezet ganeoc'h pe ergerzhout gerioù-klik diouzh ar c'hiz.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Klaskit azbevaat ar bajenn. Ma n'ez a ket en-dro e c'hallit klask ober gant Mastodon dre ur merdeer disheñvel pe dre an arload genidik.", "errors.unexpected_crash.copy_stacktrace": "Eilañ ar roudoù diveugañ er golver", "errors.unexpected_crash.report_issue": "Danevellañ ur fazi", + "explore.search_results": "Disoc'hoù an enklask", + "explore.suggested_follows": "For you", + "explore.title": "Ergerzhit", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Gerioù-klik", "follow_recommendations.done": "Graet", "follow_recommendations.heading": "Heuliit tud e plijfe deoc'h lenn toudoù! Setu un tamm alioù.", "follow_recommendations.lead": "Toudoù eus tud heuliet ganeoc'h a zeuio war wel en un urzh amzeroniezhel war ho red degemer. N'ho peus ket aon ober fazioù, gallout a rit paouez heuliañ tud ken aes n'eus forzh pegoulz!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "da skignañ", "keyboard_shortcuts.column": "Fokus ar bann", "keyboard_shortcuts.compose": "Fokus an takad testenn", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Deskrivadur", - "keyboard_shortcuts.direct": "Digeriñ bann ar c'hemennadennoù prevez", "keyboard_shortcuts.down": "Diskennañ er roll", "keyboard_shortcuts.enter": "evit digeriñ un toud", "keyboard_shortcuts.favourite": "Lakaat an toud evel muiañ-karet", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Sinedoù", "navigation_bar.community_timeline": "Red-amzer lec'hel", "navigation_bar.compose": "Skrivañ un toud nevez", - "navigation_bar.direct": "Kemennadoù prevez", "navigation_bar.discover": "Dizoleiñ", "navigation_bar.domain_blocks": "Domanioù kuzhet", "navigation_bar.edit_profile": "Aozañ ar profil", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Ar re vuiañ-karet", "navigation_bar.filters": "Gerioù kuzhet", "navigation_bar.follow_requests": "Pedadoù heuliañ", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Gwellvezioù", "navigation_bar.public_timeline": "Red-amzer kevreet", "navigation_bar.security": "Diogelroez", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} en/he deus lakaet ho toud en e/he muiañ-karet", "notification.follow": "heuliañ a ra {name} ac'hanoc'h", "notification.follow_request": "{name} en/he deus goulennet da heuliañ ac'hanoc'h", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Skarzhañ ar c'hemennoù", "notifications.clear_confirmation": "Ha sur oc'h e fell deoc'h skarzhañ ho kemennoù penn-da-benn?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Kemennoù war ar burev", "notifications.column_settings.favourite": "Ar re vuiañ-karet:", "notifications.column_settings.filter_bar.advanced": "Skrammañ an-holl rummadoù", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Dilemel ar sontadeg", "privacy.change": "Kemmañ gwelidigezh ar statud", "privacy.direct.long": "Embann evit an implijer·ezed·ien meneget hepken", - "privacy.direct.short": "War-eeun", + "privacy.direct.short": "Direct", "privacy.private.long": "Embann evit ar re a heuilh ac'hanon hepken", - "privacy.private.short": "Ar re a heuilh ac'hanon hepken", - "privacy.public.long": "Embann war ar redoù-amzer foran", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Publik", - "privacy.unlisted.long": "Na embann war ar redoù-amzer foran", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Anlistennet", "refresh": "Freskaat", "regeneration_indicator.label": "O kargañ…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}eil", "relative_time.today": "hiziv", "reply_indicator.cancel": "Nullañ", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Treuzkas da: {target}", "report.forward_hint": "War ur servijer all emañ ar c'hont-se. Kas dezhañ un adskrid disanv eus an danevell ivez?", - "report.hint": "Ar danevell a vo bet kaset da evezhidi ho servijer. Gallout a rit displegañ perak emaoc'h oc'h aroueziañ ar c'hont a-is:", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", "report.placeholder": "Askelennoù ouzhpenn", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Kinnig", "report.target": "O tisklêriañ {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Klask", "search_popout.search_format": "Framm klask araokaet", "search_popout.tips.full_text": "Testenn simpl a adkas toudoù skrivet ganeoc'h, merket ganeoc'h evel miuañ-karet, toudoù skignet, pe e-lec'h oc'h bet meneget, met ivez anvioù skrammañ, anvioù implijer ha gêrioù-klik hag a glot.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Testenn simpl a adkas anvioù skrammañ, anvioù implijer ha gêrioù-klik hag a glot", "search_popout.tips.user": "implijer·ez", "search_results.accounts": "Tud", + "search_results.all": "All", "search_results.hashtags": "Gerioù-klik", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "a doudoù", "search_results.statuses_fts_disabled": "Klask toudoù dre oc'h endalc'h n'eo ket aotreet war ar servijer-mañ.", "search_results.total": "{count, number} {count, plural, one {disoc'h} other {a zisoc'h}}", @@ -474,6 +514,7 @@ "upload_error.poll": "Pellgargañ restroù n'eo ket aotreet gant sontadegoù.", "upload_form.audio_description": "Diskrivañ evit tud a zo kollet o c'hlev", "upload_form.description": "Diskrivañ evit tud a zo kollet o gweled", + "upload_form.description_missing": "No description added", "upload_form.edit": "Aozañ", "upload_form.thumbnail": "Kemmañ ar velvenn", "upload_form.undo": "Dilemel", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 15036eef9..16de55828 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -1,6 +1,6 @@ { "account.account_note_header": "Nota", - "account.add_or_remove_from_list": "Afegir o Treure de les llistes", + "account.add_or_remove_from_list": "Afegeix o treu de les llistes", "account.badges.bot": "Bot", "account.badges.group": "Grup", "account.block": "Bloqueja @{name}", @@ -8,58 +8,59 @@ "account.blocked": "Bloquejat", "account.browse_more_on_origin_server": "Navega més en el perfil original", "account.cancel_follow_request": "Anul·la la sol·licitud de seguiment", - "account.direct": "Missatge directe @{name}", - "account.disable_notifications": "Deixa de notificar-me els tuts de @{name}", - "account.domain_blocked": "Domini ocult", + "account.direct": "Envia missatge directe a @{name}", + "account.disable_notifications": "Deixa de notificar-me les publicacions de @{name}", + "account.domain_blocked": "Domini bloquejat", "account.edit_profile": "Edita el perfil", - "account.enable_notifications": "Notifica’m els tuts de @{name}", + "account.enable_notifications": "Notifica’m les publicacions de @{name}", "account.endorse": "Recomana en el teu perfil", "account.follow": "Segueix", "account.followers": "Seguidors", "account.followers.empty": "Encara ningú no segueix aquest usuari.", "account.followers_counter": "{count, plural, one {{counter} Seguidor} other {{counter} Seguidors}}", + "account.following": "Seguits", "account.following_counter": "{count, plural, other {{counter} Seguint}}", - "account.follows.empty": "Aquest usuari encara no segueix a ningú.", + "account.follows.empty": "Aquest usuari encara no segueix ningú.", "account.follows_you": "Et segueix", "account.hide_reblogs": "Amaga els impulsos de @{name}", - "account.joined": "Unit des de {date}", - "account.last_status": "Darrer actiu", + "account.joined": "Membre des de {date}", "account.link_verified_on": "La propietat d'aquest enllaç es va verificar el dia {date}", "account.locked_info": "Aquest estat de privadesa del compte està definit com a bloquejat. El propietari revisa manualment qui pot seguir-lo.", "account.media": "Mèdia", - "account.mention": "Esmentar @{name}", - "account.moved_to": "{name} s'ha mogut a:", + "account.mention": "Esmenta @{name}", + "account.moved_to": "{name} s'ha traslladat a:", "account.mute": "Silencia @{name}", - "account.mute_notifications": "Notificacions desactivades de @{name}", + "account.mute_notifications": "Silencia les notificacions de @{name}", "account.muted": "Silenciat", - "account.never_active": "Mai", - "account.posts": "Tuts", - "account.posts_with_replies": "Tuts i respostes", - "account.report": "Informar sobre @{name}", - "account.requested": "Esperant aprovació. Clic per a cancel·lar la petició de seguiment", + "account.posts": "Publicacions", + "account.posts_with_replies": "Publicacions i respostes", + "account.report": "Informa sobre @{name}", + "account.requested": "Esperant aprovació. Fes clic per cancel·lar la petició de seguiment", "account.share": "Comparteix el perfil de @{name}", "account.show_reblogs": "Mostra els impulsos de @{name}", - "account.statuses_counter": "{count, plural, one {{counter} Tut} other {{counter} Tuts}}", + "account.statuses_counter": "{count, plural, one {{counter} Publicació} other {{counter} Publicacions}}", "account.unblock": "Desbloqueja @{name}", - "account.unblock_domain": "Mostra {domain}", - "account.unendorse": "No recomanar en el perfil", + "account.unblock_domain": "Desbloqueja el domini {domain}", + "account.unblock_short": "Desbloqueja", + "account.unendorse": "No recomanis en el perfil", "account.unfollow": "Deixa de seguir", - "account.unmute": "Treure silenci de @{name}", + "account.unmute": "Deixa de silenciar @{name}", "account.unmute_notifications": "Activar notificacions de @{name}", + "account.unmute_short": "Deixa de silenciar", "account_note.placeholder": "Fes clic per afegir una nota", - "admin.dashboard.daily_retention": "Ràtio de retenció per dia després del registre", - "admin.dashboard.monthly_retention": "Ràtio de retenció per mes després del registre", + "admin.dashboard.daily_retention": "Ràtio de retenció d'usuaris nous, per dia, després del registre", + "admin.dashboard.monthly_retention": "Ràtio de retenció d'usuaris nous, per mes, després del registre", "admin.dashboard.retention.average": "Mitjana", - "admin.dashboard.retention.cohort": "Registres mes", + "admin.dashboard.retention.cohort": "Mes del registre", "admin.dashboard.retention.cohort_size": "Nous usuaris", - "alert.rate_limited.message": "Si us plau torna-ho a provar després de {retry_time, time, medium}.", + "alert.rate_limited.message": "Si us plau, torna-ho a provar després de {retry_time, time, medium}.", "alert.rate_limited.title": "Límit de freqüència", "alert.unexpected.message": "S'ha produït un error inesperat.", "alert.unexpected.title": "Vaja!", "announcement.announcement": "Anunci", "attachments_list.unprocessed": "(sense processar)", "autosuggest_hashtag.per_week": "{count} per setmana", - "boost_modal.combo": "Pots prémer {combo} per saltar-te això el proper cop", + "boost_modal.combo": "Pots prémer {combo} per evitar-ho el pròxim cop", "bundle_column_error.body": "S'ha produït un error en carregar aquest component.", "bundle_column_error.retry": "Torna-ho a provar", "bundle_column_error.title": "Error de connexió", @@ -69,16 +70,16 @@ "column.blocks": "Usuaris bloquejats", "column.bookmarks": "Marcadors", "column.community": "Línia de temps local", - "column.direct": "Missatges directes", - "column.directory": "Navega els perfils", - "column.domain_blocks": "Dominis ocults", + "column.conversations": "Converses", + "column.directory": "Navega pels perfils", + "column.domain_blocks": "Dominis bloquejats", "column.favourites": "Favorits", - "column.follow_requests": "Peticions per seguir-te", + "column.follow_requests": "Peticions per a seguir-te", "column.home": "Inici", "column.lists": "Llistes", "column.mutes": "Usuaris silenciats", "column.notifications": "Notificacions", - "column.pins": "Tuts fixats", + "column.pins": "Publicacions fixades", "column.public": "Línia de temps federada", "column_back_button.label": "Enrere", "column_header.hide_settings": "Amaga la configuració", @@ -91,50 +92,50 @@ "community.column_settings.local_only": "Només local", "community.column_settings.media_only": "Només multimèdia", "community.column_settings.remote_only": "Només remot", - "compose_form.direct_message_warning": "Aquest tut només serà enviat als usuaris esmentats.", - "compose_form.direct_message_warning_learn_more": "Aprèn més", - "compose_form.hashtag_warning": "Aquesta tut no es mostrarà en cap etiqueta ja que no està llistat. Només els tuts públics poden ser cercats per etiqueta.", - "compose_form.lock_disclaimer": "El teu compte no està bloquejat {locked}. Tothom pot seguir-te i veure els teus missatges a seguidors.", + "compose_form.direct_message_warning_learn_more": "Més informació", + "compose_form.encryption_warning": "Les publicacions a Mastodon no estant xifrades punt a punt. No comparteixis informació perillosa mitjançant Mastodon.", + "compose_form.hashtag_warning": "Aquesta publicació no es mostrarà en cap etiqueta, ja que no està llistada. Només les publicacions públiques es poden cercar per etiqueta.", + "compose_form.lock_disclaimer": "El teu compte no està bloquejat {locked}. Tothom pot seguir-te i veure els teus missatges només per a seguidors.", "compose_form.lock_disclaimer.lock": "bloquejat", - "compose_form.placeholder": "En què penses?", - "compose_form.poll.add_option": "Afegir una opció", + "compose_form.placeholder": "Què et passa pel cap?", + "compose_form.poll.add_option": "Afegeix una opció", "compose_form.poll.duration": "Durada de l'enquesta", "compose_form.poll.option_placeholder": "Opció {number}", "compose_form.poll.remove_option": "Elimina aquesta opció", "compose_form.poll.switch_to_multiple": "Canvia l’enquesta per a permetre diverses opcions", - "compose_form.poll.switch_to_single": "Canvia l’enquesta per a permetre una única opció", - "compose_form.publish": "Publicar", + "compose_form.poll.switch_to_single": "Canvia l’enquesta per permetre una única opció", + "compose_form.publish": "Publica", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Desa els canvis", - "compose_form.sensitive.hide": "Marcar mèdia com a sensible", - "compose_form.sensitive.marked": "Mèdia marcat com a sensible", - "compose_form.sensitive.unmarked": "Mèdia no està marcat com a sensible", - "compose_form.spoiler.marked": "Text es ocult sota l'avís", - "compose_form.spoiler.unmarked": "Text no ocult", + "compose_form.sensitive.hide": "{count, plural, one {Marca contingut com a sensible} other {Marca contingut com a sensible}}", + "compose_form.sensitive.marked": "{count, plural, one {Contingut marcat com a sensible} other {Contingut marcat com a sensible}}", + "compose_form.sensitive.unmarked": "{count, plural, one {Contingut no marcat com a sensible} other {Contingut no marcat com a sensible}}", + "compose_form.spoiler.marked": "Elimina l'avís de contingut", + "compose_form.spoiler.unmarked": "Afegeix avís de contingut", "compose_form.spoiler_placeholder": "Escriu l'avís aquí", "confirmation_modal.cancel": "Cancel·la", - "confirmations.block.block_and_report": "Bloquejar i informar", + "confirmations.block.block_and_report": "Bloqueja i informa", "confirmations.block.confirm": "Bloqueja", - "confirmations.block.message": "Estàs segur que vols bloquejar a {name}?", + "confirmations.block.message": "Segur que vols bloquejar a {name}?", "confirmations.delete.confirm": "Suprimeix", - "confirmations.delete.message": "Estàs segur que vols suprimir aquest tut?", + "confirmations.delete.message": "Segur que vols suprimir aquesta publicació?", "confirmations.delete_list.confirm": "Suprimeix", - "confirmations.delete_list.message": "Estàs segur que vols suprimir permanentment aquesta llista?", + "confirmations.delete_list.message": "Segur que vols suprimir permanentment aquesta llista?", "confirmations.discard_edit_media.confirm": "Descarta", - "confirmations.discard_edit_media.message": "Tens canvis no desats de la descripciò de mèdia o previsualització, els vols descartar?", - "confirmations.domain_block.confirm": "Amaga tot el domini", - "confirmations.domain_block.message": "Estàs segur, realment segur que vols bloquejar totalment {domain}? En la majoria dels casos bloquejar o silenciar uns pocs objectius és suficient i preferible. No veuràs contingut d’aquest domini en cap de les línies de temps ni en les notificacions. Els teus seguidors d’aquest domini seran eliminats.", + "confirmations.discard_edit_media.message": "Tens canvis no desats en la descripció del contingut o en la previsualització, els vols descartar?", + "confirmations.domain_block.confirm": "Bloqueja el domini sencer", + "confirmations.domain_block.message": "N'estàs segur del tot que vols bloquejar totalment {domain}? En la majoria dels casos, bloquejar o silenciar uns pocs objectius és suficient i preferible. No veuràs el contingut d’aquest domini en cap de les línies de temps ni en les notificacions. Els teus seguidors d’aquest domini s'elimiran.", "confirmations.logout.confirm": "Tancar sessió", "confirmations.logout.message": "Segur que vols tancar la sessió?", "confirmations.mute.confirm": "Silencia", - "confirmations.mute.explanation": "Això amagarà les seves publicacions i les que els mencionen però encara els permetrà veure les teves i seguir-te.", - "confirmations.mute.message": "Estàs segur que vols silenciar {name}?", - "confirmations.redraft.confirm": "Esborrar i refer", - "confirmations.redraft.message": "Estàs segur que vols esborrar aquest tut i tornar a redactar-lo? Perdràs tots els impulsos i favorits, i les respostes al tut original es quedaran orfes.", + "confirmations.mute.explanation": "Això amagarà les seves publicacions i les que els mencionen, però encara els permetrà veure les teves i seguir-te.", + "confirmations.mute.message": "Segur que vols silenciar {name}?", + "confirmations.redraft.confirm": "Esborra'l i reescriure-lo", + "confirmations.redraft.message": "Segur que vols esborrar aquesta publicació i tornar-la a escriure? Perdràs tots els impulsos i els favorits, i les respostes a la publicació original es quedaran orfes.", "confirmations.reply.confirm": "Respon", - "confirmations.reply.message": "Responen ara es sobreescriurà el missatge que estàs editant. Estàs segur que vols continuar?", + "confirmations.reply.message": "Si respons ara, sobreescriuràs el missatge que estàs editant. Segur que vols continuar?", "confirmations.unfollow.confirm": "Deixa de seguir", - "confirmations.unfollow.message": "Estàs segur que vols deixar de seguir {name}?", + "confirmations.unfollow.message": "Segur que vols deixar de seguir {name}?", "conversation.delete": "Elimina la conversa", "conversation.mark_as_read": "Marca com a llegida", "conversation.open": "Veure conversa", @@ -143,63 +144,70 @@ "directory.local": "Només de {domain}", "directory.new_arrivals": "Arribades noves", "directory.recently_active": "Recentment actius", - "embed.instructions": "Incrusta aquest tut al lloc web copiant el codi a continuació.", - "embed.preview": "Aquí tenim quin aspecte tindrà:", + "embed.instructions": "Incrusta aquesta publicació a la teva pàgina web copiant el codi següent.", + "embed.preview": "Aquí està quin aspecte tindrà:", "emoji_button.activity": "Activitat", "emoji_button.custom": "Personalitzat", "emoji_button.flags": "Banderes", "emoji_button.food": "Menjar i beure", "emoji_button.label": "Insereix un emoji", "emoji_button.nature": "Natura", - "emoji_button.not_found": "Emojis no!! (╯°□°)╯︵ ┻━┻", + "emoji_button.not_found": "No s'han trobat emojis coincidents", "emoji_button.objects": "Objectes", "emoji_button.people": "Gent", "emoji_button.recent": "Usats freqüentment", "emoji_button.search": "Cerca...", "emoji_button.search_results": "Resultats de la cerca", "emoji_button.symbols": "Símbols", - "emoji_button.travel": "Viatges i Llocs", + "emoji_button.travel": "Viatges i llocs", "empty_column.account_suspended": "Compte suspès", - "empty_column.account_timeline": "No hi ha tuts aquí!", + "empty_column.account_timeline": "Aquí no hi ha publicacions!", "empty_column.account_unavailable": "Perfil no disponible", "empty_column.blocks": "Encara no has bloquejat cap usuari.", - "empty_column.bookmarked_statuses": "Encara no tens marcat cap tut. Quan marquis un apareixerà aquí.", - "empty_column.community": "La línia de temps local és buida. Escriu alguna cosa públicament per a fer rodar la pilota!", - "empty_column.direct": "Encara no tens missatges directes. Quan enviïs o rebis un, es mostrarà aquí.", - "empty_column.domain_blocks": "Encara no hi ha dominis ocults.", - "empty_column.favourited_statuses": "Encara no has marcat com a favorit cap tut. Quan en facis, apareixerà aquí.", - "empty_column.favourites": "Ningú no ha marcat aquest tut com a preferit encara. Quan algú ho faci, apareixerà aquí.", - "empty_column.follow_recommendations": "Sembla que no es poden generar sugerencies per a tu. Pots provar d'emprar la cerca per a trobar gent que voldries conèixer o explorar les etiquetes en tendència.", - "empty_column.follow_requests": "Encara no tens cap petició de seguiment. Quan rebis una, apareixerà aquí.", + "empty_column.bookmarked_statuses": "Encara no has marcat com publicació com a preferida. Quan en marquis una apareixerà aquí.", + "empty_column.community": "La línia de temps local és buida. Escriu alguna cosa públicament per posar-ho tot en marxa!", + "empty_column.conversations": "Cada vegada que envies o reps una publicació que és només visible per la gent que hi has mencionat en ella, serà mostrada aquí.", + "empty_column.domain_blocks": "Encara no hi ha dominis bloquejats.", + "empty_column.explore_statuses": "No hi ha res en tendència ara mateix. Revisa-ho més tard!", + "empty_column.favourited_statuses": "Encara no has marcat cap publicació com a preferida. Quan les marquis, apareixeran aquí.", + "empty_column.favourites": "Encara ningú no ha marcat aquesta publicació com a preferida. Quan algú ho faci, apareixerà aquí.", + "empty_column.follow_recommendations": "Sembla que no s'han pogut generar suggeriments per a tu. Pots provar d'usar la cerca per trobar persones que vulguis conèixer o explorar les etiquetes en tendència.", + "empty_column.follow_requests": "Encara no tens cap petició de seguiment. Quan en rebis una, apareixerà aquí.", "empty_column.hashtag": "Encara no hi ha res en aquesta etiqueta.", - "empty_column.home": "Encara no segueixes ningú. Visita {public} o fes cerca per començar i conèixer altres usuaris.", - "empty_column.home.suggestions": "Mira algunes sugerencies", - "empty_column.list": "Encara no hi ha res en aquesta llista. Quan els membres d'aquesta llista publiquin nous tuts, apareixeran aquí.", - "empty_column.lists": "Encara no tens cap llista. Quan en facis una, apareixerà aquí.", + "empty_column.home": "La teva línia de temps és buida! Segueix més gent per omplir-la. {suggestions}", + "empty_column.home.suggestions": "Mira algunes suggeriments", + "empty_column.list": "Encara no hi ha res en aquesta llista. Quan els membres d'aquesta llista publiquin noves publicacions, apareixeran aquí.", + "empty_column.lists": "Encara no tens cap llista. Quan en creïs una, apareixerà aquí.", "empty_column.mutes": "Encara no has silenciat cap usuari.", - "empty_column.notifications": "Encara no tens notificacions. Interactua amb altres per iniciar la conversa.", - "empty_column.public": "No hi ha res aquí! Escriu públicament alguna cosa o manualment segueix usuaris d'altres servidors per omplir-ho", - "error.unexpected_crash.explanation": "A causa d'un bug en el nostre codi o un problema de compatibilitat del navegador, aquesta pàgina podria no ser mostrada correctament.", - "error.unexpected_crash.explanation_addons": "Aquesta pàgina podria no mostrar-se correctament. Aquest error és possiblement causat per una extensió del navegador o per eienes automàtiques de traducció.", - "error.unexpected_crash.next_steps": "Prova recarregant la pàgina. Si això no ajuda, encara podries ser capaç d'utilitzar Mastodon a través d'un navegador diferent o amb una aplicació nativa.", - "error.unexpected_crash.next_steps_addons": "Prova de desactivar-les i refrescant la pàgina. Si això no ajuda, encara pots ser capaç d’utilitzar Mastodon amb un altre navegador o aplicació nativa.", + "empty_column.notifications": "Encara no tens notificacions. Quan altres persones interactuïn amb tu, les veuràs aquí.", + "empty_column.public": "Aquí no hi ha res! Escriu públicament alguna cosa o segueix manualment usuaris d'altres servidors per omplir-ho", + "error.unexpected_crash.explanation": "A causa d'un error en el nostre codi o d'un problema de compatibilitat amb el navegador, aquesta pàgina no s'ha pogut mostrar correctament.", + "error.unexpected_crash.explanation_addons": "Aquesta pàgina no s'ha pogut mostrar correctament. És probable que aquest error sigui causat per un complement del navegador o per eines de traducció automàtica.", + "error.unexpected_crash.next_steps": "Prova d'actualitzar la pàgina. Si això no serveix, és possible que encara puguis fer servir Mastodon a través d'un navegador diferent o amb una aplicació nativa.", + "error.unexpected_crash.next_steps_addons": "Prova de desactivar-los i actualitza la pàgina. Si això no serveix, és possible que encara puguis fer servir Mastodon amb un altre navegador o una aplicació nativa.", "errors.unexpected_crash.copy_stacktrace": "Còpia stacktrace al porta-retalls", "errors.unexpected_crash.report_issue": "Informa d'un problema", + "explore.search_results": "Resultats de la cerca", + "explore.suggested_follows": "Per a tu", + "explore.title": "Explora", + "explore.trending_links": "Notícies", + "explore.trending_statuses": "Publicacions", + "explore.trending_tags": "Etiquetes", "follow_recommendations.done": "Fet", - "follow_recommendations.heading": "Segueix a la gent de la que t'agradaria veure els seus tuts! Aquí hi ha algunes recomanacions.", - "follow_recommendations.lead": "Els tuts del usuaris que segueixes es mostraran en ordre cronològic en la teva línia de temps Inici. No tinguis por en cometre errors, pots fàcilment deixar de seguir-los en qualsevol moment!", - "follow_request.authorize": "Autoritzar", - "follow_request.reject": "Rebutjar", - "follow_requests.unlocked_explanation": "Tot i que el teu compte no està bloquejat, el personal de {domain} ha pensat que és possible que vulguis revisar les sol·licituds de seguiment d’aquests comptes de forma manual.", - "generic.saved": "Guardat", + "follow_recommendations.heading": "Segueix a la gent de la que t'agradaria veure les seves publicacions! Aquí hi ha algunes recomanacions.", + "follow_recommendations.lead": "Les publicacions del usuaris que segueixes es mostraran en ordre cronològic en la teva línia de temps Inici. No tinguis por en cometre errors, pots fàcilment deixar de seguir-los en qualsevol moment!", + "follow_request.authorize": "Autoritza", + "follow_request.reject": "Rebutja", + "follow_requests.unlocked_explanation": "Tot i que el teu compte no està bloquejat, el personal de {domain} ha pensat que és possible que vulguis revisar les sol·licituds de seguiment d’aquests comptes manualment.", + "generic.saved": "Desat", "getting_started.developers": "Desenvolupadors", "getting_started.directory": "Directori de perfils", "getting_started.documentation": "Documentació", - "getting_started.heading": "Començant", - "getting_started.invite": "Convida gent", + "getting_started.heading": "Primers passos", + "getting_started.invite": "Convidar gent", "getting_started.open_source_notice": "Mastodon és un programari de codi obert. Pots contribuir-hi o informar de problemes a GitHub a {github}.", - "getting_started.security": "Seguretat", - "getting_started.terms": "Termes del servei", + "getting_started.security": "Configuració del compte", + "getting_started.terms": "Condicions de servei", "hashtag.column_header.tag_mode.all": "i {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sense {additional}", @@ -217,133 +225,135 @@ "intervals.full.days": "{number, plural, one {# dia} other {# dies}}", "intervals.full.hours": "{number, plural, one {# hora} other {# hores}}", "intervals.full.minutes": "{number, plural, one {# minut} other {# minuts}}", - "keyboard_shortcuts.back": "navegar enrere", - "keyboard_shortcuts.blocked": "per obrir la llista d'usuaris bloquejats", - "keyboard_shortcuts.boost": "impulsar", - "keyboard_shortcuts.column": "per a centrar un tut en una de les columnes", - "keyboard_shortcuts.compose": "per centrar l'àrea de composició de text", + "keyboard_shortcuts.back": "Anar enrere", + "keyboard_shortcuts.blocked": "Obre la llista d'usuaris bloquejats", + "keyboard_shortcuts.boost": "Impulsa publicació", + "keyboard_shortcuts.column": "Centra la columna", + "keyboard_shortcuts.compose": "Centra l'àrea de composició del text", + "keyboard_shortcuts.conversations": "per a obrir la columna de converses", "keyboard_shortcuts.description": "Descripció", - "keyboard_shortcuts.direct": "per obrir la columna de missatges directes", - "keyboard_shortcuts.down": "per baixar en la llista", - "keyboard_shortcuts.enter": "per a obrir el tut", - "keyboard_shortcuts.favourite": "afavorir", - "keyboard_shortcuts.favourites": "per obrir la llista de favorits", - "keyboard_shortcuts.federated": "per obrir la línia de temps federada", + "keyboard_shortcuts.down": "Mou-lo avall en la llista", + "keyboard_shortcuts.enter": "Obre publicació", + "keyboard_shortcuts.favourite": "Afavorir publicació", + "keyboard_shortcuts.favourites": "Obre la llista de preferits", + "keyboard_shortcuts.federated": "Obre la línia de temps federada", "keyboard_shortcuts.heading": "Dreceres de teclat", - "keyboard_shortcuts.home": "per a obrir la línia de temps Inici", + "keyboard_shortcuts.home": "Obre la línia de temps de l'Inici", "keyboard_shortcuts.hotkey": "Tecla d'accés directe", - "keyboard_shortcuts.legend": "per a mostrar aquesta llegenda", - "keyboard_shortcuts.local": "per a obrir la línia de temps local", - "keyboard_shortcuts.mention": "per a esmentar l'autor", - "keyboard_shortcuts.muted": "per a obrir la llista d'usuaris silenciats", - "keyboard_shortcuts.my_profile": "per a obrir el teu perfil", - "keyboard_shortcuts.notifications": "per a obrir la columna de notificacions", - "keyboard_shortcuts.open_media": "obrir mèdia", - "keyboard_shortcuts.pinned": "per a obrir la llista de tuts fixats", - "keyboard_shortcuts.profile": "per a obrir el perfil de l'autor", - "keyboard_shortcuts.reply": "respondre", - "keyboard_shortcuts.requests": "per a obrir la llista de sol·licituds de seguiment", - "keyboard_shortcuts.search": "per a centrar la cerca", - "keyboard_shortcuts.spoilers": "mostrar/amagar el camp CW", - "keyboard_shortcuts.start": "per a obrir la columna \"Començar\"", - "keyboard_shortcuts.toggle_hidden": "Mostrar/ocultar el text marcat com a sensible", - "keyboard_shortcuts.toggle_sensitivity": "per a mostrar o amagar contingut multimèdia", - "keyboard_shortcuts.toot": "per a començar un tut nou de trinca", - "keyboard_shortcuts.unfocus": "descentrar l'àrea de composició de text/cerca", - "keyboard_shortcuts.up": "moure amunt en la llista", - "lightbox.close": "Tancar", + "keyboard_shortcuts.legend": "Mostra aquesta llegenda", + "keyboard_shortcuts.local": "Obre la línia de temps local", + "keyboard_shortcuts.mention": "Esmenta l'autor", + "keyboard_shortcuts.muted": "Obre la llista d'usuaris silenciats", + "keyboard_shortcuts.my_profile": "Obre el teu perfil", + "keyboard_shortcuts.notifications": "Obre la columna de notificacions", + "keyboard_shortcuts.open_media": "Obre multimèdia", + "keyboard_shortcuts.pinned": "Obrir la llista de publicacions fixades", + "keyboard_shortcuts.profile": "Obre el perfil de l'autor", + "keyboard_shortcuts.reply": "Respon a la publicació", + "keyboard_shortcuts.requests": "Obre la llista de les sol·licituds de seguiment", + "keyboard_shortcuts.search": "Centra la barra de cerca", + "keyboard_shortcuts.spoilers": "Mostra/amaga el camp CW", + "keyboard_shortcuts.start": "Obre la columna \"Primers passos\"", + "keyboard_shortcuts.toggle_hidden": "Mostra/oculta el text marcat com a sensible", + "keyboard_shortcuts.toggle_sensitivity": "Mostra/amaga contingut multimèdia", + "keyboard_shortcuts.toot": "Inicia una nova publicació", + "keyboard_shortcuts.unfocus": "Descentra l'àrea de composició de text/cerca", + "keyboard_shortcuts.up": "Moure amunt en la llista", + "lightbox.close": "Tanca", "lightbox.compress": "Quadre de visualització d’imatge comprimida", "lightbox.expand": "Amplia el quadre de visualització de l’imatge", "lightbox.next": "Següent", "lightbox.previous": "Anterior", - "lists.account.add": "Afegir a la llista", - "lists.account.remove": "Treure de la llista", - "lists.delete": "Esborrar llista", - "lists.edit": "Editar llista", - "lists.edit.submit": "Canvi de títol", - "lists.new.create": "Afegir llista", - "lists.new.title_placeholder": "Nova llista", - "lists.replies_policy.followed": "Qualsevol usuari seguit", + "lists.account.add": "Afegeix a la llista", + "lists.account.remove": "Elimina de la llista", + "lists.delete": "Esborra la llista", + "lists.edit": "Edita la llista", + "lists.edit.submit": "Canvia de títol", + "lists.new.create": "Afegeix llista", + "lists.new.title_placeholder": "Nou títol de la llista", + "lists.replies_policy.followed": "Qualsevol usuari que segueixis", "lists.replies_policy.list": "Membres de la llista", "lists.replies_policy.none": "Ningú", "lists.replies_policy.title": "Mostra respostes a:", - "lists.search": "Cercar entre les persones que segueixes", + "lists.search": "Cerca entre les persones que segueixes", "lists.subheading": "Les teves llistes", "load_pending": "{count, plural, one {# element nou} other {# elements nous}}", "loading_indicator.label": "Carregant...", - "media_gallery.toggle_visible": "Alternar visibilitat", - "missing_indicator.label": "No trobat", - "missing_indicator.sublabel": "Aquest recurs no pot ser trobat", + "media_gallery.toggle_visible": "{number, plural, one {Amaga imatge} other {Amaga imatges}}", + "missing_indicator.label": "No s'ha trobat", + "missing_indicator.sublabel": "Aquest recurs no s'ha trobat", "mute_modal.duration": "Durada", - "mute_modal.hide_notifications": "Amagar notificacions d'aquest usuari?", + "mute_modal.hide_notifications": "Amagar les notificacions d'aquest usuari?", "mute_modal.indefinite": "Indefinit", - "navigation_bar.apps": "Apps mòbils", + "navigation_bar.apps": "Aplicacions mòbils", "navigation_bar.blocks": "Usuaris bloquejats", "navigation_bar.bookmarks": "Marcadors", - "navigation_bar.community_timeline": "Línia de temps Local", - "navigation_bar.compose": "Redacta un nou tut", - "navigation_bar.direct": "Missatges directes", + "navigation_bar.community_timeline": "Línia de temps local", + "navigation_bar.compose": "Redacta una nova publicació", "navigation_bar.discover": "Descobrir", - "navigation_bar.domain_blocks": "Dominis ocults", - "navigation_bar.edit_profile": "Editar perfil", + "navigation_bar.domain_blocks": "Dominis bloquejats", + "navigation_bar.edit_profile": "Edita el perfil", + "navigation_bar.explore": "Explora", "navigation_bar.favourites": "Preferits", "navigation_bar.filters": "Paraules silenciades", "navigation_bar.follow_requests": "Sol·licituds de seguiment", "navigation_bar.follows_and_followers": "Seguits i seguidors", - "navigation_bar.info": "Quant a aquest servidor", + "navigation_bar.info": "Sobre aquest servidor", "navigation_bar.keyboard_shortcuts": "Dreceres de teclat", "navigation_bar.lists": "Llistes", - "navigation_bar.logout": "Tancar sessió", + "navigation_bar.logout": "Tanca la sessió", "navigation_bar.mutes": "Usuaris silenciats", "navigation_bar.personal": "Personal", - "navigation_bar.pins": "Tuts fixats", + "navigation_bar.pins": "Publicacions fixades", "navigation_bar.preferences": "Preferències", "navigation_bar.public_timeline": "Línia de temps federada", "navigation_bar.security": "Seguretat", - "notification.favourite": "{name} ha afavorit el teu estat", + "notification.admin.sign_up": "{name} s'ha registrat", + "notification.favourite": "{name} ha afavorit la teva publicació", "notification.follow": "{name} et segueix", "notification.follow_request": "{name} ha sol·licitat seguir-te", "notification.mention": "{name} t'ha esmentat", "notification.own_poll": "La teva enquesta ha finalitzat", - "notification.poll": "Ha finalitzat una enquesta en la que has votat", + "notification.poll": "Ha finalitzat una enquesta en què has votat", "notification.reblog": "{name} ha impulsat el teu estat", "notification.status": "ha publicat {name}", "notification.update": "{name} ha editat una publicació", - "notifications.clear": "Netejar notificacions", - "notifications.clear_confirmation": "Estàs segur que vols esborrar permanentment totes les teves notificacions?", + "notifications.clear": "Esborra les notificacions", + "notifications.clear_confirmation": "Segur que vols esborrar permanentment totes les teves notificacions?", + "notifications.column_settings.admin.sign_up": "Nous registres:", "notifications.column_settings.alert": "Notificacions d'escriptori", "notifications.column_settings.favourite": "Preferits:", "notifications.column_settings.filter_bar.advanced": "Mostra totes les categories", "notifications.column_settings.filter_bar.category": "Barra ràpida de filtres", "notifications.column_settings.filter_bar.show_bar": "Mostra la barra de filtres", "notifications.column_settings.follow": "Nous seguidors:", - "notifications.column_settings.follow_request": "Nova sol·licitud de seguiment:", + "notifications.column_settings.follow_request": "Noves sol·licituts de seguiment:", "notifications.column_settings.mention": "Mencions:", "notifications.column_settings.poll": "Resultats de l’enquesta:", "notifications.column_settings.push": "Notificacions push", "notifications.column_settings.reblog": "Impulsos:", "notifications.column_settings.show": "Mostra en la columna", "notifications.column_settings.sound": "Reproduir so", - "notifications.column_settings.status": "Nous tuts:", + "notifications.column_settings.status": "Noves publicacions:", "notifications.column_settings.unread_notifications.category": "Notificacions no llegides", - "notifications.column_settings.unread_notifications.highlight": "Destaca notificacions no llegides", + "notifications.column_settings.unread_notifications.highlight": "Destaca les notificacions no llegides", "notifications.column_settings.update": "Edicions:", "notifications.filter.all": "Tots", "notifications.filter.boosts": "Impulsos", - "notifications.filter.favourites": "Favorits", + "notifications.filter.favourites": "Preferits", "notifications.filter.follows": "Seguiments", "notifications.filter.mentions": "Mencions", "notifications.filter.polls": "Resultats de l'enquesta", "notifications.filter.statuses": "Actualitzacions de gent que segueixes", "notifications.grant_permission": "Concedir permís.", "notifications.group": "{count} notificacions", - "notifications.mark_as_read": "Marca cada notificació com a llegida", - "notifications.permission_denied": "No s’ha pogut activar les notificacions d’escriptori perquè s’ha denegat el permís.", - "notifications.permission_denied_alert": "No es poden activar les notificacions del escriptori perquè el permís del navegador ha estat denegat abans", + "notifications.mark_as_read": "Marca totes les notificacions com a llegides", + "notifications.permission_denied": "Les notificacions d’escriptori no estan disponibles perquè prèviament s’ha denegat el permís al navegador", + "notifications.permission_denied_alert": "No es poden activar les notificacions de l'escriptori perquè el permís del navegador s'ha denegat prèviament", "notifications.permission_required": "Les notificacions d'escriptori no estan disponibles perquè el permís requerit no ha estat concedit.", - "notifications_permission_banner.enable": "Activar les notificacions d’escriptori", - "notifications_permission_banner.how_to_control": "Per a rebre notificacions quan Mastodon no està obert cal activar les notificacions d’escriptori. Pots controlar amb precisió quins tipus d’interaccions generen notificacions d’escriptori després d’activar el botó {icon} de dalt.", - "notifications_permission_banner.title": "Mai et perdis res", + "notifications_permission_banner.enable": "Activa les notificacions d’escriptori", + "notifications_permission_banner.how_to_control": "Per rebre notificacions quan Mastodon no estigui obert, cal activar les notificacions d’escriptori. Pots controlar exactament quins tipus d’interaccions generen notificacions d’escriptori si actives el botó {icon} de dalt.", + "notifications_permission_banner.title": "No et perdis mai res", "picture_in_picture.restore": "Retorna’l", "poll.closed": "Finalitzada", "poll.refresh": "Actualitza", @@ -352,20 +362,20 @@ "poll.vote": "Vota", "poll.voted": "Vas votar per aquesta resposta", "poll.votes": "{votes, plural, one {# vot} other {# vots}}", - "poll_button.add_poll": "Afegir una enquesta", + "poll_button.add_poll": "Afegeix una enquesta", "poll_button.remove_poll": "Elimina l'enquesta", - "privacy.change": "Ajustar l'estat de privacitat", - "privacy.direct.long": "Publicar només per als usuaris esmentats", - "privacy.direct.short": "Directe", - "privacy.private.long": "Publicar només a seguidors", + "privacy.change": "Ajusta la privacitat de la publicació", + "privacy.direct.long": "Visible només per als usuaris esmentats", + "privacy.direct.short": "Només la gent que menciono", + "privacy.private.long": "Visible només per als seguidors", "privacy.private.short": "Només seguidors", - "privacy.public.long": "Publicar en línies de temps públiques", + "privacy.public.long": "Visible per tothom", "privacy.public.short": "Públic", - "privacy.unlisted.long": "No publicar en línies de temps públiques", + "privacy.unlisted.long": "Visible per tothom però exclosa de les funcions de descobriment", "privacy.unlisted.short": "No llistat", "refresh": "Actualitza", "regeneration_indicator.label": "Carregant…", - "regeneration_indicator.sublabel": "S'està preparant la línia de temps Inici!", + "regeneration_indicator.sublabel": "S'està preparant la teva línia de temps d'Inici!", "relative_time.days": "fa {number} dies", "relative_time.full.days": "fa {number, plural, one {# dia} other {# dies}}", "relative_time.full.hours": "fa {number, plural, one {# hora} other {# hores}}", @@ -377,76 +387,106 @@ "relative_time.minutes": "fa {number} minuts", "relative_time.seconds": "fa {number} segons", "relative_time.today": "avui", - "reply_indicator.cancel": "Cancel·lar", + "reply_indicator.cancel": "Cancel·la", + "report.block": "Bloqueja", + "report.block_explanation": "No veuràs les seves publicacions. Ells no podran veure les teves publicacions ni et podran seguir. Podran saber que estan bloquejats.", "report.categories.other": "Altres", "report.categories.spam": "Contingut brossa", "report.categories.violation": "El contingut viola una o més regles del servidor", + "report.category.subtitle": "Tria la millor coincidència", + "report.category.title": "Digue'ns què està passant amb aquest {type}", + "report.category.title_account": "perfil", + "report.category.title_status": "publicació", + "report.close": "Fet", + "report.comment.title": "Hi ha res més que creguis que hauríem de saber?", "report.forward": "Reenvia a {target}", - "report.forward_hint": "Aquest compte és d'un altre servidor. Enviar-hi també una copia anònima del informe?", - "report.hint": "El informe s'enviarà als moderadors del teu servidor. Pots explicar perquè vols informar d'aquest compte aquí:", + "report.forward_hint": "Aquest compte és d'un altre servidor. Vols enviar-li també una còpia anònima de l'informe?", + "report.mute": "Silencia", + "report.mute_explanation": "No veuràs les seves publicacions. Encara poden seguir-te i veure les teves publicacions, però no sabran que han estat silenciats.", + "report.next": "Següent", "report.placeholder": "Comentaris addicionals", - "report.submit": "Enviar", - "report.target": "Informes {target}", - "search.placeholder": "Cercar", + "report.reasons.dislike": "No m'agrada", + "report.reasons.dislike_description": "No és una cosa que vulguis veure", + "report.reasons.other": "És una altra cosa", + "report.reasons.other_description": "El problema no encaixa a les altres categories", + "report.reasons.spam": "És contingut brossa", + "report.reasons.spam_description": "Enllaços maliciosos, implicació falsa o respostes repetitives", + "report.reasons.violation": "Viola les regles del servidor", + "report.reasons.violation_description": "Ets conscient que trenca regles especifiques", + "report.rules.subtitle": "Selecciona tot el que correspongui", + "report.rules.title": "Quines regles s'han violat?", + "report.statuses.subtitle": "Selecciona tot el que correspongui", + "report.statuses.title": "Hi ha alguna publicació que recolzi aquest informe?", + "report.submit": "Envia", + "report.target": "Denunciant a {target}", + "report.thanks.take_action": "Aquestes són les teves opcions per controlar el que veus a Mastodon:", + "report.thanks.take_action_actionable": "Mentre ho revisem, pots prendre mesures contra @{name}:", + "report.thanks.title": "No vols veure això?", + "report.thanks.title_actionable": "Gràcies per denunciar-ho. Ho investigarem.", + "report.unfollow": "Deixa de seguir @{name}", + "report.unfollow_explanation": "Estàs seguint aquest compte. Per no veure les seves publicacions a la teva línia de temps d'Inici, deixa de seguir-lo.", + "search.placeholder": "Cerca", "search_popout.search_format": "Format de cerca avançada", - "search_popout.tips.full_text": "Text simple recupera publicacions que has escrit, les marcades com a preferides, les impulsades o en les que has estat esmentat, així com usuaris, noms d'usuari i etiquetes.", + "search_popout.tips.full_text": "El text simple recupera publicacions que has escrit, marcat com a preferides, que has impulsat o on t'han esmentat, així com els usuaris, els noms d'usuaris i les etiquetes.", "search_popout.tips.hashtag": "etiqueta", - "search_popout.tips.status": "tut", - "search_popout.tips.text": "El text simple retorna coincidències amb els noms de visualització, els noms d'usuari i les etiquetes", + "search_popout.tips.status": "publicació", + "search_popout.tips.text": "El text simple recupera coincidències amb els usuaris, els noms d'usuari i les etiquetes", "search_popout.tips.user": "usuari", "search_results.accounts": "Gent", + "search_results.all": "Tots", "search_results.hashtags": "Etiquetes", - "search_results.statuses": "Tuts", - "search_results.statuses_fts_disabled": "La cerca de tuts pel seu contingut no està habilitada en aquest servidor Mastodon.", + "search_results.nothing_found": "No s'ha pogut trobar res per a aquests termes de cerca", + "search_results.statuses": "Publicacions", + "search_results.statuses_fts_disabled": "La cerca de publicacions pel seu contingut no està habilitada en aquest servidor Mastodon.", "search_results.total": "{count, number} {count, plural, one {resultat} other {resultats}}", "status.admin_account": "Obre l'interfície de moderació per a @{name}", - "status.admin_status": "Obre aquest tut a la interfície de moderació", + "status.admin_status": "Obre aquesta publicació a la interfície de moderació", "status.block": "Bloqueja @{name}", - "status.bookmark": "Marcador", - "status.cancel_reblog_private": "Desfer l'impuls", - "status.cannot_reblog": "Aquesta publicació no pot ser impulsada", + "status.bookmark": "Afavoreix", + "status.cancel_reblog_private": "Desfés l'impuls", + "status.cannot_reblog": "Aquesta publicació no es pot impulsar", "status.copy": "Copia l'enllaç a l'estat", - "status.delete": "Esborrar", + "status.delete": "Esborra", "status.detailed_status": "Visualització detallada de la conversa", - "status.direct": "Missatge directe @{name}", + "status.direct": "Envia missatge directe a @{name}", "status.edit": "Edita", "status.edited": "Editat {date}", "status.edited_x_times": "Editat {count, plural, one {{count} vegada} other {{count} vegades}}", - "status.embed": "Incrustar", + "status.embed": "Incrusta", "status.favourite": "Favorit", "status.filtered": "Filtrat", "status.history.created": "{name} ha creat {date}", "status.history.edited": "{name} ha editat {date}", - "status.load_more": "Carrega més", - "status.media_hidden": "Multimèdia amagat", - "status.mention": "Esmentar @{name}", + "status.load_more": "Carregar-ne més", + "status.media_hidden": "Multimèdia amagada", + "status.mention": "Esmenta @{name}", "status.more": "Més", - "status.mute": "Silenciar @{name}", - "status.mute_conversation": "Silenciar conversació", - "status.open": "Ampliar aquest estat", - "status.pin": "Fixat en el perfil", - "status.pinned": "Tut fixat", - "status.read_more": "Llegir més", - "status.reblog": "Impuls", - "status.reblog_private": "Impulsar a l'audiència original", + "status.mute": "Silencia @{name}", + "status.mute_conversation": "Silencia conversació", + "status.open": "Amplia la publicació", + "status.pin": "Fixa en el perfil", + "status.pinned": "Publicació fixada", + "status.read_more": "Més informació", + "status.reblog": "Impulsa", + "status.reblog_private": "Impulsa amb la visibilitat original", "status.reblogged_by": "{name} ha impulsat", - "status.reblogs.empty": "Encara ningú no ha impulsat aquest tut. Quan algú ho faci, apareixeran aquí.", - "status.redraft": "Esborrar i reescriure", + "status.reblogs.empty": "Encara ningú no ha impulsat aquesta publicació. Quan algú ho faci, apareixeran aquí.", + "status.redraft": "Esborra-la i reescriure-la", "status.remove_bookmark": "Suprimeix el marcador", - "status.reply": "Respondre", - "status.replyAll": "Respondre al tema", - "status.report": "Informar sobre @{name}", + "status.reply": "Respon", + "status.replyAll": "Respon al fil", + "status.report": "Denuncia @{name}", "status.sensitive_warning": "Contingut sensible", - "status.share": "Compartir", - "status.show_less": "Mostra menys", - "status.show_less_all": "Mostra menys per a tot", - "status.show_more": "Mostra més", - "status.show_more_all": "Mostra més per a tot", + "status.share": "Comparteix", + "status.show_less": "Mostrar-ne menys", + "status.show_less_all": "Mostrar-ne menys per a tot", + "status.show_more": "Mostrar-ne més", + "status.show_more_all": "Mostrar-ne més per a tot", "status.show_thread": "Mostra el fil", "status.uncached_media_warning": "No està disponible", - "status.unmute_conversation": "Activar conversació", - "status.unpin": "Deslliga del perfil", - "suggestions.dismiss": "Descartar suggeriment", + "status.unmute_conversation": "No silenciïs la conversa", + "status.unpin": "No fixis al perfil", + "suggestions.dismiss": "Ignora el suggeriment", "suggestions.header": "És possible que estiguis interessat en…", "tabs_bar.federated_timeline": "Federat", "tabs_bar.home": "Inici", @@ -461,42 +501,43 @@ "timeline_hint.remote_resource_not_displayed": "{resource} dels altres servidors no son mostrats.", "timeline_hint.resources.followers": "Seguidors", "timeline_hint.resources.follows": "Seguiments", - "timeline_hint.resources.statuses": "Tuts més antics", - "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} persones}} parlant-hi", - "trends.trending_now": "Ara en tendència", + "timeline_hint.resources.statuses": "Publicacions més antigues", + "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} persones}} parlant-ne", + "trends.trending_now": "En tendència", "ui.beforeunload": "El teu esborrany es perdrà si surts de Mastodon.", "units.short.billion": "{count}B", "units.short.million": "{count}M", "units.short.thousand": "{count}K", - "upload_area.title": "Arrossega i deixa anar per a carregar", - "upload_button.label": "Afegir multimèdia (JPEG, PNG, GIF, WebM, MP4, MOV)", + "upload_area.title": "Arrossega i deixa anar per carregar", + "upload_button.label": "Afegeix imatges, un vídeo o un fitxer d'àudio", "upload_error.limit": "S'ha superat el límit de càrrega d'arxius.", - "upload_error.poll": "No es permet l'enviament de fitxers en les enquestes.", - "upload_form.audio_description": "Descriviu per a les persones amb pèrdua auditiva", - "upload_form.description": "Descriure els problemes visuals", + "upload_error.poll": "No es permet carregar fitxers a les enquestes.", + "upload_form.audio_description": "Descripció per a persones amb discapacitat auditiva", + "upload_form.description": "Descripció per a persones amb discapacitat visual", + "upload_form.description_missing": "No s'ha afegit cap descripció", "upload_form.edit": "Edita", "upload_form.thumbnail": "Canvia la miniatura", "upload_form.undo": "Esborra", - "upload_form.video_description": "Descriu per a les persones amb pèrdua auditiva o deficiència visual", + "upload_form.video_description": "Descripció per a persones amb discapacitat auditiva o amb discapacitat visual", "upload_modal.analyzing_picture": "Analitzant imatge…", "upload_modal.apply": "Aplica", "upload_modal.applying": "Aplicant…", "upload_modal.choose_image": "Tria imatge", - "upload_modal.description_placeholder": "Jove xef, porti whisky amb quinze glaçons d’hidrogen, coi!", + "upload_modal.description_placeholder": "Una ràpida guineu marró salta sobre el gos mandrós", "upload_modal.detect_text": "Detecta el text de l'imatge", "upload_modal.edit_media": "Editar multimèdia", - "upload_modal.hint": "Fes clic o arrossega el cercle en la previsualització per escollir el punt focal que sempre serà visible de totes les miniatures.", + "upload_modal.hint": "Fes clic o arrossega el cercle en la previsualització per escollir el punt focal que sempre serà visible en totes les miniatures.", "upload_modal.preparing_ocr": "Preparant OCR…", "upload_modal.preview_label": "Previsualitza ({ratio})", "upload_progress.label": "Pujant...", - "video.close": "Tancar el vídeo", + "video.close": "Tanca el vídeo", "video.download": "Descarrega l’arxiu", - "video.exit_fullscreen": "Sortir de pantalla completa", - "video.expand": "Ampliar el vídeo", + "video.exit_fullscreen": "Surt de la pantalla completa", + "video.expand": "Amplia el vídeo", "video.fullscreen": "Pantalla completa", - "video.hide": "Amaga vídeo", - "video.mute": "Silenciar el so", + "video.hide": "Amaga el vídeo", + "video.mute": "Silencia el so", "video.pause": "Pausa", - "video.play": "Reproduir", - "video.unmute": "Activar so" + "video.play": "Reprodueix", + "video.unmute": "Activa el so" } diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json new file mode 100644 index 000000000..5a64eaebb --- /dev/null +++ b/app/javascript/mastodon/locales/ckb.json @@ -0,0 +1,543 @@ +{ + "account.account_note_header": "تێبینی ", + "account.add_or_remove_from_list": "زیادکردن یان سڕینەوە لە پێرستەکان", + "account.badges.bot": "بوت", + "account.badges.group": "گرووپ", + "account.block": "بلۆکی @{name}", + "account.block_domain": "بلۆکی هەموو شتێک لە {domain}", + "account.blocked": "بلۆککرا", + "account.browse_more_on_origin_server": "گەڕانی فرەتر لە سەر پرۆفایلی سەرەکی", + "account.cancel_follow_request": "بەتاڵکردنی داوای شوێنکەوتن", + "account.direct": "پەیامی تایبەت بە @{name}", + "account.disable_notifications": "ئاگانامە مەنێرە بۆم کاتێک @{name} پۆست دەکرێت", + "account.domain_blocked": "دۆمەین قەپاتکرا", + "account.edit_profile": "دەستکاری پرۆفایل", + "account.enable_notifications": "ئاگادارم بکەوە کاتێک @{name} بابەتەکان", + "account.endorse": "ناساندن لە پرۆفایل", + "account.follow": "شوێنکەوتن", + "account.followers": "شوێنکەوتووان", + "account.followers.empty": "کەسێک شوێن ئەم بەکارهێنەرە نەکەوتووە", + "account.followers_counter": "{count, plural, one {{counter} شوێنکەوتوو} other {{counter} شوێنکەوتوو}}", + "account.following": "Following", + "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", + "account.follows.empty": "ئەم بەکارهێنەرە تا ئێستا شوێن کەس نەکەوتووە.", + "account.follows_you": "شوێنکەوتووەکانت", + "account.hide_reblogs": "داشاردنی بووستەکان لە @{name}", + "account.joined": "Joined {date}", + "account.link_verified_on": "خاوەنداریەتی ئەم لینکە لە {date} چێک کراوە", + "account.locked_info": "تایبەتمەندی ئەم هەژمارەیە ڕیکخراوە بۆ قوفڵدراوە. خاوەنەکە بە دەستی پێداچوونەوە دەکات کە کێ دەتوانێت شوێنیان بکەوێت.", + "account.media": "میدیا", + "account.mention": "ئاماژە @{name}", + "account.moved_to": "{name} گواسترایەوە بۆ:", + "account.mute": "بێدەنگکردن @{name}", + "account.mute_notifications": "هۆشیارکەرەوەکان لاببە لە @{name}", + "account.muted": "بێ دەنگ", + "account.posts": "توتس", + "account.posts_with_replies": "توتس و وەڵامەکان", + "account.report": "گوزارشت @{name}", + "account.requested": "چاوەڕێی ڕەزامەندین. کرتە بکە بۆ هەڵوەشاندنەوەی داواکاری شوێنکەوتن", + "account.share": "پرۆفایلی @{name} هاوبەش بکە", + "account.show_reblogs": "پیشاندانی بەرزکردنەوەکان لە @{name}", + "account.statuses_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", + "account.unblock": "@{name} لاببە", + "account.unblock_domain": "کردنەوەی دۆمەینی {domain}", + "account.unblock_short": "Unblock", + "account.unendorse": "تایبەتمەندی لەسەر پرۆفایلەکە نیە", + "account.unfollow": "بەدوادانەچو", + "account.unmute": "بێدەنگکردنی @{name}", + "account.unmute_notifications": "بێدەنگکردنی هۆشیارییەکان لە @{name}", + "account.unmute_short": "Unmute", + "account_note.placeholder": "کرتەبکە بۆ زیادکردنی تێبینی", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Average", + "admin.dashboard.retention.cohort": "Sign-up month", + "admin.dashboard.retention.cohort_size": "New users", + "alert.rate_limited.message": "تکایە هەوڵبدەرەوە دوای {retry_time, time, medium}.", + "alert.rate_limited.title": "ڕێژەی سنووردار", + "alert.unexpected.message": "هەڵەیەکی چاوەڕوان نەکراو ڕوویدا.", + "alert.unexpected.title": "تەححح!", + "announcement.announcement": "بانگەواز", + "attachments_list.unprocessed": "(unprocessed)", + "autosuggest_hashtag.per_week": "{count} هەرهەفتە", + "boost_modal.combo": "دەتوانیت دەست بنێی بە سەر {combo} بۆ بازدان لە جاری داهاتوو", + "bundle_column_error.body": "هەڵەیەک ڕوویدا لەکاتی بارکردنی ئەم پێکهاتەیە.", + "bundle_column_error.retry": "دووبارە هەوڵبدە", + "bundle_column_error.title": "هەڵيی تۆڕ", + "bundle_modal_error.close": "داخستن", + "bundle_modal_error.message": "هەڵەیەک ڕوویدا لەکاتی بارکردنی ئەم پێکهاتەیە.", + "bundle_modal_error.retry": "دووبارە تاقی بکەوە", + "column.blocks": "بەکارهێنەرە بلۆککراوەکان", + "column.bookmarks": "نیشانەکان", + "column.community": "هێڵی کاتی ناوخۆیی", + "column.conversations": "Conversations", + "column.directory": "گەڕان لە پرۆفایلەکان", + "column.domain_blocks": "دۆمەینە داخراوەکان", + "column.favourites": "دڵخوازترینەکان", + "column.follow_requests": "بەدواداچوی داواکاریەکان بکە", + "column.home": "سەرەتا", + "column.lists": "پێرست", + "column.mutes": "بێدەنگکردنی بەکارهێنەران", + "column.notifications": "ئاگادارییەکان", + "column.pins": "تووتسی چەسپاو", + "column.public": "نووسراوەکانی هەمووشوێنێک", + "column_back_button.label": "دواوە", + "column_header.hide_settings": "شاردنەوەی ڕێکخستنەکان", + "column_header.moveLeft_settings": "ستوون بگوێزەرەوە بۆ لای چەپ", + "column_header.moveRight_settings": "جوولاندنی ئەستوون بۆ لای ڕاست", + "column_header.pin": "سنجاق", + "column_header.show_settings": "نیشاندانی رێکخستنەکان", + "column_header.unpin": "سنجاق نەکردن", + "column_subheading.settings": "رێکخستنەکان", + "community.column_settings.local_only": "تەنها خۆماڵی", + "community.column_settings.media_only": "تەنها میدیا", + "community.column_settings.remote_only": "تەنها بۆ دوور", + "compose_form.direct_message_warning_learn_more": "زیاتر فێربه", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.hashtag_warning": "ئەم توتە لە ژێر هیچ هاشتاگییەک دا ناکرێت وەک ئەوەی لە لیستەکەدا نەریزراوە. تەنها توتی گشتی دەتوانرێت بە هاشتاگی بگەڕێت.", + "compose_form.lock_disclaimer": "هەژمێرەکەی لە حاڵەتی {locked}. هەر کەسێک دەتوانێت شوێنت بکەوێت بۆ پیشاندانی بابەتەکانی تەنها دوایخۆی.", + "compose_form.lock_disclaimer.lock": "قفڵ دراوە", + "compose_form.placeholder": "چی لە مێشکتدایە?", + "compose_form.poll.add_option": "زیادکردنی هەڵبژاردەیەک", + "compose_form.poll.duration": "ماوەی ڕاپرسی", + "compose_form.poll.option_placeholder": "هەڵبژاردن {number}", + "compose_form.poll.remove_option": "لابردنی ئەم هەڵبژاردەیە", + "compose_form.poll.switch_to_multiple": "ڕاپرسی بگۆڕە بۆ ڕێگەدان بە چەند هەڵبژاردنێک", + "compose_form.poll.switch_to_single": "گۆڕینی ڕاپرسی بۆ ڕێگەدان بە تاکە هەڵبژاردنێک", + "compose_form.publish": "توت", + "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", + "compose_form.sensitive.hide": "نیشانکردنی میدیا وەک هەستیار", + "compose_form.sensitive.marked": "وادەی کۆتایی", + "compose_form.sensitive.unmarked": "میدیا وەک هەستیار نیشان نەکراوە", + "compose_form.spoiler.marked": "دەق لە پشت ئاگاداریدا شاراوەتەوە", + "compose_form.spoiler.unmarked": "دەق شاراوە نییە", + "compose_form.spoiler_placeholder": "ئاگاداریەکەت لێرە بنووسە", + "confirmation_modal.cancel": "هەڵوەشاندنەوه", + "confirmations.block.block_and_report": "بلۆک & گوزارشت", + "confirmations.block.confirm": "بلۆک", + "confirmations.block.message": "ئایا دڵنیایت لەوەی دەتەوێت {name} بلۆک بکەیت?", + "confirmations.delete.confirm": "سڕینەوە", + "confirmations.delete.message": "ئایا دڵنیایت لەوەی دەتەوێت ئەم توتە بسڕیتەوە?", + "confirmations.delete_list.confirm": "سڕینەوە", + "confirmations.delete_list.message": "ئایا دڵنیایت لەوەی دەتەوێت بە هەمیشەیی ئەم لیستە بسڕیتەوە?", + "confirmations.discard_edit_media.confirm": "Discard", + "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.domain_block.confirm": "بلۆککردنی هەموو دۆمەینەکە", + "confirmations.domain_block.message": "ئایا بەڕاستی، بەڕاستی تۆ دەتەوێت هەموو {domain} بلۆک بکەیت؟ لە زۆربەی حاڵەتەکاندا چەند بلۆکێکی ئامانجدار یان بێدەنگەکان پێویست و پەسەندن. تۆ ناوەڕۆک ێک نابینیت لە دۆمەینەکە لە هیچ هێڵی کاتی گشتی یان ئاگانامەکانت. شوێنکەوتوانی تۆ لەو دۆمەینەوە لادەبرێن.", + "confirmations.logout.confirm": "چوونە دەرەوە", + "confirmations.logout.message": "ئایا دڵنیایت لەوەی دەتەوێت بچیتە دەرەوە?", + "confirmations.mute.confirm": "بێدەنگ", + "confirmations.mute.explanation": "ئەمەش دەبێتە هۆی شاردنەوەی پۆستەکان یان ئەو بابەتانەی کە ئاماژەیان پێ دەکات ، بەڵام هێشتا ڕێگەیان پێ دەدات کە پۆستەکانتان ببینن و شوێنتان بکەون.", + "confirmations.mute.message": "ئایا دڵنیایت لەوەی دەتەوێت بیلێیت {name}?", + "confirmations.redraft.confirm": "سڕینەوە & دووبارە ڕەشکردنەوە", + "confirmations.redraft.message": "ئایا دڵنیایت لەوەی دەتەوێت ئەم توتە بسڕیتەوە و دووبارە دایبنووسیتەوە؟ دڵخوازەکان و بەرزکردنەوەکان وون دەبن، و وەڵامەکان بۆ پۆستە ڕەسەنەکە هەتیو دەبن.", + "confirmations.reply.confirm": "وەڵام", + "confirmations.reply.message": "وەڵامدانەوە ئێستا ئەو نامەیە ی کە تۆ ئێستا دایڕشتووە، دەنووسێتەوە. ئایا دڵنیایت کە دەتەوێت بەردەوام بیت?", + "confirmations.unfollow.confirm": "بەدوادانەچو", + "confirmations.unfollow.message": "ئایا دڵنیایت لەوەی دەتەوێت پەیڕەوی {name}?", + "conversation.delete": "سڕینەوەی گفتوگۆ", + "conversation.mark_as_read": "نیشانەکردن وەک خوێندراوە", + "conversation.open": "نیشاندان گفتوگۆ", + "conversation.with": "لەگەڵ{names}", + "directory.federated": "لە ڕاژەکانی ناسراو", + "directory.local": "تەنها لە {domain}", + "directory.new_arrivals": "تازە گەیشتنەکان", + "directory.recently_active": "بەم دواییانە چالاکە", + "embed.instructions": "ئەم توتە بنچین بکە لەسەر وێب سایتەکەت بە کۆپیکردنی کۆدەکەی خوارەوە.", + "embed.preview": "ئەمە ئەو شتەیە کە لە شێوەی خۆی دەچێت:", + "emoji_button.activity": "چالاکی", + "emoji_button.custom": "ئاسایی", + "emoji_button.flags": "ئاڵاکان", + "emoji_button.food": "خواردن& خواردنەوە", + "emoji_button.label": "ئیمۆجی بکەنێو", + "emoji_button.nature": "سروشت", + "emoji_button.not_found": "بێ ئیمۆجی! (╯°□°)╯( ┻━┻", + "emoji_button.objects": "ئامانجەکان", + "emoji_button.people": "خەڵک", + "emoji_button.recent": "زۆرجار بەکارهێنراوە", + "emoji_button.search": "گەڕان...", + "emoji_button.search_results": "ئەنجامەکانی گەڕان", + "emoji_button.symbols": "هێماکان", + "emoji_button.travel": "گەشت & شوێنەکان", + "empty_column.account_suspended": "Account suspended", + "empty_column.account_timeline": "لێرە هیچ توتەک نییە!", + "empty_column.account_unavailable": "پرۆفایل بەردەست نیە", + "empty_column.blocks": "تۆ هێشتا هیچ بەکارهێنەرێکت بلۆک نەکردووە.", + "empty_column.bookmarked_statuses": "تۆ هێشتا هیچ توتێکی دیاریکراوت نیە کاتێک نیشانەیەک نیشان دەکەیت، لێرە دەرئەکەویت.", + "empty_column.community": "هێڵی کاتی ناوخۆیی بەتاڵە. شتێک بە ئاشکرا بنووسە بۆ ئەوەی تۆپەکە بسووڕێت!", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.domain_blocks": "هێشتا هیچ دۆمەینێکی بلۆک کراو نییە.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.favourited_statuses": "تۆ هێشتا هیچ توتێکی دڵخوازت نییە، کاتێک حەزت لە دانەیەکی باشە، لێرە دەرئەکەویت.", + "empty_column.favourites": "کەس ئەم توتەی دڵخواز نەکردووە،کاتێک کەسێک وا بکات، لێرە دەرئەکەون.", + "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", + "empty_column.follow_requests": "تۆ هێشتا هیچ داواکارییەکی بەدواداچووت نیە. کاتێک یەکێکت بۆ هات، لێرە دەرئەکەویت.", + "empty_column.hashtag": "هێشتا هیچ شتێک لەم هاشتاگەدا نییە.", + "empty_column.home": "تایم لاینی ماڵەوەت بەتاڵە! سەردانی {public} بکە یان گەڕان بەکاربێنە بۆ دەستپێکردن و بینینی بەکارهێنەرانی تر.", + "empty_column.home.suggestions": "See some suggestions", + "empty_column.list": "هێشتا هیچ شتێک لەم لیستەدا نییە. کاتێک ئەندامانی ئەم لیستە دەنگی نوێ بڵاودەکەن، لێرە دەردەکەون.", + "empty_column.lists": "تۆ هێشتا هیچ لیستت دروست نەکردووە، کاتێک دانەیەک دروست دەکەیت، لێرە پیشان دەدرێت.", + "empty_column.mutes": "تۆ هێشتا هیچ بەکارهێنەرێکت بێدەنگ نەکردووە.", + "empty_column.notifications": "تۆ هێشتا هیچ ئاگانامێکت نیە. چالاکی لەگەڵ کەسانی دیکە بکە بۆ دەستپێکردنی گفتوگۆکە.", + "empty_column.public": "لێرە هیچ نییە! شتێک بە ئاشکرا بنووسە(بەگشتی)، یان بە دەستی شوێن بەکارهێنەران بکەوە لە ڕاژەکانی ترەوە بۆ پڕکردنەوەی", + "error.unexpected_crash.explanation": "بەهۆی بوونی کێشە لە کۆدەکەمان یان کێشەی گونجانی وێبگەڕەکە، ئەم لاپەڕەیە بە دروستی پیشان نادرێت.", + "error.unexpected_crash.explanation_addons": "ئەم لاپەڕەیە ناتوانرێت بە دروستی پیشان بدرێت. ئەم هەڵەیە لەوانەیە بەهۆی ئامێری وەرگێڕانی خۆکار یان زیادکراوی وێبگەڕەوە بێت.", + "error.unexpected_crash.next_steps": "هەوڵدە لاپەڕەکە تازە بکەوە. ئەگەر ئەمە یارمەتیدەر نەبوو، لەوانەیە هێشتا بتوانیت ماستۆدۆن بەکاربێنیت لە ڕێگەی وێبگەڕەکەیان کاربەرنامەی ڕەسەن.", + "error.unexpected_crash.next_steps_addons": "هەوڵدە لەکاریان بخەیت و لاپەڕەکە تازە بکەوە. ئەگەر ئەمە یارمەتیدەر نەبوو، لەوانەیە هێشتا بتوانیت ماستۆدۆن بەکاربێنیت لە ڕێگەی وێبگەڕەکانی دیکە یان نەرمەکالاکانی ئەسڵی.", + "errors.unexpected_crash.copy_stacktrace": "کۆپیکردنی ستێکتراسی بۆ کلیپ بۆرد", + "errors.unexpected_crash.report_issue": "کێشەی گوزارشت", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", + "follow_recommendations.done": "Done", + "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", + "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", + "follow_request.authorize": "ده‌سه‌ڵاتپێدراو", + "follow_request.reject": "ڕەتکردنەوە", + "follow_requests.unlocked_explanation": "هەرچەندە هەژمارەکەت داخراو نییە، ستافی {domain} وا بیریان کردەوە کە لەوانەیە بتانەوێت پێداچوونەوە بە داواکاریەکانی ئەم هەژمارەدا بکەن بە دەستی.", + "generic.saved": "پاشکەوتکرا", + "getting_started.developers": "پەرەپێدەران", + "getting_started.directory": "پەڕەی پرۆفایل", + "getting_started.documentation": "بەڵگەنامە", + "getting_started.heading": "دەست پێکردن", + "getting_started.invite": "بانگهێشتکردنی خەڵک", + "getting_started.open_source_notice": "ماستۆدۆن نەرمەکالایەکی سەرچاوەی کراوەیە. دەتوانیت بەشداری بکەیت یان گوزارشت بکەیت لەسەر کێشەکانی لە پەڕەی گیتهاب {github}.", + "getting_started.security": "ڕێکخستنەکانی هەژمارە", + "getting_started.terms": "مەرجەکانی خزمەتگوزاری", + "hashtag.column_header.tag_mode.all": "و {additional}", + "hashtag.column_header.tag_mode.any": "یا {additional}", + "hashtag.column_header.tag_mode.none": "بەبێ {additional}", + "hashtag.column_settings.select.no_options_message": "هیچ پێشنیارێک نەدۆزرایەوە", + "hashtag.column_settings.select.placeholder": "هاشتاگی تێبنووسە…", + "hashtag.column_settings.tag_mode.all": "هەموو ئەمانە", + "hashtag.column_settings.tag_mode.any": "هەر کام لەمانە", + "hashtag.column_settings.tag_mode.none": "هیچ کام لەمانە", + "hashtag.column_settings.tag_toggle": "تاگی زیادە ی ئەم ستوونە لەخۆ بنووسە", + "home.column_settings.basic": "بنەڕەتی", + "home.column_settings.show_reblogs": "پیشاندانی بەهێزکردن", + "home.column_settings.show_replies": "وەڵامدانەوەکان پیشان بدە", + "home.hide_announcements": "شاردنەوەی راگەیەنراوەکان", + "home.show_announcements": "پیشاندانی راگەیەنراوەکان", + "intervals.full.days": "{number, plural, one {# ڕۆژ} other {# ڕۆژەک}}", + "intervals.full.hours": "{number, plural, one {# کات} other {# کات}}", + "intervals.full.minutes": "{number, plural, one {# خولەک} other {# خولەک}}", + "keyboard_shortcuts.back": "بۆ گەڕانەوە", + "keyboard_shortcuts.blocked": "بۆ کردنەوەی لیستی بەکارهێنەرە بلۆککراوەکان", + "keyboard_shortcuts.boost": "بۆ بەهێزکردن", + "keyboard_shortcuts.column": "بۆ ئەوەی تیشک بخاتە سەر توتێک لە یەکێک لە ستوونەکان", + "keyboard_shortcuts.compose": "بۆ سەرنجدان بە نووسینی ناوچەی دەق", + "keyboard_shortcuts.conversations": "to open conversations column", + "keyboard_shortcuts.description": "وه‌سف", + "keyboard_shortcuts.down": "بۆ چوونە خوارەوە لە لیستەکەدا", + "keyboard_shortcuts.enter": "بۆ کردنەوەی توت", + "keyboard_shortcuts.favourite": "بۆ دڵخواز", + "keyboard_shortcuts.favourites": "بۆ کردنەوەی لیستی دڵخوازەکان", + "keyboard_shortcuts.federated": "بۆ کردنەوەی نووسراوەکانی هەمووشوێن", + "keyboard_shortcuts.heading": "قه‌دبڕەکانی تەختەکلیل", + "keyboard_shortcuts.home": "بۆ کردنەوەی هێڵی کاتی ماڵەوە", + "keyboard_shortcuts.hotkey": "هۆتکەی", + "keyboard_shortcuts.legend": "بۆ نیشاندانی ئەم نیشانە", + "keyboard_shortcuts.local": "بۆ کردنەوەی نووسراوەکانی خۆماڵی", + "keyboard_shortcuts.mention": "نۆ ناوبردن لە نووسەر", + "keyboard_shortcuts.muted": "بۆ کردنەوەی پێرستی بەکارهێنەرانی بێدەنگ", + "keyboard_shortcuts.my_profile": "بۆ کردنەوەی پرۆفایڵ", + "keyboard_shortcuts.notifications": "بۆ کردنەوەی ستوونی ئاگانامەکان", + "keyboard_shortcuts.open_media": "بۆ کردنەوەی میدیا", + "keyboard_shortcuts.pinned": "بۆ کردنەوەی لیستی توتەکانی چەسپێنراو", + "keyboard_shortcuts.profile": "بۆ کردنەوەی پرۆفایڵی نووسەر", + "keyboard_shortcuts.reply": "بۆ وەڵامدانەوە", + "keyboard_shortcuts.requests": "بۆ کردنەوەی لیستی داواکاریەکانی بەدوادا", + "keyboard_shortcuts.search": "بۆ جەختکردن لەسەر گەڕان", + "keyboard_shortcuts.spoilers": "بۆ پیشاندان/شاردنەوەی خانەی CW", + "keyboard_shortcuts.start": "بۆ کردنەوەی ستوونی \"دەست پێبکە\"", + "keyboard_shortcuts.toggle_hidden": "بۆ پیشاندان/شاردنەوەی دەق لە پشت CW", + "keyboard_shortcuts.toggle_sensitivity": "بۆ پیشاندان/شاردنەوەی میدیا", + "keyboard_shortcuts.toot": "بۆ دەست کردن بە براندێکی تازە", + "keyboard_shortcuts.unfocus": "بۆ دروستکردنی ناوچەی دەق/گەڕان", + "keyboard_shortcuts.up": "بۆ ئەوەی لە لیستەکەدا بڕۆیت", + "lightbox.close": "دابخە", + "lightbox.compress": "سندوقی نیشاندانی وێنە بپەستێنە", + "lightbox.expand": "فراوانکردنی سندوقی بینینی وێنە", + "lightbox.next": "داهاتوو", + "lightbox.previous": "پێشوو", + "lists.account.add": "زیادکردن بۆ لیست", + "lists.account.remove": "لابردن لە لیست", + "lists.delete": "سڕینەوەی لیست", + "lists.edit": "دەستکاری لیست", + "lists.edit.submit": "گۆڕینی ناونیشان", + "lists.new.create": "زیادکردنی لیست", + "lists.new.title_placeholder": "ناونیشانی لیستی نوێ", + "lists.replies_policy.followed": "Any followed user", + "lists.replies_policy.list": "Members of the list", + "lists.replies_policy.none": "No one", + "lists.replies_policy.title": "پیشاندانی وەڵامەکان بۆ:", + "lists.search": "بگەڕێ لەناو ئەو کەسانەی کە شوێنیان کەوتویت", + "lists.subheading": "لیستەکانت", + "load_pending": "{count, plural, one {# new item} other {# new items}}", + "loading_indicator.label": "بارکردن...", + "media_gallery.toggle_visible": "شاردنەوەی {number, plural, one {image} other {images}}", + "missing_indicator.label": "نەدۆزرایەوە", + "missing_indicator.sublabel": "ئەو سەرچاوەیە نادۆزرێتەوە", + "mute_modal.duration": "ماوە", + "mute_modal.hide_notifications": "شاردنەوەی ئاگانامەکان لەم بەکارهێنەرە؟ ", + "mute_modal.indefinite": "نادیار", + "navigation_bar.apps": "بەرنامەی مۆبایل", + "navigation_bar.blocks": "بەکارهێنەرە بلۆککراوەکان", + "navigation_bar.bookmarks": "نیشانکراوەکان", + "navigation_bar.community_timeline": "دەمنامەی ناوخۆیی", + "navigation_bar.compose": "نووسینی توتی نوێ", + "navigation_bar.discover": "دۆزینەوە", + "navigation_bar.domain_blocks": "دۆمەینە بلۆک کراوەکان", + "navigation_bar.edit_profile": "دەستکاری پرۆفایل بکە", + "navigation_bar.explore": "Explore", + "navigation_bar.favourites": "دڵخوازەکان", + "navigation_bar.filters": "وشە کپەکان", + "navigation_bar.follow_requests": "بەدواداچوی داواکاریەکان بکە", + "navigation_bar.follows_and_followers": "شوێنکەوتوو و شوێنکەوتوان", + "navigation_bar.info": "دەربارەی ئەم ڕاژە", + "navigation_bar.keyboard_shortcuts": "هۆتکەی", + "navigation_bar.lists": "لیستەکان", + "navigation_bar.logout": "دەرچوون", + "navigation_bar.mutes": "کپکردنی بەکارهێنەران", + "navigation_bar.personal": "کەسی", + "navigation_bar.pins": "توتی چەسپاو", + "navigation_bar.preferences": "پەسەندەکان", + "navigation_bar.public_timeline": "نووسراوەکانی هەمووشوێنێک", + "navigation_bar.security": "ئاسایش", + "notification.admin.sign_up": "{name} signed up", + "notification.favourite": "{name} نووسراوەکەتی پەسەند کرد", + "notification.follow": "{name} دوای تۆ کەوت", + "notification.follow_request": "{name} داوای کردووە کە شوێنت بکەوێت", + "notification.mention": "{name} باسی ئێوەی کرد", + "notification.own_poll": "ڕاپرسیەکەت کۆتایی هات", + "notification.poll": "ڕاپرسییەک کە دەنگی پێداویت کۆتایی هات", + "notification.reblog": "{name} نووسراوەکەتی دووبارە توتاند", + "notification.status": "{name} تازە بڵاوکرایەوە", + "notification.update": "{name} edited a post", + "notifications.clear": "ئاگانامەکان بسڕیەوە", + "notifications.clear_confirmation": "ئایا دڵنیایت لەوەی دەتەوێت بە هەمیشەیی هەموو ئاگانامەکانت بسڕیتەوە?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.alert": "ئاگانامەکانی پیشانگەرر ڕومێزی", + "notifications.column_settings.favourite": "دڵخوازترین:", + "notifications.column_settings.filter_bar.advanced": "هەموو پۆلەکان پیشان بدە", + "notifications.column_settings.filter_bar.category": "شریتی پاڵێوەری خێرا", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", + "notifications.column_settings.follow": "شوێنکەوتوانی نوێ:", + "notifications.column_settings.follow_request": "شوینکەوتنی داواکاری نوێ:", + "notifications.column_settings.mention": "ئاماژەکان:", + "notifications.column_settings.poll": "ئەنجامەکانی ڕاپرسی:", + "notifications.column_settings.push": "ئاگانامەکان پاڵ بنێ", + "notifications.column_settings.reblog": "دووبارەتوتەکان:", + "notifications.column_settings.show": "لە ستووندا پیشان بدە", + "notifications.column_settings.sound": "لێدانی دەنگ", + "notifications.column_settings.status": "توتەکانی نوێ:", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", + "notifications.filter.all": "هەموو", + "notifications.filter.boosts": "دووبارەتوتەکان", + "notifications.filter.favourites": "دڵخوازەکان", + "notifications.filter.follows": "شوێنکەوتن", + "notifications.filter.mentions": "ئاماژەکان", + "notifications.filter.polls": "ئەنجامەکانی ڕاپرسی", + "notifications.filter.statuses": "نوێکردنەوەکان ئەو کەسانەی کە پەیڕەوی دەکەیت", + "notifications.grant_permission": "Grant permission.", + "notifications.group": "{count} ئاگانامە", + "notifications.mark_as_read": "هەموو ئاگانامەکان وەک خوێندراوەتەوە نیشان بکە", + "notifications.permission_denied": "ناتوانرێت ئاگانامەکانی دێسکتۆپ چالاک بکرێت وەک ڕێپێدان ڕەتکرایەوە.", + "notifications.permission_denied_alert": "ناتوانرێت ئاگانامەکانی دێسکتۆپ چالاک بکرێت، چونکە پێشتر مۆڵەتی وێبگەڕ ڕەتکرایەوە", + "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.", + "notifications_permission_banner.enable": "چالاککردنی ئاگانامەکانی دێسکتۆپ", + "notifications_permission_banner.how_to_control": "بۆ وەرگرتنی ئاگانامەکان کاتێک ماستۆدۆن نەکراوەیە، ئاگانامەکانی دێسکتۆپ چالاک بکە. دەتوانیت بە وردی کۆنترۆڵی جۆری کارلێکەکان بکەیت کە ئاگانامەکانی دێسکتۆپ دروست دەکەن لە ڕێگەی دوگمەی {icon} لەسەرەوە کاتێک چالاک دەکرێن.", + "notifications_permission_banner.title": "هەرگیز شتێک لە دەست مەدە", + "picture_in_picture.restore": "بیگەڕێنەوە", + "poll.closed": "دابخە", + "poll.refresh": "نوێکردنەوە", + "poll.total_people": "{count, plural, one {# خەڵک} other {# خەڵک}}", + "poll.total_votes": "{count, plural, one {# دەنگ} other {# دەنگ}}\n", + "poll.vote": "دەنگ", + "poll.voted": "تۆ دەنگت بەو وەڵامە دا", + "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll_button.add_poll": "ڕاپرسییەک زیاد بکە", + "poll_button.remove_poll": "ده‌نگدان بسڕه‌وه‌‌", + "privacy.change": "ڕێکخستنی تایبەتمەندی توت", + "privacy.direct.long": "تەنیا بۆ بەکارهێنەرانی ناوبراو", + "privacy.direct.short": "Direct", + "privacy.private.long": "بینراو تەنها بۆ شوێنکەوتوان", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", + "privacy.public.short": "گشتی", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", + "privacy.unlisted.short": "لە لیست نەکراو", + "refresh": "نوێکردنەوە", + "regeneration_indicator.label": "بارکردن…", + "regeneration_indicator.sublabel": "ڕاگەیەنەری ماڵەوەت ئامادە دەکرێت!", + "relative_time.days": "{number}ڕۆژ", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.hours": "{number}کات", + "relative_time.just_now": "ئێستا", + "relative_time.minutes": "{number}کات", + "relative_time.seconds": "{number}کات", + "relative_time.today": "ئیمڕۆ", + "reply_indicator.cancel": "هەڵوەشاندنەوه", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", + "report.forward": "ناردن بۆ {target}", + "report.forward_hint": "هەژمارەکە لە ڕاژەیەکی ترە. ڕونووسێکی نەناسراو بنێرە بۆ گوزارشت لەوێ?", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", + "report.placeholder": "سەرنجەکانی زیاتر", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", + "report.submit": "ناردن", + "report.target": "گوزارشتکردنی{target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "search.placeholder": "گەڕان", + "search_popout.search_format": "شێوەی گەڕانی پێشکەوتوو", + "search_popout.tips.full_text": "گەڕانێکی دەقی سادە دەتوانێت توتەکانی ئێوە کە، نووسیوتانە،پەسەنتان کردووە، دووبارەتانکردووە، یان ئەو توتانە کە باسی ئێوەی تێدا کراوە پەیدا دەکا. هەروەها ناوی بەکارهێنەران، ناوی پیشاندراو و هەشتەگەکانیش لە خۆ دەگرێت.", + "search_popout.tips.hashtag": "هەشتاگ", + "search_popout.tips.status": "توت", + "search_popout.tips.text": "دەقی سادە هەڵدەسێ بە گەڕاندنەوەی هاوتایی ناوی پیشاندان، ناوی بەکارهێنەر و هاشتاگەکان", + "search_popout.tips.user": "بەکارهێنەر", + "search_results.accounts": "خەڵک", + "search_results.all": "All", + "search_results.hashtags": "هەشتاگ", + "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.statuses": "توتەکان", + "search_results.statuses_fts_disabled": "گەڕانی توتەکان بە ناوەڕۆکیان لەسەر ئەم ڕاژەی ماستۆدۆن چالاک نەکراوە.", + "search_results.total": "{count, number} {count, plural, one {دەرئەنجام} other {دەرئەنجام}}", + "status.admin_account": "کردنەوەی میانڕەوی بەڕێوەبەر بۆ @{name}", + "status.admin_status": "ئەم توتە بکەوە لە ناو ڕووکاری بەڕیوەبەر", + "status.block": "@{name} ئاستەنگ بکە", + "status.bookmark": "نیشانه", + "status.cancel_reblog_private": "بێبەهێزکردن", + "status.cannot_reblog": "ئەم بابەتە ناتوانرێت بەرزبکرێتەوە", + "status.copy": "ڕوونووسی بەستەر بۆ توت", + "status.delete": "سڕینەوە", + "status.detailed_status": "ڕوانگەی گفتوگۆ بە وردەکاری", + "status.direct": "پەیامی ڕاستەوخۆ @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.embed": "نیشتەجێ بکە", + "status.favourite": "دڵخواز", + "status.filtered": "پاڵاوتن", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", + "status.load_more": "زیاتر بار بکە", + "status.media_hidden": "میدیای شاراوە", + "status.mention": "ناوبنێ @{name}", + "status.more": "زیاتر", + "status.mute": "@{name} بێدەنگ بکە", + "status.mute_conversation": "بێدەنگی بکە", + "status.open": "ئەم توتە فراوان بکە", + "status.pin": "لکاندن لەسەر پرۆفایل", + "status.pinned": "توتی چەسپکراو", + "status.read_more": "زیاتر بخوێنەوە", + "status.reblog": "بەهێزکردن", + "status.reblog_private": "بەهێزکردن بۆ بینەرانی سەرەتایی", + "status.reblogged_by": "{name} توتی کردەوە", + "status.reblogs.empty": "کەس ئەم توتەی دووبارە نەتوتاندوە ،کاتێک کەسێک وا بکات، لێرە دەرئەکەون.", + "status.redraft": "سڕینەوەی و دووبارە ڕەشنووس", + "status.remove_bookmark": "لابردنی نیشانه", + "status.reply": "وەڵام", + "status.replyAll": "بە نووسراوە وەڵام بدەوە", + "status.report": "گوزارشت @{name}", + "status.sensitive_warning": "ناوەڕۆکی هەستیار", + "status.share": "هاوبەشی بکە", + "status.show_less": "کەمتر نیشان بدە", + "status.show_less_all": "هەمووی بچووک بکەوە", + "status.show_more": "زیاتر نیشان بدە", + "status.show_more_all": "زیاتر نیشان بدە بۆ هەمووی", + "status.show_thread": "نیشاندانی گفتوگۆ", + "status.uncached_media_warning": "بەردەست نیە", + "status.unmute_conversation": "گفتوگۆی بێدەنگ", + "status.unpin": "لە سەرەوە لایبە", + "suggestions.dismiss": "ڕەتکردنەوەی پێشنیار", + "suggestions.header": "لەوانەیە حەزت لەمەش بێت…", + "tabs_bar.federated_timeline": "گشتی", + "tabs_bar.home": "سەرەتا", + "tabs_bar.local_timeline": "ناوخۆیی", + "tabs_bar.notifications": "ئاگادارییەکان", + "tabs_bar.search": "بگەڕێ", + "time_remaining.days": "{number, plural, one {# ڕۆژ} other {# ڕۆژ}} ماوە", + "time_remaining.hours": "{number, plural, one {# کاتژمێر} other {# کاتژمێر}} ماوە", + "time_remaining.minutes": "{number, plural, one {# خولەک} other {# خولەک}} ماوە", + "time_remaining.moments": "کاتی ماوە", + "time_remaining.seconds": "{number, plural, one {# چرکە} other {# چرکە}} ماوە", + "timeline_hint.remote_resource_not_displayed": "{resource} لە ڕاژەکانی ترەوە پیشان نادرێت.", + "timeline_hint.resources.followers": "شوێنکەوتوو", + "timeline_hint.resources.follows": "شوێنکەوتن", + "timeline_hint.resources.statuses": "نێردراوی کۆن", + "trends.counter_by_accounts": "{count, plural, one {{counter} کەس} other {{counter} کەس}} گفتوگۆ دەکا", + "trends.trending_now": "ڕۆژەڤ", + "ui.beforeunload": "ڕەشنووسەکەت لەدەست دەچێت ئەگەر ماستۆدۆن جێ بهێڵیت.", + "units.short.billion": "{count} ملیار", + "units.short.million": "{count} ملیۆن", + "units.short.thousand": "{count} هەزار", + "upload_area.title": "فایلەکانت ڕابکێشە ئێرە بۆ بەرزکردنەوەیان", + "upload_button.label": "وێنە، ڤیدیۆ یان پەیامی دەنگی زیاد بکە", + "upload_error.limit": "سنووری بەرزکردنەوەت بەزاندووە.", + "upload_error.poll": "فایل و ڕاپرسی پێکەوە ڕێپێنەدراون.", + "upload_form.audio_description": "پەیامەکەت بۆ نابیستەکان", + "upload_form.description": "پەیامەکەت بۆ نابیناکان", + "upload_form.description_missing": "No description added", + "upload_form.edit": "دەستکاری", + "upload_form.thumbnail": "گۆڕانی وینۆچکە", + "upload_form.undo": "بیسڕەوە", + "upload_form.video_description": "پەیامەکەت بۆ نابیست و نابیناکان", + "upload_modal.analyzing_picture": "وێنەکە شی دەکرێتەوە…", + "upload_modal.apply": "بیسەپێنە", + "upload_modal.applying": "Applying…", + "upload_modal.choose_image": "وێنە هەڵبژێرە", + "upload_modal.description_placeholder": "بە دڵ کەین با بە نەشئەی مەی غوباری میحنەتی دونیا", + "upload_modal.detect_text": "نووسینی ناو وێنەکە دەستنیشان بکە", + "upload_modal.edit_media": "دەستکاریکردنی میدیا", + "upload_modal.hint": "گەر وێنە چکۆلە یان بڕاوەبێت، خاڵی ناوەندی دیار دەکەوێت. خاڵی ناوەندی وێنە بە کرتە یان جێبەجیکردنی رێکبخەن.", + "upload_modal.preparing_ocr": "نووسینەکە دەستنیشان دەکرێت…", + "upload_modal.preview_label": "پێشبینین ({ratio})", + "upload_progress.label": "بار دەکرێت...", + "video.close": "داخستنی ڤیدیۆ", + "video.download": "داگرتنی فایل", + "video.exit_fullscreen": "دەرچوون لە پڕ شاشە", + "video.expand": "ڤیدیۆفراوان بکە", + "video.fullscreen": "پڕپیشانگەر", + "video.hide": "شاردنەوەی ڤیدیۆ", + "video.mute": "دەنگی کپ", + "video.pause": "وەستان", + "video.play": "لێی بدە", + "video.unmute": "بێدەنگی مەکە" +} diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 8956cd678..770bd71bc 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -18,12 +18,12 @@ "account.followers": "Abbunati", "account.followers.empty": "Nisunu hè abbunatu à st'utilizatore.", "account.followers_counter": "{count, plural, one {{counter} Abbunatu} other {{counter} Abbunati}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} Abbunamentu} other {{counter} Abbunamenti}}", "account.follows.empty": "St'utilizatore ùn seguita nisunu.", "account.follows_you": "Vi seguita", "account.hide_reblogs": "Piattà spartere da @{name}", "account.joined": "Quì dapoi {date}", - "account.last_status": "Ultima attività", "account.link_verified_on": "A prupietà di stu ligame hè stata verificata u {date}", "account.locked_info": "U statutu di vita privata di u contu hè chjosu. U pruprietariu esamina manualmente e dumande d'abbunamentu.", "account.media": "Media", @@ -32,7 +32,6 @@ "account.mute": "Piattà @{name}", "account.mute_notifications": "Piattà nutificazione da @{name}", "account.muted": "Piattatu", - "account.never_active": "Mai", "account.posts": "Statuti", "account.posts_with_replies": "Statuti è risposte", "account.report": "Palisà @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Statutu} other {{counter} Statuti}}", "account.unblock": "Sbluccà @{name}", "account.unblock_domain": "Ùn piattà più {domain}", + "account.unblock_short": "Unblock", "account.unendorse": "Ùn fà figurà nant'à u prufilu", "account.unfollow": "Ùn siguità più", "account.unmute": "Ùn piattà più @{name}", "account.unmute_notifications": "Ùn piattà più nutificazione da @{name}", + "account.unmute_short": "Unmute", "account_note.placeholder": "Senza cummentariu", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "Utilizatori bluccati", "column.bookmarks": "Segnalibri", "column.community": "Linea pubblica lucale", - "column.direct": "Missaghji diretti", + "column.conversations": "Conversations", "column.directory": "Percorre i prufili", "column.domain_blocks": "Duminii piattati", "column.favourites": "Favuriti", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Solu lucale", "community.column_settings.media_only": "Solu media", "community.column_settings.remote_only": "Solu distante", - "compose_form.direct_message_warning": "Solu l'utilizatori mintuvati puderenu vede stu statutu.", "compose_form.direct_message_warning_learn_more": "Amparà di più", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Stu statutu ùn hè \"Micca listatu\" è ùn sarà micca listatu indè e circate da hashtag. Per esse vistu in quesse, u statutu deve esse \"Pubblicu\".", "compose_form.lock_disclaimer": "U vostru contu ùn hè micca {locked}. Tuttu u mondu pò seguitavi è vede i vostri statuti privati.", "compose_form.lock_disclaimer.lock": "privatu", @@ -165,8 +166,9 @@ "empty_column.blocks": "Per avà ùn avete bluccatu manc'un utilizatore.", "empty_column.bookmarked_statuses": "Ùn avete manc'un segnalibru. Quandu aghjunghjerate unu, sarà mustratu quì.", "empty_column.community": "Ùn c'hè nunda indè a linea lucale. Scrivete puru qualcosa!", - "empty_column.direct": "Ùn avete ancu nisun missaghju direttu. S'è voi mandate o ricevete unu, u vidarete quì.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Ùn c'hè manc'un duminiu bluccatu avà.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Ùn avete manc'unu statutu favuritu. Quandu aghjunghjerate unu à i vostri favuriti, sarà mustratu quì.", "empty_column.favourites": "Nisunu hà aghjuntu stu statutu à i so favuriti. Quandu qualch'unu farà quessa, u so contu sarà mustratu quì.", "empty_column.follow_recommendations": "Si pare ch'ùn s'hè micca pussutu generà e ricumandazione per voi. Pudete sempre pruvà d'utilizà a ricerca per truvà ghjente chì cunnuscete, o splurà l'hashtag in tindenza.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Pruvate di disattivà quelli è poi attualizà sta pagina. S'ellu persiste u prublemu, pudete forse sempre accede à Mastodon dapoi un'alltru navigatore o applicazione.", "errors.unexpected_crash.copy_stacktrace": "Cupià stacktrace nant'à u fermacarta", "errors.unexpected_crash.report_issue": "Palisà prublemu", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Fatta", "follow_recommendations.heading": "Siguitate a ghjente da quelli vulete vede i missaghji! Eccu qualchì ricumandazione.", "follow_recommendations.lead": "I missaghji da a ghjente che voi siguitate figureranu in ordine crunulogicu nant'a vostra pagina d'accolta. Ùn timite micca di fà un sbagliu, pudete sempre disabbunavvi d'un contu à ogni mumentu!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "sparte", "keyboard_shortcuts.column": "fucalizà un statutu indè una colonna", "keyboard_shortcuts.compose": "fucalizà nant'à l'area di ridazzione", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Descrizzione", - "keyboard_shortcuts.direct": "per apre una culonna di missaghji diretti", "keyboard_shortcuts.down": "falà indè a lista", "keyboard_shortcuts.enter": "apre u statutu", "keyboard_shortcuts.favourite": "aghjunghje à i favuriti", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Segnalibri", "navigation_bar.community_timeline": "Linea pubblica lucale", "navigation_bar.compose": "Scrive un novu statutu", - "navigation_bar.direct": "Missaghji diretti", "navigation_bar.discover": "Scopre", "navigation_bar.domain_blocks": "Duminii piattati", "navigation_bar.edit_profile": "Mudificà u prufile", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Favuriti", "navigation_bar.filters": "Parolle silenzate", "navigation_bar.follow_requests": "Dumande d'abbunamentu", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Preferenze", "navigation_bar.public_timeline": "Linea pubblica glubale", "navigation_bar.security": "Sicurità", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} hà aghjuntu u vostru statutu à i so favuriti", "notification.follow": "{name} v'hà seguitatu", "notification.follow_request": "{name} vole abbunassi à u vostru contu", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Purgà e nutificazione", "notifications.clear_confirmation": "Site sicuru·a che vulete toglie tutte ste nutificazione?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Nutificazione nant'à l'urdinatore", "notifications.column_settings.favourite": "Favuriti:", "notifications.column_settings.filter_bar.advanced": "Affissà tutte e categurie", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Toglie u scandagliu", "privacy.change": "Mudificà a cunfidenzialità di u statutu", "privacy.direct.long": "Mandà solu à quelli chì so mintuvati", - "privacy.direct.short": "Direttu", + "privacy.direct.short": "Direct", "privacy.private.long": "Mustrà solu à l'abbunati", - "privacy.private.short": "Privatu", - "privacy.public.long": "Mustrà à tuttu u mondu nant'à e linee pubbliche", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Pubblicu", - "privacy.unlisted.long": "Ùn mette micca nant'à e linee pubbliche", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Micca listatu", "refresh": "Attualizà", "regeneration_indicator.label": "Caricamentu…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "oghji", "reply_indicator.cancel": "Annullà", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Trasferisce à {target}", "report.forward_hint": "U contu hè nant'à un'altru servore. Vulete ancu mandà una copia anonima di u signalamentu quallà?", - "report.hint": "U signalamentu sarà mandatu à i muderatori di u servore. Pudete spiegà perchè avete palisatu stu contu quì sottu:", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", "report.placeholder": "Altri cummenti", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Mandà", "report.target": "Signalamentu di {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Circà", "search_popout.search_format": "Ricerca avanzata", "search_popout.tips.full_text": "I testi simplici rimandanu i statuti ch'avete scritti, aghjunti à i vostri favuriti, spartuti o induve quelli site mintuvatu·a, è ancu i cugnomi, nomi pubblichi è hashtag chì currispondenu.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Un testu simplice rimanda i nomi pubblichi, cugnomi è hashtag", "search_popout.tips.user": "utilizatore", "search_results.accounts": "Ghjente", + "search_results.all": "All", "search_results.hashtags": "Hashtag", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Statuti", "search_results.statuses_fts_disabled": "A ricerca di i cuntinuti di i statuti ùn hè micca attivata nant'à stu servore Mastodon.", "search_results.total": "{count, number} {count, plural, one {risultatu} other {risultati}}", @@ -474,6 +514,7 @@ "upload_error.poll": "Ùn si pò micca caricà fugliali cù i scandagli.", "upload_form.audio_description": "Discrizzione per i ciochi", "upload_form.description": "Discrizzione per i malvistosi", + "upload_form.description_missing": "No description added", "upload_form.edit": "Mudificà", "upload_form.thumbnail": "Cambià vignetta", "upload_form.undo": "Sguassà", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 2c5bf8a85..6260e2cb8 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -5,7 +5,7 @@ "account.badges.group": "Skupina", "account.block": "Zablokovat @{name}", "account.block_domain": "Blokovat doménu {domain}", - "account.blocked": "Blokováno", + "account.blocked": "Blokován", "account.browse_more_on_origin_server": "Více na původním profilu", "account.cancel_follow_request": "Zrušit žádost o sledování", "account.direct": "Poslat @{name} přímou zprávu", @@ -18,12 +18,12 @@ "account.followers": "Sledující", "account.followers.empty": "Tohoto uživatele ještě nikdo nesleduje.", "account.followers_counter": "{count, plural, one {{counter} Sledující} few {{counter} Sledující} many {{counter} Sledujících} other {{counter} Sledujících}}", + "account.following": "Sledujete", "account.following_counter": "{count, plural, one {{counter} Sledovaný} few {{counter} Sledovaní} many {{counter} Sledovaných} other {{counter} Sledovaných}}", "account.follows.empty": "Tento uživatel ještě nikoho nesleduje.", "account.follows_you": "Sleduje vás", "account.hide_reblogs": "Skrýt boosty od @{name}", "account.joined": "Založen {date}", - "account.last_status": "Naposledy aktivní", "account.link_verified_on": "Vlastnictví tohoto odkazu bylo zkontrolováno {date}", "account.locked_info": "Stav soukromí tohoto účtu je nastaven na zamčeno. Jeho vlastník ručně posuzuje, kdo ho může sledovat.", "account.media": "Média", @@ -32,7 +32,6 @@ "account.mute": "Skrýt @{name}", "account.mute_notifications": "Skrýt oznámení od @{name}", "account.muted": "Skryt", - "account.never_active": "Nikdy", "account.posts": "Příspěvky", "account.posts_with_replies": "Příspěvky a odpovědi", "account.report": "Nahlásit @{name}", @@ -42,13 +41,15 @@ "account.statuses_counter": "{count, plural, one {{counter} Příspěvek} few {{counter} Příspěvky} many {{counter} Příspěvků} other {{counter} Příspěvků}}", "account.unblock": "Odblokovat @{name}", "account.unblock_domain": "Odblokovat doménu {domain}", + "account.unblock_short": "Odblokovat", "account.unendorse": "Nezvýrazňovat na profilu", "account.unfollow": "Přestat sledovat", - "account.unmute": "Zrušit skrytí @{name}", - "account.unmute_notifications": "Zrušit skrytí oznámení od @{name}", + "account.unmute": "Odkrýt @{name}", + "account.unmute_notifications": "Odkrýt oznámení od @{name}", + "account.unmute_short": "Odkrýt", "account_note.placeholder": "Klikněte pro přidání poznámky", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Míra udržení uživatelů podle dne po registraci", + "admin.dashboard.monthly_retention": "Míra udržení uživatelů podle měsíce po registraci", "admin.dashboard.retention.average": "Průměr", "admin.dashboard.retention.cohort": "Měsíc registrace", "admin.dashboard.retention.cohort_size": "Noví uživatelé", @@ -69,12 +70,12 @@ "column.blocks": "Blokovaní uživatelé", "column.bookmarks": "Záložky", "column.community": "Místní časová osa", - "column.direct": "Přímé zprávy", + "column.conversations": "Konverzace", "column.directory": "Prozkoumat profily", "column.domain_blocks": "Blokované domény", "column.favourites": "Oblíbené", "column.follow_requests": "Žádosti o sledování", - "column.home": "Domů", + "column.home": "Domovská časová osa", "column.lists": "Seznamy", "column.mutes": "Skrytí uživatelé", "column.notifications": "Oznámení", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Pouze místní", "community.column_settings.media_only": "Pouze média", "community.column_settings.remote_only": "Pouze vzdálené", - "compose_form.direct_message_warning": "Tento příspěvek bude odeslán pouze zmíněným uživatelům.", "compose_form.direct_message_warning_learn_more": "Zjistit více", + "compose_form.encryption_warning": "Příspěvky v Mastodonu nejsou šifrovány end-to-end. Nesdílejte žádné nebezpečné informace přes Mastodon.", "compose_form.hashtag_warning": "Tento příspěvek nebude zobrazen pod žádným hashtagem, neboť je neuvedený. Pouze veřejné příspěvky mohou být vyhledány podle hashtagu.", "compose_form.lock_disclaimer": "Váš účet není {locked}. Kdokoliv vás může sledovat a vidět vaše příspěvky učené pouze pro sledující.", "compose_form.lock_disclaimer.lock": "uzamčen", @@ -105,7 +106,7 @@ "compose_form.poll.switch_to_single": "Povolit u ankety výběr jediné možnosti", "compose_form.publish": "Odeslat", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Uložit změny", "compose_form.sensitive.hide": "{count, plural, one {Označit média za citlivá} few {Označit média za citlivá} many {Označit média za citlivá} other {Označit média za citlivá}}", "compose_form.sensitive.marked": "{count, plural, one {Média jsou označena za citlivá} few {Média jsou označena za citlivá} many {Média jsou označena za citlivá} other {Média jsou označena za citlivá}}", "compose_form.sensitive.unmarked": "{count, plural, one {Média nejsou označena za citlivá} few {Média nejsou označena za citlivá} many {Média nejsou označena za citlivá} other {Média nejsou označena za citlivá}}", @@ -165,8 +166,9 @@ "empty_column.blocks": "Ještě jste nezablokovali žádného uživatele.", "empty_column.bookmarked_statuses": "Ještě nemáte v záložkách žádné příspěvky. Pokud si do nich nějaký přidáte, zobrazí se zde.", "empty_column.community": "Místní časová osa je prázdná. Napište něco veřejně a rozhýbejte to tu!", - "empty_column.direct": "Ještě nemáte žádné přímé zprávy. Pokud nějakou pošlete nebo dostanete, zobrazí se zde.", + "empty_column.conversations": "Jakmile pošlete nebo obdržíte příspěvek, který je viditelný pouze pro lidi v něm uvedené, zobrazí se zde.", "empty_column.domain_blocks": "Ještě nemáte žádné blokované domény.", + "empty_column.explore_statuses": "Momentálně není nic populární. Vraťte se později!", "empty_column.favourited_statuses": "Ještě nemáte žádné oblíbené příspěvky. Pokud si nějaký oblíbíte, zobrazí se zde.", "empty_column.favourites": "Tento příspěvek si ještě nikdo neoblíbil. Pokud to někdo udělá, zobrazí se zde.", "empty_column.follow_recommendations": "Zdá se, že pro vás nelze vygenerovat žádné návrhy. Můžete zkusit přes vyhledávání naleznout lidi, které znáte, nebo prozkoumat populární hashtagy.", @@ -185,12 +187,18 @@ "error.unexpected_crash.next_steps_addons": "Zkuste je vypnout a stránku obnovit. Pokud to nepomůže, zkuste otevřít Mastodon v jiném prohlížeči nebo nativní aplikaci.", "errors.unexpected_crash.copy_stacktrace": "Zkopírovat stacktrace do schránky", "errors.unexpected_crash.report_issue": "Nahlásit problém", + "explore.search_results": "Výsledky hledání", + "explore.suggested_follows": "Pro vás", + "explore.title": "Objevování", + "explore.trending_links": "Zprávy", + "explore.trending_statuses": "Příspěvky", + "explore.trending_tags": "Hashtagy", "follow_recommendations.done": "Hotovo", "follow_recommendations.heading": "Sledujte lidi, jejichž příspěvky chcete vidět! Tady jsou nějaké návrhy.", "follow_recommendations.lead": "Příspěvky od lidí, které sledujete, se budou objevovat v chronologickém pořadí ve vaší domovské ose. Nebojte se, že uděláte chybu, můžete lidi stejně snadno kdykoliv přestat sledovat!", "follow_request.authorize": "Autorizovat", "follow_request.reject": "Odmítnout", - "follow_requests.unlocked_explanation": "Přestože váš účet není uzamčen, {domain} si myslí, že budete chtít následující požadavky na sledování zkontrolovat ručně.", + "follow_requests.unlocked_explanation": "Přestože váš účet není uzamčen, personál {domain} usoudil, že byste mohli chtít tyto požadavky na sledování zkontrolovat ručně.", "generic.saved": "Uloženo", "getting_started.developers": "Vývojáři", "getting_started.directory": "Adresář profilů", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "Boostnout příspěvek", "keyboard_shortcuts.column": "Focus na sloupec", "keyboard_shortcuts.compose": "Focus na textové pole nového příspěvku", + "keyboard_shortcuts.conversations": "pro otevření sloupce konverzací", "keyboard_shortcuts.description": "Popis", - "keyboard_shortcuts.direct": "Otevřít sloupec přímých zpráv", "keyboard_shortcuts.down": "Posunout dolů v seznamu", "keyboard_shortcuts.enter": "Otevřít příspěvek", "keyboard_shortcuts.favourite": "Oblíbit příspěvek", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Záložky", "navigation_bar.community_timeline": "Místní časová osa", "navigation_bar.compose": "Vytvořit nový příspěvek", - "navigation_bar.direct": "Přímé zprávy", "navigation_bar.discover": "Objevujte", "navigation_bar.domain_blocks": "Blokované domény", "navigation_bar.edit_profile": "Upravit profil", + "navigation_bar.explore": "Objevování", "navigation_bar.favourites": "Oblíbené", "navigation_bar.filters": "Skrytá slova", "navigation_bar.follow_requests": "Žádosti o sledování", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Předvolby", "navigation_bar.public_timeline": "Federovaná časová osa", "navigation_bar.security": "Zabezpečení", + "notification.admin.sign_up": "Uživatel {name} se zaregistroval", "notification.favourite": "Uživatel {name} si oblíbil váš příspěvek", "notification.follow": "Uživatel {name} vás začal sledovat", "notification.follow_request": "Uživatel {name} požádal o povolení vás sledovat", @@ -308,9 +317,10 @@ "notification.poll": "Anketa, ve které jste hlasovali, skončila", "notification.reblog": "Uživatel {name} boostnul váš příspěvek", "notification.status": "Nový příspěvek od {name}", - "notification.update": "{name} edited a post", - "notifications.clear": "Smazat oznámení", + "notification.update": "Uživatel {name} upravil příspěvek", + "notifications.clear": "Vymazat oznámení", "notifications.clear_confirmation": "Opravdu chcete trvale smazat všechna vaše oznámení?", + "notifications.column_settings.admin.sign_up": "Nové registrace:", "notifications.column_settings.alert": "Oznámení na počítači", "notifications.column_settings.favourite": "Oblíbení:", "notifications.column_settings.filter_bar.advanced": "Zobrazit všechny kategorie", @@ -327,7 +337,7 @@ "notifications.column_settings.status": "Nové příspěvky:", "notifications.column_settings.unread_notifications.category": "Nepřečtená oznámení", "notifications.column_settings.unread_notifications.highlight": "Zvýraznit nepřečtená oznámení", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.update": "Úpravy:", "notifications.filter.all": "Vše", "notifications.filter.boosts": "Boosty", "notifications.filter.favourites": "Oblíbení", @@ -356,37 +366,65 @@ "poll_button.remove_poll": "Odstranit anketu", "privacy.change": "Změnit soukromí příspěvku", "privacy.direct.long": "Viditelné pouze pro zmíněné uživatele", - "privacy.direct.short": "Přímý", + "privacy.direct.short": "Pouze lidé, které zmiňuji", "privacy.private.long": "Viditelné pouze pro sledující", - "privacy.private.short": "Pouze pro sledující", - "privacy.public.long": "Viditelné pro všechny, i ve veřejných časových osách", + "privacy.private.short": "Pouze sledující", + "privacy.public.long": "Viditelné pro všechny", "privacy.public.short": "Veřejný", - "privacy.unlisted.long": "Viditelné pro všechny, ale ne ve veřejných časových osách", + "privacy.unlisted.long": "Viditelné pro všechny, ale bez objevovacích funkcí", "privacy.unlisted.short": "Neuvedený", "refresh": "Obnovit", "regeneration_indicator.label": "Načítání…", "regeneration_indicator.sublabel": "Váš domovský kanál se připravuje!", "relative_time.days": "{number} d", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "před {number, plural, one {# dnem} few {# dny} many {# dny} other {# dny}}", + "relative_time.full.hours": "před {number, plural, one {# hodinou} few {# hodinami} many {# hodinami} other {# hodinami}}", + "relative_time.full.just_now": "právě teď", + "relative_time.full.minutes": "před {number, plural, one {# minutou} few {# minutami} many {# minutami} other {# minutami}}", + "relative_time.full.seconds": "před {number, plural, one {# sekundou} few {# sekundami} many {# sekundami} other {# sekundami}}", "relative_time.hours": "{number} h", "relative_time.just_now": "teď", "relative_time.minutes": "{number} m", "relative_time.seconds": "{number} s", "relative_time.today": "dnes", "reply_indicator.cancel": "Zrušit", - "report.categories.other": "Other", + "report.block": "Zablokovat", + "report.block_explanation": "Neuvidíte jejich příspěvky. Oni neuvidí vaše příspěvky ani vás nebudou moci sledovat. Poznají, že jsou blokováni.", + "report.categories.other": "Ostatní", "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.violation": "Obsah porušuje jedno nebo více pravidel serveru", + "report.category.subtitle": "Vyberte nejbližší možnost", + "report.category.title": "Povězte nám, proč chcete {type} nahlásit", + "report.category.title_account": "profil", + "report.category.title_status": "příspěvek", + "report.close": "Hotovo", + "report.comment.title": "Ještě něco jiného, co myslíte, že bychom měli vědět?", "report.forward": "Přeposlat na {target}", "report.forward_hint": "Tento účet je z jiného serveru. Chcete na něj také poslat anonymizovanou kopii hlášení?", - "report.hint": "Hlášení bude zasláno moderátorům vašeho serveru. Níže můžete uvést, proč tento účet nahlašujete:", + "report.mute": "Skrýt", + "report.mute_explanation": "Neuvidíte jejich příspěvky. Oni vás mohou nadále sledovat i vidět vaše příspěvky a nebudou vědět, že jsou skryti.", + "report.next": "Dále", "report.placeholder": "Dodatečné komentáře", + "report.reasons.dislike": "Nelíbí se mi", + "report.reasons.dislike_description": "Není to něco, co chcete vidět", + "report.reasons.other": "Jde o něco jiného", + "report.reasons.other_description": "Problém neodpovídá ostatním kategoriím", + "report.reasons.spam": "Je to spam", + "report.reasons.spam_description": "Škodlivé odkazy, falešné interakce nebo opakované odpovědi", + "report.reasons.violation": "Porušuje pravidla serveru", + "report.reasons.violation_description": "Máte za to, že porušuje konkrétní pravidla", + "report.rules.subtitle": "Vyberte všechna relevantní", + "report.rules.title": "Která pravidla porušuje?", + "report.statuses.subtitle": "Vyberte všechny relevantní", + "report.statuses.title": "Existují příspěvky dokládající toto hlášení?", "report.submit": "Odeslat", "report.target": "Nahlášení uživatele {target}", + "report.thanks.take_action": "Tady jsou vaše možnosti pro řízení toho, co na Mastodonu vidíte:", + "report.thanks.take_action_actionable": "Zatímco to posuzujeme, můžete podniknout kroky proti @{name}:", + "report.thanks.title": "Nechcete tohle vidět?", + "report.thanks.title_actionable": "Děkujeme za nahlášení, podíváme se na to.", + "report.unfollow": "Přestat sledovat @{name}", + "report.unfollow_explanation": "Tento účet sledujete. Abyste už neviděli jejich příspěvky ve své domácí časové ose, přestaňte je sledovat.", "search.placeholder": "Hledat", "search_popout.search_format": "Pokročilé hledání", "search_popout.tips.full_text": "Jednoduchý text vrací příspěvky, které jste napsali, oblíbili si, boostnuli, nebo vás v nich někdo zmínil, a také odpovídající přezdívky, zobrazovaná jména a hashtagy.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Jednoduchý text vrací odpovídající zobrazovaná jména, přezdívky a hashtagy", "search_popout.tips.user": "uživatel", "search_results.accounts": "Lidé", + "search_results.all": "Vše", "search_results.hashtags": "Hashtagy", + "search_results.nothing_found": "Pro tyto hledané výrazy nebylo nic nenalezeno", "search_results.statuses": "Příspěvky", "search_results.statuses_fts_disabled": "Vyhledávání příspěvků podle jejich obsahu není na tomto Mastodon serveru povoleno.", "search_results.total": "{count, number} {count, plural, one {výsledek} few {výsledky} many {výsledků} other {výsledků}}", @@ -409,14 +449,14 @@ "status.delete": "Smazat", "status.detailed_status": "Podrobné zobrazení konverzace", "status.direct": "Poslat @{name} přímou zprávu", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Upravit", + "status.edited": "Upraven {date}", + "status.edited_x_times": "Upraven {count, plural, one {{count}krát} few {{count}krát} many {{count}krát} other {{count}krát}}", "status.embed": "Vložit na web", "status.favourite": "Oblíbit", "status.filtered": "Filtrováno", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "Uživatel {name} vytvořil {date}", + "status.history.edited": "Uživatel {name} upravil {date}", "status.load_more": "Zobrazit více", "status.media_hidden": "Média skryta", "status.mention": "Zmínit @{name}", @@ -449,7 +489,7 @@ "suggestions.dismiss": "Odmítnout návrh", "suggestions.header": "Mohlo by vás zajímat…", "tabs_bar.federated_timeline": "Federovaná", - "tabs_bar.home": "Domů", + "tabs_bar.home": "Domovská", "tabs_bar.local_timeline": "Místní", "tabs_bar.notifications": "Oznámení", "tabs_bar.search": "Hledat", @@ -460,7 +500,7 @@ "time_remaining.seconds": "{number, plural, one {Zbývá # sekunda} few {Zbývají # sekundy} many {Zbývá # sekund} other {Zbývá # sekund}}", "timeline_hint.remote_resource_not_displayed": "{resource} z jiných serveru se nezobrazuje.", "timeline_hint.resources.followers": "Sledující", - "timeline_hint.resources.follows": "Sleduje", + "timeline_hint.resources.follows": "Sledovaní", "timeline_hint.resources.statuses": "Starší příspěvky", "trends.counter_by_accounts": "zmiňuje {count, plural, one {{counter} člověk} few {{counter} lidé} many {{counter} lidí} other {{counter} lidí}}", "trends.trending_now": "Právě populární", @@ -474,6 +514,7 @@ "upload_error.poll": "U anket není nahrávání souborů povoleno.", "upload_form.audio_description": "Popis pro sluchově postižené", "upload_form.description": "Popis pro zrakově postižené", + "upload_form.description_missing": "Nebyl přidán popis", "upload_form.edit": "Upravit", "upload_form.thumbnail": "Změnit miniaturu", "upload_form.undo": "Smazat", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 387f33782..039379315 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -9,21 +9,21 @@ "account.browse_more_on_origin_server": "Pori mwy ar y proffil gwreiddiol", "account.cancel_follow_request": "Canslo cais dilyn", "account.direct": "Neges breifat @{name}", - "account.disable_notifications": "Stop notifying me when @{name} posts", + "account.disable_notifications": "Stopiwch fy hysbysu pan fydd @{name} yn postio", "account.domain_blocked": "Parth wedi ei guddio", "account.edit_profile": "Golygu proffil", - "account.enable_notifications": "Notify me when @{name} posts", + "account.enable_notifications": "Rhowch wybod i fi pan fydd @{name} yn postio", "account.endorse": "Arddangos ar fy mhroffil", "account.follow": "Dilyn", "account.followers": "Dilynwyr", "account.followers.empty": "Nid oes neb yn dilyn y defnyddiwr hwn eto.", "account.followers_counter": "{count, plural, one {{counter} Ddilynwr} other {{counter} o Ddilynwyr}}", + "account.following": "Yn dilyn", "account.following_counter": "{count, plural, one {{counter} yn Dilyn} other {{counter} yn Dilyn}}", "account.follows.empty": "Nid yw'r defnyddiwr hwn yn dilyn unrhyw un eto.", "account.follows_you": "Yn eich dilyn chi", "account.hide_reblogs": "Cuddio bwstiau o @{name}", - "account.joined": "Joined {date}", - "account.last_status": "Gweithredol olaf", + "account.joined": "Ymunodd {date}", "account.link_verified_on": "Gwiriwyd perchnogaeth y ddolen yma ar {date}", "account.locked_info": "Mae'r statws preifatrwydd cyfrif hwn wedi'i osod i gloi. Mae'r perchennog yn adolygu'r sawl sy'n gallu eu dilyn.", "account.media": "Cyfryngau", @@ -32,7 +32,6 @@ "account.mute": "Tawelu @{name}", "account.mute_notifications": "Cuddio hysbysiadau o @{name}", "account.muted": "Distewyd", - "account.never_active": "Byth", "account.posts": "Tŵtiau", "account.posts_with_replies": "Tŵtiau ac atebion", "account.report": "Adrodd @{name}", @@ -42,16 +41,18 @@ "account.statuses_counter": "{count, plural, one {{counter} Dŵt} other {{counter} o Dŵtiau}}", "account.unblock": "Dadflocio @{name}", "account.unblock_domain": "Dadguddio {domain}", + "account.unblock_short": "Dad-flocio", "account.unendorse": "Peidio a'i arddangos ar fy mhroffil", "account.unfollow": "Dad-ddilyn", "account.unmute": "Dad-dawelu @{name}", "account.unmute_notifications": "Dad-dawelu hysbysiadau o @{name}", + "account.unmute_short": "Dad-dewi", "account_note.placeholder": "Clicio i ychwanegu nodyn", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", - "admin.dashboard.retention.average": "Average", + "admin.dashboard.retention.average": "Cyfartaledd", "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.retention.cohort_size": "Defnyddwyr newydd", "alert.rate_limited.message": "Ceisiwch eto ar ôl {retry_time, time, medium}.", "alert.rate_limited.title": "Cyfradd gyfyngedig", "alert.unexpected.message": "Digwyddodd gwall annisgwyl.", @@ -69,7 +70,7 @@ "column.blocks": "Defnyddwyr a flociwyd", "column.bookmarks": "Tudalnodau", "column.community": "Ffrwd lleol", - "column.direct": "Negeseuon preifat", + "column.conversations": "Conversations", "column.directory": "Pori proffiliau", "column.domain_blocks": "Parthau cuddiedig", "column.favourites": "Ffefrynnau", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Lleol yn unig", "community.column_settings.media_only": "Cyfryngau yn unig", "community.column_settings.remote_only": "Anghysbell yn unig", - "compose_form.direct_message_warning": "Mi fydd y tŵt hwn ond yn cael ei anfon at y defnyddwyr sy'n cael eu crybwyll.", "compose_form.direct_message_warning_learn_more": "Dysgu mwy", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Ni fydd y tŵt hwn wedi ei restru o dan unrhyw hashnod gan ei fod heb ei restru. Dim ond tŵtiau cyhoeddus gellid chwilota amdanynt drwy hashnod.", "compose_form.lock_disclaimer": "Nid yw eich cyfri wedi'i {locked}. Gall unrhyw un eich dilyn i weld eich tŵtiau dilynwyr-yn-unig.", "compose_form.lock_disclaimer.lock": "wedi ei gloi", @@ -120,7 +121,7 @@ "confirmations.delete.message": "Ydych chi'n sicr eich bod eisiau dileu y tŵt hwn?", "confirmations.delete_list.confirm": "Dileu", "confirmations.delete_list.message": "Ydych chi'n sicr eich bod eisiau dileu y rhestr hwn am byth?", - "confirmations.discard_edit_media.confirm": "Discard", + "confirmations.discard_edit_media.confirm": "Gwaredu", "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "confirmations.domain_block.confirm": "Cuddio parth cyfan", "confirmations.domain_block.message": "A ydych yn hollol, hollol sicr eich bod am flocio y {domain} cyfan? Yn y nifer helaeth o achosion mae blocio neu tawelu ambell gyfrif yn ddigonol ac yn well. Ni fyddwch yn gweld cynnwys o'r parth hwnnw mewn unrhyw ffrydiau cyhoeddus na chwaith yn eich hysbysiadau. Bydd hyn yn cael gwared o'ch dilynwyr o'r parth hwnnw.", @@ -165,8 +166,9 @@ "empty_column.blocks": "Nid ydych wedi blocio unrhyw ddefnyddwyr eto.", "empty_column.bookmarked_statuses": "Nid oes gennych unrhyw dwtiau tudalnodiedig eto. Pan y byddwch yn tudalnodi un, mi fydd yn ymddangos yma.", "empty_column.community": "Mae'r ffrwd lleol yn wag. Ysgrifenwch rhywbeth yn gyhoeddus i gael dechrau arni!", - "empty_column.direct": "Nid oes gennych unrhyw negeseuon preifat eto. Pan y byddwch yn anfon neu derbyn un, mi fydd yn ymddangos yma.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Nid oes yna unrhyw barthau cuddiedig eto.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Nid oes gennych unrhyw hoff dwtiau eto. Pan y byddwch yn hoffi un, mi fydd yn ymddangos yma.", "empty_column.favourites": "Nid oes neb wedi hoffi'r tŵt yma eto. Pan bydd rhywun yn ei hoffi, byddent yn ymddangos yma.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,7 +187,13 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copïo'r olrhain stac i'r clipfwrdd", "errors.unexpected_crash.report_issue": "Rhoi gwybod am broblem", - "follow_recommendations.done": "Done", + "explore.search_results": "Search results", + "explore.suggested_follows": "I chi", + "explore.title": "Archwilio", + "explore.trending_links": "Newyddion", + "explore.trending_statuses": "Postiau", + "explore.trending_tags": "Hanshnodau", + "follow_recommendations.done": "Wedi gorffen", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", "follow_request.authorize": "Caniatau", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "i fŵstio", "keyboard_shortcuts.column": "i ffocysu tŵt yn un o'r colofnau", "keyboard_shortcuts.compose": "i ffocysu yr ardal cyfansoddi testun", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Disgrifiad", - "keyboard_shortcuts.direct": "i agor colofn negeseuon preifat", "keyboard_shortcuts.down": "i symud lawr yn y rhestr", "keyboard_shortcuts.enter": "i agor tŵt", "keyboard_shortcuts.favourite": "i hoffi", @@ -252,8 +260,8 @@ "keyboard_shortcuts.unfocus": "i ddad-ffocysu ardal cyfansoddi testun/chwilio", "keyboard_shortcuts.up": "i symud yn uwch yn y rhestr", "lightbox.close": "Cau", - "lightbox.compress": "Compress image view box", - "lightbox.expand": "Expand image view box", + "lightbox.compress": "Cywasgu blwch gweld delwedd", + "lightbox.expand": "Ehangu blwch gweld delwedd", "lightbox.next": "Nesaf", "lightbox.previous": "Blaenorol", "lists.account.add": "Ychwanegwch at restr", @@ -263,10 +271,10 @@ "lists.edit.submit": "Newid teitl", "lists.new.create": "Ychwanegu rhestr", "lists.new.title_placeholder": "Teitl rhestr newydd", - "lists.replies_policy.followed": "Any followed user", - "lists.replies_policy.list": "Members of the list", + "lists.replies_policy.followed": "Unrhyw ddefnyddiwr a ddilynir", + "lists.replies_policy.list": "Aelodau'r rhestr", "lists.replies_policy.none": "Neb", - "lists.replies_policy.title": "Show replies to:", + "lists.replies_policy.title": "Dangos ymatebion i:", "lists.search": "Chwilio ymysg pobl yr ydych yn ei ddilyn", "lists.subheading": "Eich rhestrau", "load_pending": "{count, plural, one {# eitem newydd} other {# eitemau newydd}}", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Tudalnodau", "navigation_bar.community_timeline": "Ffrwd leol", "navigation_bar.compose": "Cyfansoddi tŵt newydd", - "navigation_bar.direct": "Negeseuon preifat", "navigation_bar.discover": "Darganfod", "navigation_bar.domain_blocks": "Parthau cuddiedig", "navigation_bar.edit_profile": "Golygu proffil", + "navigation_bar.explore": "Archwilio", "navigation_bar.favourites": "Ffefrynnau", "navigation_bar.filters": "Geiriau a dawelwyd", "navigation_bar.follow_requests": "Ceisiadau dilyn", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Dewisiadau", "navigation_bar.public_timeline": "Ffrwd y ffederasiwn", "navigation_bar.security": "Diogelwch", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "hoffodd {name} eich tŵt", "notification.follow": "dilynodd {name} chi", "notification.follow_request": "Mae {name} wedi gwneud cais i'ch dilyn", @@ -307,10 +316,11 @@ "notification.own_poll": "Mae eich pôl wedi diweddu", "notification.poll": "Mae pleidlais rydych wedi pleidleisio ynddi wedi dod i ben", "notification.reblog": "Hysbysebodd {name} eich tŵt", - "notification.status": "{name} just posted", + "notification.status": "{name} newydd ei bostio", "notification.update": "{name} edited a post", "notifications.clear": "Clirio hysbysiadau", "notifications.clear_confirmation": "Ydych chi'n sicr eich bod am glirio'ch holl hysbysiadau am byth?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Hysbysiadau bwrdd gwaith", "notifications.column_settings.favourite": "Ffefrynnau:", "notifications.column_settings.filter_bar.advanced": "Dangos pob categori", @@ -327,24 +337,24 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.update": "Golygiadau:", "notifications.filter.all": "Pob", "notifications.filter.boosts": "Hybiadau", "notifications.filter.favourites": "Ffefrynnau", "notifications.filter.follows": "Yn dilyn", "notifications.filter.mentions": "Crybwylliadau", "notifications.filter.polls": "Canlyniadau pleidlais", - "notifications.filter.statuses": "Updates from people you follow", - "notifications.grant_permission": "Grant permission.", + "notifications.filter.statuses": "Diweddariadau gan bobl rydych chi'n eu dilyn", + "notifications.grant_permission": "Caniatáu.", "notifications.group": "{count} o hysbysiadau", - "notifications.mark_as_read": "Mark every notification as read", - "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", - "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", - "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.", + "notifications.mark_as_read": "Marciwch bob hysbysiad fel y'i darllenwyd", + "notifications.permission_denied": "Nid oes hysbysiadau bwrdd gwaith ar gael oherwydd cais am ganiatâd porwr a wrthodwyd yn flaenorol", + "notifications.permission_denied_alert": "Ni ellir galluogi hysbysiadau bwrdd gwaith, gan fod caniatâd porwr wedi'i wrthod o'r blaen", + "notifications.permission_required": "Nid oes hysbysiadau bwrdd gwaith ar gael oherwydd na roddwyd y caniatâd gofynnol.", "notifications_permission_banner.enable": "Galluogi hysbysiadau bwrdd gwaith", - "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", - "notifications_permission_banner.title": "Never miss a thing", - "picture_in_picture.restore": "Put it back", + "notifications_permission_banner.how_to_control": "I dderbyn hysbysiadau pan nad yw Mastodon ar agor, galluogi hysbysiadau bwrdd gwaith. Gallwch reoli'n union pa fathau o ryngweithio sy'n cynhyrchu hysbysiadau bwrdd gwaith trwy'r botwm {icon} uchod unwaith y byddant wedi'u galluogi.", + "notifications_permission_banner.title": "Peidiwch byth â cholli peth", + "picture_in_picture.restore": "Rhowch ef yn ôl", "poll.closed": "Ar gau", "poll.refresh": "Adnewyddu", "poll.total_people": "{count, plural, one {# berson} other {# o bobl}}", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Tynnu pleidlais", "privacy.change": "Addasu preifatrwdd y tŵt", "privacy.direct.long": "Cyhoeddi i'r defnyddwyr sy'n cael eu crybwyll yn unig", - "privacy.direct.short": "Uniongyrchol", + "privacy.direct.short": "Direct", "privacy.private.long": "Cyhoeddi i ddilynwyr yn unig", - "privacy.private.short": "Dilynwyr-yn-unig", - "privacy.public.long": "Cyhoeddi i ffrydiau cyhoeddus", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Cyhoeddus", - "privacy.unlisted.long": "Peidio a chyhoeddi i ffrydiau cyhoeddus", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Heb ei restru", "refresh": "Adnewyddu", "regeneration_indicator.label": "Llwytho…", @@ -369,7 +379,7 @@ "relative_time.days": "{number}dydd", "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", + "relative_time.full.just_now": "jyst nawr", "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}awr", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}eiliad", "relative_time.today": "heddiw", "reply_indicator.cancel": "Canslo", - "report.categories.other": "Other", - "report.categories.spam": "Spam", + "report.block": "Blocio", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.categories.other": "Arall", + "report.categories.spam": "Sbam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Ymlaen i {target}", "report.forward_hint": "Mae'r cyfrif o weinydd arall. Anfon copi anhysbys o'r adroddiad yno hefyd?", - "report.hint": "Bydd yr adroddiad yn cael ei anfon i arolygydd eich achos. Mae modd darparu esboniad o pam yr ydych yn cwyno am y cyfrif hwn isod:", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", "report.placeholder": "Sylwadau ychwanegol", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Cyflwyno", "report.target": "Cwyno am {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Chwilio", "search_popout.search_format": "Fformat chwilio uwch", "search_popout.tips.full_text": "Mae testun syml yn dychwelyd tŵtiau yr ydych wedi ysgrifennu, hoffi, wedi'u bŵstio, neu wedi'ch crybwyll ynddynt, ynghyd a chyfateb a enwau defnyddwyr, enwau arddangos ac hashnodau.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Mae testun syml yn dychwelyd enwau arddangos, enwau defnyddwyr a hashnodau sy'n cyfateb", "search_popout.tips.user": "defnyddiwr", "search_results.accounts": "Pobl", + "search_results.all": "Pob", "search_results.hashtags": "Hanshnodau", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Tŵtiau", "search_results.statuses_fts_disabled": "Nid yw chwilio Tŵtiau yn ôl eu cynnwys wedi'i alluogi ar y gweinydd Mastodon hwn.", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", @@ -409,7 +449,7 @@ "status.delete": "Dileu", "status.detailed_status": "Golwg manwl o'r sgwrs", "status.direct": "Neges breifat @{name}", - "status.edit": "Edit", + "status.edit": "Golygu", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Plannu", @@ -474,6 +514,7 @@ "upload_error.poll": "Nid oes modd uwchlwytho ffeiliau â phleidleisiau.", "upload_form.audio_description": "Disgrifio ar gyfer pobl sydd â cholled clyw", "upload_form.description": "Disgrifio i'r rheini a nam ar ei golwg", + "upload_form.description_missing": "No description added", "upload_form.edit": "Golygu", "upload_form.thumbnail": "Newid mân-lun", "upload_form.undo": "Dileu", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 4e1832fd3..e04a0634c 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -1,29 +1,29 @@ { - "account.account_note_header": "Note", + "account.account_note_header": "Notat", "account.add_or_remove_from_list": "Tilføj eller fjern fra lister", "account.badges.bot": "Bot", "account.badges.group": "Gruppe", "account.block": "Blokér @{name}", "account.block_domain": "Blokér domænet {domain}", "account.blocked": "Blokeret", - "account.browse_more_on_origin_server": "Se mere på den oprindelige profil", + "account.browse_more_on_origin_server": "Tjek mere ud på den oprindelige profil", "account.cancel_follow_request": "Annullér følgeanmodning", "account.direct": "Direkte besked til @{name}", "account.disable_notifications": "Advisér mig ikke længere, når @{name} poster", "account.domain_blocked": "Domæne blokeret", "account.edit_profile": "Redigér profil", - "account.enable_notifications": "Giv besked når @{name} udgiver nyt", + "account.enable_notifications": "Advisér mig, når @{name} poster", "account.endorse": "Fremhæv på profil", "account.follow": "Følg", "account.followers": "Følgere", - "account.followers.empty": "Ingen følger brugeren endnu.", + "account.followers.empty": "Ingen følger denne bruger endnu.", "account.followers_counter": "{count, plural, one {{counter} Følger} other {{counter} Følgere}}", + "account.following": "Følger", "account.following_counter": "{count, plural, one {{counter} Følges} other {{counter} Følges}}", "account.follows.empty": "Denne bruger følger ikke nogen endnu.", "account.follows_you": "Følger dig", - "account.hide_reblogs": "Skjul fremhævelser fra @{name}", + "account.hide_reblogs": "Skjul boosts fra @{name}", "account.joined": "Tilmeldt {date}", - "account.last_status": "Senest aktiv", "account.link_verified_on": "Ejerskab af dette link blev tjekket {date}", "account.locked_info": "Denne kontos fortrolighedsstatus er sat til låst. Ejeren bedømmer manuelt, hvem der kan følge vedkommende.", "account.media": "Medier", @@ -32,7 +32,6 @@ "account.mute": "Skjul @{name}", "account.mute_notifications": "Skjul notifikationer fra @{name}", "account.muted": "Tystnet", - "account.never_active": "Aldrig", "account.posts": "Indlæg", "account.posts_with_replies": "Indlæg og svar", "account.report": "Anmeld @{name}", @@ -40,40 +39,42 @@ "account.share": "Del @{name}s profil", "account.show_reblogs": "Vis fremhævelser fra @{name}", "account.statuses_counter": "{count, plural, one {{counter} Indlæg} other {{counter} Indlæg}}", - "account.unblock": "Fjern blokeringen af @{name}", + "account.unblock": "Afblokér @{name}", "account.unblock_domain": "Afblokér domænet {domain}", + "account.unblock_short": "Afblokér", "account.unendorse": "Fjern visning på din profil", "account.unfollow": "Følg ikke længere", - "account.unmute": "Fjern tavsgjort for @{name}", - "account.unmute_notifications": "Slå notifikationer om @{name} til igen", + "account.unmute": "Fjern tavsgørelsen af @{name}", + "account.unmute_notifications": "Fjern tavsgørelsen af notifikationer fra @{name}", + "account.unmute_short": "Fjern tavsgørelse", "account_note.placeholder": "Klik for at tilføje notat", "admin.dashboard.daily_retention": "Brugerfastholdelsesrate efter dag efter tilmelding", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.monthly_retention": "Brugerfastholdelsesrate efter måned efter tilmelding", "admin.dashboard.retention.average": "Gennemsnitlig", "admin.dashboard.retention.cohort": "Tilmeldingsmåned", "admin.dashboard.retention.cohort_size": "Nye brugere", "alert.rate_limited.message": "Forsøg igen efter {retry_time, time, medium}.", "alert.rate_limited.title": "Hastighedsbegrænset", - "alert.unexpected.message": "Der skete en uventet fejl.", + "alert.unexpected.message": "En uventet fejl opstod.", "alert.unexpected.title": "Ups!", "announcement.announcement": "Bekendtgørelse", - "attachments_list.unprocessed": "(ubearbejdet)", + "attachments_list.unprocessed": "(ubehandlet)", "autosuggest_hashtag.per_week": "{count} pr. uge", - "boost_modal.combo": "Du kan trykke på {combo} for at springe over næste gang", + "boost_modal.combo": "Du kan trykke på {combo} for at overspringe dette næste gang", "bundle_column_error.body": "Noget gik galt under indlæsningen af denne komponent.", - "bundle_column_error.retry": "Prøv igen", + "bundle_column_error.retry": "Forsøg igen", "bundle_column_error.title": "Netværksfejl", "bundle_modal_error.close": "Luk", "bundle_modal_error.message": "Noget gik galt under indlæsningen af denne komponent.", - "bundle_modal_error.retry": "Prøv igen", + "bundle_modal_error.retry": "Forsøg igen", "column.blocks": "Blokerede brugere", "column.bookmarks": "Bogmærker", "column.community": "Lokal tidslinje", - "column.direct": "Direkte beskeder", - "column.directory": "Se profiler", + "column.conversations": "Konversationer", + "column.directory": "Tjek profiler", "column.domain_blocks": "Blokerede domæner", "column.favourites": "Favoritter", - "column.follow_requests": "Følg-anmodninger", + "column.follow_requests": "Følgeanmodninger", "column.home": "Hjem", "column.lists": "Lister", "column.mutes": "Tavsgjorte brugere", @@ -91,16 +92,16 @@ "community.column_settings.local_only": "Kun lokalt", "community.column_settings.media_only": "Kun medier", "community.column_settings.remote_only": "Kun udefra", - "compose_form.direct_message_warning": "Indlægget bliver kun sendt til de nævnte brugere.", "compose_form.direct_message_warning_learn_more": "Få mere at vide", - "compose_form.hashtag_warning": "Dette trut vises ikke under noget hashtag, da det ikke er listet. Kun offentlige trut kan søges via hashtags.", - "compose_form.lock_disclaimer": "Din konto er ikke {locked}. Alle kan følge dig, så de også kan se de indlæg, der kun er til følgere.", + "compose_form.encryption_warning": "Indlæg på Mastodon er ikke ende-til-ende krypteret. Del derfor ikke sensitiv information over Mastodon.", + "compose_form.hashtag_warning": "Da indlægget ikke er offentligt, vises det ikke under noget hashtag, idet kun offentlige indlæg kan søges via hashtags.", + "compose_form.lock_disclaimer": "Din konto er ikke {locked}. Enhver kan følge dig og se indlæg kun beregnet for følgere.", "compose_form.lock_disclaimer.lock": "låst", - "compose_form.placeholder": "Hvad vil du gerne fortælle om?", + "compose_form.placeholder": "Hvad tænker du på?", "compose_form.poll.add_option": "Tilføj valgmulighed", "compose_form.poll.duration": "Afstemningens varighed", "compose_form.poll.option_placeholder": "Valgmulighed {number}", - "compose_form.poll.remove_option": "Fjern valgmulighed", + "compose_form.poll.remove_option": "Fjern denne valgmulighed", "compose_form.poll.switch_to_multiple": "Ændr afstemning til flervalgstype", "compose_form.poll.switch_to_single": "Ændr afstemning til enkeltvalgstype", "compose_form.publish": "Udgiv", @@ -109,41 +110,41 @@ "compose_form.sensitive.hide": "{count, plural, one {Markér medie som følsomt} other {Markér medier som følsomme}}", "compose_form.sensitive.marked": "{count, plural, one {Medie er markeret som sensitivt} other {Medier er markerede som sensitive}}", "compose_form.sensitive.unmarked": "{count, plural, one {Medie er ikke market som sensitivt} other {Medier er ikke markerede som sensitive}}", - "compose_form.spoiler.marked": "Fjern advarsel", - "compose_form.spoiler.unmarked": "Skjul bag advarsel", + "compose_form.spoiler.marked": "Fjern indholdsadvarsel", + "compose_form.spoiler.unmarked": "Tilføj indholdsadvarsel", "compose_form.spoiler_placeholder": "Skriv din advarsel hér", "confirmation_modal.cancel": "Afbryd", "confirmations.block.block_and_report": "Blokér og Anmeld", "confirmations.block.confirm": "Blokér", - "confirmations.block.message": "Er du sikker på, du vil blokere {name}?", + "confirmations.block.message": "Sikker på, at du vil blokere {name}?", "confirmations.delete.confirm": "Slet", - "confirmations.delete.message": "Er du sikker på, at du vil slette indlægget?", + "confirmations.delete.message": "Sikker på, at du vil slette dette indlæg?", "confirmations.delete_list.confirm": "Slet", "confirmations.delete_list.message": "Sikker på, at du vil slette denne liste permanent?", "confirmations.discard_edit_media.confirm": "Kassér", "confirmations.discard_edit_media.message": "Der er ugemte ændringer i mediebeskrivelsen eller forhåndsvisningen, kassér dem alligevel?", "confirmations.domain_block.confirm": "Blokér hele domænet", - "confirmations.domain_block.message": "Er du helt sikker på, at du vil blokere hele {domain}-domænet? Oftest vil det være at foretrække istedet målrettet at blokere eller skjule nogle få brugere. Hvis du blokerer domænet, vil du ikke se indhold fra domænet på offentlige tidslinjer eller i dine notifikationer. Dine følgere fra domænet fjernes.", + "confirmations.domain_block.message": "Fuldstændig sikker på, at du vil blokere hele {domain}-domænet? Oftest vil nogle få målrettede blokeringer eller tavsgørelser være tilstrækkelige og at foretrække. Du vil ikke se indhold fra dette domæne i nogle offentlige tidslinjer eller i dine notifikationer, og dine følgere herfra fjernes ligeledes.", "confirmations.logout.confirm": "Log ud", "confirmations.logout.message": "Log ud, sikker?", - "confirmations.mute.confirm": "Skjul", - "confirmations.mute.explanation": "Dette skjuler indlæg fra (og om) dem, men de kan stadig se dine indlæg og følge dig.", + "confirmations.mute.confirm": "Tavsgør", + "confirmations.mute.explanation": "Dette skjuler indlæg fra (og om) dem, men lader dem fortsat se dine indlæg og følge dig.", "confirmations.mute.message": "Er du sikker på, du vil skjule {name}?", - "confirmations.redraft.confirm": "Slet og omskriv", - "confirmations.redraft.message": "Er du sikker på, at du vil slette og omskrive indlægget? Favoritter og fremhævelser går tabt og svar til det oprindelige indlæg afassocieres.", + "confirmations.redraft.confirm": "Slet og omformulér", + "confirmations.redraft.message": "Sikker på, at du vil slette dette indlæg for at omskrive det? Favoritter og boosts går tabt, og svar til det oprindelige indlæg afassocieres.", "confirmations.reply.confirm": "Svar", "confirmations.reply.message": "At svare nu vil overskrive den besked, du er ved at skrive. Fortsæt alligevel?", "confirmations.unfollow.confirm": "Følg ikke længere", - "confirmations.unfollow.message": "Er du sikker på, at du ikke vil følge {name}?", + "confirmations.unfollow.message": "Sikker på, at du ikke længere vil følge {name}?", "conversation.delete": "Slet samtale", "conversation.mark_as_read": "Markér som læst", - "conversation.open": "Vis samtale", + "conversation.open": "Vis konversation", "conversation.with": "Med {names}", - "directory.federated": "Fra kendt Fællesvers", + "directory.federated": "Fra kendt fedivers", "directory.local": "Kun fra {domain}", "directory.new_arrivals": "Nye ankomster", - "directory.recently_active": "Aktive for nyligt", - "embed.instructions": "Indlejr indlægget på din side ved at kopiere koden nedenfor.", + "directory.recently_active": "Nyligt aktive", + "embed.instructions": "Indlejr dette indlæg på dit websted ved at kopiere nedenstående kode.", "embed.preview": "Sådan kommer det til at se ud:", "emoji_button.activity": "Aktivitet", "emoji_button.custom": "Tilpasset", @@ -151,49 +152,56 @@ "emoji_button.food": "Mad og drikke", "emoji_button.label": "Indsæt emoji", "emoji_button.nature": "Natur", - "emoji_button.not_found": "Kunne ikke finde tilsvarende emojis", + "emoji_button.not_found": "Ingen matchende emojis fundet", "emoji_button.objects": "Objekter", "emoji_button.people": "Personer", - "emoji_button.recent": "De sædvanlige", + "emoji_button.recent": "Oftest brugt", "emoji_button.search": "Søg...", "emoji_button.search_results": "Søgeresultater", "emoji_button.symbols": "Symboler", "emoji_button.travel": "Rejser og steder", "empty_column.account_suspended": "Konto suspenderet", - "empty_column.account_timeline": "Ingen trut her!", + "empty_column.account_timeline": "Ingen indlæg hér!", "empty_column.account_unavailable": "Profil utilgængelig", - "empty_column.blocks": "Du har ikke blokeret nogen endnu.", - "empty_column.bookmarked_statuses": "Du har ingen indlæg med bogmærke endnu. Når du sætter et bogmærke, vil det dukke op hér.", + "empty_column.blocks": "Ingen brugere blokeret endnu.", + "empty_column.bookmarked_statuses": "Du har ingen bogmærkede indlæg endnu. Når du bogmærker ét, vil det dukke op hér.", "empty_column.community": "Den lokale tidslinje er tom. Skriv noget offentligt for at sætte tingene i gang!", - "empty_column.direct": "Du har ingen direkte beskeder endnu. Hvis du sender eller modtager en, bliver den vist hér.", - "empty_column.domain_blocks": "Der er ingen skjulte domæner endnu.", - "empty_column.favourited_statuses": "Du har ikke markeret nogle indlæg som favorit. Når du markerer ét, bliver det vist hér.", - "empty_column.favourites": "Ingen har markeret indlægget som favorit endnu. Hvis der er nogen der gør, bliver det vist hér.", - "empty_column.follow_recommendations": "Det ser ud til, at der ikke kunne blive lavet forslag til dig. Du kan prøve med Søg for at finde personer, du kender, eller udforske hashtags.", - "empty_column.follow_requests": "Du har ingen følgeanmodninger endnu. Hvis du modtager en, bliver den vist her.", - "empty_column.hashtag": "Der er ingen indlæg med hashtagget endnu.", - "empty_column.home": "Din hjemmetidslinje er tom! Besøg {public} eller brug søgningen for at komme igang og møde andre brugere.", - "empty_column.home.suggestions": "Se nogle foreslag", + "empty_column.conversations": "Når der sendes eller modtages indlæg, som kun er synligt for personer nævnt heri, vil de dukke op her.", + "empty_column.domain_blocks": "Ingen blokerede domæner endnu.", + "empty_column.explore_statuses": "Ingen nye tendensen pt. Tjek igen senere!", + "empty_column.favourited_statuses": "Du har endnu ingen favoritindlæg. Når du favoritmarkerer ét, vil det dukke op hér.", + "empty_column.favourites": "Ingen har endnu gjort dette indlæg til favorit. Når nogen gør dét, vil det dukke op hér.", + "empty_column.follow_recommendations": "Ser ud til, at der ikke kunne genereres forslag til dig. Du kan prøve med Søg for at lede efter personer, du måske kender, eller udforske hashtags.", + "empty_column.follow_requests": "Du har endnu ingen følgeanmodninger. Når du modtager én, vil den dukke op hér.", + "empty_column.hashtag": "Der er intet med dette hashtag endnu.", + "empty_column.home": "Din hjemmetidslinje er tom! Følg nogle personer, for at udfylde den. {suggestions}", + "empty_column.home.suggestions": "Se nogle forslag", "empty_column.list": "Der er ikke noget på denne liste endnu. Når medlemmer af listen udgiver nye indlæg vil de fremgå hér.", "empty_column.lists": "Du har endnu ingen lister. Når du opretter én, vil den fremgå hér.", "empty_column.mutes": "Du har endnu ikke tystnet nogle brugere.", - "empty_column.notifications": "Du har ingen notifikationer. Hvis andre interagerer med dig, bliver det vist her.", + "empty_column.notifications": "Du har endnu ingen notifikationer. Når andre interagerer med dig, vil det fremgå hér.", "empty_column.public": "Der er intet hér! Skriv noget offentligt eller følg manuelt brugere fra andre servere for at se indhold", "error.unexpected_crash.explanation": "Grundet en fejl i vores kode, eller en browser-kompatibilitetsfejl, kunne siden ikke vises korrekt.", "error.unexpected_crash.explanation_addons": "Denne side kunne ikke vises korrekt. Fejlen skyldes sandsynligvis en browsertilføjelse eller automatiske oversættelsesværktøjer.", - "error.unexpected_crash.next_steps": "Prøv at genindlæs siden. Hvis dette ikke hjælper, så forsøg venligst, at tilgå Mastodon via en anden browser eller app.", + "error.unexpected_crash.next_steps": "Prøv at opfriske siden. Hjælper dette ikke, kan Mastodon muligvis stadig bruges via en anden browser eller app.", "error.unexpected_crash.next_steps_addons": "Prøv at deaktivere dem og genindlæse siden. Hvis det ikke hjælper, kan Mastodon muligvis stadig bruges via en anden browser eller app.", "errors.unexpected_crash.copy_stacktrace": "Kopiér stacktrace til udklipsholderen", "errors.unexpected_crash.report_issue": "Anmeld problem", + "explore.search_results": "Søgeresultater", + "explore.suggested_follows": "Til dig", + "explore.title": "Udforsk", + "explore.trending_links": "Nyheder", + "explore.trending_statuses": "Indlæg", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Udført", "follow_recommendations.heading": "Følg personer du gerne vil se indlæg fra! Her er nogle forslag.", - "follow_recommendations.lead": "Indlæg, fra personer du følger, vises i kronologisk rækkefølge i hjemmetidslinjen. Bare prøv dig frem med hvem du følger her. Du kan altid vælge om igen!", + "follow_recommendations.lead": "Indlæg, fra personer du følger, vil fremgå kronologisk ordnet i dit hjemmefeed. Vær ikke bange for at begå fejl, da du altid og meget nemt kan ændre dit valg!", "follow_request.authorize": "Godkend", "follow_request.reject": "Afvis", "follow_requests.unlocked_explanation": "Selvom din konto ikke er låst, antog {domain}-personalet, at du måske vil gennemgå dine anmodninger manuelt.", "generic.saved": "Gemt", "getting_started.developers": "Udviklere", - "getting_started.directory": "Profilliste", + "getting_started.directory": "Profilmappe", "getting_started.documentation": "Dokumentation", "getting_started.heading": "Startmenu", "getting_started.invite": "Invitér folk", @@ -205,52 +213,52 @@ "hashtag.column_header.tag_mode.none": "uden {additional}", "hashtag.column_settings.select.no_options_message": "Ingen forslag fundet", "hashtag.column_settings.select.placeholder": "Angiv hashtags…", - "hashtag.column_settings.tag_mode.all": "Allesammen", + "hashtag.column_settings.tag_mode.all": "Alle disse", "hashtag.column_settings.tag_mode.any": "Nogle af disse", "hashtag.column_settings.tag_mode.none": "Ingen af disse", "hashtag.column_settings.tag_toggle": "Inkludér ekstra tags for denne kolonne", "home.column_settings.basic": "Grundlæggende", - "home.column_settings.show_reblogs": "Vis fremhævelser", + "home.column_settings.show_reblogs": "Vis boosts", "home.column_settings.show_replies": "Vis svar", "home.hide_announcements": "Skjul bekendtgørelser", "home.show_announcements": "Vis bekendtgørelser", "intervals.full.days": "{number, plural, one {# dag} other {# dage}}", "intervals.full.hours": "{number, plural, one {# time} other {# timer}}", "intervals.full.minutes": "{number, plural, one {# minut} other {# minutter}}", - "keyboard_shortcuts.back": "for at navigere tilbage", - "keyboard_shortcuts.blocked": "Vis listen over blokerede brugere", - "keyboard_shortcuts.boost": "Fremhæv indlæg", - "keyboard_shortcuts.column": "for at fokusere et trut i en af kolonnerne", - "keyboard_shortcuts.compose": "for at fokusere på skriveområdet", + "keyboard_shortcuts.back": "Gå tilbage", + "keyboard_shortcuts.blocked": "Åbn Blokerede brugere-listen", + "keyboard_shortcuts.boost": "Boost indlæg", + "keyboard_shortcuts.column": "Fokusér kolonne", + "keyboard_shortcuts.compose": "Fokusér skriveområdet", + "keyboard_shortcuts.conversations": "for at åbne konversationskolonnen", "keyboard_shortcuts.description": "Beskrivelse", - "keyboard_shortcuts.direct": "Åben kolonnen med direkte beskeder", - "keyboard_shortcuts.down": "for at rykke nedad på listen", - "keyboard_shortcuts.enter": "Åben indlæg", - "keyboard_shortcuts.favourite": "Markér som favorit", - "keyboard_shortcuts.favourites": "for at åbne favoritlisten", - "keyboard_shortcuts.federated": "Åben den fælles tidslinje", + "keyboard_shortcuts.down": "Flyt nedad på listen", + "keyboard_shortcuts.enter": "Åbn indlæg", + "keyboard_shortcuts.favourite": "Favoritmarkér indlæg", + "keyboard_shortcuts.favourites": "Åbn favoritlisten", + "keyboard_shortcuts.federated": "Åbn fælles tidslinje", "keyboard_shortcuts.heading": "Tastaturgenveje", - "keyboard_shortcuts.home": "for at åbne hjemmetidslinjen", + "keyboard_shortcuts.home": "Åbn hjemmetidslinje", "keyboard_shortcuts.hotkey": "Hurtigtast", - "keyboard_shortcuts.legend": "for at vise dette symbol", - "keyboard_shortcuts.local": "for at åbne den lokale tidslinje", - "keyboard_shortcuts.mention": "for at nævne forfatteren", - "keyboard_shortcuts.muted": "for at åbne listen over tavsgjorte brugere", - "keyboard_shortcuts.my_profile": "for at åbne din profil", + "keyboard_shortcuts.legend": "Vis dette symbol", + "keyboard_shortcuts.local": "Åbn lokal tidslinje", + "keyboard_shortcuts.mention": "Nævn forfatter", + "keyboard_shortcuts.muted": "Åbn listen over tavsgjorte brugere", + "keyboard_shortcuts.my_profile": "Åbn din profil", "keyboard_shortcuts.notifications": "for at åbne notifikationskolonnen", - "keyboard_shortcuts.open_media": "for at åbne medier", - "keyboard_shortcuts.pinned": "Åben listen over fastgjorte indlæg", - "keyboard_shortcuts.profile": "for at åbne forfatterens profil", - "keyboard_shortcuts.reply": "for at besvare", - "keyboard_shortcuts.requests": "Åben listen over følgeanmodninger", - "keyboard_shortcuts.search": "for at fokusere søgningen", - "keyboard_shortcuts.spoilers": "for at vise/skjule CW-felt", - "keyboard_shortcuts.start": "for at åbne \"komme i gang\"-kolonnen", - "keyboard_shortcuts.toggle_hidden": "for at vise/skjule tekst bag CW", - "keyboard_shortcuts.toggle_sensitivity": "for at vise/skjule medier", - "keyboard_shortcuts.toot": "for at påbegynde et helt nyt indlæg", - "keyboard_shortcuts.unfocus": "for at fjerne fokus fra skriveområde/søgning", - "keyboard_shortcuts.up": "for at bevæge sig opad på listen", + "keyboard_shortcuts.open_media": "Åbn medier", + "keyboard_shortcuts.pinned": "Åbn liste over fastgjorte indlæg", + "keyboard_shortcuts.profile": "Åbn forfatters profil", + "keyboard_shortcuts.reply": "Besvar indlægget", + "keyboard_shortcuts.requests": "Åbn liste over følgeanmodninger", + "keyboard_shortcuts.search": "Fokusér søgebjælke", + "keyboard_shortcuts.spoilers": "Vis/skjul CW-felt", + "keyboard_shortcuts.start": "Åbn \"komme i gang\"-kolonne", + "keyboard_shortcuts.toggle_hidden": "Vis/skjul tekst bag CW", + "keyboard_shortcuts.toggle_sensitivity": "Vis/skjul medier", + "keyboard_shortcuts.toot": "Påbegynd nyt indlæg", + "keyboard_shortcuts.unfocus": "Fjern fokus fra teksskrivningsområde/søgning", + "keyboard_shortcuts.up": "Flyt opad på listen", "lightbox.close": "Luk", "lightbox.compress": "Komprimér billedvisningsfelt", "lightbox.expand": "Udvid billedevisningsfelt", @@ -263,55 +271,57 @@ "lists.edit.submit": "Skift titel", "lists.new.create": "Tilføj liste", "lists.new.title_placeholder": "Ny listetitel", - "lists.replies_policy.followed": "Enhver fulgt bruger", - "lists.replies_policy.list": "Medlemmer af listen", + "lists.replies_policy.followed": "Enhver bruger, der følges", + "lists.replies_policy.list": "Listemedlemmer", "lists.replies_policy.none": "Ingen", "lists.replies_policy.title": "Vis svar til:", - "lists.search": "Søg blandt personer, du følger", + "lists.search": "Søg blandt personer, som følges", "lists.subheading": "Dine lister", - "load_pending": "{count, plural, one {# nyt punkt} other {# nye punkter}}", + "load_pending": "{count, plural, one {# nyt emne} other {# nye emner}}", "loading_indicator.label": "Indlæser...", - "media_gallery.toggle_visible": "Skjul {number, plural, one {billede} other {billeder}}", + "media_gallery.toggle_visible": "{number, plural, one {Skjul billede} other {Skjul billeder}}", "missing_indicator.label": "Ikke fundet", "missing_indicator.sublabel": "Denne ressource kunne ikke findes", "mute_modal.duration": "Varighed", - "mute_modal.hide_notifications": "Skjul notifikationer fra brugeren?", + "mute_modal.hide_notifications": "Skjul notifikationer fra denne bruger?", "mute_modal.indefinite": "Tidsubegrænset", - "navigation_bar.apps": "Apps til mobilen", + "navigation_bar.apps": "Mobil-apps", "navigation_bar.blocks": "Blokerede brugere", "navigation_bar.bookmarks": "Bogmærker", "navigation_bar.community_timeline": "Lokal tidslinje", "navigation_bar.compose": "Skriv nyt indlæg", - "navigation_bar.direct": "Direkte beskeder", "navigation_bar.discover": "Opdag", "navigation_bar.domain_blocks": "Blokerede domæner", "navigation_bar.edit_profile": "Redigér profil", + "navigation_bar.explore": "Udforsk", "navigation_bar.favourites": "Favoritter", - "navigation_bar.filters": "Tystnede ord", + "navigation_bar.filters": "Tavsgjorte ord", "navigation_bar.follow_requests": "Følgeanmodninger", "navigation_bar.follows_and_followers": "Følges og følgere", "navigation_bar.info": "Om denne server", - "navigation_bar.keyboard_shortcuts": "Hurtigtaster", + "navigation_bar.keyboard_shortcuts": "Genvejstaster", "navigation_bar.lists": "Lister", "navigation_bar.logout": "Log af", - "navigation_bar.mutes": "Tystnede brugere", + "navigation_bar.mutes": "Tavsgjorte brugere", "navigation_bar.personal": "Personlig", "navigation_bar.pins": "Fastgjorte indlæg", "navigation_bar.preferences": "Præferencer", "navigation_bar.public_timeline": "Fælles tidslinje", "navigation_bar.security": "Sikkerhed", - "notification.favourite": "{name} favoriserede dit trut", - "notification.follow": "{name} fulgte dig", + "notification.admin.sign_up": "{name} tilmeldte sig", + "notification.favourite": "{name} favoritmarkerede dit indlæg", + "notification.follow": "{name} begyndte at følge dig", "notification.follow_request": "{name} har anmodet om at følge dig", "notification.mention": "{name} nævnte dig", "notification.own_poll": "Din afstemning er afsluttet", - "notification.poll": "En afstemning, du deltog i, er færdig", - "notification.reblog": "{name} fremhævede dit indlæg", - "notification.status": "{name} har netop udgivet", + "notification.poll": "En afstemning, hvori du stemte, er slut", + "notification.reblog": "{name} boostede dit indlæg", + "notification.status": "{name} har netop postet", "notification.update": "{name} redigerede et indlæg", "notifications.clear": "Ryd notifikationer", - "notifications.clear_confirmation": "Er du sikker på, du vil rydde alle dine notifikationer permanent?", - "notifications.column_settings.alert": "Skrivebordsnotifikationer", + "notifications.clear_confirmation": "Sikker på, at du vil rydde alle dine notifikationer permanent?", + "notifications.column_settings.admin.sign_up": "Nye tilmeldinger:", + "notifications.column_settings.alert": "Computernotifikationer", "notifications.column_settings.favourite": "Favoritter:", "notifications.column_settings.filter_bar.advanced": "Vis alle kategorier", "notifications.column_settings.filter_bar.category": "Hurtigfilterbjælke", @@ -320,8 +330,8 @@ "notifications.column_settings.follow_request": "Nye følgeanmodninger:", "notifications.column_settings.mention": "Omtaler:", "notifications.column_settings.poll": "Afstemningsresultater:", - "notifications.column_settings.push": "Pushnotifikationer", - "notifications.column_settings.reblog": "Fremhævelser:", + "notifications.column_settings.push": "Push-notifikationer", + "notifications.column_settings.reblog": "Boosts:", "notifications.column_settings.show": "Vis i kolonne", "notifications.column_settings.sound": "Afspil lyd", "notifications.column_settings.status": "Nye indlæg:", @@ -329,7 +339,7 @@ "notifications.column_settings.unread_notifications.highlight": "Fremhæv ulæste notifikationer", "notifications.column_settings.update": "Redigeringer:", "notifications.filter.all": "Alle", - "notifications.filter.boosts": "Fremhævelser", + "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favoritter", "notifications.filter.follows": "Følger", "notifications.filter.mentions": "Omtaler", @@ -338,13 +348,13 @@ "notifications.grant_permission": "Tildel tilladelse.", "notifications.group": "{count} notifikationer", "notifications.mark_as_read": "Markér alle notifikationer som læst", - "notifications.permission_denied": "Skrivebordsnotifikationer er utilgængelige grundet tidligere afvist browsertilladelsesanmodning", - "notifications.permission_denied_alert": "Skrivebordsnotifikationer kan ikke aktiveres, da browsertilladelse er blevet nægtet før", - "notifications.permission_required": "Skrivebordsnotifikationer er utilgængelige, da den krævede tilladelse ikke er tildelt.", - "notifications_permission_banner.enable": "Aktivér skrivebordsnotifikationer", - "notifications_permission_banner.how_to_control": "Aktivér skrivebordsnotifikationer for at modtage notifikationer, når Mastodon ikke er åben. Du kan styre, præcist hvilke typer af interaktioner, som genererer skrivebordsnotifikationer via knappen {icon} ovenfor, når de er aktiveret.", + "notifications.permission_denied": "Computernotifikationer er utilgængelige grundet tidligere afvist browsertilladelsesanmodning", + "notifications.permission_denied_alert": "Computernotifikationer kan ikke aktiveres, da browsertilladelse tidligere blev nægtet", + "notifications.permission_required": "Computernotifikationer er utilgængelige, da den krævede tilladelse ikke er tildelt.", + "notifications_permission_banner.enable": "Aktivér computernotifikationer", + "notifications_permission_banner.how_to_control": "Aktivér computernotifikationer for at få besked, når Mastodon ikke er åben. Når de er aktiveret, kan man via knappen {icon} ovenfor præcist styre, hvilke typer af interaktioner, som genererer computernotifikationer.", "notifications_permission_banner.title": "Gå aldrig glip af noget", - "picture_in_picture.restore": "Sæt det tilbage", + "picture_in_picture.restore": "Indsæt det igen", "poll.closed": "Lukket", "poll.refresh": "Opdatér", "poll.total_people": "{count, plural, one {# person} other {# personer}}", @@ -354,14 +364,14 @@ "poll.votes": "{votes, plural, one {# stemme} other {# stemmer}}", "poll_button.add_poll": "Tilføj en afstemning", "poll_button.remove_poll": "Fjern afstemning", - "privacy.change": "Justér fortrolighed", + "privacy.change": "Justér indlægsfortrolighed", "privacy.direct.long": "Kun synlig for nævnte brugere", - "privacy.direct.short": "Direkte", + "privacy.direct.short": "Kun personer, jeg nævner", "privacy.private.long": "Kun synlig for følgere", - "privacy.private.short": "Kun for følgere", - "privacy.public.long": "Synlig for alle og vises på offentlige tidslinjer", + "privacy.private.short": "Kun følgere", + "privacy.public.long": "Synlig for alle", "privacy.public.short": "Offentlig", - "privacy.unlisted.long": "Synlig for alle, men vises ikke på offentlige tidslinjer", + "privacy.unlisted.long": "Synlig for alle, men med fravalgt visning i opdagelsesfunktioner", "privacy.unlisted.short": "Diskret", "refresh": "Genindlæs", "regeneration_indicator.label": "Indlæser…", @@ -378,34 +388,64 @@ "relative_time.seconds": "{number}s", "relative_time.today": "i dag", "reply_indicator.cancel": "Afbryd", + "report.block": "Blokér", + "report.block_explanation": "Du vil ikke se vedkommendes indlæg, og vedkommende vil ikke kunne se dine eller følge dig. Vedkommende vil være bekendt med blokeringen.", "report.categories.other": "Andre", "report.categories.spam": "Spam", "report.categories.violation": "Indhold overtræder en eller flere serverregler", + "report.category.subtitle": "Vælg den bedste match", + "report.category.title": "Fortæl os, hvad der foregår med denne {type}", + "report.category.title_account": "profil", + "report.category.title_status": "indlæg", + "report.close": "Udført", + "report.comment.title": "Er der andet, som vi bør vide?", "report.forward": "Videresend til {target}", - "report.forward_hint": "Kontoen er fra en anden server. Send en anonymiseret kopi af anmeldelsen dertil også?", - "report.hint": "Anmeldelsen sendes til din serverordstyrer. Du kan oplyse nærmere om kontoanmeldelsen nedenfor:", + "report.forward_hint": "Kontoen er fra en anden server. Send også en anonymiseret anmeldelseskopi dertil?", + "report.mute": "Tavsgør", + "report.mute_explanation": "Du vil ikke se vedkommendes indlæg, men vedkommende kan stadig se dine og følge dig. Vedkommende vil ikke være bekendt med tavsgørelsen.", + "report.next": "Næste", "report.placeholder": "Yderligere kommentarer", + "report.reasons.dislike": "Synes ikke om den/dem", + "report.reasons.dislike_description": "Det er ikke noget, man ønsker at se", + "report.reasons.other": "Det er noget andet", + "report.reasons.other_description": "Problemet passer ikke ind i andre kategorier", + "report.reasons.spam": "Det er spam", + "report.reasons.spam_description": "Ondsindede links, falsk engagement eller repetitive svar", + "report.reasons.violation": "Overtræder serverregler", + "report.reasons.violation_description": "Det står klart, at det bryder bestemte regler", + "report.rules.subtitle": "Vælg alle relevante", + "report.rules.title": "Hvilke regler overtrædes?", + "report.statuses.subtitle": "Vælg alle relevante", + "report.statuses.title": "Er der indlæg, som kan bekræfte denne anmeldelse?", "report.submit": "Indsend", "report.target": "Anmelder {target}", + "report.thanks.take_action": "Dette er mulighederne for styring af, hvad man ses på Mastodon:", + "report.thanks.take_action_actionable": "Mens dette gennemgås, kan der skrides til handling mod @{name}:", + "report.thanks.title": "Ønsker ikke at se dette?", + "report.thanks.title_actionable": "Tak for anmeldelsen, der vil blive set nærmere på dette.", + "report.unfollow": "Følg ikke længere @{name}", + "report.unfollow_explanation": "Denne konto følges. For at ophøre med at se vedkommendes indlæg på hjemmetidslinjen, vælg Følg ikke længere.", "search.placeholder": "Søg", "search_popout.search_format": "Avanceret søgeformat", - "search_popout.tips.full_text": "Simpel tekst returnerer trut, du har skrevet, favoriseret, fremhævede eller som er nævnt i/matcher bruger- og profilnavne samt hashtags.", + "search_popout.tips.full_text": "Simpel tekst returnerer indlæg, du har skrevet, favoritmarkeret, boostet eller som er nævnt i/matcher bruger- og profilnavne samt hashtags.", "search_popout.tips.hashtag": "hashtag", "search_popout.tips.status": "indlæg", "search_popout.tips.text": "Simpel tekst returnerer matchende visnings- og brugernavne samt hashtags", "search_popout.tips.user": "bruger", "search_results.accounts": "Personer", + "search_results.all": "Alle", "search_results.hashtags": "Hashtags", + "search_results.nothing_found": "Ingen resultater for disse søgeord", "search_results.statuses": "Indlæg", - "search_results.statuses_fts_disabled": "På denne Mastodon-server er trutsøgning efter deres indhold ikke aktiveret.", + "search_results.statuses_fts_disabled": "Søgning på indlæg efter deres indhold ikke aktiveret på denne Mastodon-server.", "search_results.total": "{count, number} {count, plural, one {resultat} other {resultater}}", "status.admin_account": "Åbn modereringsbrugerflade for @{name}", - "status.admin_status": "Åbn dette trut i modereringsbrugerflade", + "status.admin_status": "Åbn dette indlæg i modereringsbrugerfladen", "status.block": "Blokér @{name}", - "status.bookmark": "Tilføj bogmærke", + "status.bookmark": "Bogmærk", "status.cancel_reblog_private": "Fjern fremhævning", - "status.cannot_reblog": "Indlægget kan ikke fremhæves", - "status.copy": "Kopiér link til trut", + "status.cannot_reblog": "Dette indlæg kan ikke boostes", + "status.copy": "Kopiér link til indlæg", "status.delete": "Slet", "status.detailed_status": "Detaljeret samtalevisning", "status.direct": "Direkte besked til @{name}", @@ -421,20 +461,20 @@ "status.media_hidden": "Medie skjult", "status.mention": "Nævn @{name}", "status.more": "Mere", - "status.mute": "Skjul @{name}", - "status.mute_conversation": "Skjul samtale", - "status.open": "Udvid indlægget", + "status.mute": "Tystn @{name}", + "status.mute_conversation": "Tystn samtale", + "status.open": "Udvid dette indlæg", "status.pin": "Fastgør til profil", - "status.pinned": "Fastgjort trut", + "status.pinned": "Fastgjort indlæg", "status.read_more": "Læs mere", "status.reblog": "Fremhæv", - "status.reblog_private": "Fremhæv med oprindelig synlighed", - "status.reblogged_by": "{name} fremhævet", - "status.reblogs.empty": "Ingen har fremhævet indlægget endnu. Når nogen gør, vil det fremgå hér.", - "status.redraft": "Slet og omskriv", + "status.reblog_private": "Boost med oprindelig synlighed", + "status.reblogged_by": "{name} boostede", + "status.reblogs.empty": "Ingen har endnu boostet dette indlæg. Når nogen gør, vil det fremgå hér.", + "status.redraft": "Slet og omformulér", "status.remove_bookmark": "Fjern bogmærke", "status.reply": "Besvar", - "status.replyAll": "Svar på tråd", + "status.replyAll": "Besvar alle", "status.report": "Anmeld @{name}", "status.sensitive_warning": "Følsomt indhold", "status.share": "Del", @@ -456,7 +496,7 @@ "time_remaining.days": "{number, plural, one {# dag} other {# dage}} tilbage", "time_remaining.hours": "{number, plural, one {# time} other {# timer}} tilbage", "time_remaining.minutes": "{number, plural, one {# minut} other {# minutter}} tilbage", - "time_remaining.moments": "Et øjeblik tilbage", + "time_remaining.moments": "Få øjeblikke tilbage", "time_remaining.seconds": "{number, plural, one {# sekund} other {# sekunder}} tilbage", "timeline_hint.remote_resource_not_displayed": "{resource} fra andre servere vises ikke.", "timeline_hint.resources.followers": "Følgere", @@ -465,24 +505,25 @@ "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} personer}} taler", "trends.trending_now": "Hot lige nu", "ui.beforeunload": "Dit udkast går tabt, hvis du lukker Mastodon.", - "units.short.billion": "{count}G", - "units.short.million": "{count}M", - "units.short.thousand": "{count}k", + "units.short.billion": "{count} mia.", + "units.short.million": "{count} mio.", + "units.short.thousand": "{count} tusind", "upload_area.title": "Træk og slip for at uploade", - "upload_button.label": "Tilføj billeder, en video- eller lydfil", + "upload_button.label": "Tilføj billed-, video- eller lydfil(er)", "upload_error.limit": "Grænse for filupload nået.", "upload_error.poll": "Filupload ikke tilladt for afstemninger.", "upload_form.audio_description": "Beskrivelse til hørehæmmede", "upload_form.description": "Beskrivelse til svagtseende", + "upload_form.description_missing": "Ingen beskrivelse tilføjet", "upload_form.edit": "Redigér", - "upload_form.thumbnail": "Skift miniaturer", + "upload_form.thumbnail": "Skift miniature", "upload_form.undo": "Slet", "upload_form.video_description": "Beskrivelse for hørehæmmede eller synshandicappede personer", "upload_modal.analyzing_picture": "Analyserer billede…", "upload_modal.apply": "Anvend", "upload_modal.applying": "Effektuerer…", "upload_modal.choose_image": "Vælg billede", - "upload_modal.description_placeholder": "Høj bly gom vandt fræk sexquiz på wc", + "upload_modal.description_placeholder": "En hurtig brun ræv hopper over den dovne hund", "upload_modal.detect_text": "Detektér tekst i billede", "upload_modal.edit_media": "Redigér medie", "upload_modal.hint": "Klik eller træk cirklen i forhåndsvisningen for at vælge det fokuspunkt, der altid vil være synligt på alle miniaturer.", @@ -495,8 +536,8 @@ "video.expand": "Udvid video", "video.fullscreen": "Fuldskærm", "video.hide": "Skjul video", - "video.mute": "Sluk lyden", - "video.pause": "Sæt på pause", + "video.mute": "Tavsgør lyd", + "video.pause": "Pausér", "video.play": "Afspil", - "video.unmute": "Tænd for lyden" + "video.unmute": "Fjern lydtavsgørelse" } diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index d90b95f8b..1bf817c7b 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -13,26 +13,25 @@ "account.domain_blocked": "Domain versteckt", "account.edit_profile": "Profil bearbeiten", "account.enable_notifications": "Benachrichtige mich wenn @{name} etwas postet", - "account.endorse": "Auf Profil hervorheben", + "account.endorse": "Im Profil anzeigen", "account.follow": "Folgen", "account.followers": "Follower", - "account.followers.empty": "Diesem Profil folgt noch niemand.", + "account.followers.empty": "Diesem Profil folgt bislang niemand.", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Follower}}", - "account.following_counter": "{count, plural, one {{counter} Folgender} other {{counter} Folgende}}", + "account.following": "Folgt", + "account.following_counter": "{count, plural, one {{counter} Folgt} other {{counter} Folgt}}", "account.follows.empty": "Dieses Profil folgt noch niemandem.", "account.follows_you": "Folgt dir", "account.hide_reblogs": "Geteilte Beiträge von @{name} verbergen", "account.joined": "Beigetreten am {date}", - "account.last_status": "Zuletzt aktiv", "account.link_verified_on": "Besitz dieses Links wurde geprüft am {date}", - "account.locked_info": "Der Privatsphärenstatus dieses Accounts wurde auf gesperrt gesetzt. Die Person bestimmt manuell wer ihm/ihr folgen darf.", + "account.locked_info": "Der Privatsphärenstatus dieses Accounts wurde auf „gesperrt“ gesetzt. Die Person bestimmt manuell, wer ihm/ihr folgen darf.", "account.media": "Medien", "account.mention": "@{name} erwähnen", - "account.moved_to": "{name} ist umgezogen auf:", + "account.moved_to": "{name} ist umgezogen nach:", "account.mute": "@{name} stummschalten", "account.mute_notifications": "Benachrichtigungen von @{name} stummschalten", "account.muted": "Stummgeschaltet", - "account.never_active": "Nie", "account.posts": "Beiträge", "account.posts_with_replies": "Beiträge und Antworten", "account.report": "@{name} melden", @@ -40,24 +39,26 @@ "account.share": "Profil von @{name} teilen", "account.show_reblogs": "Von @{name} geteilte Beiträge anzeigen", "account.statuses_counter": "{count, plural, one {{counter} Beitrag} other {{counter} Beiträge}}", - "account.unblock": "@{name} entblocken", + "account.unblock": "Blockierung von @{name} aufheben", "account.unblock_domain": "{domain} wieder anzeigen", - "account.unendorse": "Nicht auf Profil hervorheben", + "account.unblock_short": "Blockierung aufheben", + "account.unendorse": "Nicht mehr im Profil anzeigen", "account.unfollow": "Entfolgen", - "account.unmute": "@{name} nicht mehr stummschalten", + "account.unmute": "Stummschaltung von @{name} aufheben", "account.unmute_notifications": "Benachrichtigungen von @{name} einschalten", + "account.unmute_short": "Stummschaltung aufheben", "account_note.placeholder": "Notiz durch Klicken hinzufügen", "admin.dashboard.daily_retention": "Benutzerverbleibrate nach Tag nach Anmeldung", "admin.dashboard.monthly_retention": "Benutzerverbleibrate nach Monat nach Anmeldung", "admin.dashboard.retention.average": "Durchschnitt", - "admin.dashboard.retention.cohort": "Anmeldemonat", + "admin.dashboard.retention.cohort": "Monat der Anmeldung", "admin.dashboard.retention.cohort_size": "Neue Benutzer", - "alert.rate_limited.message": "Bitte versuche es nach {retry_time, time, medium}.", + "alert.rate_limited.message": "Bitte versuche es nach {retry_time, time, medium} erneut.", "alert.rate_limited.title": "Anfragelimit überschritten", "alert.unexpected.message": "Ein unerwarteter Fehler ist aufgetreten.", "alert.unexpected.title": "Hoppla!", "announcement.announcement": "Ankündigung", - "attachments_list.unprocessed": "(unverarbeitet)", + "attachments_list.unprocessed": "(ausstehend)", "autosuggest_hashtag.per_week": "{count} pro Woche", "boost_modal.combo": "Drücke {combo}, um dieses Fenster zu überspringen", "bundle_column_error.body": "Etwas ist beim Laden schiefgelaufen.", @@ -69,7 +70,7 @@ "column.blocks": "Blockierte Profile", "column.bookmarks": "Lesezeichen", "column.community": "Lokale Zeitleiste", - "column.direct": "Direktnachrichten", + "column.conversations": "Konversationen", "column.directory": "Profile durchsuchen", "column.domain_blocks": "Blockierte Domains", "column.favourites": "Favoriten", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Nur lokal", "community.column_settings.media_only": "Nur Medien", "community.column_settings.remote_only": "Nur entfernt", - "compose_form.direct_message_warning": "Dieser Beitrag wird nur für die erwähnten Nutzer sichtbar sein.", "compose_form.direct_message_warning_learn_more": "Mehr erfahren", + "compose_form.encryption_warning": "Beiträge auf Mastodon sind nicht Ende-zu-Ende-verschlüsselt. Teile keine sensiblen Informationen über Mastodon.", "compose_form.hashtag_warning": "Dieser Beitrag wird nicht durch Hashtags entdeckbar sein, weil er ungelistet ist. Nur öffentliche Beiträge tauchen in Hashtag-Zeitleisten auf.", "compose_form.lock_disclaimer": "Dein Profil ist nicht {locked}. Wer dir folgen will, kann das jederzeit tun und dann auch deine privaten Beiträge sehen.", "compose_form.lock_disclaimer.lock": "gesperrt", @@ -165,8 +166,9 @@ "empty_column.blocks": "Du hast keine Profile blockiert.", "empty_column.bookmarked_statuses": "Du hast bis jetzt keine Beiträge als Lesezeichen gespeichert. Wenn du einen Beitrag als Lesezeichen speicherst wird er hier erscheinen.", "empty_column.community": "Die lokale Zeitleiste ist leer. Schreibe einen öffentlichen Beitrag, um den Ball ins Rollen zu bringen!", - "empty_column.direct": "Du hast noch keine Direktnachrichten erhalten. Wenn du eine sendest oder empfängst, wird sie hier zu sehen sein.", + "empty_column.conversations": "Sobald du einen Beitrag sendest oder empfängst, der nur für die in ihm erwähnten Personen sichtbar ist, wird er hier angezeigt.", "empty_column.domain_blocks": "Es sind noch keine Domains versteckt.", + "empty_column.explore_statuses": "Momentan ist nichts im Trend. Schau später wieder!", "empty_column.favourited_statuses": "Du hast noch keine favorisierten Tröts. Wenn du einen favorisierst, wird er hier erscheinen.", "empty_column.favourites": "Noch niemand hat diesen Beitrag favorisiert. Sobald es jemand tut, wird das hier angezeigt.", "empty_column.follow_recommendations": "Es sieht so aus, als könnten keine Vorschläge für dich generiert werden. Du kannst versuchen nach Leuten zu suchen, die du vielleicht kennst oder du kannst angesagte Hashtags erkunden.", @@ -174,7 +176,7 @@ "empty_column.hashtag": "Unter diesem Hashtag gibt es noch nichts.", "empty_column.home": "Deine Startseite ist leer! Besuche {public} oder nutze die Suche, um loszulegen und andere Leute zu finden.", "empty_column.home.suggestions": "Ein paar Vorschläge ansehen", - "empty_column.list": "Diese Liste ist derzeit leer. Wenn Wesen auf dieser Liste neue Beiträge veröffentlichen werden sie hier erscheinen.", + "empty_column.list": "Diese Liste ist derzeit leer. Wenn Konten auf dieser Liste neue Beiträge veröffentlichen werden sie hier erscheinen.", "empty_column.lists": "Du hast noch keine Listen. Wenn du eine anlegst, wird sie hier angezeigt.", "empty_column.mutes": "Du hast keine Profile stummgeschaltet.", "empty_column.notifications": "Du hast noch keine Mitteilungen. Interagiere mit anderen, um ins Gespräch zu kommen.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Versuche sie zu deaktivieren und lade dann die Seite neu. Wenn das Problem weiterhin besteht, solltest du Mastodon über einen anderen Browser oder eine native App nutzen.", "errors.unexpected_crash.copy_stacktrace": "Fehlerlog in die Zwischenablage kopieren", "errors.unexpected_crash.report_issue": "Problem melden", + "explore.search_results": "Suchergebnisse", + "explore.suggested_follows": "Für dich", + "explore.title": "Entdecken", + "explore.trending_links": "Nachrichten", + "explore.trending_statuses": "Beiträge", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Fertig", "follow_recommendations.heading": "Folge Leuten, von denen du Beiträge sehen möchtest! Hier sind einige Vorschläge.", "follow_recommendations.lead": "Beiträge von Personen, denen du folgst, werden in chronologischer Reihenfolge auf deiner Startseite angezeigt. Hab keine Angst, Fehler zu machen, du kannst den Leuten jederzeit wieder entfolgen!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "teilen", "keyboard_shortcuts.column": "einen Beitrag in einer der Spalten fokussieren", "keyboard_shortcuts.compose": "fokussiere das Eingabefeld", + "keyboard_shortcuts.conversations": "um die Konversationsspalte zu öffnen", "keyboard_shortcuts.description": "Beschreibung", - "keyboard_shortcuts.direct": "Direct-Message-Spalte öffnen", "keyboard_shortcuts.down": "sich in der Liste hinunter bewegen", "keyboard_shortcuts.enter": "Beitrag öffnen", "keyboard_shortcuts.favourite": "um zu favorisieren", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Lesezeichen", "navigation_bar.community_timeline": "Lokale Zeitleiste", "navigation_bar.compose": "Neuen Beitrag verfassen", - "navigation_bar.direct": "Direktnachrichten", "navigation_bar.discover": "Entdecken", "navigation_bar.domain_blocks": "Versteckte Domains", "navigation_bar.edit_profile": "Profil bearbeiten", + "navigation_bar.explore": "Entdecken", "navigation_bar.favourites": "Favoriten", "navigation_bar.filters": "Stummgeschaltene Wörter", "navigation_bar.follow_requests": "Folgeanfragen", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Einstellungen", "navigation_bar.public_timeline": "Föderierte Zeitleiste", "navigation_bar.security": "Sicherheit", + "notification.admin.sign_up": "{name} hat sich registriert", "notification.favourite": "{name} hat deinen Beitrag favorisiert", "notification.follow": "{name} folgt dir", "notification.follow_request": "{name} möchte dir folgen", @@ -308,9 +317,10 @@ "notification.poll": "Eine Umfrage in der du abgestimmt hast ist vorbei", "notification.reblog": "{name} hat deinen Beitrag geteilt", "notification.status": "{name} hat gerade etwas gepostet", - "notification.update": "{name} edited a post", + "notification.update": "{name} bearbeitete einen Beitrag", "notifications.clear": "Mitteilungen löschen", "notifications.clear_confirmation": "Bist du dir sicher, dass du alle Mitteilungen löschen möchtest?", + "notifications.column_settings.admin.sign_up": "Neue Anmeldungen:", "notifications.column_settings.alert": "Desktop-Benachrichtigungen", "notifications.column_settings.favourite": "Favorisierungen:", "notifications.column_settings.filter_bar.advanced": "Zeige alle Kategorien an", @@ -327,7 +337,7 @@ "notifications.column_settings.status": "Neue Beiträge:", "notifications.column_settings.unread_notifications.category": "Ungelesene Benachrichtigungen", "notifications.column_settings.unread_notifications.highlight": "Ungelesene Benachrichtigungen hervorheben", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.update": "Bearbeitungen:", "notifications.filter.all": "Alle", "notifications.filter.boosts": "Geteilte Beiträge", "notifications.filter.favourites": "Favorisierungen", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Umfrage entfernen", "privacy.change": "Sichtbarkeit des Beitrags anpassen", "privacy.direct.long": "Wird an erwähnte Profile gesendet", - "privacy.direct.short": "Direktnachricht", + "privacy.direct.short": "Nur Leute, die ich erwähne", "privacy.private.long": "Nur für Folgende sichtbar", - "privacy.private.short": "Nur für Folgende", - "privacy.public.long": "Wird in öffentlichen Zeitleisten erscheinen", + "privacy.private.short": "Nur Folgende", + "privacy.public.long": "Sichtbar für alle", "privacy.public.short": "Öffentlich", - "privacy.unlisted.long": "Wird in öffentlichen Zeitleisten nicht gezeigt", + "privacy.unlisted.long": "Sichtbar für alle, aber nicht für Entdeckungsfunktionen", "privacy.unlisted.short": "Nicht gelistet", "refresh": "Aktualisieren", "regeneration_indicator.label": "Laden…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "heute", "reply_indicator.cancel": "Abbrechen", + "report.block": "Blockieren", + "report.block_explanation": "Du wirst die Beiträge von diesem Konto nicht sehen. Das Konto wird nicht in der Lage sein, deine Beiträge zu sehen oder dir zu folgen. Die Person hinter dem Konto wird wissen, dass du das Konto blockiert hast.", "report.categories.other": "Andere", "report.categories.spam": "Spam", "report.categories.violation": "Inhalt verletzt ein oder mehrere Server-Regeln", + "report.category.subtitle": "Wähle die beste Zugehörigkeit", + "report.category.title": "Sag uns, was mit diesem {type} vor sich geht", + "report.category.title_account": "Profil", + "report.category.title_status": "Beitrag", + "report.close": "Fertig", + "report.comment.title": "Gibt es etwas anderes, was wir wissen sollten?", "report.forward": "An {target} weiterleiten", "report.forward_hint": "Dieses Konto ist von einem anderen Server. Soll eine anonymisierte Kopie des Berichts auch dorthin geschickt werden?", - "report.hint": "Der Bericht wird an die Moderatoren des Servers geschickt. Du kannst hier eine Erklärung angeben, warum du dieses Konto meldest:", + "report.mute": "Stummschalten", + "report.mute_explanation": "Du wirst die Beiträge vom Konto nicht mehr sehen. Das Konto kann dir immernoch folgen und die Person hinter dem Konto wird deine Beiträge sehen können und nicht wissen, dass du sie stumm geschaltet hast.", + "report.next": "Weiter", "report.placeholder": "Zusätzliche Kommentare", + "report.reasons.dislike": "Das gefällt mir nicht", + "report.reasons.dislike_description": "Das ist nicht etwas, was ihr nicht sehen wollt", + "report.reasons.other": "Da ist was anderes", + "report.reasons.other_description": "Das Problem passt nicht in eine der Kategorien", + "report.reasons.spam": "Das ist Spam", + "report.reasons.spam_description": "Bösartige Links, gefälschtes Engagement oder wiederholte Antworten", + "report.reasons.violation": "Es verstößt gegen Serverregeln", + "report.reasons.violation_description": "Du weißt, welche Regeln verletzt werden", + "report.rules.subtitle": "Alles Zutreffende auswählen", + "report.rules.title": "Welche Regeln werden verletzt?", + "report.statuses.subtitle": "Alles Zutreffende auswählen", + "report.statuses.title": "Gibt es Beiträge, die diesen Bericht unterstützen?", "report.submit": "Absenden", "report.target": "{target} melden", + "report.thanks.take_action": "Hier sind deine Optionen, die es dir erlauben zu kontrollieren, was du auf Mastodon sehen möchtest:", + "report.thanks.take_action_actionable": "Während wir dies überprüfen, kannst du gegen @{name} vorgehen:", + "report.thanks.title": "Möchtest du das nicht sehen?", + "report.thanks.title_actionable": "Vielen Dank für die Berichterstattung, wir werden uns damit befassen.", + "report.unfollow": "@{name} entfolgen", + "report.unfollow_explanation": "Du folgst diesem Konto. Um die Beiträge nicht mehr auf deiner Startseite zu sehen, entfolge dem Konto.", "search.placeholder": "Suche", "search_popout.search_format": "Fortgeschrittenes Suchformat", "search_popout.tips.full_text": "Einfache Texteingabe gibt Beiträge, die du geschrieben, favorisiert und geteilt hast zurück. Außerdem auch Beiträge in denen du erwähnt wurdest, aber auch passende Nutzernamen, Anzeigenamen oder Hashtags.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Einfache Texteingabe gibt Anzeigenamen, Benutzernamen und Hashtags zurück", "search_popout.tips.user": "Nutzer", "search_results.accounts": "Personen", + "search_results.all": "Alle", "search_results.hashtags": "Hashtags", + "search_results.nothing_found": "Nichts für diese Suchbegriffe gefunden", "search_results.statuses": "Beiträge", "search_results.statuses_fts_disabled": "Die Suche für Beiträge nach ihrem Inhalt ist auf diesem Mastodon-Server deaktiviert.", "search_results.total": "{count, number} {count, plural, one {Ergebnis} other {Ergebnisse}}", @@ -474,6 +514,7 @@ "upload_error.poll": "Dateiuploads sind in Kombination mit Umfragen nicht erlaubt.", "upload_form.audio_description": "Beschreibe die Audiodatei für Menschen mit Hörschädigungen", "upload_form.description": "Für Menschen mit Sehbehinderung beschreiben", + "upload_form.description_missing": "Keine Beschreibung hinzugefügt", "upload_form.edit": "Bearbeiten", "upload_form.thumbnail": "Miniaturansicht ändern", "upload_form.undo": "Löschen", @@ -482,7 +523,7 @@ "upload_modal.apply": "Übernehmen", "upload_modal.applying": "Anwenden…", "upload_modal.choose_image": "Bild auswählen", - "upload_modal.description_placeholder": "Die heiße Zypernsonne quälte Max und Victoria ja böse auf dem Weg bis zur Küste", + "upload_modal.description_placeholder": "Victor jagt zwölf Boxkämpfer quer über den großen Sylter Deich", "upload_modal.detect_text": "Text aus Bild erkennen", "upload_modal.edit_media": "Medien bearbeiten", "upload_modal.hint": "Klicke oder ziehe den Kreis auf die Vorschau, um den Brennpunkt auszuwählen, der immer auf allen Vorschaubilder angezeigt wird.", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index f3c6f3fc0..6d457c732 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -206,7 +206,7 @@ { "descriptors": [ { - "defaultMessage": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", + "defaultMessage": "{count, plural, one {{counter} Post} other {{counter} Posts}}", "id": "account.statuses_counter" }, { @@ -315,15 +315,6 @@ ], "path": "app/javascript/mastodon/components/load_pending.json" }, - { - "descriptors": [ - { - "defaultMessage": "Loading...", - "id": "loading_indicator.label" - } - ], - "path": "app/javascript/mastodon/components/loading_indicator.json" - }, { "descriptors": [ { @@ -676,7 +667,7 @@ "id": "privacy.private.short" }, { - "defaultMessage": "Direct", + "defaultMessage": "Mentioned people only", "id": "privacy.direct.short" }, { @@ -688,7 +679,7 @@ "id": "status.filtered" }, { - "defaultMessage": "Pinned toot", + "defaultMessage": "Pinned post", "id": "status.pinned" }, { @@ -798,11 +789,11 @@ { "descriptors": [ { - "defaultMessage": "Toots", + "defaultMessage": "Posts", "id": "account.posts" }, { - "defaultMessage": "Toots and replies", + "defaultMessage": "Posts and replies", "id": "account.posts_with_replies" }, { @@ -845,7 +836,7 @@ { "descriptors": [ { - "defaultMessage": "Older toots", + "defaultMessage": "Older posts", "id": "timeline_hint.resources.statuses" }, { @@ -857,7 +848,7 @@ "id": "empty_column.account_unavailable" }, { - "defaultMessage": "No toots here!", + "defaultMessage": "No posts found", "id": "empty_column.account_timeline" } ], @@ -971,7 +962,7 @@ "id": "account.disable_notifications" }, { - "defaultMessage": "Pinned toots", + "defaultMessage": "Pinned posts", "id": "navigation_bar.pins" }, { @@ -1094,7 +1085,7 @@ "id": "column.bookmarks" }, { - "defaultMessage": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", + "defaultMessage": "You don't have any bookmarked posts yet. When you bookmark one, it will show up here.", "id": "empty_column.bookmarked_statuses" } ], @@ -1129,7 +1120,7 @@ "id": "account.edit_profile" }, { - "defaultMessage": "Pinned toots", + "defaultMessage": "Pinned posts", "id": "navigation_bar.pins" }, { @@ -1331,7 +1322,7 @@ "id": "privacy.public.short" }, { - "defaultMessage": "Visible for all, shown in public timelines", + "defaultMessage": "Visible for all", "id": "privacy.public.long" }, { @@ -1339,11 +1330,11 @@ "id": "privacy.unlisted.short" }, { - "defaultMessage": "Visible for all, but not in public timelines", + "defaultMessage": "Visible for all, but opted-out of discovery features", "id": "privacy.unlisted.long" }, { - "defaultMessage": "Followers-only", + "defaultMessage": "Followers only", "id": "privacy.private.short" }, { @@ -1351,7 +1342,7 @@ "id": "privacy.private.long" }, { - "defaultMessage": "Direct", + "defaultMessage": "Only people I mention", "id": "privacy.direct.short" }, { @@ -1389,11 +1380,11 @@ "id": "search_results.accounts" }, { - "defaultMessage": "Toots", + "defaultMessage": "Posts", "id": "search_results.statuses" }, { - "defaultMessage": "Searching toots by their content is not enabled on this Mastodon server.", + "defaultMessage": "Searching posts by their content is not enabled on this Mastodon server.", "id": "search_results.statuses_fts_disabled" }, { @@ -1467,6 +1458,10 @@ { "defaultMessage": "Edit", "id": "upload_form.edit" + }, + { + "defaultMessage": "No description added", + "id": "upload_form.description_missing" } ], "path": "app/javascript/mastodon/features/compose/components/upload.json" @@ -1525,12 +1520,12 @@ "id": "compose_form.lock_disclaimer.lock" }, { - "defaultMessage": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", + "defaultMessage": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.", "id": "compose_form.hashtag_warning" }, { - "defaultMessage": "This toot will only be sent to all the mentioned users.", - "id": "compose_form.direct_message_warning" + "defaultMessage": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "id": "compose_form.encryption_warning" }, { "defaultMessage": "Learn more", @@ -1570,7 +1565,7 @@ "id": "navigation_bar.logout" }, { - "defaultMessage": "Compose new toot", + "defaultMessage": "Compose new post", "id": "navigation_bar.compose" }, { @@ -1637,48 +1632,56 @@ { "descriptors": [ { - "defaultMessage": "Direct messages", - "id": "column.direct" + "defaultMessage": "Conversations", + "id": "column.conversations" }, { - "defaultMessage": "You don't have any direct messages yet. When you send or receive one, it will show up here.", - "id": "empty_column.direct" + "defaultMessage": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "id": "empty_column.conversations" } ], "path": "app/javascript/mastodon/features/direct_timeline/index.json" }, { "descriptors": [ - { - "defaultMessage": "Follow", - "id": "account.follow" - }, { "defaultMessage": "Unfollow", "id": "account.unfollow" }, { - "defaultMessage": "Awaiting approval", + "defaultMessage": "Follow", + "id": "account.follow" + }, + { + "defaultMessage": "Cancel follow request", + "id": "account.cancel_follow_request" + }, + { + "defaultMessage": "Awaiting approval. Click to cancel follow request", "id": "account.requested" }, { - "defaultMessage": "Unblock @{name}", - "id": "account.unblock" + "defaultMessage": "Unblock", + "id": "account.unblock_short" }, { - "defaultMessage": "Unmute @{name}", - "id": "account.unmute" + "defaultMessage": "Unmute", + "id": "account.unmute_short" }, { "defaultMessage": "Unfollow", "id": "confirmations.unfollow.confirm" }, + { + "defaultMessage": "Edit profile", + "id": "account.edit_profile" + }, { "defaultMessage": "Are you sure you want to unfollow {name}?", "id": "confirmations.unfollow.message" }, { - "defaultMessage": "Toots", + "defaultMessage": "Posts", "id": "account.posts" }, { @@ -1686,12 +1689,8 @@ "id": "account.followers" }, { - "defaultMessage": "Never", - "id": "account.never_active" - }, - { - "defaultMessage": "Last active", - "id": "account.last_status" + "defaultMessage": "Following", + "id": "account.following" } ], "path": "app/javascript/mastodon/features/directory/components/account_card.json" @@ -1738,6 +1737,69 @@ ], "path": "app/javascript/mastodon/features/domain_blocks/index.json" }, + { + "descriptors": [ + { + "defaultMessage": "Explore", + "id": "explore.title" + }, + { + "defaultMessage": "Search results", + "id": "explore.search_results" + }, + { + "defaultMessage": "Posts", + "id": "explore.trending_statuses" + }, + { + "defaultMessage": "Hashtags", + "id": "explore.trending_tags" + }, + { + "defaultMessage": "News", + "id": "explore.trending_links" + }, + { + "defaultMessage": "For you", + "id": "explore.suggested_follows" + } + ], + "path": "app/javascript/mastodon/features/explore/index.json" + }, + { + "descriptors": [ + { + "defaultMessage": "Could not find anything for these search terms", + "id": "search_results.nothing_found" + }, + { + "defaultMessage": "All", + "id": "search_results.all" + }, + { + "defaultMessage": "People", + "id": "search_results.accounts" + }, + { + "defaultMessage": "Hashtags", + "id": "search_results.hashtags" + }, + { + "defaultMessage": "Posts", + "id": "search_results.statuses" + } + ], + "path": "app/javascript/mastodon/features/explore/results.json" + }, + { + "descriptors": [ + { + "defaultMessage": "Nothing is trending right now. Check back later!", + "id": "empty_column.explore_statuses" + } + ], + "path": "app/javascript/mastodon/features/explore/statuses.json" + }, { "descriptors": [ { @@ -1745,7 +1807,7 @@ "id": "column.favourites" }, { - "defaultMessage": "You don't have any favourite toots yet. When you favourite one, it will show up here.", + "defaultMessage": "You don't have any favourite posts yet. When you favourite one, it will show up here.", "id": "empty_column.favourited_statuses" } ], @@ -1758,7 +1820,7 @@ "id": "refresh" }, { - "defaultMessage": "No one has favourited this toot yet. When someone does, they will show up here.", + "defaultMessage": "No one has favourited this post yet. When someone does, they will show up here.", "id": "empty_column.favourites" } ], @@ -1915,8 +1977,12 @@ "id": "navigation_bar.community_timeline" }, { - "defaultMessage": "Direct messages", - "id": "navigation_bar.direct" + "defaultMessage": "Explore", + "id": "navigation_bar.explore" + }, + { + "defaultMessage": "Conversations", + "id": "column.conversations" }, { "defaultMessage": "Bookmarks", @@ -1947,7 +2013,7 @@ "id": "navigation_bar.mutes" }, { - "defaultMessage": "Pinned toots", + "defaultMessage": "Pinned posts", "id": "navigation_bar.pins" }, { @@ -1969,10 +2035,6 @@ { "defaultMessage": "Getting started", "id": "getting_started.heading" - }, - { - "defaultMessage": "Profile directory", - "id": "getting_started.directory" } ], "path": "app/javascript/mastodon/features/getting_started/index.json" @@ -2140,7 +2202,7 @@ "id": "keyboard_shortcuts.compose" }, { - "defaultMessage": "to start a brand new toot", + "defaultMessage": "to start a brand new post", "id": "keyboard_shortcuts.toot" }, { @@ -2176,8 +2238,8 @@ "id": "keyboard_shortcuts.federated" }, { - "defaultMessage": "to open direct messages column", - "id": "keyboard_shortcuts.direct" + "defaultMessage": "to open conversations column", + "id": "keyboard_shortcuts.conversations" }, { "defaultMessage": "to open \"get started\" column", @@ -2188,7 +2250,7 @@ "id": "keyboard_shortcuts.favourites" }, { - "defaultMessage": "to open pinned toots list", + "defaultMessage": "to open pinned posts list", "id": "keyboard_shortcuts.pinned" }, { @@ -2422,12 +2484,16 @@ "id": "notifications.column_settings.poll" }, { - "defaultMessage": "New toots:", + "defaultMessage": "New posts:", "id": "notifications.column_settings.status" }, { "defaultMessage": "Edits:", "id": "notifications.column_settings.update" + }, + { + "defaultMessage": "New sign-ups:", + "id": "notifications.column_settings.admin.sign_up" } ], "path": "app/javascript/mastodon/features/notifications/components/column_settings.json" @@ -2517,6 +2583,10 @@ "defaultMessage": "{name} edited a post", "id": "notification.update" }, + { + "defaultMessage": "{name} signed up", + "id": "notification.admin.sign_up" + }, { "defaultMessage": "{name} has requested to follow you", "id": "notification.follow_request" @@ -2636,7 +2706,7 @@ { "descriptors": [ { - "defaultMessage": "Pinned toot", + "defaultMessage": "Pinned post", "id": "column.pins" } ], @@ -2675,12 +2745,197 @@ "id": "refresh" }, { - "defaultMessage": "No one has boosted this toot yet. When someone does, they will show up here.", + "defaultMessage": "No one has boosted this post yet. When someone does, they will show up here.", "id": "status.reblogs.empty" } ], "path": "app/javascript/mastodon/features/reblogs/index.json" }, + { + "descriptors": [ + { + "defaultMessage": "I don't like it", + "id": "report.reasons.dislike" + }, + { + "defaultMessage": "It is not something you want to see", + "id": "report.reasons.dislike_description" + }, + { + "defaultMessage": "It's spam", + "id": "report.reasons.spam" + }, + { + "defaultMessage": "Malicious links, fake engagement, or repetitive replies", + "id": "report.reasons.spam_description" + }, + { + "defaultMessage": "It violates server rules", + "id": "report.reasons.violation" + }, + { + "defaultMessage": "You are aware that it breaks specific rules", + "id": "report.reasons.violation_description" + }, + { + "defaultMessage": "It's something else", + "id": "report.reasons.other" + }, + { + "defaultMessage": "The issue does not fit into other categories", + "id": "report.reasons.other_description" + }, + { + "defaultMessage": "post", + "id": "report.category.title_status" + }, + { + "defaultMessage": "profile", + "id": "report.category.title_account" + }, + { + "defaultMessage": "Tell us what's going on with this {type}", + "id": "report.category.title" + }, + { + "defaultMessage": "Choose the best match", + "id": "report.category.subtitle" + }, + { + "defaultMessage": "Next", + "id": "report.next" + } + ], + "path": "app/javascript/mastodon/features/report/category.json" + }, + { + "descriptors": [ + { + "defaultMessage": "Type or paste additional comments", + "id": "report.placeholder" + }, + { + "defaultMessage": "Is there anything else you think we should know?", + "id": "report.comment.title" + }, + { + "defaultMessage": "The account is from another server. Send an anonymized copy of the report there as well?", + "id": "report.forward_hint" + }, + { + "defaultMessage": "Forward to {target}", + "id": "report.forward" + }, + { + "defaultMessage": "Submit report", + "id": "report.submit" + } + ], + "path": "app/javascript/mastodon/features/report/comment.json" + }, + { + "descriptors": [ + { + "defaultMessage": "Which rules are being violated?", + "id": "report.rules.title" + }, + { + "defaultMessage": "Select all that apply", + "id": "report.rules.subtitle" + }, + { + "defaultMessage": "Next", + "id": "report.next" + } + ], + "path": "app/javascript/mastodon/features/report/rules.json" + }, + { + "descriptors": [ + { + "defaultMessage": "Are there any posts that back up this report?", + "id": "report.statuses.title" + }, + { + "defaultMessage": "Select all that apply", + "id": "report.statuses.subtitle" + }, + { + "defaultMessage": "Next", + "id": "report.next" + } + ], + "path": "app/javascript/mastodon/features/report/statuses.json" + }, + { + "descriptors": [ + { + "defaultMessage": "Thanks for reporting, we'll look into this.", + "id": "report.thanks.title_actionable" + }, + { + "defaultMessage": "Don't want to see this?", + "id": "report.thanks.title" + }, + { + "defaultMessage": "While we review this, you can take action against @{name}:", + "id": "report.thanks.take_action_actionable" + }, + { + "defaultMessage": "Here are your options for controlling what you see on Mastodon:", + "id": "report.thanks.take_action" + }, + { + "defaultMessage": "Unfollow @{name}", + "id": "report.unfollow" + }, + { + "defaultMessage": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "id": "report.unfollow_explanation" + }, + { + "defaultMessage": "Unfollow", + "id": "account.unfollow" + }, + { + "defaultMessage": "Mute @{name}", + "id": "account.mute" + }, + { + "defaultMessage": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "id": "report.mute_explanation" + }, + { + "defaultMessage": "Mute", + "id": "report.mute" + }, + { + "defaultMessage": "Muted", + "id": "account.muted" + }, + { + "defaultMessage": "Block @{name}", + "id": "account.block" + }, + { + "defaultMessage": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "id": "report.block_explanation" + }, + { + "defaultMessage": "Block", + "id": "report.block" + }, + { + "defaultMessage": "Blocked", + "id": "account.blocked" + }, + { + "defaultMessage": "Done", + "id": "report.close" + } + ], + "path": "app/javascript/mastodon/features/report/thanks.json" + }, { "descriptors": [ { @@ -3166,6 +3421,10 @@ "defaultMessage": "About this server", "id": "navigation_bar.info" }, + { + "defaultMessage": "Profile directory", + "id": "getting_started.directory" + }, { "defaultMessage": "Mobile apps", "id": "navigation_bar.apps" @@ -3265,6 +3524,10 @@ "defaultMessage": "Notifications", "id": "tabs_bar.notifications" }, + { + "defaultMessage": "Explore", + "id": "explore.title" + }, { "defaultMessage": "Local", "id": "tabs_bar.local_timeline" @@ -3274,8 +3537,8 @@ "id": "tabs_bar.federated_timeline" }, { - "defaultMessage": "Direct messages", - "id": "navigation_bar.direct" + "defaultMessage": "Conversations", + "id": "column.conversations" }, { "defaultMessage": "Favourites", @@ -3289,10 +3552,6 @@ "defaultMessage": "Lists", "id": "navigation_bar.lists" }, - { - "defaultMessage": "Profile directory", - "id": "getting_started.directory" - }, { "defaultMessage": "Preferences", "id": "navigation_bar.preferences" @@ -3310,29 +3569,9 @@ "defaultMessage": "Close", "id": "lightbox.close" }, - { - "defaultMessage": "Additional comments", - "id": "report.placeholder" - }, - { - "defaultMessage": "Submit", - "id": "report.submit" - }, { "defaultMessage": "Report {target}", "id": "report.target" - }, - { - "defaultMessage": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", - "id": "report.hint" - }, - { - "defaultMessage": "The account is from another server. Send an anonymized copy of the report there as well?", - "id": "report.forward_hint" - }, - { - "defaultMessage": "Forward to {target}", - "id": "report.forward" } ], "path": "app/javascript/mastodon/features/ui/components/report_modal.json" diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 450b3aff8..5a6af8291 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -18,12 +18,12 @@ "account.followers": "Ακόλουθοι", "account.followers.empty": "Κανείς δεν ακολουθεί αυτό τον χρήστη ακόμα.", "account.followers_counter": "{count, plural, one {{counter} Ακόλουθος} other {{counter} Ακόλουθοι}}", + "account.following": "Following", "account.following_counter": "{count, plural, other {{counter} Ακολουθεί}}", "account.follows.empty": "Αυτός ο χρήστης δεν ακολουθεί κανέναν ακόμα.", "account.follows_you": "Σε ακολουθεί", "account.hide_reblogs": "Απόκρυψη προωθήσεων από @{name}", "account.joined": "Μέλος από τις {date}", - "account.last_status": "Τελευταία δραστηριότητα", "account.link_verified_on": "Η ιδιοκτησία αυτού του συνδέσμου ελέχθηκε την {date}", "account.locked_info": "Η κατάσταση απορρήτου αυτού του λογαριασμού είναι κλειδωμένη. Ο ιδιοκτήτης επιβεβαιώνει χειροκίνητα ποιος μπορεί να τον ακολουθήσει.", "account.media": "Πολυμέσα", @@ -32,7 +32,6 @@ "account.mute": "Σώπασε @{name}", "account.mute_notifications": "Σώπασε τις ειδοποιήσεις από @{name}", "account.muted": "Αποσιωπημένος/η", - "account.never_active": "Ποτέ", "account.posts": "Τουτ", "account.posts_with_replies": "Τουτ και απαντήσεις", "account.report": "Κατάγγειλε @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Τουτ} other {{counter} Τουτ}}", "account.unblock": "Ξεμπλόκαρε @{name}", "account.unblock_domain": "Αποκάλυψε το {domain}", + "account.unblock_short": "Ξεμπλοκάρισμα", "account.unendorse": "Άνευ προβολής στο προφίλ", "account.unfollow": "Διακοπή παρακολούθησης", "account.unmute": "Διακοπή αποσιώπησης @{name}", "account.unmute_notifications": "Διακοπή αποσιώπησης ειδοποιήσεων του/της @{name}", + "account.unmute_short": "Κατάργηση σίγασης", "account_note.placeholder": "Κλικ για να βάλεις σημείωση", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "Αποκλεισμένοι χρήστες", "column.bookmarks": "Σελιδοδείκτες", "column.community": "Τοπική ροή", - "column.direct": "Προσωπικά μηνύματα", + "column.conversations": "Συνομιλίες", "column.directory": "Δες προφίλ", "column.domain_blocks": "Κρυμμένοι τομείς", "column.favourites": "Αγαπημένα", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Τοπικά μόνο", "community.column_settings.media_only": "Μόνο πολυμέσα", "community.column_settings.remote_only": "Απομακρυσμένα μόνο", - "compose_form.direct_message_warning": "Αυτό το τουτ θα σταλεί μόνο στους αναφερόμενους χρήστες.", "compose_form.direct_message_warning_learn_more": "Μάθετε περισσότερα", + "compose_form.encryption_warning": "Οι δημοσιεύσεις στο Mastodon δεν είναι κρυπτογραφημένες από άκρο σε άκρο. Μην μοιράζεστε επικίνδυνες πληροφορίες μέσω του Mastodon.", "compose_form.hashtag_warning": "Αυτό το τουτ δεν θα εμφανίζεται κάτω από κανένα hashtag καθώς είναι αφανές. Μόνο τα δημόσια τουτ μπορούν να αναζητηθούν ανά hashtag.", "compose_form.lock_disclaimer": "Ο λογαριασμός σου δεν είναι {locked}. Οποιοσδήποτε μπορεί να σε ακολουθήσει για να δει τις δημοσιεύσεις σας προς τους ακολούθους σας.", "compose_form.lock_disclaimer.lock": "κλειδωμένο", @@ -165,8 +166,9 @@ "empty_column.blocks": "Δεν έχεις αποκλείσει κανέναν χρήστη ακόμα.", "empty_column.bookmarked_statuses": "Δεν έχεις κανένα αποθηκευμένο τουτ ακόμα. Μόλις αποθηκεύσεις κάποιο, θα εμφανιστεί εδώ.", "empty_column.community": "Η τοπική ροή είναι κενή. Γράψε κάτι δημόσιο παραμύθι ν' αρχινίσει!", - "empty_column.direct": "Δεν έχεις προσωπικά μηνύματα ακόμα. Όταν στείλεις ή λάβεις κανένα, θα εμφανιστεί εδώ.", + "empty_column.conversations": "Μόλις στείλετε ή λάβετε μια δημοσίευση που είναι ορατή μόνο σε άτομα που αναφέρονται σε αυτή, θα εμφανιστεί εδώ.", "empty_column.domain_blocks": "Δεν υπάρχουν αποκλεισμένοι τομείς ακόμα.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Δεν έχεις κανένα αγαπημένο τουτ ακόμα. Μόλις αγαπήσεις κάποιο, θα εμφανιστεί εδώ.", "empty_column.favourites": "Κανείς δεν έχει αγαπήσει αυτό το τουτ ακόμα. Μόλις το κάνει κάποια, θα εμφανιστούν εδώ.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Δοκίμασε να τα απενεργοποιήσεις και ανανέωσε τη σελίδα. Αν αυτό δεν βοηθήσει, ίσως να μπορέσεις να χρησιμοποιήσεις το Mastodon μέσω διαφορετικού φυλλομετρητή ή κάποιας εφαρμογής.", "errors.unexpected_crash.copy_stacktrace": "Αντιγραφή μηνυμάτων κώδικα στο πρόχειρο", "errors.unexpected_crash.report_issue": "Αναφορά προβλήματος", + "explore.search_results": "Search results", + "explore.suggested_follows": "Για σένα", + "explore.title": "Εξερεύνηση", + "explore.trending_links": "Νέα", + "explore.trending_statuses": "Αναρτήσεις", + "explore.trending_tags": "Ετικέτες", "follow_recommendations.done": "Ολοκληρώθηκε", "follow_recommendations.heading": "Ακολουθήστε άτομα από τα οποία θα θέλατε να βλέπετε δημοσιεύσεις! Ορίστε μερικές προτάσεις.", "follow_recommendations.lead": "Οι αναρτήσεις των ατόμων που ακολουθείτε θα εμφανίζονται με χρονολογική σειρά στη ροή σας. Μη φοβάστε να κάνετε λάθη, καθώς μπορείτε πολύ εύκολα να σταματήσετε να ακολουθείτε άλλα άτομα οποιαδήποτε στιγμή!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "προώθηση", "keyboard_shortcuts.column": "εμφάνιση της κατάστασης σε μια από τις στήλες", "keyboard_shortcuts.compose": "εστίαση στην περιοχή συγγραφής", + "keyboard_shortcuts.conversations": "για να ανοίξετε στήλη συνομιλιών", "keyboard_shortcuts.description": "Περιγραφή", - "keyboard_shortcuts.direct": "άνοιγμα στήλης απευθείας μηνυμάτων", "keyboard_shortcuts.down": "κίνηση προς τα κάτω στη λίστα", "keyboard_shortcuts.enter": "εμφάνιση κατάστασης", "keyboard_shortcuts.favourite": "σημείωση ως αγαπημένο", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Σελιδοδείκτες", "navigation_bar.community_timeline": "Τοπική ροή", "navigation_bar.compose": "Γράψε νέο τουτ", - "navigation_bar.direct": "Προσωπικά μηνύματα", "navigation_bar.discover": "Ανακάλυψη", "navigation_bar.domain_blocks": "Κρυμμένοι τομείς", "navigation_bar.edit_profile": "Επεξεργασία προφίλ", + "navigation_bar.explore": "Εξερεύνηση", "navigation_bar.favourites": "Αγαπημένα", "navigation_bar.filters": "Αποσιωπημένες λέξεις", "navigation_bar.follow_requests": "Αιτήματα ακολούθησης", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Προτιμήσεις", "navigation_bar.public_timeline": "Ομοσπονδιακή ροή", "navigation_bar.security": "Ασφάλεια", + "notification.admin.sign_up": "{name} έχει εγγραφεί", "notification.favourite": "Ο/Η {name} σημείωσε ως αγαπημένη την κατάστασή σου", "notification.follow": "Ο/Η {name} σε ακολούθησε", "notification.follow_request": "Ο/H {name} ζήτησε να σε παρακολουθεί", @@ -311,6 +320,7 @@ "notification.update": "{name} επεξεργάστηκε μια δημοσίευση", "notifications.clear": "Καθαρισμός ειδοποιήσεων", "notifications.clear_confirmation": "Σίγουρα θέλεις να καθαρίσεις όλες τις ειδοποιήσεις σου;", + "notifications.column_settings.admin.sign_up": "Νέες εγγραφές:", "notifications.column_settings.alert": "Ειδοποιήσεις επιφάνειας εργασίας", "notifications.column_settings.favourite": "Αγαπημένα:", "notifications.column_settings.filter_bar.advanced": "Εμφάνιση όλων των κατηγοριών", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Αφαίρεση δημοσκόπησης", "privacy.change": "Προσαρμογή ιδιωτικότητας δημοσίευσης", "privacy.direct.long": "Δημοσίευση μόνο σε όσους και όσες αναφέρονται", - "privacy.direct.short": "Προσωπικά", + "privacy.direct.short": "Μόνο άτομα που αναφέρω", "privacy.private.long": "Δημοσίευση μόνο στους ακόλουθους", "privacy.private.short": "Μόνο ακόλουθοι", - "privacy.public.long": "Δημοσίευσε στις δημόσιες ροές", + "privacy.public.long": "Ορατό σε όλους", "privacy.public.short": "Δημόσιο", - "privacy.unlisted.long": "Μην δημοσιεύσεις στις δημόσιες ροές", + "privacy.unlisted.long": "Ορατό για όλους, αλλά opted-out των χαρακτηριστικών της ανακάλυψης", "privacy.unlisted.short": "Μη καταχωρημένα", "refresh": "Ανανέωση", "regeneration_indicator.label": "Φορτώνει…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}δ", "relative_time.today": "σήμερα", "reply_indicator.cancel": "Άκυρο", + "report.block": "Αποκλεισμός", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Άλλες", "report.categories.spam": "Ανεπιθύμητα", "report.categories.violation": "Το περιεχόμενο παραβιάζει έναν ή περισσότερους κανόνες διακομιστή", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "προφίλ", + "report.category.title_status": "ανάρτηση", + "report.close": "Τέλος", + "report.comment.title": "Υπάρχει κάτι άλλο που νομίζετε ότι θα πρέπει να γνωρίζουμε;", "report.forward": "Προώθηση προς {target}", "report.forward_hint": "Ο λογαριασμός είναι από διαφορετικό διακομιστή. Να σταλεί ανώνυμο αντίγραφο της καταγγελίας κι εκεί;", - "report.hint": "Η καταγγελία θα σταλεί στους διαχειριστές του κόμβου σου. Μπορείς να περιγράψεις γιατί καταγγέλεις αυτόν το λογαριασμό παρακάτω:", + "report.mute": "Σίγαση", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Επόμενη", "report.placeholder": "Επιπλέον σχόλια", + "report.reasons.dislike": "Δεν μου αρέσει", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Υποβολή", "report.target": "Καταγγελία {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Αναζήτηση", "search_popout.search_format": "Προχωρημένη αναζήτηση", "search_popout.tips.full_text": "Απλό κείμενο που επιστρέφει καταστάσεις που έχεις γράψει, έχεις σημειώσει ως αγαπημένες, έχεις προωθήσει ή έχεις αναφερθεί σε αυτές, καθώς και όσα ονόματα χρηστών και ετικέτες ταιριάζουν.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Απλό κείμενο που επιστρέφει ονόματα και ετικέτες που ταιριάζουν", "search_popout.tips.user": "χρήστης", "search_results.accounts": "Άνθρωποι", + "search_results.all": "Όλα", "search_results.hashtags": "Ετικέτες", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Τουτ", "search_results.statuses_fts_disabled": "Η αναζήτηση τουτ βάσει του περιεχόμενού τους δεν είναι ενεργοποιημένη σε αυτό τον κόμβο.", "search_results.total": "{count, number} {count, plural, zero {αποτελέσματα} one {αποτέλεσμα} other {αποτελέσματα}}", @@ -474,6 +514,7 @@ "upload_error.poll": "Στις δημοσκοπήσεις δεν επιτρέπεται η μεταφόρτωση αρχείου.", "upload_form.audio_description": "Περιγραφή για άτομα με προβλήματα ακοής", "upload_form.description": "Περιέγραψε για όσους & όσες έχουν προβλήματα όρασης", + "upload_form.description_missing": "Δεν προστέθηκε περιγραφή", "upload_form.edit": "Ενημέρωση", "upload_form.thumbnail": "Αλλαγή μικρογραφίας", "upload_form.undo": "Διαγραφή", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 7e5f8db37..5ecd1f5c3 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -18,12 +18,12 @@ "account.followers": "Followers", "account.followers.empty": "No one follows this user yet.", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", - "account.last_status": "Last active", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", @@ -32,7 +32,6 @@ "account.mute": "Mute @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", - "account.never_active": "Never", "account.posts": "Posts", "account.posts_with_replies": "Posts and replies", "account.report": "Report @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Post} other {{counter} Posts}}", "account.unblock": "Unblock @{name}", "account.unblock_domain": "Unblock domain {domain}", + "account.unblock_short": "Unblock", "account.unendorse": "Don't feature on profile", "account.unfollow": "Unfollow", "account.unmute": "Unmute @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", + "account.unmute_short": "Unmute", "account_note.placeholder": "Click to add note", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.conversations": "Conversations", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media Only", "community.column_settings.remote_only": "Remote only", - "compose_form.direct_message_warning": "This post will only be sent to the mentioned users.", "compose_form.direct_message_warning_learn_more": "Learn more", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "locked", @@ -167,8 +168,9 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked posts yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "There are no blocked domains yet.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite posts yet. When you favourite one, it will show up here.", "empty_column.favourites": "No one has favourited this post yet. When someone does, they will show up here.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -187,6 +189,12 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", "errors.unexpected_crash.report_issue": "Report issue", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -224,8 +232,8 @@ "keyboard_shortcuts.boost": "Boost post", "keyboard_shortcuts.column": "Focus column", "keyboard_shortcuts.compose": "Focus compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "Open direct messages column", "keyboard_shortcuts.down": "Move down in the list", "keyboard_shortcuts.enter": "Open post", "keyboard_shortcuts.favourite": "Favourite post", @@ -284,10 +292,10 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new post", - "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Blocked domains", "navigation_bar.edit_profile": "Edit profile", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Favourites", "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", @@ -302,6 +310,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your post", "notification.follow": "{name} followed you", "notification.follow_request": "{name} has requested to follow you", @@ -313,6 +322,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.filter_bar.advanced": "Display all categories", @@ -358,12 +368,12 @@ "poll_button.remove_poll": "Remove poll", "privacy.change": "Change post privacy", "privacy.direct.long": "Visible for mentioned users only", - "privacy.direct.short": "Direct", + "privacy.direct.short": "Only people I mention", "privacy.private.long": "Visible for followers only", - "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all, shown in public timelines", + "privacy.private.short": "Followers only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Public", - "privacy.unlisted.long": "Visible for all, but not in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", @@ -380,15 +390,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "Cancel", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", - "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", "report.placeholder": "Additional comments", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Submit", "report.target": "Reporting {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Search", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns posts you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -397,7 +435,9 @@ "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", "search_popout.tips.user": "user", "search_results.accounts": "People", + "search_results.all": "All", "search_results.hashtags": "Hashtags", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Posts", "search_results.statuses_fts_disabled": "Searching posts by their content is not enabled on this Mastodon server.", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", @@ -480,6 +520,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Delete", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 1039bb695..315c416db 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -18,21 +18,20 @@ "account.followers": "Sekvantoj", "account.followers.empty": "Ankoraŭ neniu sekvas tiun uzanton.", "account.followers_counter": "{count, plural, one{{counter} Sekvanto} other {{counter} Sekvantoj}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} Sekvato} other {{counter} Sekvatoj}}", "account.follows.empty": "Tiu uzanto ankoraŭ ne sekvas iun.", "account.follows_you": "Sekvas vin", "account.hide_reblogs": "Kaŝi diskonigojn de @{name}", "account.joined": "Kuniĝis {date}", - "account.last_status": "Laste aktiva", "account.link_verified_on": "La posedanto de tiu ligilo estis kontrolita je {date}", "account.locked_info": "La privateco de tiu konto estas elektita kiel fermita. La posedanto povas mane akcepti tiun, kiu povas sekvi rin.", - "account.media": "Amaskomunikiloj", + "account.media": "Aŭdovidaĵoj", "account.mention": "Mencii @{name}", "account.moved_to": "{name} moviĝis al:", "account.mute": "Silentigi @{name}", "account.mute_notifications": "Silentigi sciigojn de @{name}", "account.muted": "Silentigita", - "account.never_active": "Neniam", "account.posts": "Mesaĝoj", "account.posts_with_replies": "Kun respondoj", "account.report": "Signali @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Mesaĝo} other {{counter} Mesaĝoj}}", "account.unblock": "Malbloki @{name}", "account.unblock_domain": "Malbloki {domain}", + "account.unblock_short": "Malbloki", "account.unendorse": "Ne montri en profilo", "account.unfollow": "Ne plu sekvi", "account.unmute": "Malsilentigi @{name}", "account.unmute_notifications": "Malsilentigi sciigojn de @{name}", + "account.unmute_short": "Malsilentigi", "account_note.placeholder": "Alklaku por aldoni noton", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "Blokitaj uzantoj", "column.bookmarks": "Legosignoj", "column.community": "Loka templinio", - "column.direct": "Rektaj mesaĝoj", + "column.conversations": "Conversations", "column.directory": "Trarigardi profilojn", "column.domain_blocks": "Blokitaj domajnoj", "column.favourites": "Stelumoj", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Nur loka", "community.column_settings.media_only": "Nur aŭdovidaĵoj", "community.column_settings.remote_only": "Nur malproksima", - "compose_form.direct_message_warning": "Tiu mesaĝo estos sendita nur al menciitaj uzantoj.", "compose_form.direct_message_warning_learn_more": "Lerni pli", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Ĉi tiu mesaĝo ne estos listigita per ajna kradvorto. Nur publikaj mesaĝoj estas serĉeblaj per kradvortoj.", "compose_form.lock_disclaimer": "Via konta ne estas {locked}. Iu ajn povas sekvi vin por vidi viajn mesaĝojn, kiuj estas nur por sekvantoj.", "compose_form.lock_disclaimer.lock": "ŝlosita", @@ -105,7 +106,7 @@ "compose_form.poll.switch_to_single": "Ŝanĝi la balotenketon por permesi unu solan elekton", "compose_form.publish": "Hup", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Konservi ŝanĝojn", "compose_form.sensitive.hide": "Marki la aŭdovidaĵojn kiel tiklaj", "compose_form.sensitive.marked": "Aŭdovidaĵo markita tikla", "compose_form.sensitive.unmarked": "Aŭdovidaĵo ne markita tikla", @@ -124,8 +125,8 @@ "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "confirmations.domain_block.confirm": "Bloki la tutan domajnon", "confirmations.domain_block.message": "Ĉu vi vere, vere certas, ke vi volas tute bloki {domain}? Plej ofte, trafa blokado kaj silentigado sufiĉas kaj preferindas. Vi ne vidos enhavon de tiu domajno en publika templinio aŭ en viaj sciigoj. Viaj sekvantoj de tiu domajno estos forigitaj.", - "confirmations.logout.confirm": "Elsaluti", - "confirmations.logout.message": "Ĉu vi certas ke vi volas elsaluti?", + "confirmations.logout.confirm": "Adiaŭi", + "confirmations.logout.message": "Ĉu vi certas ke vi volas adiaŭi?", "confirmations.mute.confirm": "Silentigi", "confirmations.mute.explanation": "Ĉi-tio kaŝos mesaĝojn el ili kaj mesaĝojn kiuj mencias ilin, sed ili ankoraŭ rajtos vidi viajn mesaĝojn kaj sekvi vin.", "confirmations.mute.message": "Ĉu vi certas, ke vi volas silentigi {name}?", @@ -165,11 +166,12 @@ "empty_column.blocks": "Vi ankoraŭ ne blokis uzanton.", "empty_column.bookmarked_statuses": "Vi ankoraŭ ne aldonis mesaĝon al viaj legosignoj. Kiam vi aldonos iun, tiu aperos ĉi tie.", "empty_column.community": "La loka templinio estas malplena. Skribu ion por plenigi ĝin!", - "empty_column.direct": "Vi ankoraŭ ne havas rektan mesaĝon. Kiam vi sendos aŭ ricevos iun, ĝi aperos ĉi tie.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Ankoraŭ neniu domajno estas blokita.", + "empty_column.explore_statuses": "Nenio tendencas nun. Rekontrolu poste!", "empty_column.favourited_statuses": "Vi ankoraŭ ne stelumis mesaĝon. Kiam vi stelumos iun, tiu aperos ĉi tie.", "empty_column.favourites": "Ankoraŭ neniu stelumis tiun mesaĝon. Kiam iu faros tion, tiu aperos ĉi tie.", - "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", + "empty_column.follow_recommendations": "Ŝajnas, ke neniuj sugestoj povis esti generitaj por vi. Vi povas provi uzi serĉon por serĉi homojn, kiujn vi eble konas, aŭ esplori tendencajn kradvortojn.", "empty_column.follow_requests": "Vi ne ankoraŭ havas iun peton de sekvado. Kiam vi ricevos unu, ĝi aperos ĉi tie.", "empty_column.hashtag": "Ankoraŭ estas nenio per ĉi tiu kradvorto.", "empty_column.home": "Via hejma tempolinio estas malplena! Vizitu {public} aŭ uzu la serĉilon por renkonti aliajn uzantojn.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Provu malaktivigi ilin kaj tiam refreŝigi la paĝon. Se tio ne helpas, vi ankoraŭ povus uzi Mastodon per malsama retumilo aŭ operaciuma aplikajo.", "errors.unexpected_crash.copy_stacktrace": "Kopii stakspuron en tondujo", "errors.unexpected_crash.report_issue": "Raporti problemon", + "explore.search_results": "Serĉaj rezultoj", + "explore.suggested_follows": "Por vi", + "explore.title": "Esplori", + "explore.trending_links": "Novaĵoj", + "explore.trending_statuses": "Afiŝoj", + "explore.trending_tags": "Kradvortoj", "follow_recommendations.done": "Farita", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "diskonigi", "keyboard_shortcuts.column": "fokusi mesaĝon en unu el la kolumnoj", "keyboard_shortcuts.compose": "enfokusigi la tekstujon", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Priskribo", - "keyboard_shortcuts.direct": "malfermi la kolumnon de rektaj mesaĝoj", "keyboard_shortcuts.down": "iri suben en la listo", "keyboard_shortcuts.enter": "malfermi mesaĝon", "keyboard_shortcuts.favourite": "stelumi", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Legosignoj", "navigation_bar.community_timeline": "Loka templinio", "navigation_bar.compose": "Skribi novan mesaĝon", - "navigation_bar.direct": "Rektaj mesaĝoj", "navigation_bar.discover": "Esplori", "navigation_bar.domain_blocks": "Blokitaj domajnoj", "navigation_bar.edit_profile": "Redakti profilon", + "navigation_bar.explore": "Esplori", "navigation_bar.favourites": "Stelumoj", "navigation_bar.filters": "Silentigitaj vortoj", "navigation_bar.follow_requests": "Petoj de sekvado", @@ -293,13 +301,14 @@ "navigation_bar.info": "Pri ĉi tiu servilo", "navigation_bar.keyboard_shortcuts": "Rapidklavoj", "navigation_bar.lists": "Listoj", - "navigation_bar.logout": "Elsaluti", + "navigation_bar.logout": "Adiaŭi", "navigation_bar.mutes": "Silentigitaj uzantoj", "navigation_bar.personal": "Persone", "navigation_bar.pins": "Alpinglitaj mesaĝoj", "navigation_bar.preferences": "Preferoj", "navigation_bar.public_timeline": "Fratara templinio", "navigation_bar.security": "Sekureco", + "notification.admin.sign_up": "{name} registris", "notification.favourite": "{name} stelumis vian mesaĝon", "notification.follow": "{name} eksekvis vin", "notification.follow_request": "{name} petis sekvi vin", @@ -308,9 +317,10 @@ "notification.poll": "Partoprenita balotenketo finiĝis", "notification.reblog": "{name} diskonigis vian mesaĝon", "notification.status": "{name} ĵus afiŝita", - "notification.update": "{name} edited a post", + "notification.update": "{name} redaktis afiŝon", "notifications.clear": "Forviŝi sciigojn", "notifications.clear_confirmation": "Ĉu vi certas, ke vi volas porĉiame forviŝi ĉiujn viajn sciigojn?", + "notifications.column_settings.admin.sign_up": "Novaj registriĝoj:", "notifications.column_settings.alert": "Retumilaj sciigoj", "notifications.column_settings.favourite": "Stelumoj:", "notifications.column_settings.filter_bar.advanced": "Montri ĉiujn kategoriojn", @@ -326,8 +336,8 @@ "notifications.column_settings.sound": "Eligi sonon", "notifications.column_settings.status": "Novaj mesaĝoj:", "notifications.column_settings.unread_notifications.category": "Nelegitaj sciigoj", - "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.unread_notifications.highlight": "Marki nelegitajn sciigojn", + "notifications.column_settings.update": "Redaktoj:", "notifications.filter.all": "Ĉiuj", "notifications.filter.boosts": "Diskonigoj", "notifications.filter.favourites": "Stelumoj", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Forigi balotenketon", "privacy.change": "Agordi mesaĝan privatecon", "privacy.direct.long": "Videbla nur al menciitaj uzantoj", - "privacy.direct.short": "Rekta", + "privacy.direct.short": "Direct", "privacy.private.long": "Videbla nur al viaj sekvantoj", - "privacy.private.short": "Nur al sekvantoj", - "privacy.public.long": "Videbla al ĉiuj, afiŝita en publikaj templinioj", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Publika", - "privacy.unlisted.long": "Videbla al ĉiuj, sed ne en publikaj templinioj", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Nelistigita", "refresh": "Refreŝigu", "regeneration_indicator.label": "Ŝargado…", @@ -369,7 +379,7 @@ "relative_time.days": "{number}t", "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", + "relative_time.full.just_now": "ĵus nun", "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}h", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "hodiaŭ", "reply_indicator.cancel": "Nuligi", - "report.categories.other": "Other", - "report.categories.spam": "Spam", + "report.block": "Bloki", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.categories.other": "Aliaj", + "report.categories.spam": "Spamo", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Elektu la plej bonan kongruon", + "report.category.title": "Diru al ni kio okazas pri ĉi tiu {type}", + "report.category.title_account": "profilo", + "report.category.title_status": "afiŝo", + "report.close": "Farita", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Plusendi al {target}", "report.forward_hint": "La konto estas en alia servilo. Ĉu sendi sennomigitan kopion de la signalo ankaŭ tien?", - "report.hint": "La signalo estos sendita al la kontrolantoj de via servilo. Vi povas doni klarigon pri kial vi signalas ĉi tiun konton sube:", + "report.mute": "Silentigi", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Sekva", "report.placeholder": "Pliaj komentoj", + "report.reasons.dislike": "Mi ne ŝatas ĝin", + "report.reasons.dislike_description": "Ĝi ne estas io, kiun vi volas vidi", + "report.reasons.other": "Io alia", + "report.reasons.other_description": "La problemo ne taŭgas en aliaj kategorioj", + "report.reasons.spam": "Ĝi estas trudaĵo", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "Ĝi malrespektas servilajn regulojn", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Elektu ĉiujn, kiuj validas", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Elektu ĉiujn, kiuj validas", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Sendi", "report.target": "Signali {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Ĉu vi ne volas vidi ĉi tion?", + "report.thanks.title_actionable": "Dankon pro raporti, ni esploros ĉi tion.", + "report.unfollow": "Malsekvi @{name}", + "report.unfollow_explanation": "Vi estas sekvanta ĉi tiun konton. Por ne plu vidi ties afiŝojn en via hejma templinio, malsekvu ilin.", "search.placeholder": "Serĉi", "search_popout.search_format": "Detala serĉo", "search_popout.tips.full_text": "Simplaj tekstoj montras la mesaĝojn, kiujn vi skribis, stelumis, diskonigis, aŭ en kiuj vi estis menciita, sed ankaŭ kongruajn uzantnomojn, montratajn nomojn, kaj kradvortojn.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Simpla teksto montras la kongruajn afiŝitajn nomojn, uzantnomojn kaj kradvortojn", "search_popout.tips.user": "uzanto", "search_results.accounts": "Homoj", + "search_results.all": "Ĉiuj", "search_results.hashtags": "Kradvortoj", + "search_results.nothing_found": "Povis trovi nenion por ĉi tiuj serĉaj terminoj", "search_results.statuses": "Mesaĝoj", "search_results.statuses_fts_disabled": "Serĉi mesaĝojn laŭ enhavo ne estas ebligita en ĉi tiu Mastodon-servilo.", "search_results.total": "{count, number} {count, plural, one {rezulto} other {rezultoj}}", @@ -409,14 +449,14 @@ "status.delete": "Forigi", "status.detailed_status": "Detala konversacia vido", "status.direct": "Rekte mesaĝi @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Redakti", + "status.edited": "Redaktita {date}", + "status.edited_x_times": "Redactita {count, plural, one {{count} fojon} other {{count} fojojn}}", "status.embed": "Enkorpigi", "status.favourite": "Stelumi", "status.filtered": "Filtrita", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} kreis {date}", + "status.history.edited": "{name} redaktis {date}", "status.load_more": "Ŝargi pli", "status.media_hidden": "Aŭdovidaĵo kaŝita", "status.mention": "Mencii @{name}", @@ -474,6 +514,7 @@ "upload_error.poll": "Alŝuto de dosiero ne permesita kun balotenketo.", "upload_form.audio_description": "Priskribi por homoj kiuj malfacile aŭdi", "upload_form.description": "Priskribi por misvidantaj homoj", + "upload_form.description_missing": "Neniu priskribo aldonita", "upload_form.edit": "Redakti", "upload_form.thumbnail": "Ŝanĝi etigita bildo", "upload_form.undo": "Forigi", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 24902a058..1eac00cff 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -18,12 +18,12 @@ "account.followers": "Seguidores", "account.followers.empty": "Todavía nadie sigue a este usuario.", "account.followers_counter": "{count, plural, one {{counter} Seguidor} other {{counter} Seguidores}}", + "account.following": "Siguiendo", "account.following_counter": "{count, plural, other {{counter} Siguiendo}}", "account.follows.empty": "Todavía este usuario no sigue a nadie.", "account.follows_you": "Te sigue", "account.hide_reblogs": "Ocultar adhesiones de @{name}", "account.joined": "En este servidor desde {date}", - "account.last_status": "Última actividad", "account.link_verified_on": "La propiedad de este enlace fue verificada el {date}", "account.locked_info": "Esta cuenta es privada. El propietario manualmente revisa quién puede seguirle.", "account.media": "Medios", @@ -32,9 +32,8 @@ "account.mute": "Silenciar a @{name}", "account.mute_notifications": "Silenciar notificaciones de @{name}", "account.muted": "Silenciado", - "account.never_active": "Nunca", "account.posts": "Mensajes", - "account.posts_with_replies": "Mensajes y respuestas", + "account.posts_with_replies": "Mensajes y respuestas públicas", "account.report": "Denunciar a @{name}", "account.requested": "Esperando aprobación. Hacé clic para cancelar la solicitud de seguimiento", "account.share": "Compartir el perfil de @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Mensaje} other {{counter} Mensajes}}", "account.unblock": "Desbloquear a @{name}", "account.unblock_domain": "Desbloquear dominio {domain}", + "account.unblock_short": "Desbloquear", "account.unendorse": "No destacar en el perfil", "account.unfollow": "Dejar de seguir", "account.unmute": "Dejar de silenciar a @{name}", "account.unmute_notifications": "Dejar de silenciar las notificaciones de @{name}", + "account.unmute_short": "Dejar de silenciar", "account_note.placeholder": "Hacé clic par agregar una nota", "admin.dashboard.daily_retention": "Tasa de retención de usuarios por día, después del registro", "admin.dashboard.monthly_retention": "Tasa de retención de usuarios por mes, después del registro", @@ -69,7 +70,7 @@ "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", "column.community": "Línea temporal local", - "column.direct": "Mensajes directos", + "column.conversations": "Conversaciones", "column.directory": "Explorar perfiles", "column.domain_blocks": "Dominios bloqueados", "column.favourites": "Favoritos", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Sólo local", "community.column_settings.media_only": "Sólo medios", "community.column_settings.remote_only": "Sólo remoto", - "compose_form.direct_message_warning": "Este mensaje sólo será enviado a los usuarios mencionados.", "compose_form.direct_message_warning_learn_more": "Aprendé más", + "compose_form.encryption_warning": "Los mensajes en Mastodon no están cifrados de extremo a extremo. No comparta ninguna información sensible al usar Mastodon.", "compose_form.hashtag_warning": "Este mensaje no se mostrará bajo ninguna etiqueta porque no es público. Sólo los mensajes públicos se pueden buscar por etiquetas.", "compose_form.lock_disclaimer": "Tu cuenta no es {locked}. Todos pueden seguirte para ver tus mensajes marcados como \"Sólo para seguidores\".", "compose_form.lock_disclaimer.lock": "privada", @@ -165,8 +166,9 @@ "empty_column.blocks": "Todavía no bloqueaste a ningún usuario.", "empty_column.bookmarked_statuses": "Todavía no tenés mensajes guardados en \"Marcadores\". Cuando guardés uno en \"Marcadores\", se mostrará acá.", "empty_column.community": "La línea temporal local está vacía. ¡Escribí algo en modo público para que se empiece a correr la bola!", - "empty_column.direct": "Todavía no tenés ningún mensaje directo. Cuando enviés o recibás uno, se mostrará acá.", + "empty_column.conversations": "Una vez que enviés o recibás un mensaje que sólo sea visible para la gente mencionada en él, aparecerá aquí.", "empty_column.domain_blocks": "Todavía no hay dominios bloqueados.", + "empty_column.explore_statuses": "No hay nada en tendencia ahora mismo. ¡Volvé a revisar más tarde!", "empty_column.favourited_statuses": "Todavía no tenés mensajes favoritos. Cuando marqués uno como favorito, se mostrará acá.", "empty_column.favourites": "Todavía nadie marcó este mensaje como favorito. Cuando alguien lo haga, se mostrará acá.", "empty_column.follow_recommendations": "Parece que no se pudieron generar sugerencias para vos. Podés intentar buscar gente que conozcas o explorar las tendencias de las etiquetas.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Intentá deshabilitarlos y recargá la página. Si eso no ayuda, podés usar Mastodon a través de un navegador web diferente o aplicación nativa.", "errors.unexpected_crash.copy_stacktrace": "Copiar stacktrace al portapapeles", "errors.unexpected_crash.report_issue": "Informar problema", + "explore.search_results": "Resultados de búsqueda", + "explore.suggested_follows": "Para vos", + "explore.title": "Explorá", + "explore.trending_links": "Noticias", + "explore.trending_statuses": "Mensajes", + "explore.trending_tags": "Etiquetas", "follow_recommendations.done": "Listo", "follow_recommendations.heading": "¡Seguí cuentas cuyos mensajes te gustaría ver! Acá tenés algunas sugerencias.", "follow_recommendations.lead": "Los mensajes de las cuentas que seguís aparecerán en orden cronológico en la columna \"Inicio\". No tengás miedo de meter la pata, ¡podés dejar de seguir cuentas fácilmente en cualquier momento!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "Adherir al mensaje", "keyboard_shortcuts.column": "Enfocar columna", "keyboard_shortcuts.compose": "Enfocar el área de texto de redacción", + "keyboard_shortcuts.conversations": "para abrir la columna de conversaciones", "keyboard_shortcuts.description": "Descripción", - "keyboard_shortcuts.direct": "Abrir columna de mensajes directos", "keyboard_shortcuts.down": "Bajar en la lista", "keyboard_shortcuts.enter": "Abrir mensaje", "keyboard_shortcuts.favourite": "Marcar mensaje como favorito", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Línea temporal local", "navigation_bar.compose": "Redactar un nuevo mensaje", - "navigation_bar.direct": "Mensajes directos", "navigation_bar.discover": "Descubrir", "navigation_bar.domain_blocks": "Dominios bloqueados", "navigation_bar.edit_profile": "Editar perfil", + "navigation_bar.explore": "Explorá", "navigation_bar.favourites": "Favoritos", "navigation_bar.filters": "Palabras silenciadas", "navigation_bar.follow_requests": "Solicitudes de seguimiento", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Configuración", "navigation_bar.public_timeline": "Línea temporal federada", "navigation_bar.security": "Seguridad", + "notification.admin.sign_up": "Se registró {name}", "notification.favourite": "{name} marcó tu mensaje como favorito", "notification.follow": "{name} te empezó a seguir", "notification.follow_request": "{name} solicitó seguirte", @@ -311,6 +320,7 @@ "notification.update": "{name} editó un mensaje", "notifications.clear": "Limpiar notificaciones", "notifications.clear_confirmation": "¿Estás seguro que querés limpiar todas tus notificaciones permanentemente?", + "notifications.column_settings.admin.sign_up": "Nuevos registros:", "notifications.column_settings.alert": "Notificaciones de escritorio", "notifications.column_settings.favourite": "Favoritos:", "notifications.column_settings.filter_bar.advanced": "Mostrar todas las categorías", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Quitar encuesta", "privacy.change": "Configurar privacidad del mensaje", "privacy.direct.long": "Visible sólo para los usuarios mencionados", - "privacy.direct.short": "Directo", + "privacy.direct.short": "Sólo a las cuentas que menciono", "privacy.private.long": "Visible sólo para los seguidores", "privacy.private.short": "Sólo para seguidores", - "privacy.public.long": "Visible para todos, mostrado en las líneas temporales públicas", + "privacy.public.long": "Visible para todos", "privacy.public.short": "Público", - "privacy.unlisted.long": "Visible para todos, pero no en las líneas temporales públicas", + "privacy.unlisted.long": "Visible para todos, pero excluido de las características de descubrimiento", "privacy.unlisted.short": "No listado", "refresh": "Refrescar", "regeneration_indicator.label": "Cargando…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "hoy", "reply_indicator.cancel": "Cancelar", + "report.block": "Bloquear", + "report.block_explanation": "No verás sus mensajes. No podrán ver tus mensajes ni seguirte. Se van a dar cuentra de que están bloqueados.", "report.categories.other": "Otra", "report.categories.spam": "Spam", "report.categories.violation": "El contenido viola una o más reglas del servidor", + "report.category.subtitle": "Elegí la mejor coincidencia", + "report.category.title": "Contanos lo que pasa con este {type}", + "report.category.title_account": "perfil", + "report.category.title_status": "mensaje", + "report.close": "Listo", + "report.comment.title": "¿Hay algo más que creés que deberíamos saber?", "report.forward": "Reenviar a {target}", "report.forward_hint": "La cuenta es de otro servidor. ¿Querés enviar una copia anonimizada del informe también ahí?", - "report.hint": "La denuncia se enviará a los moderadores de tu servidor. A continuación, podés proporcionar una explicación de por qué estás denunciando esta cuenta:", + "report.mute": "Silenciar", + "report.mute_explanation": "No verás sus mensajes. Todavía pueden seguirte y ver tus mensajes y no sabrán que están silenciados.", + "report.next": "Siguiente", "report.placeholder": "Comentarios adicionales", + "report.reasons.dislike": "No me gusta", + "report.reasons.dislike_description": "No es algo que querés ver", + "report.reasons.other": "Es otra cosa", + "report.reasons.other_description": "El problema no aplica en otras categorías", + "report.reasons.spam": "Es spam", + "report.reasons.spam_description": "Enlaces maliciosos, interacciones falsas o respuestas repetitivas", + "report.reasons.violation": "Viola las reglas del servidor", + "report.reasons.violation_description": "Sos consciente de que infringe normas específicas", + "report.rules.subtitle": "Seleccioná todo lo que corresponda", + "report.rules.title": "¿Qué reglas se están violando?", + "report.statuses.subtitle": "Seleccioná todo lo que corresponda", + "report.statuses.title": "¿Hay algún mensaje que respalde esta denuncia?", "report.submit": "Enviar", "report.target": "Denunciando a {target}", + "report.thanks.take_action": "Acá están tus opciones para controlar lo que ves en Mastodon:", + "report.thanks.take_action_actionable": "Mientras revisamos esto, podés tomar medidas contra @{name}:", + "report.thanks.title": "¿No querés ver esto?", + "report.thanks.title_actionable": "Gracias por tu denuncia, vamos a revisarla.", + "report.unfollow": "Dejar de seguir a @{name}", + "report.unfollow_explanation": "Estás siguiendo a esta cuenta. Para no ver sus mensajes en tu línea temporal principal, dejá de seguirla.", "search.placeholder": "Buscar", "search_popout.search_format": "Formato de búsqueda avanzada", "search_popout.tips.full_text": "Las búsquedas de texto simple devuelven los mensajes que escribiste, los marcados como favoritos, los adheridos o en los que te mencionaron, así como nombres de usuarios, nombres mostrados y etiquetas.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Las búsquedas de texto simple devuelven nombres de usuarios, nombres mostrados y etiquetas que coincidan", "search_popout.tips.user": "usuario", "search_results.accounts": "Gente", + "search_results.all": "Todos", "search_results.hashtags": "Etiquetas", + "search_results.nothing_found": "No se pudo encontrar nada para estos términos de búsqueda", "search_results.statuses": "Mensajes", "search_results.statuses_fts_disabled": "No se pueden buscar mensajes por contenido en este servidor de Mastodon.", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", @@ -474,6 +514,7 @@ "upload_error.poll": "No se permite la subida de archivos en encuestas.", "upload_form.audio_description": "Agregá una descripción para personas con dificultades auditivas", "upload_form.description": "Agregá una descripción para personas con dificultades visuales", + "upload_form.description_missing": "No se agregó descripción", "upload_form.edit": "Editar", "upload_form.thumbnail": "Cambiar miniatura", "upload_form.undo": "Eliminar", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index ad967f4e9..c51ed52a6 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -4,7 +4,7 @@ "account.badges.bot": "Bot", "account.badges.group": "Grupo", "account.block": "Bloquear a @{name}", - "account.block_domain": "Ocultar todo de {domain}", + "account.block_domain": "Bloquear dominio {domain}", "account.blocked": "Bloqueado", "account.browse_more_on_origin_server": "Ver más en el perfil original", "account.cancel_follow_request": "Cancelar la solicitud de seguimiento", @@ -13,42 +13,43 @@ "account.domain_blocked": "Dominio oculto", "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificarme cuando @{name} publique algo", - "account.endorse": "Mostrar en perfil", + "account.endorse": "Destacar en mi perfil", "account.follow": "Seguir", "account.followers": "Seguidores", "account.followers.empty": "Todavía nadie sigue a este usuario.", "account.followers_counter": "{count, plural, one {{counter} Seguidor} other {{counter} Seguidores}}", + "account.following": "Siguiendo", "account.following_counter": "{count, plural, other {{counter} Siguiendo}}", "account.follows.empty": "Este usuario todavía no sigue a nadie.", "account.follows_you": "Te sigue", "account.hide_reblogs": "Ocultar retoots de @{name}", "account.joined": "Se unió el {date}", - "account.last_status": "Última actividad", "account.link_verified_on": "El proprietario de este link fue comprobado el {date}", "account.locked_info": "El estado de privacidad de esta cuenta està configurado como bloqueado. El proprietario debe revisar manualmente quien puede seguirle.", "account.media": "Multimedia", - "account.mention": "Mencionar a @{name}", + "account.mention": "Mencionar @{name}", "account.moved_to": "{name} se ha mudado a:", "account.mute": "Silenciar a @{name}", "account.mute_notifications": "Silenciar notificaciones de @{name}", "account.muted": "Silenciado", - "account.never_active": "Nunca", - "account.posts": "Toots", - "account.posts_with_replies": "Toots con respuestas", + "account.posts": "Publicaciones", + "account.posts_with_replies": "Publicaciones y respuestas", "account.report": "Reportar a @{name}", - "account.requested": "Esperando aprobación", + "account.requested": "Esperando aprobación. Haga clic para cancelar la solicitud de seguimiento", "account.share": "Compartir el perfil de @{name}", "account.show_reblogs": "Mostrar retoots de @{name}", "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "Desbloquear a @{name}", "account.unblock_domain": "Mostrar a {domain}", + "account.unblock_short": "Desbloquear", "account.unendorse": "No mostrar en el perfil", "account.unfollow": "Dejar de seguir", "account.unmute": "Dejar de silenciar a @{name}", "account.unmute_notifications": "Dejar de silenciar las notificaciones de @{name}", + "account.unmute_short": "Desmutear", "account_note.placeholder": "Clic para añadir nota", - "admin.dashboard.daily_retention": "Tasa de retención de usuarios por día después del registro", - "admin.dashboard.monthly_retention": "Tasa de retención de usuarios por mes después del registro", + "admin.dashboard.daily_retention": "Tasa de retención de usuarios por día después de unirse", + "admin.dashboard.monthly_retention": "Tasa de retención de usuarios por mes después de unirse", "admin.dashboard.retention.average": "Promedio", "admin.dashboard.retention.cohort": "Mes de registro", "admin.dashboard.retention.cohort_size": "Nuevos usuarios", @@ -69,7 +70,7 @@ "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", "column.community": "Línea de tiempo local", - "column.direct": "Mensajes directos", + "column.conversations": "Conversations", "column.directory": "Buscar perfiles", "column.domain_blocks": "Dominios ocultados", "column.favourites": "Favoritos", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Solo local", "community.column_settings.media_only": "Solo media", "community.column_settings.remote_only": "Solo remoto", - "compose_form.direct_message_warning": "Este toot solo será enviado a los usuarios mencionados.", "compose_form.direct_message_warning_learn_more": "Aprender mas", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Este toot no se mostrará bajo hashtags porque no es público. Sólo los toots públicos se pueden buscar por hashtag.", "compose_form.lock_disclaimer": "Tu cuenta no está bloqueada. Todos pueden seguirte para ver tus toots solo para seguidores.", "compose_form.lock_disclaimer.lock": "bloqueado", @@ -165,8 +166,9 @@ "empty_column.blocks": "Aún no has bloqueado a ningún usuario.", "empty_column.bookmarked_statuses": "Aún no tienes ningún toot guardado como marcador. Cuando guardes uno, se mostrará aquí.", "empty_column.community": "La línea de tiempo local está vacía. ¡Escribe algo para empezar la fiesta!", - "empty_column.direct": "Aún no tienes ningún mensaje directo. Cuando envíes o recibas uno, se mostrará aquí.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Todavía no hay dominios ocultos.", + "empty_column.explore_statuses": "Nada es tendencia en este momento. ¡Revisa más tarde!", "empty_column.favourited_statuses": "Aún no tienes toots preferidos. Cuando marques uno como favorito, aparecerá aquí.", "empty_column.favourites": "Nadie ha marcado este toot como preferido. Cuando alguien lo haga, aparecerá aquí.", "empty_column.follow_recommendations": "Parece que no se ha podido generar ninguna sugerencia para ti. Puedes probar a buscar a gente que quizá conozcas o explorar los hashtags que están en tendencia.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Intenta deshabilitarlos y recarga la página. Si eso no ayuda, podrías usar Mastodon a través de un navegador web diferente o aplicación nativa.", "errors.unexpected_crash.copy_stacktrace": "Copiar el seguimiento de pila en el portapapeles", "errors.unexpected_crash.report_issue": "Informar de un problema/error", + "explore.search_results": "Resultados de búsqueda", + "explore.suggested_follows": "Para ti", + "explore.title": "Descubrir", + "explore.trending_links": "Noticias", + "explore.trending_statuses": "Publicaciones", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Hecho", "follow_recommendations.heading": "¡Sigue a gente que publique cosas que te gusten! Aquí tienes algunas sugerencias.", "follow_recommendations.lead": "Las publicaciones de la gente a la que sigas aparecerán ordenadas cronológicamente en Inicio. No tengas miedo de cometer errores, ¡puedes dejarles de seguir en cualquier momento con la misma facilidad!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "retootear", "keyboard_shortcuts.column": "enfocar un estado en una de las columnas", "keyboard_shortcuts.compose": "enfocar el área de texto de redacción", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Descripción", - "keyboard_shortcuts.direct": "abrir la columna de mensajes directos", "keyboard_shortcuts.down": "mover hacia abajo en la lista", "keyboard_shortcuts.enter": "abrir estado", "keyboard_shortcuts.favourite": "añadir a favoritos", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Historia local", "navigation_bar.compose": "Escribir un nuevo toot", - "navigation_bar.direct": "Mensajes directos", "navigation_bar.discover": "Descubrir", "navigation_bar.domain_blocks": "Dominios ocultos", "navigation_bar.edit_profile": "Editar perfil", + "navigation_bar.explore": "Explorar", "navigation_bar.favourites": "Favoritos", "navigation_bar.filters": "Palabras silenciadas", "navigation_bar.follow_requests": "Solicitudes para seguirte", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Preferencias", "navigation_bar.public_timeline": "Historia federada", "navigation_bar.security": "Seguridad", + "notification.admin.sign_up": "{name} se unio", "notification.favourite": "{name} marcó tu estado como favorito", "notification.follow": "{name} te empezó a seguir", "notification.follow_request": "{name} ha solicitado seguirte", @@ -308,9 +317,10 @@ "notification.poll": "Una encuesta en la que has votado ha terminado", "notification.reblog": "{name} ha retooteado tu estado", "notification.status": "{name} acaba de publicar", - "notification.update": "{name} edited a post", + "notification.update": "{name} editó una publicación", "notifications.clear": "Limpiar notificaciones", "notifications.clear_confirmation": "¿Seguro que quieres limpiar permanentemente todas tus notificaciones?", + "notifications.column_settings.admin.sign_up": "Registros nuevos:", "notifications.column_settings.alert": "Notificaciones de escritorio", "notifications.column_settings.favourite": "Favoritos:", "notifications.column_settings.filter_bar.advanced": "Mostrar todas las categorías", @@ -327,7 +337,7 @@ "notifications.column_settings.status": "Nuevos toots:", "notifications.column_settings.unread_notifications.category": "Notificaciones sin leer", "notifications.column_settings.unread_notifications.highlight": "Destacar notificaciones no leídas", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.update": "Ediciones:", "notifications.filter.all": "Todos", "notifications.filter.boosts": "Retoots", "notifications.filter.favourites": "Favoritos", @@ -351,42 +361,70 @@ "poll.total_votes": "{count, plural, one {# voto} other {# votos}}", "poll.vote": "Votar", "poll.voted": "Has votado a favor de esta respuesta", - "poll.votes": "{votes, plural, one {# voto} other {# votos}}", + "poll.votes": "{votes, plural, one {# voto} other {# votes}}", "poll_button.add_poll": "Añadir una encuesta", "poll_button.remove_poll": "Eliminar encuesta", "privacy.change": "Ajustar privacidad", "privacy.direct.long": "Sólo mostrar a los usuarios mencionados", - "privacy.direct.short": "Directo", + "privacy.direct.short": "Direct", "privacy.private.long": "Sólo mostrar a seguidores", - "privacy.private.short": "Privado", - "privacy.public.long": "Mostrar en la historia federada", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Público", - "privacy.unlisted.long": "No mostrar en la historia federada", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "No listado", "refresh": "Actualizar", "regeneration_indicator.label": "Cargando…", "regeneration_indicator.sublabel": "¡Tu historia de inicio se está preparando!", "relative_time.days": "{number} d", - "relative_time.full.days": "hace {number, plural, one {# día} other {# días}}", - "relative_time.full.hours": "hace {number, plural, one {# hora} other {# horas}}", + "relative_time.full.days": "{number, plural, one {# día} other {# días hace}}", + "relative_time.full.hours": "{number, plural, one {# hora} other {# horas}} hace", "relative_time.full.just_now": "justo ahora", - "relative_time.full.minutes": "hace {number, plural, one {# minuto} other {# minutos}}", - "relative_time.full.seconds": "hace {number, plural, one {# segundo} other {# segundos}}", + "relative_time.full.minutes": "Hace {number, plural, one {# minute} other {# minutos}}", + "relative_time.full.seconds": "Hace {number, plural, one {# second} other {# segundos}}", "relative_time.hours": "{number} h", "relative_time.just_now": "ahora", "relative_time.minutes": "{number} m", "relative_time.seconds": "{number} s", "relative_time.today": "hoy", "reply_indicator.cancel": "Cancelar", - "report.categories.other": "Otros", + "report.block": "Bloquear", + "report.block_explanation": "No veras sus publicaciones. No podrán ver tus publicaciones ni seguirte. Podrán saber que están bloqueados.", + "report.categories.other": "Otro", "report.categories.spam": "Spam", "report.categories.violation": "El contenido viola una o más reglas del servidor", + "report.category.subtitle": "Selecciona la mejor coincidencia", + "report.category.title": "Cuéntanos lo que sucede con este {type}", + "report.category.title_account": "perfil", + "report.category.title_status": "publicación", + "report.close": "Realizado", + "report.comment.title": "¿Hay algo más que usted cree que debamos saber?", "report.forward": "Reenviar a {target}", "report.forward_hint": "Esta cuenta es de otro servidor. ¿Enviar una copia anonimizada del informe allí también?", - "report.hint": "El informe se enviará a los moderadores de tu instancia. Puedes proporcionar una explicación de por qué informas sobre esta cuenta a continuación:", + "report.mute": "Silenciar", + "report.mute_explanation": "No veras sus publiaciones. Todavía pueden seguirte y ver tus publicaciones y no sabrán que están silenciados.", + "report.next": "Siguiente", "report.placeholder": "Comentarios adicionales", + "report.reasons.dislike": "No me gusta", + "report.reasons.dislike_description": "No es algo que desee ver", + "report.reasons.other": "Es algo más", + "report.reasons.other_description": "El problema no encaja en otras categorías", + "report.reasons.spam": "Es spam", + "report.reasons.spam_description": "Enlaces maliciosos, Interacciones falsas, o respuestas repetitivas", + "report.reasons.violation": "Viola las reglas del servidor", + "report.reasons.violation_description": "Es consciente de que infringe normas específicas", + "report.rules.subtitle": "Selecciona todos los que apliquen", + "report.rules.title": "¿Qué reglas se están violando?", + "report.statuses.subtitle": "Seleccione todos lo que aplican", + "report.statuses.title": "¿Hay alguna publicación que respalde este informe?", "report.submit": "Publicar", "report.target": "Reportando", + "report.thanks.take_action": "Aqui hay algunas opciones para controlar lo que ves en Mastodon:", + "report.thanks.take_action_actionable": "Mientras revisamos esto, puedes tomar medidas contra @{name}:", + "report.thanks.title": "¿No quieres ver esto?", + "report.thanks.title_actionable": "Gracias por informar, estudiaremos esto.", + "report.unfollow": "Dejar de seguir @{name}", + "report.unfollow_explanation": "Estás siguiendo esta cuenta. Para no ver sus publicaciones en tu sección de noticias, deja de seguirlo.", "search.placeholder": "Buscar", "search_popout.search_format": "Formato de búsqueda avanzada", "search_popout.tips.full_text": "Búsquedas de texto recuperan posts que has escrito, marcado como favoritos, retooteado o en los que has sido mencionado, así como usuarios, nombres y hashtags.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "El texto simple devuelve correspondencias de nombre, usuario y hashtag", "search_popout.tips.user": "usuario", "search_results.accounts": "Gente", + "search_results.all": "Todos", "search_results.hashtags": "Etiquetas", + "search_results.nothing_found": "No se pudo encontrar nada para estos términos de busqueda", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Buscar toots por su contenido no está disponible en este servidor de Mastodon.", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", @@ -411,12 +451,12 @@ "status.direct": "Mensaje directo a @{name}", "status.edit": "Editar", "status.edited": "Editado {date}", - "status.edited_x_times": "Editado {count, plural, one {{count} vez} other {{count} veces}}", + "status.edited_x_times": "Editado {count, plural, one {{count} time} other {{count} veces}}", "status.embed": "Incrustado", "status.favourite": "Favorito", "status.filtered": "Filtrado", "status.history.created": "{name} creó {date}", - "status.history.edited": "{name} editó {date}", + "status.history.edited": "{name} editado {date}", "status.load_more": "Cargar más", "status.media_hidden": "Contenido multimedia oculto", "status.mention": "Mencionar", @@ -474,6 +514,7 @@ "upload_error.poll": "Subida de archivos no permitida con encuestas.", "upload_form.audio_description": "Describir para personas con problemas auditivos", "upload_form.description": "Describir para los usuarios con dificultad visual", + "upload_form.description_missing": "Ninguna descripción añadida", "upload_form.edit": "Editar", "upload_form.thumbnail": "Cambiar miniatura", "upload_form.undo": "Borrar", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index c4d1a9d59..723b7d333 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -18,12 +18,12 @@ "account.followers": "Seguidores", "account.followers.empty": "Todavía nadie sigue a este usuario.", "account.followers_counter": "{count, plural, one {{counter} Seguidor} other {{counter} Seguidores}}", + "account.following": "Siguiendo", "account.following_counter": "{count, plural, other {{counter} Siguiendo}}", "account.follows.empty": "Este usuario todavía no sigue a nadie.", "account.follows_you": "Te sigue", "account.hide_reblogs": "Ocultar retoots de @{name}", "account.joined": "Se unió el {date}", - "account.last_status": "Última actividad", "account.link_verified_on": "El proprietario de este link fue comprobado el {date}", "account.locked_info": "El estado de privacidad de esta cuenta està configurado como bloqueado. El proprietario debe revisar manualmente quien puede seguirle.", "account.media": "Multimedia", @@ -32,7 +32,6 @@ "account.mute": "Silenciar a @{name}", "account.mute_notifications": "Silenciar notificaciones de @{name}", "account.muted": "Silenciado", - "account.never_active": "Nunca", "account.posts": "Publicaciones", "account.posts_with_replies": "Publicaciones y respuestas", "account.report": "Reportar a @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Publicación} other {{counter} Publicaciones}}", "account.unblock": "Desbloquear a @{name}", "account.unblock_domain": "Mostrar a {domain}", + "account.unblock_short": "Desbloquear", "account.unendorse": "No mostrar en el perfil", "account.unfollow": "Dejar de seguir", "account.unmute": "Dejar de silenciar a @{name}", "account.unmute_notifications": "Dejar de silenciar las notificaciones de @{name}", + "account.unmute_short": "Dejar de silenciar", "account_note.placeholder": "Clic para añadir nota", "admin.dashboard.daily_retention": "Tasa de retención de usuarios por día después del registro", "admin.dashboard.monthly_retention": "Tasa de retención de usuarios por mes después del registro", @@ -69,7 +70,7 @@ "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", "column.community": "Línea de tiempo local", - "column.direct": "Mensajes directos", + "column.conversations": "Conversaciones", "column.directory": "Buscar perfiles", "column.domain_blocks": "Dominios ocultados", "column.favourites": "Favoritos", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Solo local", "community.column_settings.media_only": "Solo media", "community.column_settings.remote_only": "Solo remoto", - "compose_form.direct_message_warning": "Esta nueva publicación solo será enviada a los usuarios mencionados.", "compose_form.direct_message_warning_learn_more": "Aprender más", + "compose_form.encryption_warning": "Los mensajes en Mastodon no están cifrados de extremo a extremo. No comparta ninguna información confidencial en Mastodon.", "compose_form.hashtag_warning": "Esta publicación no se mostrará bajo ningún hashtag porque no está listada. Sólo las publicaciones públicas se pueden buscar por hashtag.", "compose_form.lock_disclaimer": "Tu cuenta no está {locked}. Todos pueden seguirte para ver tus publicaciones solo para seguidores.", "compose_form.lock_disclaimer.lock": "bloqueado", @@ -165,14 +166,15 @@ "empty_column.blocks": "Aún no has bloqueado a ningún usuario.", "empty_column.bookmarked_statuses": "Aún no tienes ninguna publicación guardada como marcador. Cuando guardes una, se mostrará aquí.", "empty_column.community": "La línea de tiempo local está vacía. ¡Escribe algo para empezar la fiesta!", - "empty_column.direct": "Aún no tienes ningún mensaje directo. Cuando envíes o recibas uno, se mostrará aquí.", + "empty_column.conversations": "Una vez que envíe o reciba un mensaje que solo sea visible para la gente mencionada en él, aparecerá aquí.", "empty_column.domain_blocks": "Todavía no hay dominios ocultos.", + "empty_column.explore_statuses": "Nada está en tendencia en este momento. ¡Revisa más tarde!", "empty_column.favourited_statuses": "Aún no tienes publicaciones favoritas. Cuando marques una como favorita, aparecerá aquí.", "empty_column.favourites": "Nadie ha marcado esta publicación como favorita. Cuando alguien lo haga, aparecerá aquí.", "empty_column.follow_recommendations": "Parece que no se ha podido generar ninguna sugerencia para ti. Puedes probar a buscar a gente que quizá conozcas o explorar los hashtags que están en tendencia.", "empty_column.follow_requests": "No tienes ninguna petición de seguidor. Cuando recibas una, se mostrará aquí.", "empty_column.hashtag": "No hay nada en este hashtag aún.", - "empty_column.home": "¡Tu línea temporal está vacía! Sigue a más personas para rellenarla. {suggestions}", + "empty_column.home": "¡Tu línea de tiempo está vacía! Sigue a más personas para rellenarla. {suggestions}", "empty_column.home.suggestions": "Ver algunas sugerencias", "empty_column.list": "No hay nada en esta lista aún. Cuando miembros de esta lista publiquen nuevos estatus, estos aparecerán qui.", "empty_column.lists": "No tienes ninguna lista. cuando crees una, se mostrará aquí.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Intenta deshabilitarlos y recarga la página. Si eso no ayuda, podrías usar Mastodon a través de un navegador web diferente o aplicación nativa.", "errors.unexpected_crash.copy_stacktrace": "Copiar el seguimiento de pila en el portapapeles", "errors.unexpected_crash.report_issue": "Informar de un problema/error", + "explore.search_results": "Resultados de búsqueda", + "explore.suggested_follows": "Para ti", + "explore.title": "Explorar", + "explore.trending_links": "Noticias", + "explore.trending_statuses": "Publicaciones", + "explore.trending_tags": "Etiquetas", "follow_recommendations.done": "Hecho", "follow_recommendations.heading": "¡Sigue a gente que publique cosas que te gusten! Aquí tienes algunas sugerencias.", "follow_recommendations.lead": "Las publicaciones de la gente a la que sigas aparecerán ordenadas cronológicamente en Inicio. No tengas miedo de cometer errores, ¡puedes dejarles de seguir en cualquier momento con la misma facilidad!", @@ -222,18 +230,18 @@ "keyboard_shortcuts.boost": "Retootear", "keyboard_shortcuts.column": "enfocar un estado en una de las columnas", "keyboard_shortcuts.compose": "enfocar el área de texto de redacción", + "keyboard_shortcuts.conversations": "para abrir la columna de conversaciones", "keyboard_shortcuts.description": "Descripción", - "keyboard_shortcuts.direct": "abrir la columna de mensajes directos", "keyboard_shortcuts.down": "mover hacia abajo en la lista", "keyboard_shortcuts.enter": "abrir estado", "keyboard_shortcuts.favourite": "añadir a favoritos", "keyboard_shortcuts.favourites": "abrir la lista de favoritos", - "keyboard_shortcuts.federated": "abrir el timeline federado", + "keyboard_shortcuts.federated": "Abrir la línea de tiempo federada", "keyboard_shortcuts.heading": "Keyboard Shortcuts", - "keyboard_shortcuts.home": "abrir el timeline propio", + "keyboard_shortcuts.home": "Abrir línea de tiempo", "keyboard_shortcuts.hotkey": "Tecla caliente", "keyboard_shortcuts.legend": "para mostrar esta leyenda", - "keyboard_shortcuts.local": "abrir el timeline local", + "keyboard_shortcuts.local": "Abrir línea de tiempo local", "keyboard_shortcuts.mention": "para mencionar al autor", "keyboard_shortcuts.muted": "abrir la lista de usuarios silenciados", "keyboard_shortcuts.my_profile": "abrir tu perfil", @@ -280,12 +288,12 @@ "navigation_bar.apps": "Aplicaciones móviles", "navigation_bar.blocks": "Usuarios bloqueados", "navigation_bar.bookmarks": "Marcadores", - "navigation_bar.community_timeline": "Historia local", + "navigation_bar.community_timeline": "Línea de tiempo local", "navigation_bar.compose": "Escribir nueva publicación", - "navigation_bar.direct": "Mensajes directos", "navigation_bar.discover": "Descubrir", "navigation_bar.domain_blocks": "Dominios ocultos", "navigation_bar.edit_profile": "Editar perfil", + "navigation_bar.explore": "Explorar", "navigation_bar.favourites": "Favoritos", "navigation_bar.filters": "Palabras silenciadas", "navigation_bar.follow_requests": "Solicitudes para seguirte", @@ -298,8 +306,9 @@ "navigation_bar.personal": "Personal", "navigation_bar.pins": "Publicaciones fijadas", "navigation_bar.preferences": "Preferencias", - "navigation_bar.public_timeline": "Historia federada", + "navigation_bar.public_timeline": "Línea de tiempo federada", "navigation_bar.security": "Seguridad", + "notification.admin.sign_up": "{name} se registró", "notification.favourite": "{name} marcó tu estado como favorito", "notification.follow": "{name} te empezó a seguir", "notification.follow_request": "{name} ha solicitado seguirte", @@ -311,6 +320,7 @@ "notification.update": "{name} editó una publicación", "notifications.clear": "Limpiar notificaciones", "notifications.clear_confirmation": "¿Seguro que quieres limpiar permanentemente todas tus notificaciones?", + "notifications.column_settings.admin.sign_up": "Nuevos registros:", "notifications.column_settings.alert": "Notificaciones de escritorio", "notifications.column_settings.favourite": "Favoritos:", "notifications.column_settings.filter_bar.advanced": "Mostrar todas las categorías", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Eliminar encuesta", "privacy.change": "Ajustar privacidad", "privacy.direct.long": "Sólo mostrar a los usuarios mencionados", - "privacy.direct.short": "Directo", + "privacy.direct.short": "Solo la gente que yo menciono", "privacy.private.long": "Sólo mostrar a seguidores", - "privacy.private.short": "Privado", - "privacy.public.long": "Mostrar en la historia federada", + "privacy.private.short": "Solo seguidores", + "privacy.public.long": "Visible por todos", "privacy.public.short": "Público", - "privacy.unlisted.long": "No mostrar en la historia federada", + "privacy.unlisted.long": "Visible para todos, pero excluido de las características de descubrimiento", "privacy.unlisted.short": "No listado", "refresh": "Actualizar", "regeneration_indicator.label": "Cargando…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number} s", "relative_time.today": "hoy", "reply_indicator.cancel": "Cancelar", + "report.block": "Bloquear", + "report.block_explanation": "No verás sus publicaciones. No podrán ver tus publicaciones ni seguirte. Podrán saber que están bloqueados.", "report.categories.other": "Otros", "report.categories.spam": "Spam", "report.categories.violation": "El contenido viola una o más reglas del servidor", + "report.category.subtitle": "Elige la mejor coincidencia", + "report.category.title": "Cuéntanos lo que está pasando con este {type}", + "report.category.title_account": "perfil", + "report.category.title_status": "publicacion", + "report.close": "Hecho", + "report.comment.title": "¿Hay algo más que creas que deberíamos saber?", "report.forward": "Reenviar a {target}", "report.forward_hint": "Esta cuenta es de otro servidor. ¿Enviar una copia anonimizada del informe allí también?", - "report.hint": "El informe se enviará a los moderadores de tu instancia. Puedes proporcionar una explicación de por qué informas sobre esta cuenta a continuación:", + "report.mute": "Silenciar", + "report.mute_explanation": "No verás sus publicaciones. Todavía pueden seguirte y ver tus mensajes y no sabrán que están silenciados.", + "report.next": "Siguiente", "report.placeholder": "Comentarios adicionales", + "report.reasons.dislike": "No me gusta", + "report.reasons.dislike_description": "No es algo que quieras ver", + "report.reasons.other": "Es otra cosa", + "report.reasons.other_description": "El problema no encaja en otras categorías", + "report.reasons.spam": "Es spam", + "report.reasons.spam_description": "Enlaces maliciosos, interacciones falsas o respuestas repetitivas", + "report.reasons.violation": "Viola las reglas del servidor", + "report.reasons.violation_description": "Eres consciente de que infringe las normas específicas", + "report.rules.subtitle": "Selecciona todos los que correspondan", + "report.rules.title": "¿Qué normas se están violando?", + "report.statuses.subtitle": "Selecciona todos los que correspondan", + "report.statuses.title": "¿Hay alguna publicación que respalde este informe?", "report.submit": "Publicar", "report.target": "Reportando", + "report.thanks.take_action": "Aquí están tus opciones para controlar lo que ves en Mastodon:", + "report.thanks.take_action_actionable": "Mientras revisamos esto, puedes tomar medidas contra @{name}:", + "report.thanks.title": "¿No quieres esto?", + "report.thanks.title_actionable": "Gracias por informar, estudiaremos esto.", + "report.unfollow": "Dejar de seguir a @{name}", + "report.unfollow_explanation": "Estás siguiendo esta cuenta. Para no ver sus publicaciones en tu muro de inicio, deja de seguirla.", "search.placeholder": "Buscar", "search_popout.search_format": "Formato de búsqueda avanzada", "search_popout.tips.full_text": "Las búsquedas de texto recuperan publicaciones que has escrito, marcado como favoritas, retooteado o en los que has sido mencionado, así como usuarios, nombres y hashtags.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "El texto simple devuelve correspondencias de nombre, usuario y hashtag", "search_popout.tips.user": "usuario", "search_results.accounts": "Gente", + "search_results.all": "Todos", "search_results.hashtags": "Etiquetas", + "search_results.nothing_found": "No se pudo encontrar nada para estos términos de búsqueda", "search_results.statuses": "Publicaciones", "search_results.statuses_fts_disabled": "Buscar publicaciones por su contenido no está disponible en este servidor de Mastodon.", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", @@ -448,7 +488,7 @@ "status.unpin": "Dejar de fijar", "suggestions.dismiss": "Descartar sugerencia", "suggestions.header": "Es posible que te interese…", - "tabs_bar.federated_timeline": "Federado", + "tabs_bar.federated_timeline": "Federada", "tabs_bar.home": "Inicio", "tabs_bar.local_timeline": "Local", "tabs_bar.notifications": "Notificaciones", @@ -474,6 +514,7 @@ "upload_error.poll": "Subida de archivos no permitida con encuestas.", "upload_form.audio_description": "Describir para personas con problemas auditivos", "upload_form.description": "Describir para los usuarios con dificultad visual", + "upload_form.description_missing": "Ninguna descripción añadida", "upload_form.edit": "Editar", "upload_form.thumbnail": "Cambiar miniatura", "upload_form.undo": "Borrar", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 8f180c411..ca40ff370 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -18,12 +18,12 @@ "account.followers": "Jälgijad", "account.followers.empty": "Keegi ei jälgi seda kasutajat veel.", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "See kasutaja ei jälgi veel kedagi.", "account.follows_you": "Jälgib Teid", "account.hide_reblogs": "Peida upitused kasutajalt @{name}", "account.joined": "Joined {date}", - "account.last_status": "Viimati aktiivne", "account.link_verified_on": "Selle lingi autorsust kontrolliti {date}", "account.locked_info": "Selle konto privaatsussätteks on lukustatud. Omanik vaatab manuaalselt üle, kes teda jägida saab.", "account.media": "Meedia", @@ -32,7 +32,6 @@ "account.mute": "Vaigista @{name}", "account.mute_notifications": "Vaigista teated kasutajalt @{name}", "account.muted": "Vaigistatud", - "account.never_active": "Mitte kunagi", "account.posts": "Tuututused", "account.posts_with_replies": "Tuututused ja vastused", "account.report": "Raporteeri @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "Eemalda blokeering @{name}", "account.unblock_domain": "Tee {domain} nähtavaks", + "account.unblock_short": "Unblock", "account.unendorse": "Ära kuva profiilil", "account.unfollow": "Ära jälgi", "account.unmute": "Ära vaigista @{name}", "account.unmute_notifications": "Ära vaigista teateid kasutajalt @{name}", + "account.unmute_short": "Unmute", "account_note.placeholder": "Click to add a note", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "Blokeeritud kasutajad", "column.bookmarks": "Järjehoidjad", "column.community": "Kohalik ajajoon", - "column.direct": "Otsesõnumid", + "column.conversations": "Conversations", "column.directory": "Sirvi profiile", "column.domain_blocks": "Peidetud domeenid", "column.favourites": "Lemmikud", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Ainult kohalik", "community.column_settings.media_only": "Ainult meedia", "community.column_settings.remote_only": "Ainult kaug", - "compose_form.direct_message_warning": "See tuut saadetakse ainult mainitud kasutajatele.", "compose_form.direct_message_warning_learn_more": "Vaata veel", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Seda tuuti ei kuvata ühegi sildi all, sest see on kirjendamata. Ainult avalikud tuutid on sildi järgi otsitavad.", "compose_form.lock_disclaimer": "Teie konto ei ole {locked}. Igaüks saab Teid jälgida ja näha Teie ainult-jälgijatele postitusi.", "compose_form.lock_disclaimer.lock": "lukus", @@ -165,8 +166,9 @@ "empty_column.blocks": "Sa ei ole veel ühtegi kasutajat blokeerinud.", "empty_column.bookmarked_statuses": "Teil pole veel järjehoidjatesse lisatud tuututusi. Kui lisate mõne, näete neid siin.", "empty_column.community": "Kohalik ajajoon on tühi. Kirjutage midagi avalikult, et pall veerema ajada!", - "empty_column.direct": "Teil ei ole veel otsesõnumeid. Kui saadate või võtate mõne vastu, ilmuvad nad siia.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Siin ei ole veel peidetud domeene.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Teil pole veel lemmikuid tuute. Kui märgite mõne, näete neid siin.", "empty_column.favourites": "Keegi pole veel seda tuuti lemmikuks märkinud. Kui seegi seda teeb, näed seda siin.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Kopeeri stacktrace lõikelauale", "errors.unexpected_crash.report_issue": "Teavita veast", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "upitamiseks", "keyboard_shortcuts.column": "fokuseerimaks staatust ühele tulpadest", "keyboard_shortcuts.compose": "fokuseerimaks tekstikoostamise alale", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Kirjeldus", - "keyboard_shortcuts.direct": "avamaks otsesõnumite tulpa", "keyboard_shortcuts.down": "liikumaks nimstus alla", "keyboard_shortcuts.enter": "staatuse avamiseks", "keyboard_shortcuts.favourite": "lemmikuks märkimiseks", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Järjehoidjad", "navigation_bar.community_timeline": "Kohalik ajajoon", "navigation_bar.compose": "Koosta uus tuut", - "navigation_bar.direct": "Otsesõnumid", "navigation_bar.discover": "Avasta", "navigation_bar.domain_blocks": "Peidetud domeenid", "navigation_bar.edit_profile": "Muuda profiili", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Lemmikud", "navigation_bar.filters": "Vaigistatud sõnad", "navigation_bar.follow_requests": "Jälgimistaotlused", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Eelistused", "navigation_bar.public_timeline": "Föderatiivne ajajoon", "navigation_bar.security": "Turvalisus", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} märkis Teie staatuse lemmikuks", "notification.follow": "{name} jälgib nüüd Teid", "notification.follow_request": "{name} soovib Teid jälgida", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Puhasta teated", "notifications.clear_confirmation": "Olete kindel, et soovite püsivalt kõik oma teated eemaldada?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Töölauateated", "notifications.column_settings.favourite": "Lemmikud:", "notifications.column_settings.filter_bar.advanced": "Kuva kõik kategooriad", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Eemalda küsitlus", "privacy.change": "Muuda staatuse privaatsust", "privacy.direct.long": "Postita ainult mainitud kasutajatele", - "privacy.direct.short": "Otsene", + "privacy.direct.short": "Direct", "privacy.private.long": "Postita ainult jälgijatele", - "privacy.private.short": "Ainult jälgijatele", - "privacy.public.long": "Postita avalikele ajajoontele", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Avalik", - "privacy.unlisted.long": "Ära postita avalikele ajajoontele", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Määramata", "refresh": "Värskenda", "regeneration_indicator.label": "Laeb…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "täna", "reply_indicator.cancel": "Tühista", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Edasta kasutajale {target}", "report.forward_hint": "See kasutaja on teisest serverist. Kas saadan anonümiseeritud koopia sellest teatest sinna ka?", - "report.hint": "See teade saadetakse Teie serveri moderaatoritele. Te saate lisada selgituse selle kohta, miks selle kasutaja kohta teate esitasite, siin:", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", "report.placeholder": "Lisaks kommentaarid", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Saada", "report.target": "Teatamine {target} kohta", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Otsi", "search_popout.search_format": "Täiustatud otsiformaat", "search_popout.tips.full_text": "Lihtne tekst toob esile staatused mida olete kirjutanud, lisanud lemmikuks, upitanud või olete seal mainitud, ning lisaks veel kattuvad kasutajanimed, kuvanimed ja sildid.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Lihtne tekst toob esile kattuvad kuvanimed, kasutajanimed ning sildid", "search_popout.tips.user": "kasutaja", "search_results.accounts": "Inimesed", + "search_results.all": "All", "search_results.hashtags": "Sildid", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Tuudid", "search_results.statuses_fts_disabled": "Tuutsude otsimine nende sisu järgi ei ole sellel Mastodoni serveril sisse lülitatud.", "search_results.total": "{count, number} {count, plural, one {tulemus} other {tulemust}}", @@ -474,6 +514,7 @@ "upload_error.poll": "Küsitlustes pole faili üleslaadimine lubatud.", "upload_form.audio_description": "Kirjelda kuulmispuudega inimeste jaoks", "upload_form.description": "Kirjelda vaegnägijatele", + "upload_form.description_missing": "No description added", "upload_form.edit": "Redigeeri", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Kustuta", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index da3d66a9a..119395b2f 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -18,12 +18,12 @@ "account.followers": "Jarraitzaileak", "account.followers.empty": "Ez du inork erabiltzaile hau jarraitzen oraindik.", "account.followers_counter": "{count, plural, one {Jarraitzaile {counter}} other {{counter} jarraitzaile}}", + "account.following": "Jarraitzen", "account.following_counter": "{count, plural, one {{counter} jarraitzen} other {{counter} jarraitzen}}", "account.follows.empty": "Erabiltzaile honek ez du inor jarraitzen oraindik.", "account.follows_you": "Jarraitzen dizu", "account.hide_reblogs": "Ezkutatu @{name}(r)en bultzadak", "account.joined": "{date}(e)an elkartua", - "account.last_status": "Azkenekoz aktiboa", "account.link_verified_on": "Esteka honen jabetzaren egiaztaketa data: {date}", "account.locked_info": "Kontu honen pribatutasun egoera blokeatuta gisa ezarri da. Jabeak eskuz erabakitzen du nork jarraitu diezaioken.", "account.media": "Multimedia", @@ -32,7 +32,6 @@ "account.mute": "Mututu @{name}", "account.mute_notifications": "Mututu @{name}(r)en jakinarazpenak", "account.muted": "Mutututa", - "account.never_active": "Inoiz ez", "account.posts": "Bidalketa", "account.posts_with_replies": "Bidalketak eta erantzunak", "account.report": "Salatu @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {Bidalketa {counter}} other {{counter} bidalketa}}", "account.unblock": "Desblokeatu @{name}", "account.unblock_domain": "Berriz erakutsi {domain}", + "account.unblock_short": "Desblokeatu", "account.unendorse": "Ez nabarmendu profilean", "account.unfollow": "Utzi jarraitzeari", "account.unmute": "Desmututu @{name}", "account.unmute_notifications": "Desmututu @{name}(r)en jakinarazpenak", + "account.unmute_short": "Desmututu", "account_note.placeholder": "Click to add a note", "admin.dashboard.daily_retention": "Erabiltzaile atxikitze-tasa izena eman ondorengo eguneko", "admin.dashboard.monthly_retention": "Erabiltzaile atxikitze-tasa izena eman ondorengo hilabeteko", @@ -69,7 +70,7 @@ "column.blocks": "Blokeatutako erabiltzaileak", "column.bookmarks": "Laster-markak", "column.community": "Denbora-lerro lokala", - "column.direct": "Mezu zuzenak", + "column.conversations": "Conversations", "column.directory": "Arakatu profilak", "column.domain_blocks": "Ezkutatutako domeinuak", "column.favourites": "Gogokoak", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Lokala soilik", "community.column_settings.media_only": "Multimedia besterik ez", "community.column_settings.remote_only": "Urrunekoa soilik", - "compose_form.direct_message_warning": "Bidalketa hau aipatutako erabiltzaileei besterik ez zaie bidaliko.", "compose_form.direct_message_warning_learn_more": "Ikasi gehiago", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Bidalketa hau ez da traoletan agertuko zerrendatu gabekoa baita. Traoletan bidalketa publikoak besterik ez dira agertzen.", "compose_form.lock_disclaimer": "Zure kontua ez dago {locked}. Edonork jarraitu zaitzake zure jarraitzaileentzako soilik diren bidalketak ikusteko.", "compose_form.lock_disclaimer.lock": "giltzapetuta", @@ -165,8 +166,9 @@ "empty_column.blocks": "Ez duzu erabiltzailerik blokeatu oraindik.", "empty_column.bookmarked_statuses": "Oraindik ez dituzu bidalketa laster-markatutarik. Bat laster-markatzerakoan, hemen agertuko da.", "empty_column.community": "Denbora-lerro lokala hutsik dago. Idatzi zerbait publikoki pilota biraka jartzeko!", - "empty_column.direct": "Ez duzu mezu zuzenik oraindik. Baten bat bidali edo jasotzen duzunean, hemen agertuko da.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Ez dago ezkutatutako domeinurik oraindik.", + "empty_column.explore_statuses": "Ez dago joerarik une honetan. Begiratu beranduago!", "empty_column.favourited_statuses": "Ez duzu gogokorik oraindik. Gogokoren bat duzunean hemen agertuko da.", "empty_column.favourites": "Ez du inork gogokoetara gehitu bidalketa hau oraindik. Inork egiten duenean, hemen agertuko dira.", "empty_column.follow_recommendations": "Dirudienez ezin izan da zuretzako proposamenik sortu. Bilaketa erabili dezakezu ezagutzen duzun jendea aurkitzeko edo traolen joerak arakatu.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Saiatu desgaitu eta orria berritzen. Horrek ez badu laguntzen, agian Mastodon erabiltzeko aukera duzu oraindik ere beste nabigatzaile bat edo aplikazio natibo bat erabilita.", "errors.unexpected_crash.copy_stacktrace": "Kopiatu irteera arbelera", "errors.unexpected_crash.report_issue": "Eman arazoaren berri", + "explore.search_results": "Bilaketaren emaitzak", + "explore.suggested_follows": "Zuretzat", + "explore.title": "Arakatu", + "explore.trending_links": "Berriak", + "explore.trending_statuses": "Bidalketak", + "explore.trending_tags": "Traolak", "follow_recommendations.done": "Egina", "follow_recommendations.heading": "Jarraitu jendea beren bidalketak ikusteko! Hemen dituzu iradokizun batzuk.", "follow_recommendations.lead": "Jarraitzen duzun jendearen bidalketak ordena kronologikoan agertuko dira zure hasierako jarioan. Ez izan akatsak egiteko beldurrik, jendea jarraitzeari uztea erraza da!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "Bultzatu bidalketa", "keyboard_shortcuts.column": "mezu bat zutabe batean fokatzea", "keyboard_shortcuts.compose": "testua konposatzeko arean fokatzea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Deskripzioa", - "keyboard_shortcuts.direct": "mezu zuzenen zutabea irekitzeko", "keyboard_shortcuts.down": "zerrendan behera mugitzea", "keyboard_shortcuts.enter": "Ireki bidalketa", "keyboard_shortcuts.favourite": "Egin gogoko bidalketa", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Laster-markak", "navigation_bar.community_timeline": "Denbora-lerro lokala", "navigation_bar.compose": "Idatzi bidalketa berria", - "navigation_bar.direct": "Mezu zuzenak", "navigation_bar.discover": "Aurkitu", "navigation_bar.domain_blocks": "Ezkutatutako domeinuak", "navigation_bar.edit_profile": "Aldatu profila", + "navigation_bar.explore": "Arakatu", "navigation_bar.favourites": "Gogokoak", "navigation_bar.filters": "Mutututako hitzak", "navigation_bar.follow_requests": "Jarraitzeko eskariak", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Hobespenak", "navigation_bar.public_timeline": "Federatutako denbora-lerroa", "navigation_bar.security": "Segurtasuna", + "notification.admin.sign_up": "{name} erabiltzailea erregistratu da", "notification.favourite": "{name}(e)k zure bidalketa gogoko du", "notification.follow": "{name}(e)k jarraitzen zaitu", "notification.follow_request": "{name}(e)k zu jarraitzeko eskaera egin du", @@ -311,6 +320,7 @@ "notification.update": "{name} erabiltzaileak bidalketa bat editatu du", "notifications.clear": "Garbitu jakinarazpenak", "notifications.clear_confirmation": "Ziur zure jakinarazpen guztiak behin betirako garbitu nahi dituzula?", + "notifications.column_settings.admin.sign_up": "Izen-emate berriak:", "notifications.column_settings.alert": "Mahaigaineko jakinarazpenak", "notifications.column_settings.favourite": "Gogokoak:", "notifications.column_settings.filter_bar.advanced": "Erakutsi kategoria guztiak", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Kendu inkesta", "privacy.change": "Aldatu bidalketaren pribatutasuna", "privacy.direct.long": "Bidali aipatutako erabiltzaileei besterik ez", - "privacy.direct.short": "Zuzena", + "privacy.direct.short": "Direct", "privacy.private.long": "Bidali jarraitzaileei besterik ez", - "privacy.private.short": "Jarraitzaileak soilik", - "privacy.public.long": "Bistaratu denbora-lerro publikoetan", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Publikoa", - "privacy.unlisted.long": "Do not show in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Zerrendatu gabea", "refresh": "Berritu", "regeneration_indicator.label": "Kargatzen…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "gaur", "reply_indicator.cancel": "Utzi", + "report.block": "Blokeatu", + "report.block_explanation": "Ez dituzu bere bidalketak ikusiko. Ezingo dituzte zure bidalketak ikusi eta ez jarraitu. Blokeatu dituzula jakin dezakete.", "report.categories.other": "Bestelakoak", "report.categories.spam": "Spam", "report.categories.violation": "Edukiak zerbitzariko arau bat edo gehiago urratzen ditu", + "report.category.subtitle": "Aukeratu egokiena", + "report.category.title": "Kontaiguzu zer gertatzen den {type} honekin", + "report.category.title_account": "profil", + "report.category.title_status": "bidalketa", + "report.close": "Egina", + "report.comment.title": "Beste zerbait jakin beharko genuke?", "report.forward": "Birbidali hona: {target}", "report.forward_hint": "Kontu hau beste zerbitzari batekoa da. Bidali txostenaren kopia anonimo hara ere?", - "report.hint": "Txostena zure zerbitzariaren moderatzaileei bidaliko zaie. Kontu hau zergatik salatzen duzun behean azaldu dezakezu:", + "report.mute": "Mututu", + "report.mute_explanation": "Ez dituzu bere bidalketak ikusiko. Zu jarraitu eta zure bidalketak ikusteko aukera izango dute eta ezingo dute jakin mututu dituzula.", + "report.next": "Hurrengoa", "report.placeholder": "Iruzkin gehigarriak", + "report.reasons.dislike": "Ez dut gustukoa", + "report.reasons.dislike_description": "Ikusi nahi ez dudan zerbait da", + "report.reasons.other": "Beste zerbait da", + "report.reasons.other_description": "Arazoa ezin da beste kategorietan sailkatu", + "report.reasons.spam": "Spama da", + "report.reasons.spam_description": "Esteka maltzurrak, gezurrezko elkarrekintzak edo erantzun errepikakorrak", + "report.reasons.violation": "Zerbitzariaren arauak hausten ditu", + "report.reasons.violation_description": "Arau zehatzak urratzen dituela badakizu", + "report.rules.subtitle": "Hautatu dagozkion guztiak", + "report.rules.title": "Ze arau hautsi ditu?", + "report.statuses.subtitle": "Hautatu dagozkion guztiak", + "report.statuses.title": "Salaketa hau babesten duen bidalketarik badago?", "report.submit": "Bidali", "report.target": "{target} salatzen", + "report.thanks.take_action": "Hemen dituzu Mastodonen ikusiko duzuna kontrolatzeko aukerak:", + "report.thanks.take_action_actionable": "Hau berrikusten dugun bitartean, @{name} erabiltzailearen aurkako neurriak hartu ditzakezu:", + "report.thanks.title": "Ez duzu hau ikusi nahi?", + "report.thanks.title_actionable": "Mila esker salaketagatik, berrikusiko dugu.", + "report.unfollow": "@{name} jarraitzeari utzi", + "report.unfollow_explanation": "Kontu hau jarraitzen ari zara. Zure denbora-lerro nagusian bere bidalketak ez ikusteko, jarraitzeari utzi.", "search.placeholder": "Bilatu", "search_popout.search_format": "Bilaketa aurreratuaren formatua", "search_popout.tips.full_text": "Testu hutsarekin zuk idatzitako bidalketak, gogokoak, bultzadak edo aipamenak aurkitu ditzakezu, bat datozen erabiltzaile-izenak, pantaila-izenak, eta traolak.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Testu hutsak pantaila-izenak, erabiltzaile-izenak eta traolak bilatzen ditu", "search_popout.tips.user": "erabiltzailea", "search_results.accounts": "Jendea", + "search_results.all": "Guztiak", "search_results.hashtags": "Traolak", + "search_results.nothing_found": "Ez da emaitzarik aurkitu bilaketa-termino horientzat", "search_results.statuses": "Bidalketak", "search_results.statuses_fts_disabled": "Mastodon zerbitzari honek ez du bidalketen edukiaren bilaketa gaitu.", "search_results.total": "{count, number} {count, plural, one {emaitza} other {emaitza}}", @@ -474,6 +514,7 @@ "upload_error.poll": "Ez da inkestetan fitxategiak igotzea onartzen.", "upload_form.audio_description": "Deskribatu entzumen galera duten pertsonentzat", "upload_form.description": "Deskribatu ikusmen arazoak dituztenentzat", + "upload_form.description_missing": "No description added", "upload_form.edit": "Editatu", "upload_form.thumbnail": "Aldatu koadro txikia", "upload_form.undo": "Ezabatu", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 76dd3fdc0..ae74607ab 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -3,52 +3,53 @@ "account.add_or_remove_from_list": "افزودن یا برداشتن از سیاهه‌ها", "account.badges.bot": "روبات", "account.badges.group": "گروه", - "account.block": "مسدود کردن @{name}", + "account.block": "مسدود کردن ‎@{name}", "account.block_domain": "مسدود کردن دامنهٔ {domain}", "account.blocked": "مسدود", "account.browse_more_on_origin_server": "مرور بیش‌تر روی نمایهٔ اصلی", "account.cancel_follow_request": "لغو درخواست پی‌گیری", - "account.direct": "پیام مستقیم به @{name}", - "account.disable_notifications": "آگاهی به من هنگام فرستادن‌های @{name} پایان یابد", + "account.direct": "پیام مستقیم به ‎@{name}", + "account.disable_notifications": "آگاه کردن من هنگام فرسته‌های ‎@{name} را متوقّف کن", "account.domain_blocked": "دامنه مسدود شد", "account.edit_profile": "ویرایش نمایه", - "account.enable_notifications": "هنگام فرسته‌های @{name} مرا آگاه کن", + "account.enable_notifications": "هنگام فرسته‌های ‎@{name} مرا آگاه کن", "account.endorse": "معرّفی در نمایه", "account.follow": "پی‌گیری", "account.followers": "پی‌گیرندگان", "account.followers.empty": "هنوز کسی این کاربر را پی‌گیری نمی‌کند.", "account.followers_counter": "{count, plural, one {{counter} پی‌گیرنده} other {{counter} پی‌گیرنده}}", + "account.following": "پی می‌گیرید", "account.following_counter": "{count, plural, one {{counter} پی‌گرفته} other {{counter} پی‌گرفته}}", "account.follows.empty": "این کاربر هنوز پی‌گیر کسی نیست.", "account.follows_you": "پی می‌گیردتان", - "account.hide_reblogs": "نهفتن تقویت‌های @{name}", + "account.hide_reblogs": "نهفتن تقویت‌های ‎@{name}", "account.joined": "پیوسته از {date}", - "account.last_status": "آخرین فعّالیت", "account.link_verified_on": "مالکیت این پیوند در {date} بررسی شد", "account.locked_info": "این حساب خصوصی است. صاحبش تصمیم می‌گیرد که چه کسی پی‌گیرش باشد.", "account.media": "رسانه", - "account.mention": "نام‌بردن از @{name}", + "account.mention": "نام‌بردن از ‎@{name}", "account.moved_to": "{name} منتقل شده به:", - "account.mute": "خموشاندن @{name}", - "account.mute_notifications": "خموشاندن آگاهی‌ها از @{name}", + "account.mute": "خموشاندن ‎@{name}", + "account.mute_notifications": "خموشاندن آگاهی‌های ‎@{name}", "account.muted": "خموش", - "account.never_active": "هرگز", "account.posts": "فرسته", "account.posts_with_replies": "فرسته‌ها و پاسخ‌ها", - "account.report": "گزارش @{name}", + "account.report": "گزارش ‎@{name}", "account.requested": "منتظر پذیرش است. برای لغو درخواست پی‌گیری کلیک کنید", - "account.share": "هم‌رسانی نمایهٔ @{name}", - "account.show_reblogs": "نمایش تقویت‌های @{name}", + "account.share": "هم‌رسانی نمایهٔ ‎@{name}", + "account.show_reblogs": "نمایش تقویت‌های ‎@{name}", "account.statuses_counter": "{count, plural, one {{counter} فرسته} other {{counter} فرسته}}", - "account.unblock": "رفع مسدودیت @{name}", + "account.unblock": "رفع مسدودیت ‎@{name}", "account.unblock_domain": "رفع مسدودیت دامنهٔ {domain}", + "account.unblock_short": "رفع مسدودیت", "account.unendorse": "معرّفی نکردن در نمایه", "account.unfollow": "ناپی‌گیری", - "account.unmute": "ناخموشی @{name}", - "account.unmute_notifications": "ناخموشی آگاهی‌ها از @{name}", + "account.unmute": "ناخموشی ‎@{name}", + "account.unmute_notifications": "ناخموشی آگاهی‌های ‎@{name}", + "account.unmute_short": "ناخموشی", "account_note.placeholder": "برای افزودن یادداشت کلیک کنید", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "نرخ حفظ کاربر در روز پس از ثبت نام", + "admin.dashboard.monthly_retention": "نرخ حفظ کاربر در ماه پس از ثبت نام", "admin.dashboard.retention.average": "میانگین", "admin.dashboard.retention.cohort": "ماه ثبت‌نام", "admin.dashboard.retention.cohort_size": "کاربران جدید", @@ -69,7 +70,7 @@ "column.blocks": "کاربران مسدود شده", "column.bookmarks": "نشانک‌ها", "column.community": "خط زمانی محلّی", - "column.direct": "پیام‌های مستقیم", + "column.conversations": "Conversations", "column.directory": "مرور نمایه‌ها", "column.domain_blocks": "دامنه‌های مسدود شده", "column.favourites": "پسندیده‌ها", @@ -78,22 +79,22 @@ "column.lists": "سیاهه‌ها", "column.mutes": "کاربران خموش", "column.notifications": "آگاهی‌ها", - "column.pins": "فرسته‌های سنجاق‌شده", + "column.pins": "فرسته‌های سنجاق شده", "column.public": "خط زمانی همگانی", "column_back_button.label": "بازگشت", "column_header.hide_settings": "نهفتن تنظیمات", "column_header.moveLeft_settings": "جابه‌جایی ستون به چپ", "column_header.moveRight_settings": "جابه‌جایی ستون به راست", - "column_header.pin": "سنجاق‌کردن", + "column_header.pin": "سنجاق کردن", "column_header.show_settings": "نمایش تنظیمات", "column_header.unpin": "برداشتن سنجاق", "column_subheading.settings": "تنظیمات", "community.column_settings.local_only": "فقط محلّی", "community.column_settings.media_only": "فقط رسانه", "community.column_settings.remote_only": "تنها دوردست", - "compose_form.direct_message_warning": "این فرسته تنها به کاربرانی که از آن‌ها نام برده شده فرستاده خواهد شد.", "compose_form.direct_message_warning_learn_more": "بیشتر بدانید", - "compose_form.hashtag_warning": "از آن‌جا که این فرسته فهرست‌نشده است، در نتایج جست‌وجوی برچسب‌ها پیدا نخواهد شد. تنها فرسته‌های عمومی را می‌توان با جست‌وجوی برچسب یافت.", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.hashtag_warning": "از آن‌جا که این فرسته فهرست نشده است، در نتایج جست‌وجوی هشتگ‌ها پیدا نخواهد شد. تنها فرسته‌های عمومی را می‌توان با جست‌وجوی هشتگ یافت.", "compose_form.lock_disclaimer": "حسابتان {locked} نیست. هر کسی می‌تواند پی‌گیرتان شده و فرسته‌های ویژهٔ پی‌گیرانتان را ببیند.", "compose_form.lock_disclaimer.lock": "قفل‌شده", "compose_form.placeholder": "تازه چه خبر؟", @@ -105,7 +106,7 @@ "compose_form.poll.switch_to_single": "تبدیل به نظرسنجی تک‌گزینه‌ای", "compose_form.publish": "بوق", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "ذخیرهٔ تغییرات", "compose_form.sensitive.hide": "{count, plural, one {علامت‌گذاری رسانه به عنوان حساس} other {علامت‌گذاری رسانه‌ها به عنوان حساس}}", "compose_form.sensitive.marked": "{count, plural, one {رسانه به عنوان حساس علامت‌گذاری شد} other {رسانه‌ها به عنوان حساس علامت‌گذاری شدند}}", "compose_form.sensitive.unmarked": "{count, plural, one {رسانه به عنوان حساس علامت‌گذاری نشد} other {رسانه‌ها به عنوان حساس علامت‌گذاری نشدند}}", @@ -143,7 +144,7 @@ "directory.local": "تنها از {domain}", "directory.new_arrivals": "تازه‌واردان", "directory.recently_active": "کاربران فعال اخیر", - "embed.instructions": "برای جاگذاری این فرسته در سایت خودتان، کد زیر را کپی کنید.", + "embed.instructions": "برای جاسازی این فرسته در سایت خودتان، کد زیر را رونوشت کنید.", "embed.preview": "این گونه دیده خواهد شد:", "emoji_button.activity": "فعالیت", "emoji_button.custom": "سفارشی", @@ -163,10 +164,11 @@ "empty_column.account_timeline": "هیچ فرسته‌ای این‌جا نیست!", "empty_column.account_unavailable": "نمایهٔ موجود نیست", "empty_column.blocks": "هنوز کسی را مسدود نکرده‌اید.", - "empty_column.bookmarked_statuses": "هنوز هیچ فرستهٔ نشان‌شده‌ای ندارید. هنگامی که فرسته‌ای را نشان‌کنید، این‌جا نشان داده خواهد شد.", + "empty_column.bookmarked_statuses": "هنوز هیچ فرستهٔ نشانه‌گذاری شده‌ای ندارید. هنگامی که فرسته‌ای را نشانه‌گذاری کنید، این‌جا نشان داده خواهد شد.", "empty_column.community": "خط زمانی محلّی خالی است. چیزی بنویسید تا چرخش بچرخد!", - "empty_column.direct": "هنوز هیچ پیام مستقیمی ندارید. هنگامی که چنین پیامی بگیرید یا بفرستید این‌جا نشان داده خواهد شد.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "هنوز هیچ دامنه‌ای مسدود نشده است.", + "empty_column.explore_statuses": "الآن چیزی پرطرفدار نیست. بعداً دوباره بررسی کنید!", "empty_column.favourited_statuses": "شما هنوز هیچ فرسته‌ای را نپسندیده‌اید. هنگامی که فرسته‌ای را بپسندید، این‌جا نشان داده خواهد شد.", "empty_column.favourites": "هنوز هیچ کسی این فرسته را نپسندیده است. هنگامی که کسی آن را بپسندد، این‌جا نشان داده خواهد شد.", "empty_column.follow_recommendations": "ظاهرا هیچ پیشنهادی برای شما نمی‌توانیم تولید کنیم. می‌توانید از امکان جست‌وجو برای یافتن افرادی که ممکن است بشناسید و یا کاوش میان برچسب‌های داغ استفاده کنید.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "لطفاً از کارشان انداخته و صفحه را نوسازی کنید. اگر کمکی نکرد، شاید همچنان بتوانید با مرورگری دیگر یا با کاره‌ای بومی از ماستودون استفاده کنید.", "errors.unexpected_crash.copy_stacktrace": "رونوشت از جزئیات اشکال", "errors.unexpected_crash.report_issue": "گزارش مشکل", + "explore.search_results": "نتایج جست‌وجو", + "explore.suggested_follows": "برای شما", + "explore.title": "کاوش", + "explore.trending_links": "اخبار", + "explore.trending_statuses": "فرسته‌ها", + "explore.trending_tags": "هشتگ‌ها", "follow_recommendations.done": "انجام شد", "follow_recommendations.heading": "افرادی را که می‌خواهید فرسته‌هایشان را ببینید پی‌گیری کنید! این‌ها تعدادی پیشنهاد هستند.", "follow_recommendations.lead": "فرسته‌های افرادی که دنبال می‌کنید به ترتیب زمانی در خوراک خانه‌تان نشان داده خواهد شد. از اشتباه کردن نترسید. می‌توانید به همین سادگی در هر زمانی از دنبال کردن افراد دست بکشید!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "تقویت فرسته", "keyboard_shortcuts.column": "برای تمرکز روی یک فرسته در یکی از ستون‌ها", "keyboard_shortcuts.compose": "تمرکز روی محیط نوشتن", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "توضیح", - "keyboard_shortcuts.direct": "گشودن ستون پیام‌های مستقیم", "keyboard_shortcuts.down": "پایین بردن در سیاهه", "keyboard_shortcuts.enter": "گشودن فرسته", "keyboard_shortcuts.favourite": "پسندیدن فرسته", @@ -239,7 +247,7 @@ "keyboard_shortcuts.my_profile": "گشودن نمایه‌تان", "keyboard_shortcuts.notifications": "گشودن ستون آگاهی‌ها", "keyboard_shortcuts.open_media": "گشودن رسانه", - "keyboard_shortcuts.pinned": "گشودن سیاههٔ فرسته‌های سنجاق شده", + "keyboard_shortcuts.pinned": "گشودن فهرست فرسته‌های سنجاق شده", "keyboard_shortcuts.profile": "گشودن نمایهٔ نویسنده", "keyboard_shortcuts.reply": "پاسخ به فرسته", "keyboard_shortcuts.requests": "گشودن سیاههٔ درخواست‌های پی‌گیری", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "نشانک‌ها", "navigation_bar.community_timeline": "خط زمانی محلّی", "navigation_bar.compose": "نوشتن فرستهٔ تازه", - "navigation_bar.direct": "پیام‌های مستقیم", "navigation_bar.discover": "گشت و گذار", "navigation_bar.domain_blocks": "دامنه‌های مسدود شده", "navigation_bar.edit_profile": "ویرایش نمایه", + "navigation_bar.explore": "کاوش", "navigation_bar.favourites": "پسندیده‌ها", "navigation_bar.filters": "واژه‌های خموش", "navigation_bar.follow_requests": "درخواست‌های پی‌گیری", @@ -296,10 +304,11 @@ "navigation_bar.logout": "خروج", "navigation_bar.mutes": "کاربران خموشانده", "navigation_bar.personal": "شخصی", - "navigation_bar.pins": "فرسته‌های سنجاق‌شده", + "navigation_bar.pins": "فرسته‌های سنجاق شده", "navigation_bar.preferences": "ترجیحات", "navigation_bar.public_timeline": "خط زمانی همگانی", "navigation_bar.security": "امنیت", + "notification.admin.sign_up": "{name} ثبت نام کرد", "notification.favourite": "‫{name}‬ فرسته‌تان را پسندید", "notification.follow": "‫{name}‬ پی‌گیرتان شد", "notification.follow_request": "{name} می‌خواهد پی‌گیر شما باشد", @@ -308,9 +317,10 @@ "notification.poll": "نظرسنجی‌ای که در آن رأی دادید به پایان رسیده است", "notification.reblog": "‫{name}‬ فرسته‌تان را تقویت کرد", "notification.status": "{name} چیزی فرستاد", - "notification.update": "{name} edited a post", + "notification.update": "{name} فرسته‌ای را ویرایش کرد", "notifications.clear": "پاک‌سازی آگاهی‌ها", "notifications.clear_confirmation": "مطمئنید می‌خواهید همهٔ آگاهی‌هایتان را برای همیشه پاک کنید؟", + "notifications.column_settings.admin.sign_up": "ثبت نام‌های جدید:", "notifications.column_settings.alert": "آگاهی‌های میزکار", "notifications.column_settings.favourite": "پسندیده‌ها:", "notifications.column_settings.filter_bar.advanced": "نمایش همۀ دسته‌ها", @@ -327,7 +337,7 @@ "notifications.column_settings.status": "فرسته‌های جدید:", "notifications.column_settings.unread_notifications.category": "آگاهی‌های خوانده نشده", "notifications.column_settings.unread_notifications.highlight": "پررنگ کردن آگاهی‌های خوانده نشده", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.update": "ویرایش‌ها:", "notifications.filter.all": "همه", "notifications.filter.boosts": "تقویت‌ها", "notifications.filter.favourites": "پسندها", @@ -356,37 +366,65 @@ "poll_button.remove_poll": "برداشتن نظرسنجی", "privacy.change": "تغییر محرمانگی فرسته", "privacy.direct.long": "فقط برای کاربران نام‌برده نمایان است", - "privacy.direct.short": "مستقیم", + "privacy.direct.short": "Direct", "privacy.private.long": "نمایان فقط برای پی‌گیرندگان", - "privacy.private.short": "فقط پی‌گیرندگان", - "privacy.public.long": "نمایان برای همه، در خط‌های زمانی همگانی نمایش داده خواهد شد", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "عمومی", - "privacy.unlisted.long": "نمایان برای همه، ولی در خط‌های زمانی همگانی نمایش داده نخواهد شد", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "فهرست نشده", "refresh": "نوسازی", "regeneration_indicator.label": "در حال بار شدن…", "regeneration_indicator.sublabel": "خوراک خانگیان دارد آماده می‌شود!", "relative_time.days": "{number} روز", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{number, plural, one {# روز} other {# روز}} پیش", + "relative_time.full.hours": "{number, plural, one {# ساعت} other {# ساعت}} پیش", + "relative_time.full.just_now": "همين آلان", + "relative_time.full.minutes": "{number, plural, one {# دقیقه} other {# دقیقه}} پیش", + "relative_time.full.seconds": "{number, plural, one {# ثانیه} other {# ثانیه}} پیش", "relative_time.hours": "{number} ساعت", "relative_time.just_now": "حالا", "relative_time.minutes": "{number} دقیقه", "relative_time.seconds": "{number} ثانیه", "relative_time.today": "امروز", "reply_indicator.cancel": "لغو", - "report.categories.other": "Other", - "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.block": "مسدود کردن", + "report.block_explanation": "شما فرسته‌هایشان را نخواهید دید. آن‌ها نمی‌توانند فرسته‌هایتان را ببینند یا شما را پی‌بگیرند. آنها می‌توانند بگویند که مسدود شده‌اند.", + "report.categories.other": "غیره", + "report.categories.spam": "هرزنامه", + "report.categories.violation": "محتوا یک یا چند قانون کارساز را نقض می‌کند", + "report.category.subtitle": "منطبق‌ترین را انتخاب کنید", + "report.category.title": "به ما بگویید با این {type} چه مشکلی دارید", + "report.category.title_account": "نمایه", + "report.category.title_status": "فرسته", + "report.close": "انجام شد", + "report.comment.title": "آیا چیز دیگری هست که فکر می‌کنید باید بدانیم؟", "report.forward": "فرستادن به {target}", "report.forward_hint": "این حساب در کارساز دیگری ثبت شده. آیا می‌خواهید رونوشتی ناشناس از این گزارش به آن‌جا هم فرستاده شود؟", - "report.hint": "این گزارش به مدیران کارسازتان فرستاده خواهد شد. می‌توانید دلیل گزارش این حساب را در ادامه بنویسید:", + "report.mute": "خموش", + "report.mute_explanation": "شما فرسته‌های آن‌ها را نخواهید دید. آن‌ها همچنان می‌توانند شما را پی‌بگیرند و فرسته‌هایتان را ببینند و نمی‌دانند که خموش شده‌اند.", + "report.next": "بعدی", "report.placeholder": "توضیحات اضافه", + "report.reasons.dislike": "من آن را دوست ندارم", + "report.reasons.dislike_description": "این چیزی نیست که بخواهید ببینید", + "report.reasons.other": "بخواطر چیز دیگری است", + "report.reasons.other_description": "این موضوع در دسته‌بندی‌های دیگر نمی‌گنجد", + "report.reasons.spam": "این هرزنامه است", + "report.reasons.spam_description": "پیوندهای مخرب، تعامل جعلی یا پاسخ‌های تکراری", + "report.reasons.violation": "قوانین کارساز را نقض می‌کند", + "report.reasons.violation_description": "شما آگاه هستید که قوانین خاصی را زیر پا می‌گذارد", + "report.rules.subtitle": "همهٔ موارد انجام شده را برگزینید", + "report.rules.title": "کدام قوانین نقض شده‌اند؟", + "report.statuses.subtitle": "همهٔ موارد انجام شده را برگزینید", + "report.statuses.title": "آیا فرسته‌ای وجود دارد که از این گزارش پشتیبانی کند؟", "report.submit": "فرستادن", "report.target": "در حال گزارش {target}", + "report.thanks.take_action": "در اینجا گزینه‌هایی برای کنترل آنچه در ماستودون میبینید، وجود دارد:", + "report.thanks.take_action_actionable": "در حالی که ما این مورد را بررسی می‌کنیم، می‌توانید علیه ‎@{name} اقدام کنید:", + "report.thanks.title": "نمی‌خواهید این را ببینید؟", + "report.thanks.title_actionable": "ممنون بابت گزارش، ما آن را بررسی خواهیم کرد.", + "report.unfollow": "ناپی‌گیری ‎@{name}", + "report.unfollow_explanation": "شما این حساب را پی‌گرفته‌اید، برای اینکه دیگر فرسته‌هایش را در خوراک خانه‌تان نبینید؛ آن را پی‌نگیرید.", "search.placeholder": "جست‌وجو", "search_popout.search_format": "راهنمای جست‌وجوی پیشرفته", "search_popout.tips.full_text": "جست‌وجوی متنی ساده فرسته‌هایی که نوشته، پسندیده، تقویت‌کرده یا در آن‌ها نام‌برده شده‌اید را به علاوهٔ نام‌های کاربری، نام‌های نمایشی و برچسب‌ها برمی‌گرداند.", @@ -395,37 +433,39 @@ "search_popout.tips.text": "جست‌وجوی متنی ساده برای نام‌ها، نام‌های کاربری، و برچسب‌ها", "search_popout.tips.user": "کاربر", "search_results.accounts": "افراد", + "search_results.all": "همه", "search_results.hashtags": "برچسب‌ها", + "search_results.nothing_found": "چیزی برای این عبارت جست‌وجو یافت نشد", "search_results.statuses": "فرسته‌ها", - "search_results.statuses_fts_disabled": "جست‌وجوی محتوای فرسته‌ها در این کارساز ماستودون فعال نشده است.", + "search_results.statuses_fts_disabled": "جست‌وجوی محتوای فرسته‌ها در این کارساز ماستودون به کار انداخته نشده است.", "search_results.total": "{count, number} {count, plural, one {نتیجه} other {نتیجه}}", - "status.admin_account": "گشودن واسط مدیریت برای @{name}", + "status.admin_account": "گشودن واسط مدیریت برای ‎@{name}", "status.admin_status": "گشودن این فرسته در واسط مدیریت", - "status.block": "مسدود کردن @{name}", + "status.block": "مسدود کردن ‎@{name}", "status.bookmark": "نشانک", - "status.cancel_reblog_private": "لغو تقویت", + "status.cancel_reblog_private": "ناتقویت", "status.cannot_reblog": "این فرسته قابل تقویت نیست", - "status.copy": "رونویسی از نشانی فرسته", + "status.copy": "رونوشت پیوند فرسته", "status.delete": "حذف", "status.detailed_status": "نمایش کامل گفتگو", - "status.direct": "پیام مستقیم به @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", - "status.embed": "جاگذاری", + "status.direct": "پیام مستقیم به ‎@{name}", + "status.edit": "ویرایش", + "status.edited": "ویرایش شده در {date}", + "status.edited_x_times": "{count, plural, one {{count} مرتبه} other {{count} مرتبه}} ویرایش شد", + "status.embed": "جاسازی", "status.favourite": "پسندیدن", "status.filtered": "پالوده", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "توسط {name} در {date} ایجاد شد", + "status.history.edited": "توسط {name} در {date} ویرایش شد", "status.load_more": "بار کردن بیش‌تر", "status.media_hidden": "رسانهٔ نهفته", - "status.mention": "نام‌بردن از @{name}", + "status.mention": "نام‌بردن از ‎@{name}", "status.more": "بیشتر", - "status.mute": "خموشاندن @{name}", + "status.mute": "خموشاندن ‎@{name}", "status.mute_conversation": "خموشاندن گفت‌وگو", "status.open": "گسترش این فرسته", - "status.pin": "سنجاق‌کردن در نمایه", - "status.pinned": "فرستهٔ سنجاق‌شده", + "status.pin": "سنجاق کردن در نمایه", + "status.pinned": "فرستهٔ سنجاق شده", "status.read_more": "بیشتر بخوانید", "status.reblog": "تقویت", "status.reblog_private": "تقویت برای مخاطبان نخستین", @@ -435,7 +475,7 @@ "status.remove_bookmark": "برداشتن نشانک", "status.reply": "پاسخ", "status.replyAll": "پاسخ به رشته", - "status.report": "گزارش @{name}", + "status.report": "گزارش ‎@{name}", "status.sensitive_warning": "محتوای حساس", "status.share": "هم‌رسانی", "status.show_less": "نمایش کمتر", @@ -474,6 +514,7 @@ "upload_error.poll": "بارگذاری پرونده در نظرسنجی‌ها مجاز نیست.", "upload_form.audio_description": "برای ناشنوایان توصیفش کنید", "upload_form.description": "برای کم‌بینایان توصیفش کنید", + "upload_form.description_missing": "No description added", "upload_form.edit": "ویرایش", "upload_form.thumbnail": "تغییر بندانگشتی", "upload_form.undo": "حذف", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index e3436ac84..99f81be6e 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -18,12 +18,12 @@ "account.followers": "Seuraajat", "account.followers.empty": "Kukaan ei seuraa tätä käyttäjää vielä.", "account.followers_counter": "{count, plural, one {{counter} seuraaja} other {{counter} seuraajat}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} seuraa} other {{counter} seuraa}}", "account.follows.empty": "Tämä käyttäjä ei vielä seuraa ketään.", "account.follows_you": "Seuraa sinua", "account.hide_reblogs": "Piilota buustaukset käyttäjältä @{name}", "account.joined": "Liittynyt {date}", - "account.last_status": "Aktiivinen viimeksi", "account.link_verified_on": "Tämän linkin omistaja tarkistettiin {date}", "account.locked_info": "Tämän tilin yksityisyyden tila on asetettu lukituksi. Omistaja arvioi manuaalisesti, kuka voi seurata niitä.", "account.media": "Media", @@ -32,7 +32,6 @@ "account.mute": "Mykistä @{name}", "account.mute_notifications": "Mykistä ilmoitukset käyttäjältä @{name}", "account.muted": "Mykistetty", - "account.never_active": "Ei koskaan", "account.posts": "Viestit", "account.posts_with_replies": "Viestit ja vastaukset", "account.report": "Raportoi @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "Salli @{name}", "account.unblock_domain": "Salli {domain}", + "account.unblock_short": "Unblock", "account.unendorse": "Poista suosittelu profiilistasi", "account.unfollow": "Lopeta seuraaminen", "account.unmute": "Poista käyttäjän @{name} mykistys", "account.unmute_notifications": "Poista mykistys käyttäjän @{name} ilmoituksilta", + "account.unmute_short": "Unmute", "account_note.placeholder": "Lisää muistiinpano napsauttamalla", "admin.dashboard.daily_retention": "Käyttäjän säilyminen rekisteröitymisen jälkeiseen päivään mennessä", "admin.dashboard.monthly_retention": "Käyttäjän säilyminen rekisteröitymisen jälkeiseen kuukauteen mennessä", @@ -69,7 +70,7 @@ "column.blocks": "Estetyt käyttäjät", "column.bookmarks": "Kirjanmerkit", "column.community": "Paikallinen aikajana", - "column.direct": "Pikaviestit", + "column.conversations": "Conversations", "column.directory": "Selaa profiileja", "column.domain_blocks": "Piilotetut verkkotunnukset", "column.favourites": "Suosikit", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Vain paikalliset", "community.column_settings.media_only": "Vain media", "community.column_settings.remote_only": "Vain etäkäyttö", - "compose_form.direct_message_warning": "Tämä viesti näkyy vain mainituille käyttäjille.", "compose_form.direct_message_warning_learn_more": "Lisätietoja", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Tätä julkaisua listata minkään hastagin alle, koska se on listaamaton. Ainoastaan julkisia julkaisuja etsiä hastageilla.", "compose_form.lock_disclaimer": "Tilisi ei ole {locked}. Kuka tahansa voi seurata tiliäsi ja nähdä vain seuraajille rajaamasi julkaisut.", "compose_form.lock_disclaimer.lock": "lukittu", @@ -165,8 +166,9 @@ "empty_column.blocks": "Et ole vielä estänyt yhtään käyttäjää.", "empty_column.bookmarked_statuses": "Et ole vielä lisännyt viestejä kirjanmerkkeihisi. Kun lisäät yhden, se näkyy tässä.", "empty_column.community": "Paikallinen aikajana on tyhjä. Kirjoita jotain julkista, niin homma lähtee käyntiin!", - "empty_column.direct": "Sinulla ei ole vielä yhtään viestiä yksittäiselle käyttäjälle. Kun lähetät tai vastaanotat sellaisen, se näkyy täällä.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Yhtään verkko-osoitetta ei ole vielä estetty.", + "empty_column.explore_statuses": "Mikään ei ole nyt trendi. Tarkista myöhemmin!", "empty_column.favourited_statuses": "Et ole vielä lisännyt viestejä kirjanmerkkeihisi. Kun lisäät yhden, se näkyy tässä.", "empty_column.favourites": "Kukaan ei ole vielä lisännyt tätä viestiä suosikkeihinsa. Kun joku tekee niin, näkyy kyseinen henkilö tässä.", "empty_column.follow_recommendations": "Näyttää siltä, että sinulle ei voi luoda ehdotuksia. Voit yrittää etsiä ihmisiä, jotka saatat tuntea tai tutkia trendaavia aihesanoja.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Yritä poistaa ne käytöstä ja päivittää sivu. Jos se ei auta, voit silti käyttää Mastodonia eri selaimen tai sovelluksen kautta.", "errors.unexpected_crash.copy_stacktrace": "Kopioi pinon jäljitys leikepöydälle", "errors.unexpected_crash.report_issue": "Ilmoita ongelmasta", + "explore.search_results": "Hakutulokset", + "explore.suggested_follows": "Sinulle", + "explore.title": "Selaa", + "explore.trending_links": "Uutiset", + "explore.trending_statuses": "Viestit", + "explore.trending_tags": "Aihetunnisteet", "follow_recommendations.done": "Valmis", "follow_recommendations.heading": "Seuraa ihmisiä, joilta haluaisit nähdä julkaisuja! Tässä on muutamia ehdotuksia.", "follow_recommendations.lead": "Seuraamiesi julkaisut näkyvät aikajärjestyksessä kotisyötteessä. Älä pelkää seurata vahingossa, voit lopettaa seuraamisen yhtä helposti!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "Buustaa viestiä", "keyboard_shortcuts.column": "Kohdista sarakkeeseen", "keyboard_shortcuts.compose": "siirry tekstinsyöttöön", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Kuvaus", - "keyboard_shortcuts.direct": "Avaa pikaviestisarake", "keyboard_shortcuts.down": "Siirry listassa alaspäin", "keyboard_shortcuts.enter": "Avaa julkaisu", "keyboard_shortcuts.favourite": "Lisää suosikkeihin", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Kirjanmerkit", "navigation_bar.community_timeline": "Paikallinen aikajana", "navigation_bar.compose": "Luo uusi viesti", - "navigation_bar.direct": "Pikaviestit", "navigation_bar.discover": "Löydä uutta", "navigation_bar.domain_blocks": "Estetyt verkkotunnukset", "navigation_bar.edit_profile": "Muokkaa profiilia", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Suosikit", "navigation_bar.filters": "Mykistetyt sanat", "navigation_bar.follow_requests": "Seuraamispyynnöt", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Asetukset", "navigation_bar.public_timeline": "Yleinen aikajana", "navigation_bar.security": "Turvallisuus", + "notification.admin.sign_up": "{name} rekisteröitynyt", "notification.favourite": "{name} tykkäsi viestistäsi", "notification.follow": "{name} seurasi sinua", "notification.follow_request": "{name} haluaa seurata sinua", @@ -311,6 +320,7 @@ "notification.update": "{name} muokkasi viestiä", "notifications.clear": "Tyhjennä ilmoitukset", "notifications.clear_confirmation": "Haluatko varmasti poistaa kaikki ilmoitukset pysyvästi?", + "notifications.column_settings.admin.sign_up": "Uudet kirjautumiset:", "notifications.column_settings.alert": "Työpöytäilmoitukset", "notifications.column_settings.favourite": "Tykkäykset:", "notifications.column_settings.filter_bar.advanced": "Näytä kaikki kategoriat", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Poista kysely", "privacy.change": "Muuta julkaisun näkyvyyttä", "privacy.direct.long": "Julkaise vain mainituille käyttäjille", - "privacy.direct.short": "Suora viesti", + "privacy.direct.short": "Direct", "privacy.private.long": "Julkaise vain seuraajille", - "privacy.private.short": "Vain seuraajat", - "privacy.public.long": "Julkaise julkisille aikajanoille", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Julkinen", - "privacy.unlisted.long": "Älä julkaise julkisilla aikajanoilla", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Listaamaton julkinen", "refresh": "Päivitä", "regeneration_indicator.label": "Ladataan…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number} sek", "relative_time.today": "tänään", "reply_indicator.cancel": "Peruuta", + "report.block": "Estä", + "report.block_explanation": "Et näe heidän viestejään. He eivät voi nähdä viestejäsi tai seurata sinua. He voivat kertoa, että heidät on estetty.", "report.categories.other": "Muu", "report.categories.spam": "Roskaposti", "report.categories.violation": "Sisältö rikkoo yhden tai useamman palvelimen sääntöjä", + "report.category.subtitle": "Valitse paras osuma", + "report.category.title": "Kerro meille mitä tämän {type} kanssa tapahtuu", + "report.category.title_account": "profiili", + "report.category.title_status": "viesti", + "report.close": "Valmis", + "report.comment.title": "Pitäisikö meidän tietää jotain muuta?", "report.forward": "Välitä kohteeseen {target}", "report.forward_hint": "Tämä tili on toisella palvelimella. Haluatko lähettää nimettömän raportin myös sinne?", - "report.hint": "Raportti lähetetään oman palvelimesi moderaattoreille. Voit kertoa alla, miksi raportoit tästä tilistä:", + "report.mute": "Mykistä", + "report.mute_explanation": "Et näe heidän viestejään. He voivat silti seurata sinua ja nähdä viestisi eivätkä tiedä, että heidät on mykistetty.", + "report.next": "Seuraava", "report.placeholder": "Lisäkommentit", + "report.reasons.dislike": "En pidä siitä", + "report.reasons.dislike_description": "Et halua nähdä sitä", + "report.reasons.other": "Se on jotain muuta", + "report.reasons.other_description": "Ongelma ei sovi muihin kategorioihin", + "report.reasons.spam": "Se on roskapostia", + "report.reasons.spam_description": "Haitalliset linkit, väärennetyt sitoutumiset tai toistuvat vastaukset", + "report.reasons.violation": "Se rikkoo palvelimen sääntöjä", + "report.reasons.violation_description": "Tiedät, että se rikkoo tiettyjä sääntöjä", + "report.rules.subtitle": "Valitse kaikki jotka sopivat", + "report.rules.title": "Mitä sääntöjä rikotaan?", + "report.statuses.subtitle": "Valitse kaikki jotka sopivat", + "report.statuses.title": "Onko olemassa yhtään viestiä, jotka tukevat tätä raporttia?", "report.submit": "Lähetä", "report.target": "Raportoidaan {target}", + "report.thanks.take_action": "Tässä on vaihtoehtosi hallita näkemääsi Mastodonissa:", + "report.thanks.take_action_actionable": "Kun tarkistamme tämän, voit ryhtyä toimiin @{name} vastaan:", + "report.thanks.title": "Etkö halua nähdä tätä?", + "report.thanks.title_actionable": "Kiitos raportista, tutkimme asiaa.", + "report.unfollow": "Lopeta seuraaminen @{name}", + "report.unfollow_explanation": "Seuraat tätä tiliä. Jotta et enää näkisi heidän kirjoituksiaan, lopeta niiden seuraaminen.", "search.placeholder": "Hae", "search_popout.search_format": "Tarkennettu haku", "search_popout.tips.full_text": "Tekstihaku listaa tilapäivitykset, jotka olet kirjoittanut, lisännyt suosikkeihisi, boostannut tai joissa sinut mainitaan, sekä tekstin sisältävät käyttäjänimet, nimimerkit ja hastagit.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Tekstihaku listaa hakua vastaavat nimimerkit, käyttäjänimet ja hastagit", "search_popout.tips.user": "käyttäjä", "search_results.accounts": "Ihmiset", + "search_results.all": "Kaikki", "search_results.hashtags": "Aihetunnisteet", + "search_results.nothing_found": "Näille hakusanoille ei löytynyt mitään", "search_results.statuses": "Viestit", "search_results.statuses_fts_disabled": "Viestien haku sisällön perusteella ei ole käytössä tällä Mastodon-palvelimella.", "search_results.total": "{count, number} {count, plural, one {tulos} other {tulokset}}", @@ -474,6 +514,7 @@ "upload_error.poll": "Tiedon lataaminen ei ole sallittua kyselyissä.", "upload_form.audio_description": "Kuvaile kuulovammaisille", "upload_form.description": "Anna kuvaus näkörajoitteisia varten", + "upload_form.description_missing": "No description added", "upload_form.edit": "Muokkaa", "upload_form.thumbnail": "Vaihda pikkukuva", "upload_form.undo": "Peru", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 8d10a7149..32f2e3f6e 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -18,12 +18,12 @@ "account.followers": "Abonnés", "account.followers.empty": "Personne ne suit cet·te utilisateur·rice pour l’instant.", "account.followers_counter": "{count, plural, one {{counter} Abonné·e} other {{counter} Abonné·e·s}}", + "account.following": "Abonnements", "account.following_counter": "{count, plural, other {{counter} Abonnements}}", "account.follows.empty": "Cet·te utilisateur·rice ne suit personne pour l’instant.", "account.follows_you": "Vous suit", "account.hide_reblogs": "Masquer les partages de @{name}", "account.joined": "Ici depuis {date}", - "account.last_status": "Dernière activité", "account.link_verified_on": "La propriété de ce lien a été vérifiée le {date}", "account.locked_info": "Ce compte est privé. Son ou sa propriétaire approuve manuellement qui peut le suivre.", "account.media": "Médias", @@ -32,7 +32,6 @@ "account.mute": "Masquer @{name}", "account.mute_notifications": "Ignorer les notifications de @{name}", "account.muted": "Masqué·e", - "account.never_active": "Jamais", "account.posts": "Messages", "account.posts_with_replies": "Messages et réponses", "account.report": "Signaler @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Message} other {{counter} Messages}}", "account.unblock": "Débloquer @{name}", "account.unblock_domain": "Débloquer le domaine {domain}", + "account.unblock_short": "Débloquer", "account.unendorse": "Ne plus recommander sur le profil", "account.unfollow": "Ne plus suivre", "account.unmute": "Ne plus masquer @{name}", "account.unmute_notifications": "Ne plus masquer les notifications de @{name}", + "account.unmute_short": "Ne plus masquer", "account_note.placeholder": "Cliquez pour ajouter une note", "admin.dashboard.daily_retention": "Taux de maintien des utilisateur·rice·s par jour après inscription", "admin.dashboard.monthly_retention": "Brugerfastholdelsesrate efter måned efter tilmelding", @@ -69,7 +70,7 @@ "column.blocks": "Comptes bloqués", "column.bookmarks": "Marque-pages", "column.community": "Fil public local", - "column.direct": "Messages directs", + "column.conversations": "Conversations", "column.directory": "Parcourir les profils", "column.domain_blocks": "Domaines bloqués", "column.favourites": "Favoris", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Local seulement", "community.column_settings.media_only": "Média uniquement", "community.column_settings.remote_only": "Distant seulement", - "compose_form.direct_message_warning": "Ce message sera uniquement envoyé aux personnes mentionnées. Cependant, l’administration de votre instance et des instances réceptrices pourront inspecter ce message.", "compose_form.direct_message_warning_learn_more": "En savoir plus", + "compose_form.encryption_warning": "Les messages sur Mastodon ne sont pas chiffrés de bout en bout. Ne partagez aucune information confidentielle sur Mastodon.", "compose_form.hashtag_warning": "Ce pouet ne sera pas listé dans les recherches par hashtag car sa visibilité est réglée sur « non listé ». Seuls les pouets avec une visibilité « publique » peuvent être recherchés par hashtag.", "compose_form.lock_disclaimer": "Votre compte n’est pas {locked}. Tout le monde peut vous suivre et voir vos messages privés.", "compose_form.lock_disclaimer.lock": "verrouillé", @@ -165,8 +166,9 @@ "empty_column.blocks": "Vous n’avez bloqué aucun compte pour le moment.", "empty_column.bookmarked_statuses": "Vous n'avez pas de message en marque-page. Lorsque vous en ajouterez un, il apparaîtra ici.", "empty_column.community": "Le fil public local est vide. Écrivez donc quelque chose pour le remplir !", - "empty_column.direct": "Vous n’avez pas encore de messages directs. Lorsque vous en enverrez ou recevrez un, il s’affichera ici.", + "empty_column.conversations": "Une fois que vous avez envoyé ou reçu un message qui ne sera visible que par les personnes mentionnées, il apparaîtra ici.", "empty_column.domain_blocks": "Il n’y a aucun domaine bloqué pour le moment.", + "empty_column.explore_statuses": "Rien n'est en tendance pour le moment. Revenez plus tard !", "empty_column.favourited_statuses": "Vous n’avez pas encore de message en favori. Lorsque vous en ajouterez un, il apparaîtra ici.", "empty_column.favourites": "Personne n’a encore ajouté ce message à ses favoris. Lorsque quelqu’un le fera, il apparaîtra ici.", "empty_column.follow_recommendations": "Il semble qu’aucune suggestion n’ait pu être générée pour vous. Vous pouvez essayer d’utiliser la recherche pour découvrir des personnes que vous pourriez connaître ou explorer les hashtags tendance.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Essayez de les désactiver et de rafraîchir la page. Si cela ne vous aide pas, vous pouvez toujours utiliser Mastodon via un autre navigateur ou une application native.", "errors.unexpected_crash.copy_stacktrace": "Copier la trace d'appels dans le presse-papier", "errors.unexpected_crash.report_issue": "Signaler le problème", + "explore.search_results": "Résultats de la recherche", + "explore.suggested_follows": "Pour vous", + "explore.title": "Explorer", + "explore.trending_links": "Actualité", + "explore.trending_statuses": "Messages", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Terminé", "follow_recommendations.heading": "Suivez les personnes dont vous aimeriez voir les messages ! Voici quelques suggestions.", "follow_recommendations.lead": "Les messages des personnes que vous suivez apparaîtront par ordre chronologique sur votre fil d'accueil. Ne craignez pas de faire des erreurs, vous pouvez arrêter de suivre les gens aussi facilement à tout moment !", @@ -221,9 +229,9 @@ "keyboard_shortcuts.blocked": "Ouvrir la liste des comptes bloqués", "keyboard_shortcuts.boost": "Partager le message", "keyboard_shortcuts.column": "Se placer dans une colonne", - "keyboard_shortcuts.compose": "se placer dans la zone de rédaction", + "keyboard_shortcuts.compose": "Se placer dans la zone de rédaction", + "keyboard_shortcuts.conversations": "pour ouvrir la colonne des conversations", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "Ouvrir la colonne des messages directs", "keyboard_shortcuts.down": "Descendre dans la liste", "keyboard_shortcuts.enter": "Ouvrir le message", "keyboard_shortcuts.favourite": "Ajouter le message aux favoris", @@ -238,7 +246,7 @@ "keyboard_shortcuts.muted": "Ouvrir la liste des comptes masqués", "keyboard_shortcuts.my_profile": "Ouvrir votre profil", "keyboard_shortcuts.notifications": "Ouvrir la colonne de notifications", - "keyboard_shortcuts.open_media": "ouvrir le média", + "keyboard_shortcuts.open_media": "Ouvrir le média", "keyboard_shortcuts.pinned": "Ouvrir la liste des messages épinglés", "keyboard_shortcuts.profile": "Ouvrir le profil de l’auteur·rice", "keyboard_shortcuts.reply": "Répondre au message", @@ -271,7 +279,7 @@ "lists.subheading": "Vos listes", "load_pending": "{count, plural, one {# nouvel élément} other {# nouveaux éléments}}", "loading_indicator.label": "Chargement…", - "media_gallery.toggle_visible": "Intervertir la visibilité", + "media_gallery.toggle_visible": "{number, plural, one {Cacher l’image} other {Cacher les images}}", "missing_indicator.label": "Non trouvé", "missing_indicator.sublabel": "Ressource introuvable", "mute_modal.duration": "Durée", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Marque-pages", "navigation_bar.community_timeline": "Fil public local", "navigation_bar.compose": "Rédiger un nouveau message", - "navigation_bar.direct": "Messages directs", "navigation_bar.discover": "Découvrir", "navigation_bar.domain_blocks": "Domaines bloqués", "navigation_bar.edit_profile": "Modifier le profil", + "navigation_bar.explore": "Explorer", "navigation_bar.favourites": "Favoris", "navigation_bar.filters": "Mots masqués", "navigation_bar.follow_requests": "Demandes d’abonnement", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Préférences", "navigation_bar.public_timeline": "Fil public global", "navigation_bar.security": "Sécurité", + "notification.admin.sign_up": "{name} s'est inscrit·e", "notification.favourite": "{name} a ajouté le message à ses favoris", "notification.follow": "{name} vous suit", "notification.follow_request": "{name} a demandé à vous suivre", @@ -311,6 +320,7 @@ "notification.update": "{name} a modifié un message", "notifications.clear": "Effacer les notifications", "notifications.clear_confirmation": "Voulez-vous vraiment effacer toutes vos notifications ?", + "notifications.column_settings.admin.sign_up": "Nouvelles inscriptions :", "notifications.column_settings.alert": "Notifications du navigateur", "notifications.column_settings.favourite": "Favoris :", "notifications.column_settings.filter_bar.advanced": "Afficher toutes les catégories", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Supprimer le sondage", "privacy.change": "Ajuster la confidentialité du message", "privacy.direct.long": "Visible uniquement par les comptes mentionnés", - "privacy.direct.short": "Direct", + "privacy.direct.short": "Seulement les personnes mentionnées", "privacy.private.long": "Visible uniquement par vos abonné·e·s", "privacy.private.short": "Abonné·e·s uniquement", - "privacy.public.long": "Visible par tou·te·s, affiché dans les fils publics", + "privacy.public.long": "Visible pour tous", "privacy.public.short": "Public", - "privacy.unlisted.long": "Visible par tou·te·s, mais pas dans les fils publics", + "privacy.unlisted.long": "Visible pour tous, mais sans fonctionnalités de découverte", "privacy.unlisted.short": "Non listé", "refresh": "Actualiser", "regeneration_indicator.label": "Chargement…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number} s", "relative_time.today": "aujourd’hui", "reply_indicator.cancel": "Annuler", + "report.block": "Bloquer", + "report.block_explanation": "Vous ne verrez plus les messages de ce profil, et il ne pourra ni vous suivre ni voir vos messages. Il pourra savoir qu'il a été bloqué.", "report.categories.other": "Autre", "report.categories.spam": "Spam", "report.categories.violation": "Le contenu enfreint une ou plusieurs règles du serveur", + "report.category.subtitle": "Sélctionnez ce qui correspond le mieux", + "report.category.title": "Dites-nous ce qu'il se passe avec {type}", + "report.category.title_account": "ce profil", + "report.category.title_status": "ce message", + "report.close": "Terminé", + "report.comment.title": "Y a-t-il autre chose que nous devrions savoir ?", "report.forward": "Transférer à {target}", "report.forward_hint": "Le compte provient d’un autre serveur. Envoyer également une copie anonyme du rapport ?", - "report.hint": "Le rapport sera envoyé aux modérateur·rice·s de votre serveur. Vous pouvez expliquer pourquoi vous signalez le compte ci-dessous :", + "report.mute": "Masquer", + "report.mute_explanation": "Vous ne verrez plus les messages de ce compte, mais il pourra toujours vous suivre et voir vos messages. Il ne pourra pas savoir qu'il a été masqué.", + "report.next": "Suivant", "report.placeholder": "Commentaires additionnels", + "report.reasons.dislike": "Cela ne me plaît pas", + "report.reasons.dislike_description": "Ce n'est pas quelque chose que vous voulez voir", + "report.reasons.other": "Pour une autre raison", + "report.reasons.other_description": "Le problème ne correspond pas aux autres catégories", + "report.reasons.spam": "C'est du spam", + "report.reasons.spam_description": "Liens malveillants, faux engagement ou réponses répétitives", + "report.reasons.violation": "Infraction des règles du serveur", + "report.reasons.violation_description": "Vous savez que des règles précises sont enfreintes", + "report.rules.subtitle": "Sélectionnez toutes les réponses appropriées", + "report.rules.title": "Quelles règles sont enfreintes ?", + "report.statuses.subtitle": "Sélectionnez toutes les réponses appropriées", + "report.statuses.title": "Existe-t-il des messages pour étayer ce rapport ?", "report.submit": "Envoyer", "report.target": "Signalement de {target}", + "report.thanks.take_action": "Voici les possibilités que vous avez pour contrôler ce que vous voyez sur Mastodon :", + "report.thanks.take_action_actionable": "Pendant que nous étudions votre requête, vous pouvez prendre des mesures contre @{name} :", + "report.thanks.title": "Vous ne voulez pas voir cela ?", + "report.thanks.title_actionable": "Merci pour votre signalement, nous allons investiguer.", + "report.unfollow": "Ne plus suivre @{name}", + "report.unfollow_explanation": "Vous suivez ce compte. Désabonnez-vous pour ne plus en voir les messages sur votre fil principal.", "search.placeholder": "Rechercher", "search_popout.search_format": "Recherche avancée", "search_popout.tips.full_text": "Un texte normal retourne les messages que vous avez écrits, ajoutés à vos favoris, partagés, ou vous mentionnant, ainsi que les identifiants, les noms affichés, et les hashtags des personnes et messages correspondants.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Un texte simple renvoie les noms affichés, les identifiants et les hashtags correspondants", "search_popout.tips.user": "utilisateur·ice", "search_results.accounts": "Comptes", + "search_results.all": "Tous les résultats", "search_results.hashtags": "Hashtags", + "search_results.nothing_found": "Aucun résultat avec ces mots-clefs", "search_results.statuses": "Messages", "search_results.statuses_fts_disabled": "La recherche de messages par leur contenu n'est pas activée sur ce serveur Mastodon.", "search_results.total": "{count, number} {count, plural, one {résultat} other {résultats}}", @@ -474,6 +514,7 @@ "upload_error.poll": "L’envoi de fichiers n’est pas autorisé avec les sondages.", "upload_form.audio_description": "Décrire pour les personnes ayant des difficultés d’audition", "upload_form.description": "Décrire pour les malvoyant·e·s", + "upload_form.description_missing": "Description manquante", "upload_form.edit": "Modifier", "upload_form.thumbnail": "Changer la vignette", "upload_form.undo": "Supprimer", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 60e6441c3..6370cd9d6 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -1,53 +1,54 @@ { - "account.account_note_header": "Your note for @{name}", - "account.add_or_remove_from_list": "Add or Remove from lists", - "account.badges.bot": "Bot", - "account.badges.group": "Group", - "account.block": "Block @{name}", - "account.block_domain": "Hide everything from {domain}", - "account.blocked": "Blocked", - "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Cancel follow request", - "account.direct": "Direct message @{name}", - "account.disable_notifications": "Stop notifying me when @{name} posts", - "account.domain_blocked": "Domain hidden", - "account.edit_profile": "Edit profile", - "account.enable_notifications": "Notify me when @{name} posts", - "account.endorse": "Feature on profile", - "account.follow": "Follow", - "account.followers": "Followers", - "account.followers.empty": "No one follows this user yet.", - "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", - "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", - "account.follows.empty": "This user doesn't follow anyone yet.", - "account.follows_you": "Follows you", - "account.hide_reblogs": "Hide boosts from @{name}", - "account.joined": "Joined {date}", - "account.last_status": "Last active", + "account.account_note_header": "Nóta", + "account.add_or_remove_from_list": "Cuir Le nó Bain De na liostaí", + "account.badges.bot": "Bota", + "account.badges.group": "Grúpa", + "account.block": "Bac @{name}", + "account.block_domain": "Bac ainm fearainn {domain}", + "account.blocked": "Bactha", + "account.browse_more_on_origin_server": "Brabhsáil níos mó ar an phróifíl bhunaidh", + "account.cancel_follow_request": "Cealaigh iarratas leanúnaí", + "account.direct": "Seol teachtaireacht dhíreach chuig @{name}", + "account.disable_notifications": "Éirigh as ag cuir mé in eol nuair bpostálann @{name}", + "account.domain_blocked": "Ainm fearainn bactha", + "account.edit_profile": "Cuir an phróifíl in eagar", + "account.enable_notifications": "Cuir mé in eol nuair bpostálann @{name}", + "account.endorse": "Cuir ar an phróifíl mar ghné", + "account.follow": "Lean", + "account.followers": "Leantóirí", + "account.followers.empty": "Ní leanann éinne an t-úsáideoir seo fós.", + "account.followers_counter": "{count, plural, one {Leantóir amháin} other {{counter} Leantóir}}", + "account.following": "Ag leanúint", + "account.following_counter": "{count, plural, one {Ag leanúint cúntas amháin} other {Ag leanúint {counter} cúntas}}", + "account.follows.empty": "Ní leanann an t-úsáideoir seo duine ar bith fós.", + "account.follows_you": "Do do leanúint", + "account.hide_reblogs": "Folaigh athphostálacha ó @{name}", + "account.joined": "Ina bhall ó {date}", "account.link_verified_on": "Ownership of this link was checked on {date}", - "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", - "account.media": "Media", - "account.mention": "Mention @{name}", - "account.moved_to": "{name} has moved to:", - "account.mute": "Mute @{name}", - "account.mute_notifications": "Mute notifications from @{name}", - "account.muted": "Muted", - "account.never_active": "Never", - "account.posts": "Toots", - "account.posts_with_replies": "Toots and replies", - "account.report": "Report @{name}", - "account.requested": "Awaiting approval", - "account.share": "Share @{name}'s profile", - "account.show_reblogs": "Show boosts from @{name}", - "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", - "account.unblock": "Unblock @{name}", - "account.unblock_domain": "Unhide {domain}", - "account.unendorse": "Don't feature on profile", - "account.unfollow": "Unfollow", - "account.unmute": "Unmute @{name}", - "account.unmute_notifications": "Unmute notifications from @{name}", - "account_note.placeholder": "No comment provided", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "account.locked_info": "Tá an socrú príobháideachais don cuntas seo curtha go 'faoi ghlas'. Déanann an t-úinéir léirmheas ar cén daoine atá ceadaithe an cuntas leanúint.", + "account.media": "Ábhair", + "account.mention": "Luaigh @{name}", + "account.moved_to": "Tá {name} bogtha go:", + "account.mute": "Balbhaigh @{name}", + "account.mute_notifications": "Balbhaigh fógraí ó @{name}", + "account.muted": "Balbhaithe", + "account.posts": "Postálacha", + "account.posts_with_replies": "Postálacha agus freagraí", + "account.report": "Tuairiscigh @{name}", + "account.requested": "Ag fanacht le ceadú. Cliceáil chun an iarratas leanúnaí a chealú", + "account.share": "Roinn próifíl @{name}", + "account.show_reblogs": "Taispeáin athphostálacha ó @{name}", + "account.statuses_counter": "{count, plural, one {Postáil amháin} other {{counter} Postáil}}", + "account.unblock": "Bain bac de @{name}", + "account.unblock_domain": "Bain bac den ainm fearainn {domain}", + "account.unblock_short": "Bain bac de", + "account.unendorse": "Ná chuir ar an phróifíl mar ghné", + "account.unfollow": "Ná lean a thuilleadh", + "account.unmute": "Díbhalbhaigh @{name}", + "account.unmute_notifications": "Díbhalbhaigh fógraí ó @{name}", + "account.unmute_short": "Díbhalbhaigh", + "account_note.placeholder": "Cliceáil chun nóta a chuir leis", + "admin.dashboard.daily_retention": "Ráta coinneála an úsáideora de réir an lae tar éis clárú", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", @@ -55,48 +56,48 @@ "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.", "alert.rate_limited.title": "Rate limited", "alert.unexpected.message": "An unexpected error occurred.", - "alert.unexpected.title": "Oops!", - "announcement.announcement": "Announcement", + "alert.unexpected.title": "Hiúps!", + "announcement.announcement": "Fógra", "attachments_list.unprocessed": "(unprocessed)", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.body": "Something went wrong while loading this component.", - "bundle_column_error.retry": "Try again", + "bundle_column_error.retry": "Bain triail as arís", "bundle_column_error.title": "Network error", - "bundle_modal_error.close": "Close", + "bundle_modal_error.close": "Dún", "bundle_modal_error.message": "Something went wrong while loading this component.", - "bundle_modal_error.retry": "Try again", - "column.blocks": "Blocked users", - "column.bookmarks": "Bookmarks", + "bundle_modal_error.retry": "Bain triail as arís", + "column.blocks": "Cuntais choiscthe", + "column.bookmarks": "Leabharmharcanna", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.conversations": "Conversations", "column.directory": "Browse profiles", - "column.domain_blocks": "Hidden domains", + "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", "column.follow_requests": "Follow requests", - "column.home": "Home", - "column.lists": "Lists", - "column.mutes": "Muted users", + "column.home": "Baile", + "column.lists": "Liostaí", + "column.mutes": "Úsáideoirí balbhaithe", "column.notifications": "Notifications", - "column.pins": "Pinned toot", + "column.pins": "Pinned post", "column.public": "Federated timeline", - "column_back_button.label": "Back", + "column_back_button.label": "Siar", "column_header.hide_settings": "Hide settings", "column_header.moveLeft_settings": "Move column to the left", "column_header.moveRight_settings": "Move column to the right", - "column_header.pin": "Pin", + "column_header.pin": "Greamaigh", "column_header.show_settings": "Show settings", - "column_header.unpin": "Unpin", - "column_subheading.settings": "Settings", + "column_header.unpin": "Díghreamaigh", + "column_subheading.settings": "Socruithe", "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Remote only", - "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.", "compose_form.direct_message_warning_learn_more": "Learn more", - "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "locked", - "compose_form.placeholder": "What is on your mind?", + "compose_form.placeholder": "Cad atá ag tarlú?", "compose_form.poll.add_option": "Add a choice", "compose_form.poll.duration": "Poll duration", "compose_form.poll.option_placeholder": "Choice {number}", @@ -120,20 +121,20 @@ "confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete_list.confirm": "Delete", "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Faigh réidh de", + "confirmations.discard_edit_media.message": "Tá athruithe neamhshlánaithe don tuarascáil gné nó réamhamharc agat, faigh réidh dóibh ar aon nós?", "confirmations.domain_block.confirm": "Hide entire domain", - "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", - "confirmations.logout.confirm": "Log out", + "confirmations.domain_block.message": "An bhfuil tú iontach cinnte gur mhaith leat bac an t-ainm fearainn {domain} in iomlán? I bhformhór na gcásanna, is leor agus is fearr cúpla baic a cur i bhfeidhm nó cúpla úsáideoirí a balbhú. Ní fheicfidh tú ábhair ón t-ainm fearainn sin in amlíne ar bith, nó i d'fhógraí. Scaoilfear do leantóirí ón ainm fearainn sin.", + "confirmations.logout.confirm": "Logáil amach", "confirmations.logout.message": "Are you sure you want to log out?", - "confirmations.mute.confirm": "Mute", + "confirmations.mute.confirm": "Balbhaigh", "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.", - "confirmations.mute.message": "Are you sure you want to mute {name}?", + "confirmations.mute.message": "An bhfuil tú cinnte gur mhaith leat {name} a bhalbhú?", "confirmations.redraft.confirm": "Delete & redraft", "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.", "confirmations.reply.confirm": "Reply", "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", - "confirmations.unfollow.confirm": "Unfollow", + "confirmations.unfollow.confirm": "Ná lean", "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?", "conversation.delete": "Delete conversation", "conversation.mark_as_read": "Mark as read", @@ -145,39 +146,40 @@ "directory.recently_active": "Recently active", "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", - "emoji_button.activity": "Activity", + "emoji_button.activity": "Gníomhaíocht", "emoji_button.custom": "Custom", "emoji_button.flags": "Flags", - "emoji_button.food": "Food & Drink", + "emoji_button.food": "Bia ⁊ Ól", "emoji_button.label": "Insert emoji", - "emoji_button.nature": "Nature", - "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻", + "emoji_button.nature": "Nádur", + "emoji_button.not_found": "No matching emojis found", "emoji_button.objects": "Objects", - "emoji_button.people": "People", + "emoji_button.people": "Daoine", "emoji_button.recent": "Frequently used", - "emoji_button.search": "Search...", + "emoji_button.search": "Cuardaigh...", "emoji_button.search_results": "Search results", "emoji_button.symbols": "Symbols", - "emoji_button.travel": "Travel & Places", + "emoji_button.travel": "Taisteal ⁊ Áiteanna", "empty_column.account_suspended": "Account suspended", - "empty_column.account_timeline": "No toots here!", + "empty_column.account_timeline": "No posts found", "empty_column.account_unavailable": "Profile unavailable", "empty_column.blocks": "You haven't blocked any users yet.", - "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", + "empty_column.bookmarked_statuses": "You don't have any bookmarked posts yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", - "empty_column.domain_blocks": "There are no hidden domains yet.", - "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", - "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.domain_blocks": "There are no blocked domains yet.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.favourited_statuses": "You don't have any favourite posts yet. When you favourite one, it will show up here.", + "empty_column.favourites": "No one has favourited this post yet. When someone does, they will show up here.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.", "empty_column.hashtag": "There is nothing in this hashtag yet.", - "empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.", + "empty_column.home": "Your home timeline is empty! Follow more people to fill it up. {suggestions}", "empty_column.home.suggestions": "See some suggestions", "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.", "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.", - "empty_column.mutes": "You haven't muted any users yet.", - "empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.", + "empty_column.mutes": "Níl aon úsáideoir balbhaithe agat fós.", + "empty_column.notifications": "You don't have any notifications yet. When other people interact with you, you will see it here.", "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up", "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.", "error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.", @@ -185,11 +187,17 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", "errors.unexpected_crash.report_issue": "Report issue", - "follow_recommendations.done": "Done", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Féach thart", + "explore.trending_links": "Nuacht", + "explore.trending_statuses": "Postálacha", + "explore.trending_tags": "Haischlibeanna", + "follow_recommendations.done": "Déanta", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", - "follow_request.authorize": "Authorize", - "follow_request.reject": "Reject", + "follow_request.authorize": "Ceadaigh", + "follow_request.reject": "Diúltaigh", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "generic.saved": "Saved", "getting_started.developers": "Developers", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -235,11 +243,11 @@ "keyboard_shortcuts.legend": "to display this legend", "keyboard_shortcuts.local": "to open local timeline", "keyboard_shortcuts.mention": "to mention author", - "keyboard_shortcuts.muted": "to open muted users list", + "keyboard_shortcuts.muted": "Oscail liosta na n-úsáideoirí balbhaithe", "keyboard_shortcuts.my_profile": "to open your profile", "keyboard_shortcuts.notifications": "to open notifications column", "keyboard_shortcuts.open_media": "to open media", - "keyboard_shortcuts.pinned": "to open pinned toots list", + "keyboard_shortcuts.pinned": "to open pinned posts list", "keyboard_shortcuts.profile": "to open author's profile", "keyboard_shortcuts.reply": "to reply", "keyboard_shortcuts.requests": "to open follow requests list", @@ -248,7 +256,7 @@ "keyboard_shortcuts.start": "to open \"get started\" column", "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW", "keyboard_shortcuts.toggle_sensitivity": "to show/hide media", - "keyboard_shortcuts.toot": "to start a brand new toot", + "keyboard_shortcuts.toot": "to start a brand new post", "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search", "keyboard_shortcuts.up": "to move up in the list", "lightbox.close": "Close", @@ -259,8 +267,8 @@ "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", - "lists.edit": "Edit list", - "lists.edit.submit": "Change title", + "lists.edit": "Cuir an liosta in eagar", + "lists.edit.submit": "Athraigh teideal", "lists.new.create": "Add list", "lists.new.title_placeholder": "New list title", "lists.replies_policy.followed": "Any followed user", @@ -271,63 +279,65 @@ "lists.subheading": "Your lists", "load_pending": "{count, plural, one {# new item} other {# new items}}", "loading_indicator.label": "Loading...", - "media_gallery.toggle_visible": "Hide media", + "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", "missing_indicator.label": "Not found", "missing_indicator.sublabel": "This resource could not be found", - "mute_modal.duration": "Duration", - "mute_modal.hide_notifications": "Hide notifications from this user?", - "mute_modal.indefinite": "Indefinite", + "mute_modal.duration": "Tréimhse", + "mute_modal.hide_notifications": "Cuir póstalacha ón t-úsáideoir seo i bhfolach?", + "mute_modal.indefinite": "Gan téarma", "navigation_bar.apps": "Mobile apps", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", - "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", + "navigation_bar.compose": "Compose new post", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", - "navigation_bar.edit_profile": "Edit profile", + "navigation_bar.edit_profile": "Cuir an phróifíl in eagar", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Favourites", - "navigation_bar.filters": "Muted words", + "navigation_bar.filters": "Focail bhalbhaithe", "navigation_bar.follow_requests": "Follow requests", - "navigation_bar.follows_and_followers": "Follows and followers", + "navigation_bar.follows_and_followers": "Ag leanúint agus do do leanúint", "navigation_bar.info": "About this server", - "navigation_bar.keyboard_shortcuts": "Hotkeys", - "navigation_bar.lists": "Lists", - "navigation_bar.logout": "Logout", - "navigation_bar.mutes": "Muted users", - "navigation_bar.personal": "Personal", - "navigation_bar.pins": "Pinned toots", + "navigation_bar.keyboard_shortcuts": "Eochracha Aicearra", + "navigation_bar.lists": "Liostaí", + "navigation_bar.logout": "Logáil Amach", + "navigation_bar.mutes": "Úsáideoirí balbhaithe", + "navigation_bar.personal": "Pearsanta", + "navigation_bar.pins": "Pinned posts", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", - "notification.follow": "{name} followed you", - "notification.follow_request": "{name} has requested to follow you", + "notification.follow": "Lean {name} thú", + "notification.follow_request": "D'iarr {name} ort do chuntas a leanúint", "notification.mention": "{name} mentioned you", "notification.own_poll": "Your poll has ended", "notification.poll": "A poll you have voted in has ended", "notification.reblog": "{name} boosted your status", "notification.status": "{name} just posted", - "notification.update": "{name} edited a post", + "notification.update": "Chuir {name} postáil in eagar", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.filter_bar.advanced": "Display all categories", "notifications.column_settings.filter_bar.category": "Quick filter bar", "notifications.column_settings.filter_bar.show_bar": "Show filter bar", - "notifications.column_settings.follow": "New followers:", - "notifications.column_settings.follow_request": "New follow requests:", + "notifications.column_settings.follow": "Leantóirí nua:", + "notifications.column_settings.follow_request": "Iarratais leanúnaí nua:", "notifications.column_settings.mention": "Mentions:", "notifications.column_settings.poll": "Poll results:", "notifications.column_settings.push": "Push notifications", "notifications.column_settings.reblog": "Boosts:", "notifications.column_settings.show": "Show in column", "notifications.column_settings.sound": "Play sound", - "notifications.column_settings.status": "New toots:", + "notifications.column_settings.status": "New posts:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.update": "Eagair:", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", @@ -355,16 +365,16 @@ "poll_button.add_poll": "Add a poll", "poll_button.remove_poll": "Remove poll", "privacy.change": "Adjust status privacy", - "privacy.direct.long": "Post to mentioned users only", + "privacy.direct.long": "Visible for mentioned users only", "privacy.direct.short": "Direct", - "privacy.private.long": "Post to followers only", + "privacy.private.long": "Sofheicthe do Leantóirí amháin", "privacy.private.short": "Followers-only", - "privacy.public.long": "Post to public timelines", - "privacy.public.short": "Public", - "privacy.unlisted.long": "Do not show in public timelines", + "privacy.public.long": "Visible for all", + "privacy.public.short": "Poiblí", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "Refresh", - "regeneration_indicator.label": "Loading…", + "regeneration_indicator.label": "Ag lódáil…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", "relative_time.days": "{number}d", "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", @@ -376,28 +386,58 @@ "relative_time.just_now": "now", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", - "relative_time.today": "today", + "relative_time.today": "inniu", "reply_indicator.cancel": "Cancel", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", - "report.categories.spam": "Spam", + "report.categories.spam": "Turscar", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Déanta", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", - "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", - "report.placeholder": "Additional comments", - "report.submit": "Submit", + "report.mute": "Balbhaigh", + "report.mute_explanation": "Ní fheicfidh tú a postálacha. Is féidir an té seo tú a leanúint agus do phostálacha a fheiceáil, agus ní fhios go bhfuil iad balbhaithe.", + "report.next": "Next", + "report.placeholder": "Type or paste additional comments", + "report.reasons.dislike": "Ní maith liom é", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", + "report.submit": "Submit report", "report.target": "Report {target}", - "search.placeholder": "Search", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "search.placeholder": "Cuardaigh", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", - "search_popout.tips.hashtag": "hashtag", + "search_popout.tips.hashtag": "haischlib", "search_popout.tips.status": "status", "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", "search_popout.tips.user": "user", - "search_results.accounts": "People", - "search_results.hashtags": "Hashtags", - "search_results.statuses": "Toots", - "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.accounts": "Daoine", + "search_results.all": "All", + "search_results.hashtags": "Haischlibeanna", + "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.statuses": "Postálacha", + "search_results.statuses_fts_disabled": "Searching posts by their content is not enabled on this Mastodon server.", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", @@ -406,31 +446,31 @@ "status.cancel_reblog_private": "Unboost", "status.cannot_reblog": "This post cannot be boosted", "status.copy": "Copy link to status", - "status.delete": "Delete", + "status.delete": "Scrios", "status.detailed_status": "Detailed conversation view", "status.direct": "Direct message @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Cuir in eagar", + "status.edited": "Curtha in eagar in {date}", + "status.edited_x_times": "Curtha in eagar {count, plural, one {{count} uair amháin} two {{count} uair} few {{count} uair} many {{count} uair} other {{count} uair}}", "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.edited": "Curtha in eagar ag {name} in {date}", "status.load_more": "Load more", "status.media_hidden": "Media hidden", "status.mention": "Mention @{name}", - "status.more": "More", - "status.mute": "Mute @{name}", - "status.mute_conversation": "Mute conversation", + "status.more": "Tuilleadh", + "status.mute": "Balbhaigh @{name}", + "status.mute_conversation": "Balbhaigh comhrá", "status.open": "Expand this status", "status.pin": "Pin on profile", - "status.pinned": "Pinned toot", + "status.pinned": "Pinned post", "status.read_more": "Read more", "status.reblog": "Boost", "status.reblog_private": "Boost with original visibility", "status.reblogged_by": "{name} boosted", - "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", + "status.reblogs.empty": "No one has boosted this post yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", "status.reply": "Reply", @@ -444,24 +484,24 @@ "status.show_more_all": "Show more for all", "status.show_thread": "Show thread", "status.uncached_media_warning": "Not available", - "status.unmute_conversation": "Unmute conversation", + "status.unmute_conversation": "Díbhalbhaigh comhrá", "status.unpin": "Unpin from profile", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", - "tabs_bar.home": "Home", + "tabs_bar.home": "Baile", "tabs_bar.local_timeline": "Local", "tabs_bar.notifications": "Notifications", - "tabs_bar.search": "Search", + "tabs_bar.search": "Cuardaigh", "time_remaining.days": "{number, plural, one {# day} other {# days}} left", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", "time_remaining.moments": "Moments remaining", "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left", "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.", - "timeline_hint.resources.followers": "Followers", + "timeline_hint.resources.followers": "Leantóirí", "timeline_hint.resources.follows": "Follows", - "timeline_hint.resources.statuses": "Older toots", + "timeline_hint.resources.statuses": "Older posts", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", @@ -469,12 +509,13 @@ "units.short.million": "{count}M", "units.short.thousand": "{count}K", "upload_area.title": "Drag & drop to upload", - "upload_button.label": "Add media ({formats})", + "upload_button.label": "Add images, a video or an audio file", "upload_error.limit": "File upload limit exceeded.", "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", - "upload_form.edit": "Edit", + "upload_form.description_missing": "No description added", + "upload_form.edit": "Cuir in eagar", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Delete", "upload_form.video_description": "Describe for people with hearing loss or visual impairment", @@ -484,19 +525,19 @@ "upload_modal.choose_image": "Choose image", "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog", "upload_modal.detect_text": "Detect text from picture", - "upload_modal.edit_media": "Edit media", + "upload_modal.edit_media": "Cuir gné in eagar", "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", - "upload_progress.label": "Uploading...", + "upload_progress.label": "Uploading…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", "video.expand": "Expand video", "video.fullscreen": "Full screen", "video.hide": "Hide video", - "video.mute": "Mute sound", - "video.pause": "Pause", - "video.play": "Play", - "video.unmute": "Unmute sound" + "video.mute": "Ciúnaigh fuaim", + "video.pause": "Cuir ar sos", + "video.play": "Cuir ar siúl", + "video.unmute": "Díchiúnaigh fuaim" } diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index a7ffbe6b2..8fec2747c 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -18,12 +18,12 @@ "account.followers": "Luchd-leantainn", "account.followers.empty": "Chan eil neach sam bith a’ leantainn air a’ chleachdaiche seo fhathast.", "account.followers_counter": "{count, plural, one {{counter} neach-leantainn} two {{counter} neach-leantainn} few {{counter} luchd-leantainn} other {{counter} luchd-leantainn}}", + "account.following": "A’ leantainn", "account.following_counter": "{count, plural, one {A’ leantainn air {counter}} two {A’ leantainn air {counter}} few {A’ leantainn air {counter}} other {A’ leantainn air {counter}}}", "account.follows.empty": "Chan eil an cleachdaiche seo a’ leantainn air neach sam bith fhathast.", "account.follows_you": "’Gad leantainn", "account.hide_reblogs": "Falaich na brosnachaidhean o @{name}", "account.joined": "Air ballrachd fhaighinn {date}", - "account.last_status": "An gnìomh mu dheireadh", "account.link_verified_on": "Chaidh dearbhadh cò leis a tha an ceangal seo {date}", "account.locked_info": "Tha prìobhaideachd ghlaiste aig a’ chunntais seo. Nì an sealbhadair lèirmheas a làimh air cò dh’fhaodas leantainn orra.", "account.media": "Meadhanan", @@ -32,7 +32,6 @@ "account.mute": "Mùch @{name}", "account.mute_notifications": "Mùch na brathan o @{name}", "account.muted": "’Ga mhùchadh", - "account.never_active": "Chan ann idir", "account.posts": "Postaichean", "account.posts_with_replies": "Postaichean ’s freagairtean", "account.report": "Dèan gearan mu @{name}", @@ -42,13 +41,15 @@ "account.statuses_counter": "{count, plural, one {{counter} phost} two {{counter} phost} few {{counter} postaichean} other {{counter} post}}", "account.unblock": "Dì-bhac @{name}", "account.unblock_domain": "Dì-bhac an àrainn {domain}", + "account.unblock_short": "Dì-bhac", "account.unendorse": "Na brosnaich air a’ phròifil", "account.unfollow": "Na lean tuilleadh", "account.unmute": "Dì-mhùch @{name}", "account.unmute_notifications": "Dì-mhùch na brathan o @{name}", + "account.unmute_short": "Dì-mhùch", "account_note.placeholder": "Briog airson nòta a chur ris", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Reat glèidheadh nan cleachdaichean às dèidh an clàradh a-rèir latha", + "admin.dashboard.monthly_retention": "Reat glèidheadh nan cleachdaichean às dèidh an clàradh a-rèir mìos", "admin.dashboard.retention.average": "Cuibheasach", "admin.dashboard.retention.cohort": "Mìos a’ chlàraidh", "admin.dashboard.retention.cohort_size": "Cleachdaichean ùra", @@ -69,7 +70,7 @@ "column.blocks": "Cleachdaichean bacte", "column.bookmarks": "Comharran-lìn", "column.community": "Loidhne-ama ionadail", - "column.direct": "Teachdaireachdan dìreach", + "column.conversations": "Còmhraidhean", "column.directory": "Rùraich sna pròifilean", "column.domain_blocks": "Àrainnean bacte", "column.favourites": "Na h-annsachdan", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Feadhainn ionadail a-mhàin", "community.column_settings.media_only": "Meadhanan a-mhàin", "community.column_settings.remote_only": "Feadhainn chèin a-mhàin", - "compose_form.direct_message_warning": "Cha dèid am post seo a chur ach dha na cleachdaichean air an dug thu iomradh.", "compose_form.direct_message_warning_learn_more": "Barrachd fiosrachaidh", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Cha nochd am post seo fon taga hais on a tha e falaichte o liostaichean. Cha ghabh ach postaichean poblach a lorg a-rèir an tagaichean hais.", "compose_form.lock_disclaimer": "Chan eil an cunntas agad {locked}. ’S urrainn do dhuine sam bith leantainn ort is na postaichean agad a tha ag amas air an luchd-leantainn agad a-mhàin a shealltainn.", "compose_form.lock_disclaimer.lock": "glaiste", @@ -105,7 +106,7 @@ "compose_form.poll.switch_to_single": "Atharraich an cunntas-bheachd gus nach gabh ach aon roghainn a thaghadh", "compose_form.publish": "Postaich", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Sàbhail na h-atharraichean", "compose_form.sensitive.hide": "{count, plural, one {Cuir comharra gu bheil am meadhan frionasach} two {Cuir comharra gu bheil na meadhanan frionasach} few {Cuir comharra gu bheil na meadhanan frionasach} other {Cuir comharra gu bheil na meadhanan frionasach}}", "compose_form.sensitive.marked": "{count, plural, one {Tha comharra ris a’ mheadhan gu bheil e frionasach} two {Tha comharra ris na meadhanan gu bheil iad frionasach} few {Tha comharra ris na meadhanan gu bheil iad frionasach} other {Tha comharra ris na meadhanan gu bheil iad frionasach}}", "compose_form.sensitive.unmarked": "{count, plural, one {Chan eil comharra ris a’ mheadhan gun robh e frionasach} two {Chan eil comharra ris na meadhanan gun robh iad frionasach} few {Chan eil comharra ris na meadhanan gun robh iad frionasach} other {Chan eil comharra ris na meadhanan gun robh iad frionasach}}", @@ -165,8 +166,9 @@ "empty_column.blocks": "Cha do bhac thu cleachdaiche sam bith fhathast.", "empty_column.bookmarked_statuses": "Chan eil comharra-lìn ri post agad fhathast. Nuair a nì thu comharra-lìn de dh’fhear, nochdaidh e an-seo.", "empty_column.community": "Tha an loidhne-ama ionadail falamh. Sgrìobh rudeigin gu poblach airson toiseach-tòiseachaidh a dhèanamh!", - "empty_column.direct": "Chan eil teachdaireachd dhìreach agad fhathast. Nuair a chuireas no a gheibh thu tè, nochdaidh i an-seo.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Cha deach àrainn sam bith a bhacadh fhathast.", + "empty_column.explore_statuses": "Chan eil dad a’ treandadh an-dràsta fhèin. Thoir sùil a-rithist an ceann greis!", "empty_column.favourited_statuses": "Chan eil annsachd air post agad fhathast. Nuair a nì thu annsachd de dh’fhear, nochdaidh e an-seo.", "empty_column.favourites": "Chan eil am post seo ’na annsachd aig duine sam bith fhathast. Nuair a nì daoine annsachd dheth, nochdaidh iad an-seo.", "empty_column.follow_recommendations": "Chan urrainn dhuinn dad a mholadh dhut. Cleachd gleus an luirg feuch an lorg thu daoine air a bheil thu eòlach no rùraich na tagaichean-hais a tha a’ treandadh.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Feuch an cuir thu à comas iad ’s gun ath-nuadhaich thu an duilleag seo. Mura cuidich sin, dh’fhaoidte gur urrainn dhut Mastodon a chleachdadh fhathast le brabhsair eile no le aplacaid thùsail.", "errors.unexpected_crash.copy_stacktrace": "Cuir lethbhreac dhen stacktrace air an stòr-bhòrd", "errors.unexpected_crash.report_issue": "Dèan aithris air an duilgheadas", + "explore.search_results": "Toraidhean an luirg", + "explore.suggested_follows": "Dhut-sa", + "explore.title": "Rùraich", + "explore.trending_links": "Naidheachdan", + "explore.trending_statuses": "Postaichean", + "explore.trending_tags": "Tagaichean hais", "follow_recommendations.done": "Deiseil", "follow_recommendations.heading": "Lean air daoine ma tha thu airson nam postaichean aca fhaicinn! Seo moladh no dà dhut.", "follow_recommendations.lead": "Nochdaidh na postaichean aig na daoine air a leanas tu a-rèir an ama air inbhir na dachaighe agad. Bi dàna on as urrainn dhut sgur de leantainn air daoine cuideachd uair sam bith!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "Brosnaich post", "keyboard_shortcuts.column": "Cuir am fòcas air colbh", "keyboard_shortcuts.compose": "Cuir am fòcas air raon teacsa an sgrìobhaidh", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Tuairisgeul", - "keyboard_shortcuts.direct": "Fosgail colbh nan teachdaireachdan dìreach", "keyboard_shortcuts.down": "Gluais sìos air an liosta", "keyboard_shortcuts.enter": "Fosgail post", "keyboard_shortcuts.favourite": "Cuir post ris na h-annsachdan", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Comharran-lìn", "navigation_bar.community_timeline": "Loidhne-ama ionadail", "navigation_bar.compose": "Sgrìobh post ùr", - "navigation_bar.direct": "Teachdaireachdan dìreach", "navigation_bar.discover": "Fidir", "navigation_bar.domain_blocks": "Àrainnean bacte", "navigation_bar.edit_profile": "Deasaich a’ phròifil", + "navigation_bar.explore": "Rùraich", "navigation_bar.favourites": "Na h-annsachdan", "navigation_bar.filters": "Faclan mùchte", "navigation_bar.follow_requests": "Iarrtasan leantainn", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Roghainnean", "navigation_bar.public_timeline": "Loidhne-ama cho-naisgte", "navigation_bar.security": "Tèarainteachd", + "notification.admin.sign_up": "Chlàraich {name}", "notification.favourite": "Is annsa le {name} am post agad", "notification.follow": "Tha {name} a’ leantainn ort a-nis", "notification.follow_request": "Dh’iarr {name} leantainn ort", @@ -308,9 +317,10 @@ "notification.poll": "Thàinig cunntas-bheachd sa bhòt thu gu crìoch", "notification.reblog": "Bhrosnaich {name} am post agad", "notification.status": "Tha {name} air rud a phostadh", - "notification.update": "{name} edited a post", + "notification.update": "Dheasaich {name} post", "notifications.clear": "Falamhaich na brathan", "notifications.clear_confirmation": "A bheil thu cinnteach gu bheil thu airson na brathan uile agad fhalamhachadh gu buan?", + "notifications.column_settings.admin.sign_up": "Clàraidhean ùra:", "notifications.column_settings.alert": "Brathan deasga", "notifications.column_settings.favourite": "Na h-annsachdan:", "notifications.column_settings.filter_bar.advanced": "Seall a h-uile roinn-seòrsa", @@ -327,7 +337,7 @@ "notifications.column_settings.status": "Postaichean ùra:", "notifications.column_settings.unread_notifications.category": "Brathan nach deach a leughadh", "notifications.column_settings.unread_notifications.highlight": "Soillsich na brathan nach deach a leughadh", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.update": "Deasachaidhean:", "notifications.filter.all": "Na h-uile", "notifications.filter.boosts": "Brosnachaidhean", "notifications.filter.favourites": "Na h-annsachdan", @@ -356,37 +366,65 @@ "poll_button.remove_poll": "Thoir air falbh an cunntas-bheachd", "privacy.change": "Cuir gleus air prìobhaideachd a’ phuist", "privacy.direct.long": "Chan fhaic ach na cleachdaichean le iomradh orra seo", - "privacy.direct.short": "Dìreach", + "privacy.direct.short": "Daoine air an dug mi iomradh a-mhàin", "privacy.private.long": "Chan fhaic ach na daoine a tha a’ leantainn ort seo", "privacy.private.short": "Luchd-leantainn a-mhàin", - "privacy.public.long": "Chì a h-uile duine seo ’s e ’ga shealltainn air loidhnichean-ama poblach", + "privacy.public.long": "Visible for all", "privacy.public.short": "Poblach", - "privacy.unlisted.long": "Chì a h-uile duine seo ach cha dèid a shealltainn air loidhnichean-ama poblach", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Falaichte o liostaichean", "refresh": "Ath-nuadhaich", "regeneration_indicator.label": "’Ga luchdadh…", "regeneration_indicator.sublabel": "Tha inbhir na dachaigh agad ’ga ullachadh!", "relative_time.days": "{number}l", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{count, plural, one {# latha} two {# latha} few {# làithean} other {# latha}} air ais", + "relative_time.full.hours": "{count, plural, one {# uair a thìde} two {# uair a thìde} few {# uairean a thìde} other {# uair a thìde}} air ais", + "relative_time.full.just_now": "an-dràsta fhèin", + "relative_time.full.minutes": "{count, plural, one {# mhionaid} two {# mhionaid} few {# mionaidean} other {# mionaid}} air ais", + "relative_time.full.seconds": "{count, plural, one {# diog} two {# dhiog} few {# diogan} other {# diog}} air ais", "relative_time.hours": "{number}u", "relative_time.just_now": "an-dràsta", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}d", "relative_time.today": "an-diugh", "reply_indicator.cancel": "Sguir dheth", - "report.categories.other": "Other", - "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.block": "Bac", + "report.block_explanation": "Chan fhaic thu na postaichean aca. Chan fhaic iad na postaichean agad is chan urrainn dhaibh leantainn ort. Mothaichidh iad gun deach am bacadh.", + "report.categories.other": "Eile", + "report.categories.spam": "Spama", + "report.categories.violation": "Tha an t-susbaint a’ briseadh riaghailt no dhà an fhrithealaiche", + "report.category.subtitle": "Tagh an roghainn as iomchaidhe", + "report.category.title": "Innis dhuinn dè tha a’ dol leis a’ {type}", + "report.category.title_account": "phròifil", + "report.category.title_status": "phost", + "report.close": "Deiseil", + "report.comment.title": "A bheil rud sam bith eile a bu toigh leat innse dhuinn?", "report.forward": "Sìn air adhart gu {target}", "report.forward_hint": "Chaidh an cunntas a chlàradh air frithealaiche eile. A bheil thu airson lethbhreac dhen ghearan a chur dha-san gun ainm cuideachd?", - "report.hint": "Thèid do ghearan a chur gu maoir an fhrithealaiche agad. ’S urrainn dhut mìneachadh a sholar air carson a tha thu a’ gearan mun chunntas gu h-ìosal:", + "report.mute": "Mùch", + "report.mute_explanation": "Chan fhaic thu na postaichean aca. Chì iad na postaichean agad agus ’s urrainn dhaibh leantainn ort fhathast. Cha bhi fios aca gun deach am mùchadh.", + "report.next": "Air adhart", "report.placeholder": "Beachdan a bharrachd", + "report.reasons.dislike": "Cha toigh leam e", + "report.reasons.dislike_description": "Chan eil thu airson seo fhaicinn", + "report.reasons.other": "Adhbhar eile", + "report.reasons.other_description": "Chan eil na roinnean-seòrsa eile iomchaidh dhan chùis", + "report.reasons.spam": "’S e spama a th’ ann", + "report.reasons.spam_description": "Ceanglaichean droch-rùnach, conaltradh fuadain no an dearbh fhreagairt a-rithist ’s a-rithist", + "report.reasons.violation": "Tha e a’ briseadh riaghailtean an fhrithealaiche", + "report.reasons.violation_description": "Mhothaich thu gu bheil e a’ briseadh riaghailtean sònraichte", + "report.rules.subtitle": "Tagh a h-uile gin a tha iomchaidh", + "report.rules.title": "Dè na riaghailtean a tha ’gam briseadh?", + "report.statuses.subtitle": "Tagh a h-uile gin a tha iomchaidh", + "report.statuses.title": "A bheil postaichean sam bith ann a tha ’nam fianais dhan ghearan seo?", "report.submit": "Cuir a-null", "report.target": "A’ gearan mu {target}", + "report.thanks.take_action": "Seo na roghainnean a th’ agad airson stiùireadh na chì thu air Mastodon:", + "report.thanks.take_action_actionable": "Fhad ’s a bhios sinn a’ toirt sùil air, seo nas urrainn dhut dèanamh an aghaidh @{name}:", + "report.thanks.title": "Nach eil thu airson seo fhaicinn?", + "report.thanks.title_actionable": "Mòran taing airson a’ ghearain, bheir sinn sùil air.", + "report.unfollow": "Na lean air @{name} tuilleadh", + "report.unfollow_explanation": "Tha thu a’ leantainn air a’ chunntas seo. Sgur de leantainn orra ach nach fhaic thu na puist aca air inbhir na dachaigh agad.", "search.placeholder": "Lorg", "search_popout.search_format": "Fòrmat adhartach an luirg", "search_popout.tips.full_text": "Bheir teacsa sìmplidh dhut na postaichean a sgrìobh thu, a tha nan annsachdan dhut, a bhrosnaich thu no san deach iomradh a thoirt ort cho math ri ainmean-cleachdaiche, ainmean taisbeanaidh agus tagaichean hais a mhaidsicheas.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Bheir teacsa sìmplidh dhut na h-ainmean-cleachdaiche, ainmean taisbeanaidh agus tagaichean hais a mhaidsicheas", "search_popout.tips.user": "cleachdaiche", "search_results.accounts": "Daoine", + "search_results.all": "Na h-uile", "search_results.hashtags": "Tagaichean hais", + "search_results.nothing_found": "Cha do lorg sinn dad dha na h-abairtean-luirg seo", "search_results.statuses": "Postaichean", "search_results.statuses_fts_disabled": "Chan eil lorg phostaichean a-rèir an susbaint an comas air an fhrithealaiche Mastodon seo.", "search_results.total": "{count, number} {count, plural, one {toradh} two {thoradh} few {toraidhean} other {toradh}}", @@ -409,16 +449,16 @@ "status.delete": "Sguab às", "status.detailed_status": "Mion-shealladh a’ chòmhraidh", "status.direct": "Cuir teachdaireachd dhìreach gu @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Deasaich", + "status.edited": "Air a dheasachadh {date}", + "status.edited_x_times": "Chaidh a dheasachadh {count, plural, one {{counter} turas} two {{counter} thuras} few {{counter} tursan} other {{counter} turas}}", "status.embed": "Leabaich", "status.favourite": "Cuir ris na h-annsachdan", "status.filtered": "Criathraichte", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "Chruthaich {name} {date} e", + "status.history.edited": "Dheasaich {name} {date} e", "status.load_more": "Luchdaich barrachd dheth", - "status.media_hidden": "Meadhanan falaichte", + "status.media_hidden": "Meadhan falaichte", "status.mention": "Thoir iomradh air @{name}", "status.more": "Barrachd", "status.mute": "Mùch @{name}", @@ -474,6 +514,7 @@ "upload_error.poll": "Chan fhaod thu faidhle a luchdadh suas an cois cunntais-bheachd.", "upload_form.audio_description": "Mìnich e dhan fheadhainn le èisteachd bheag", "upload_form.description": "Mìnich e dhan fheadhainn le cion-lèirsinne", + "upload_form.description_missing": "Cha deach tuairisgeul a chur ris", "upload_form.edit": "Deasaich", "upload_form.thumbnail": "Atharraich an dealbhag", "upload_form.undo": "Sguab às", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 39f121065..0879afb36 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -18,12 +18,12 @@ "account.followers": "Seguidoras", "account.followers.empty": "Aínda ninguén segue esta usuaria.", "account.followers_counter": "{count, plural, one {{counter} Seguidora} other {{counter} Seguidoras}}", + "account.following": "Seguindo", "account.following_counter": "{count, plural, one {{counter} Seguindo} other {{counter} Seguindo}}", "account.follows.empty": "Esta usuaria aínda non segue a ninguén.", "account.follows_you": "Séguete", "account.hide_reblogs": "Agochar repeticións de @{name}", "account.joined": "Uníuse {date}", - "account.last_status": "Última actividade", "account.link_verified_on": "A propiedade desta ligazón foi verificada o {date}", "account.locked_info": "Esta é unha conta privada. A propietaria revisa de xeito manual quen pode seguila.", "account.media": "Multimedia", @@ -32,7 +32,6 @@ "account.mute": "Acalar @{name}", "account.mute_notifications": "Acalar as notificacións de @{name}", "account.muted": "Acalada", - "account.never_active": "Nunca", "account.posts": "Publicacións", "account.posts_with_replies": "Publicacións e respostas", "account.report": "Informar sobre @{name}", @@ -42,13 +41,15 @@ "account.statuses_counter": "{count, plural, one {{counter} Publicación} other {{counter} Publicacións}}", "account.unblock": "Desbloquear @{name}", "account.unblock_domain": "Amosar {domain}", + "account.unblock_short": "Desbloquear", "account.unendorse": "Non amosar no perfil", "account.unfollow": "Deixar de seguir", "account.unmute": "Deixar de silenciar a @{name}", "account.unmute_notifications": "Deixar de silenciar as notificacións de @{name}", + "account.unmute_short": "Non silenciar", "account_note.placeholder": "Preme para engadir nota", - "admin.dashboard.daily_retention": "Ratio de retención de usuarias após rexistrarse", - "admin.dashboard.monthly_retention": "Ratio de retención de usuarias após un mes do rexistro", + "admin.dashboard.daily_retention": "Ratio de retención de usuarias diaria após rexistrarse", + "admin.dashboard.monthly_retention": "Ratio de retención de usuarias mensual após o rexistro", "admin.dashboard.retention.average": "Media", "admin.dashboard.retention.cohort": "Mes de rexistro", "admin.dashboard.retention.cohort_size": "Novas usuarias", @@ -69,7 +70,7 @@ "column.blocks": "Usuarias bloqueadas", "column.bookmarks": "Marcadores", "column.community": "Cronoloxía local", - "column.direct": "Mensaxes directas", + "column.conversations": "Conversas", "column.directory": "Procurar perfís", "column.domain_blocks": "Dominios agochados", "column.favourites": "Favoritos", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Só local", "community.column_settings.media_only": "Só multimedia", "community.column_settings.remote_only": "Só remoto", - "compose_form.direct_message_warning": "Esta publicación só será enviada ás usuarias mencionadas.", "compose_form.direct_message_warning_learn_more": "Coñecer máis", + "compose_form.encryption_warning": "As publicacións en Mastodon non están cifradas de extremo-a-extremo. Non compartas información sensible en Mastodon.", "compose_form.hashtag_warning": "Esta publicación non aparecerá baixo ningún cancelo (hashtag) porque non está listada. Só se poden procurar publicacións públicas por cancelos.", "compose_form.lock_disclaimer": "A túa conta non está {locked}. Todas poden seguirte para ollar os teus toots só para seguidoras.", "compose_form.lock_disclaimer.lock": "bloqueada", @@ -165,8 +166,9 @@ "empty_column.blocks": "Aínda non bloqueaches a ningún usuaria.", "empty_column.bookmarked_statuses": "Aínda non marcaches ningunha publicación. Cando o fagas, aparecerán aquí.", "empty_column.community": "A cronoloxía local está baleira. Escribe algo de xeito público para espallalo!", - "empty_column.direct": "Aínda non tes mensaxes directas. Cando envíes ou recibas unha, amosarase aquí.", + "empty_column.conversations": "Aquí verás as publicacións que envíes ou recibas é só son visibles para as persoas mencionadas.", "empty_column.domain_blocks": "Aínda non hai dominios agochados.", + "empty_column.explore_statuses": "Non hai temas en voga. Volve máis tarde!", "empty_column.favourited_statuses": "Aínda non tes publicacións favoritas. Cando che guste algunha, aparecerá aquí.", "empty_column.favourites": "A ninguén lle gustou esta publicación polo momento. Cando a alguén lle guste, aparecerá aquí.", "empty_column.follow_recommendations": "Semella que non temos suxestións para ti. Podes utilizar a busca para atopar persoas que coñezas ou explorar os cancelos en voga.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Intenta desactivalas e actualiza a páxina. Se isto non funciona, podes seguir usando Mastodon nun navegador diferente ou aplicación nativa.", "errors.unexpected_crash.copy_stacktrace": "Copiar trazas (stacktrace) ó portapapeis", "errors.unexpected_crash.report_issue": "Informar sobre un problema", + "explore.search_results": "Resultados da busca", + "explore.suggested_follows": "Para ti", + "explore.title": "Descubrir", + "explore.trending_links": "Novas", + "explore.trending_statuses": "Publicacións", + "explore.trending_tags": "Cancelos", "follow_recommendations.done": "Feito", "follow_recommendations.heading": "Segue a persoas das que queiras ler publicacións! Aqui tes unhas suxestións.", "follow_recommendations.lead": "As publicacións das persoas que segues aparecerán na túa cronoloxía de inicio ordenadas temporalmente. Non teñas medo a equivocarte, podes deixar de seguirlas igual de fácil en calquera momento!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "Promover publicación", "keyboard_shortcuts.column": "Destacar unha columna", "keyboard_shortcuts.compose": "Por o cursor na área de escritura", + "keyboard_shortcuts.conversations": "para abrir a columna das conversas", "keyboard_shortcuts.description": "Descrición", - "keyboard_shortcuts.direct": "Para abrir a columna de mensaxes directas", "keyboard_shortcuts.down": "Para mover cara abaixo na listaxe", "keyboard_shortcuts.enter": "Para abrir publicación", "keyboard_shortcuts.favourite": "Para engadir a favoritos", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Cronoloxía local", "navigation_bar.compose": "Escribir unha nova publicación", - "navigation_bar.direct": "Mensaxes directas", "navigation_bar.discover": "Descubrir", "navigation_bar.domain_blocks": "Dominios agochados", "navigation_bar.edit_profile": "Editar perfil", + "navigation_bar.explore": "Descubrir", "navigation_bar.favourites": "Favoritos", "navigation_bar.filters": "Palabras silenciadas", "navigation_bar.follow_requests": "Peticións de seguimento", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Preferencias", "navigation_bar.public_timeline": "Cronoloxía federada", "navigation_bar.security": "Seguranza", + "notification.admin.sign_up": "{name} rexistrouse", "notification.favourite": "{name} marcou a túa publicación como favorita", "notification.follow": "{name} comezou a seguirte", "notification.follow_request": "{name} solicitou seguirte", @@ -311,6 +320,7 @@ "notification.update": "{name} editou unha publicación", "notifications.clear": "Limpar notificacións", "notifications.clear_confirmation": "Tes a certeza de querer limpar de xeito permanente todas as túas notificacións?", + "notifications.column_settings.admin.sign_up": "Novas usuarias:", "notifications.column_settings.alert": "Notificacións de escritorio", "notifications.column_settings.favourite": "Favoritos:", "notifications.column_settings.filter_bar.advanced": "Amosar todas as categorías", @@ -356,19 +366,19 @@ "poll_button.remove_poll": "Eliminar enquisa", "privacy.change": "Axustar privacidade", "privacy.direct.long": "Só para as usuarias mencionadas", - "privacy.direct.short": "Directo", + "privacy.direct.short": "Só para persoas mencionadas", "privacy.private.long": "Só para os seguidoras", "privacy.private.short": "Só para seguidoras", - "privacy.public.long": "Publicar nas cronoloxías públicas", + "privacy.public.long": "Visible por todas", "privacy.public.short": "Público", - "privacy.unlisted.long": "Non publicar nas cronoloxías públicas", + "privacy.unlisted.long": "Visible por todas, pero excluída da sección descubrir", "privacy.unlisted.short": "Non listado", "refresh": "Actualizar", "regeneration_indicator.label": "Estase a cargar…", "regeneration_indicator.sublabel": "Estase a preparar a túa cronoloxía de inicio!", "relative_time.days": "{number}d", "relative_time.full.days": "fai {number, plural, one {# día} other {# días}}", - "relative_time.full.hours": "fai {number, plural, one {# hora} other {# horas}} ago", + "relative_time.full.hours": "fai {number, plural, one {# hora} other {# horas}}", "relative_time.full.just_now": "xusto agora", "relative_time.full.minutes": "fai {number, plural, one {# minuto} other {# minutos}}", "relative_time.full.seconds": "fai {number, plural, one {# segundo} other {# segundos}}", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "hoxe", "reply_indicator.cancel": "Desbotar", + "report.block": "Bloquear", + "report.block_explanation": "Non vas ver as súas publicacións. Nin verán as túas publicacións nin poderán seguirte. Poderán comprobar que as bloqueaches.", "report.categories.other": "Outro", "report.categories.spam": "Spam", "report.categories.violation": "O contido viola unha ou máis regras do servidor", + "report.category.subtitle": "Elixe a mellor coincidencia", + "report.category.title": "Dinos o que está a pasar con {type}", + "report.category.title_account": "perfil", + "report.category.title_status": "publicación", + "report.close": "Feito", + "report.comment.title": "Hai algo máis que creas debamos saber?", "report.forward": "Reenviar a {target}", "report.forward_hint": "A conta é doutro servidor. Enviar unha copia anónima da denuncia aló tamén?", - "report.hint": "A denuncia enviarase á moderación do teu servidor. Abaixo podes explicar a razón pola que estás a denunciar:", + "report.mute": "Acalar", + "report.mute_explanation": "Non verás as súas publicacións. Poderán seguirte e ver as túas publicacións e non saberán que as acalaches.", + "report.next": "Seguinte", "report.placeholder": "Comentarios adicionais", + "report.reasons.dislike": "Non me gusta", + "report.reasons.dislike_description": "Non é algo que queiras ver", + "report.reasons.other": "É outra cousa", + "report.reasons.other_description": "O asunto non cae dentro de outras categorías", + "report.reasons.spam": "É spam", + "report.reasons.spam_description": "Ligazóns perigosas, relacións falsas, ou respostas repetitivas", + "report.reasons.violation": "Viola as regras do servidor", + "report.reasons.violation_description": "Daste conta de que quebra unhas normas en concreto", + "report.rules.subtitle": "Elixe todo o que sexa de aplicación", + "report.rules.title": "Que regras foron incumpridas?", + "report.statuses.subtitle": "Elixe todo o que corresponda", + "report.statuses.title": "Hai algunha publicación que apoie esta denuncia?", "report.submit": "Enviar", "report.target": "Denunciar a {target}", + "report.thanks.take_action": "Aquí tes unhas opcións para controlar o que ves en Mastodon:", + "report.thanks.take_action_actionable": "Mentras revisamos esto, podes tomar accións contra @{name}:", + "report.thanks.title": "Non queres ver esto?", + "report.thanks.title_actionable": "Grazas pola denuncia, investigarémola.", + "report.unfollow": "Non seguir a @{name}", + "report.unfollow_explanation": "Estás a seguir esta conta. Deixar de ver as súas publicacións na túa cronoloxía, non seguila.", "search.placeholder": "Procurar", "search_popout.search_format": "Formato de procura avanzada", "search_popout.tips.full_text": "Texto simple devolve toots que ti escribiches, promoviches, marcaches favoritos, ou foches mencionada, así como nomes de usuaria coincidentes, nomes públicos e cancelos.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Texto simple devolve coincidencias con nomes públicos, nomes de usuaria e cancelos", "search_popout.tips.user": "usuaria", "search_results.accounts": "Persoas", + "search_results.all": "Todo", "search_results.hashtags": "Cancelos", + "search_results.nothing_found": "Non atopamos nada con estos termos de busca", "search_results.statuses": "Publicacións", "search_results.statuses_fts_disabled": "Procurar publicacións polo seu contido non está activado neste servidor do Mastodon.", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", @@ -474,6 +514,7 @@ "upload_error.poll": "Non se poden subir ficheiros nas enquisas.", "upload_form.audio_description": "Describir para persoas con problemas auditivos", "upload_form.description": "Describir para persoas con problemas visuais", + "upload_form.description_missing": "Sen descrición", "upload_form.edit": "Editar", "upload_form.thumbnail": "Cambiar a miniatura", "upload_form.undo": "Eliminar", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index c163812ac..efa740656 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -18,12 +18,12 @@ "account.followers": "עוקבים", "account.followers.empty": "אף אחד לא עוקב אחר המשתמש הזה עדיין.", "account.followers_counter": "{count, plural,one {עוקב אחד} other {{counter} עוקבים}}", + "account.following": "Following", "account.following_counter": "{count, plural,one {עוקב אחרי {counter}}other {עוקב אחרי {counter}}}", "account.follows.empty": "משתמש זה לא עוקב אחר אף אחד עדיין.", "account.follows_you": "במעקב אחריך", "account.hide_reblogs": "להסתיר הידהודים מאת @{name}", "account.joined": "הצטרפו ב{date}", - "account.last_status": "פעילות אחרונה", "account.link_verified_on": "בעלות על הקישור הזה נבדקה לאחרונה ב{date}", "account.locked_info": "מצב הפרטיות של החשבון הנוכחי הוגדר כנעול. בעל החשבון קובע באופן פרטני מי יכול לעקוב אחריו.", "account.media": "מדיה", @@ -32,7 +32,6 @@ "account.mute": "להשתיק את @{name}", "account.mute_notifications": "להסתיר התראות מאת @{name}", "account.muted": "מושתק", - "account.never_active": "אף פעם", "account.posts": "הודעות", "account.posts_with_replies": "Toots with replies", "account.report": "לדווח על @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "הסרת חסימה מעל @{name}", "account.unblock_domain": "הסר חסימה מקהילת {domain}", + "account.unblock_short": "Unblock", "account.unendorse": "לא להציג בפרופיל", "account.unfollow": "הפסקת מעקב", "account.unmute": "הפסקת השתקת @{name}", "account.unmute_notifications": "להפסיק הסתרת הודעות מעם @{name}", + "account.unmute_short": "Unmute", "account_note.placeholder": "ללא הערה", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "חסימות", "column.bookmarks": "סימניות", "column.community": "ציר זמן מקומי", - "column.direct": "הודעות ישירות", + "column.conversations": "Conversations", "column.directory": "גלוש פרופילים", "column.domain_blocks": "Hidden domains", "column.favourites": "חיבובים", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "מקומי בלבד", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "מרחוק בלבד", - "compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.", "compose_form.direct_message_warning_learn_more": "מידע נוסף", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "חשבונך אינו {locked}. כל אחד יוכל לעקוב אחריך כדי לקרוא את הודעותיך המיועדות לעוקבים בלבד.", "compose_form.lock_disclaimer.lock": "נעול", @@ -165,8 +166,9 @@ "empty_column.blocks": "עדיין לא חסמתם משתמשים אחרים.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "טור הסביבה ריק. יש לפרסם משהו כדי שדברים יתרחילו להתגלגל!", - "empty_column.direct": "עדיין אין לכם הודעות פרטיות. כאשר תשלחו או תקבלו אחת, היא תופיע כאן.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "There are no hidden domains yet.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", "errors.unexpected_crash.report_issue": "Report issue", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "להדהד", "keyboard_shortcuts.column": "להתמקד בהודעה באחד מהטורים", "keyboard_shortcuts.compose": "להתמקד בתיבת חיבור ההודעות", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "תיאור", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "לנוע במורד הרשימה", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "לחבב", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "ציר זמן מקומי", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "הודעות ישירות", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "עריכת פרופיל", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "חיבובים", "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "בקשות מעקב", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "העדפות", "navigation_bar.public_timeline": "ציר זמן בין-קהילתי", "navigation_bar.security": "Security", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "חצרוצך חובב על ידי {name}", "notification.follow": "{name} במעקב אחרייך", "notification.follow_request": "{name} has requested to follow you", @@ -311,6 +320,7 @@ "notification.update": "{name} ערכו פוסט", "notifications.clear": "הסרת התראות", "notifications.clear_confirmation": "להסיר את כל ההתראות? בטוח?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "התראות לשולחן העבודה", "notifications.column_settings.favourite": "מחובבים:", "notifications.column_settings.filter_bar.advanced": "Display all categories", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Remove poll", "privacy.change": "שינוי פרטיות ההודעה", "privacy.direct.long": "הצג רק למי שהודעה זו פונה אליו", - "privacy.direct.short": "הודעה ישירה", + "privacy.direct.short": "Direct", "privacy.private.long": "הצג לעוקבים בלבד", - "privacy.private.short": "לעוקבים בלבד", - "privacy.public.long": "פרסם בפומבי", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "פומבי", - "privacy.unlisted.long": "לא יופיע בפידים הציבוריים המשותפים", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "לא לפיד הכללי", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "ביטול", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", - "report.hint": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", "report.placeholder": "הערות נוספות", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "שליחה", "report.target": "דיווח", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "חיפוש", "search_popout.search_format": "מבנה חיפוש מתקדם", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "טקסט פשוט מחזיר כינויים, שמות משתמש והאשתגים", "search_popout.tips.user": "משתמש(ת)", "search_results.accounts": "People", + "search_results.all": "All", "search_results.hashtags": "Hashtags", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.total": "{count, number} {count, plural, one {תוצאה} other {תוצאות}}", @@ -474,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "תיאור לכבדי ראיה", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "ביטול", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index fef87bda2..d208cf51e 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -18,12 +18,12 @@ "account.followers": "फॉलोवर", "account.followers.empty": "कोई भी इस यूज़र् को फ़ॉलो नहीं करता है", "account.followers_counter": "{count, plural, one {{counter} अनुगामी} other {{counter} समर्थक}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} निम्नलिखित} other {{counter} निम्नलिखित}}", "account.follows.empty": "यह यूज़र् अभी तक किसी को फॉलो नहीं करता है।", "account.follows_you": "आपको फॉलो करता है", "account.hide_reblogs": "@{name} के बूस्ट छुपाएं", "account.joined": "Joined {date}", - "account.last_status": "अंतिम सक्रिय", "account.link_verified_on": "इस लिंक का स्वामित्व {date} को चेक किया गया था", "account.locked_info": "यह खाता गोपनीयता स्थिति लॉक करने के लिए सेट है। मालिक मैन्युअल रूप से समीक्षा करता है कि कौन उनको फॉलो कर सकता है।", "account.media": "मीडिया", @@ -32,7 +32,6 @@ "account.mute": "म्यूट @{name}", "account.mute_notifications": "@{name} के नोटिफिकेशन म्यूट करे", "account.muted": "म्यूट है", - "account.never_active": "कभी नहीं दिखे", "account.posts": "टूट्स", "account.posts_with_replies": "टूट्स एवं जवाब", "account.report": "रिपोर्ट @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} भोंपू} other {{counter} भोंपू}}", "account.unblock": "@{name} को अनब्लॉक करें", "account.unblock_domain": "{domain} दिखाए", + "account.unblock_short": "Unblock", "account.unendorse": "प्रोफ़ाइल पर न दिखाए", "account.unfollow": "अनफॉलो करें", "account.unmute": "अनम्यूट @{name}", "account.unmute_notifications": "@{name} के नोटिफिकेशन अनम्यूट करे", + "account.unmute_short": "Unmute", "account_note.placeholder": "नोट्स जोड़ने के लिए क्लिक करें", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "ब्लॉक्ड यूज़र्स", "column.bookmarks": "पुस्तकचिह्न:", "column.community": "लोकल टाइम्लाइन", - "column.direct": "सीधा संदेश", + "column.conversations": "Conversations", "column.directory": "प्रोफाइल्स खोजें", "column.domain_blocks": "छुपे डोमेन्स", "column.favourites": "पसंदीदा", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "स्थानीय ही", "community.column_settings.media_only": "सिर्फ़ मीडिया", "community.column_settings.remote_only": "केवल सुदूर", - "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.", "compose_form.direct_message_warning_learn_more": "और जानें", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "यह टूट् किसी भी हैशटैग के तहत सूचीबद्ध नहीं होगा क्योंकि यह अनलिस्टेड है। हैशटैग द्वारा केवल सार्वजनिक टूट्स खोजे जा सकते हैं।", "compose_form.lock_disclaimer": "आपका खाता {locked} नहीं है। आपको केवल फॉलोवर्स को दिखाई दिए जाने वाले पोस्ट देखने के लिए कोई भी फॉलो कर सकता है।", "compose_form.lock_disclaimer.lock": "लॉक्ड", @@ -165,8 +166,9 @@ "empty_column.blocks": "आप अभी तक किसी भी यूजर के द्वारा ब्लॉक्ड नहीं हो।", "empty_column.bookmarked_statuses": "आपके पास अभी तक कोई बुकमार्क नहीं है। जब आप एक बुकमार्क करते हैं, तो यह यहां दिखाई देगा।", "empty_column.community": "लोकल टाइम्लाइन खाली है, कुछ देखने के लिये सार्वजनिक रूप से कुछ लिखें!", - "empty_column.direct": "आपके पास कोई सीधा सन्देश नहीं है, जब आप कोई भेजेंगे प्राप्त करेंगे तो यहाँ दिखेगा।", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "अभी तक कोई छुपा हुआ डोमेन नहीं है।", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "आपके पास अभी कोई भी चहिता टूट नहीं है. जब आप किसी टूट को पसंद (स्टार) करेंगे, तब वो यहाँ दिखेगा।", "empty_column.favourites": "अभी तक किसी ने भी इस टूट को पसंद (स्टार) नहीं किया है. जब भी कोई इसे पसंद करेगा, उनका नाम यहाँ दिखेगा।", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "स्टैकट्रेस को क्लिपबोर्ड पर कॉपी करें", "errors.unexpected_crash.report_issue": "समस्या सूचित करें", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "बढ़ावा देने के लिए", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "कंपोज़ टेक्स्ट-एरिया पर ध्यान केंद्रित करने के लिए", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "विवरण", - "keyboard_shortcuts.direct": "सीधा सन्देश कॉलम को खोलने के लिए", "keyboard_shortcuts.down": "सूची में शामिल करने के लिए", "keyboard_shortcuts.enter": "स्टेटस खोलने के लिए", "keyboard_shortcuts.favourite": "पसंदीदा के लिए", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "पुस्तकचिह्न:", "navigation_bar.community_timeline": "लोकल टाइम्लाइन", "navigation_bar.compose": "नया टूट् लिखें", - "navigation_bar.direct": "सीधा संदेश", "navigation_bar.discover": "खोजें", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "प्रोफ़ाइल संपादित करें", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Favourites", "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "अनुसरण करने के अनुरोध", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", "notification.follow_request": "{name} has requested to follow you", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.filter_bar.advanced": "सभी श्रेणियाँ दिखाएं", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Remove poll", "privacy.change": "Adjust status privacy", "privacy.direct.long": "Post to mentioned users only", - "privacy.direct.short": "सीधा", + "privacy.direct.short": "Direct", "privacy.private.long": "Post to followers only", "privacy.private.short": "Followers-only", - "privacy.public.long": "सार्वजनिक टाइम्लाइन पर भेजें", + "privacy.public.long": "Visible for all", "privacy.public.short": "सार्वजनिक", - "privacy.unlisted.long": "Do not show in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "अनलिस्टेड", "refresh": "रीफ्रेश करें", "regeneration_indicator.label": "लोड हो रहा है...", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "रद्द करें", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", - "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", - "report.placeholder": "Additional comments", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", + "report.placeholder": "Type or paste additional comments", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "सबमिट करें", "report.target": "Report {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "खोजें", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", "search_popout.tips.user": "user", "search_results.accounts": "People", + "search_results.all": "All", "search_results.hashtags": "Hashtags", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", @@ -474,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "संशोधन करें", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "मिटाए", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index 32deff205..16434ea46 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -18,12 +18,12 @@ "account.followers": "Pratitelji", "account.followers.empty": "Nitko još ne prati korisnika/cu.", "account.followers_counter": "{count, plural, one {{counter} pratitelj} other {{counter} pratitelja}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} praćeni} few{{counter} praćena} other {{counter} praćenih}}", "account.follows.empty": "Korisnik/ca još ne prati nikoga.", "account.follows_you": "Prati te", "account.hide_reblogs": "Sakrij boostove od @{name}", "account.joined": "Pridružio se {date}", - "account.last_status": "Posljednja aktivnost", "account.link_verified_on": "Vlasništvo ove poveznice provjereno je {date}", "account.locked_info": "Status privatnosti ovog računa postavljen je na zaključano. Vlasnik ručno pregledava tko ih može pratiti.", "account.media": "Medijski sadržaj", @@ -32,7 +32,6 @@ "account.mute": "Utišaj @{name}", "account.mute_notifications": "Utišaj obavijesti od @{name}", "account.muted": "Utišano", - "account.never_active": "Nikad", "account.posts": "Tootovi", "account.posts_with_replies": "Tootovi i odgovori", "account.report": "Prijavi @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} toot} other {{counter} toota}}", "account.unblock": "Deblokiraj @{name}", "account.unblock_domain": "Deblokiraj domenu {domain}", + "account.unblock_short": "Unblock", "account.unendorse": "Ne ističi na profilu", "account.unfollow": "Prestani pratiti", "account.unmute": "Poništi utišavanje @{name}", "account.unmute_notifications": "Ne utišavaj obavijesti od @{name}", + "account.unmute_short": "Unmute", "account_note.placeholder": "Kliknite za dodavanje bilješke", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "Blokirani korisnici", "column.bookmarks": "Knjižne oznake", "column.community": "Lokalna vremenska crta", - "column.direct": "Izravne poruke", + "column.conversations": "Conversations", "column.directory": "Pregledavanje profila", "column.domain_blocks": "Blokirane domene", "column.favourites": "Favoriti", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Samo lokalno", "community.column_settings.media_only": "Samo medijski sadržaj", "community.column_settings.remote_only": "Samo udaljeno", - "compose_form.direct_message_warning": "Ovaj toot bit će poslan samo spomenutim korisnicima.", "compose_form.direct_message_warning_learn_more": "Saznajte više", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Ovaj toot neće biti prikazan ni pod jednim hashtagom jer je postavljen kao neprikazan. Samo javni tootovi mogu biti pretraživani pomoći hashtagova.", "compose_form.lock_disclaimer": "Vaš račun nije {locked}. Svatko Vas može pratiti kako bi vidjeli objave namijenjene Vašim pratiteljima.", "compose_form.lock_disclaimer.lock": "zaključan", @@ -165,8 +166,9 @@ "empty_column.blocks": "Još niste blokirali nikoga.", "empty_column.bookmarked_statuses": "Još nemaš niti jedan označeni toot. Kada označiš jedan, prikazad će se ovdje.", "empty_column.community": "Lokalna vremenska crta je prazna. Napišite nešto javno da biste pokrenuli stvari!", - "empty_column.direct": "Nemate još niti jedne direktne poruke. Kada ih pošaljete ili primite, prikazati će se ovdje.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Još nema blokiranih domena.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", "empty_column.follow_recommendations": "Čini se da se ne postoje sugestije generirane za tebe. Možeš pokušati koristiti pretragu kako bi pronašao osobe koje poznaš ili istraži popularne hashtagove.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Pokušaj ih onemogućiti i osvježiti stranicu. Ako to ne pomogne, i dalje ćeš biti u mogućnosti koristiti Mastodon preko nekog drugog preglednika ili izvornog app-a.", "errors.unexpected_crash.copy_stacktrace": "Kopiraj stacktrace u međuspremnik", "errors.unexpected_crash.report_issue": "Prijavi problem", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Učinjeno", "follow_recommendations.heading": "Zaprati osobe čije objave želiš vidjeti! Evo nekoliko prijedloga.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "za boostanje", "keyboard_shortcuts.column": "za fokusiranje na toot u jednom od stupaca", "keyboard_shortcuts.compose": "za fokusiranje na tekstualni okvir za stvaranje", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Opis", - "keyboard_shortcuts.direct": "za otvaranje stupca s izravnim porukama", "keyboard_shortcuts.down": "za pomak dolje na listi", "keyboard_shortcuts.enter": "za otvaranje toota", "keyboard_shortcuts.favourite": "za označavanje favoritom", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Lokalna vremenska crta", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Izravne poruke", "navigation_bar.discover": "Istraživanje", "navigation_bar.domain_blocks": "Blokirane domene", "navigation_bar.edit_profile": "Uredi profil", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Favoriti", "navigation_bar.filters": "Utišane riječi", "navigation_bar.follow_requests": "Zahtjevi za praćenje", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Postavke", "navigation_bar.public_timeline": "Federalna vremenska crta", "navigation_bar.security": "Sigurnost", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} je favorizirao/la Vaš toot", "notification.follow": "{name} Vas je počeo/la pratiti", "notification.follow_request": "{name} zatražio/la je da Vas prati", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Očisti obavijesti", "notifications.clear_confirmation": "Želite li zaista trajno očistiti sve Vaše obavijesti?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Obavijesti radne površine", "notifications.column_settings.favourite": "Favoriti:", "notifications.column_settings.filter_bar.advanced": "Prikaži sve kategorije", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Ukloni anketu", "privacy.change": "Podesi privatnost toota", "privacy.direct.long": "Vidljivo samo spomenutim korisnicima", - "privacy.direct.short": "Izravno", + "privacy.direct.short": "Direct", "privacy.private.long": "Vidljivo samo pratiteljima", - "privacy.private.short": "Samo pratitelji", - "privacy.public.long": "Vidljivo svima, prikazano u javim vremenskim crtama", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Javno", - "privacy.unlisted.long": "Vidljivo svima, ali se ne prikazuje u javnim vremenskim crtama", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Neprikazano", "refresh": "Osvježi", "regeneration_indicator.label": "Učitavanje…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "danas", "reply_indicator.cancel": "Otkaži", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Proslijedi {target}", "report.forward_hint": "Račun je s drugog poslužitelja. Poslati anonimiziranu kopiju prijave i tamo?", - "report.hint": "Prijava bit će poslana moderatorima poslužitelja. Ispod možete dati objašnjenje zašto prijavljujete ovaj račun:", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", "report.placeholder": "Dodatni komentari", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Pošalji", "report.target": "Prijavljivanje korisnika {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Traži", "search_popout.search_format": "Format naprednog pretraživanja", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", "search_popout.tips.user": "korisnik", "search_results.accounts": "Ljudi", + "search_results.all": "All", "search_results.hashtags": "Hashtags", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", @@ -474,6 +514,7 @@ "upload_error.poll": "Prijenos datoteka nije dopušten kod anketa.", "upload_form.audio_description": "Opišite za ljude sa slabim sluhom", "upload_form.description": "Opišite za ljude sa slabim vidom", + "upload_form.description_missing": "No description added", "upload_form.edit": "Uredi", "upload_form.thumbnail": "Promijeni pretpregled", "upload_form.undo": "Obriši", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 97b985d95..ccf0dd3fd 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -18,12 +18,12 @@ "account.followers": "Követő", "account.followers.empty": "Ezt a felhasználót még senki sem követi.", "account.followers_counter": "{count, plural, one {{counter} Követő} other {{counter} Követő}}", + "account.following": "Követve", "account.following_counter": "{count, plural, other {{counter} Követett}}", "account.follows.empty": "Ez a felhasználó még senkit sem követ.", "account.follows_you": "Követ téged", "account.hide_reblogs": "@{name} megtolásainak elrejtése", "account.joined": "Csatlakozott {date}", - "account.last_status": "Utoljára aktív", "account.link_verified_on": "A linket eredetiségét ebben az időpontban ellenőriztük: {date}", "account.locked_info": "Ennek a fióknak zárolt a láthatósága. A tulajdonos kézzel engedélyezi, hogy ki követheti őt.", "account.media": "Média", @@ -32,7 +32,6 @@ "account.mute": "@{name} némítása", "account.mute_notifications": "@{name} értesítéseinek némítása", "account.muted": "Némítva", - "account.never_active": "Soha", "account.posts": "Bejegyzések", "account.posts_with_replies": "Bejegyzések és válaszok", "account.report": "@{name} jelentése", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Bejegyzés} other {{counter} Bejegyzés}}", "account.unblock": "@{name} letiltásának feloldása", "account.unblock_domain": "{domain} elrejtésének feloldása", + "account.unblock_short": "Tiltás feloldása", "account.unendorse": "Ne jelenjen meg a profilodon", "account.unfollow": "Követés megszüntetése", "account.unmute": "@{name} némítás feloldása", "account.unmute_notifications": "@{name} némított értesítéseinek feloldása", + "account.unmute_short": "Némitás feloldása", "account_note.placeholder": "Klikk a feljegyzéshez", "admin.dashboard.daily_retention": "Napi regisztráció utáni felhasználómegtartási arány", "admin.dashboard.monthly_retention": "Havi regisztráció utáni felhasználómegtartási arány", @@ -69,7 +70,7 @@ "column.blocks": "Letiltott felhasználók", "column.bookmarks": "Könyvjelzők", "column.community": "Helyi idővonal", - "column.direct": "Közvetlen üzenetek", + "column.conversations": "Beszélgetések", "column.directory": "Profilok böngészése", "column.domain_blocks": "Rejtett domainek", "column.favourites": "Kedvencek", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Csak helyi", "community.column_settings.media_only": "Csak média", "community.column_settings.remote_only": "Csak távoli", - "compose_form.direct_message_warning": "Ezt a bejegyzést csak a benne megemlített felhasználók láthatják majd.", "compose_form.direct_message_warning_learn_more": "Tudj meg többet", + "compose_form.encryption_warning": "A bejegyzések a Mastodonon nem használnak végpontok közötti titkosítást. Ne ossz meg érzékeny információt Mastodonon.", "compose_form.hashtag_warning": "Ez a bejegyzésed nem fog megjelenni semmilyen hashtag alatt, mivel listázatlan. Csak a nyilvános bejegyzések kereshetők hashtaggel.", "compose_form.lock_disclaimer": "A fiókod nincs {locked}. Bárki követni tud, hogy megtekintse a kizárólag követőknek szánt bejegyzéseket.", "compose_form.lock_disclaimer.lock": "lezárva", @@ -165,8 +166,9 @@ "empty_column.blocks": "Még senkit sem tiltottál le.", "empty_column.bookmarked_statuses": "Még nincs egyetlen könyvjelzőzött bejegyzésed sem. Ha könyvjelzőzöl egyet, itt fog megjelenni.", "empty_column.community": "A helyi idővonal üres. Tégy közzé valamit nyilvánosan, hogy elindítsd az eseményeket!", - "empty_column.direct": "Még nincs egy közvetlen üzeneted sem. Ha küldesz vagy kapsz egyet, itt fog megjelenni.", + "empty_column.conversations": "Ha olyan bejegyzést küldesz vagy fogadsz, melyet csak az abban megemlítettek látnak, itt fog megjelenni.", "empty_column.domain_blocks": "Még nem rejtettél el egyetlen domaint sem.", + "empty_column.explore_statuses": "Jelenleg semmi sem felkapott. Nézz vissza később!", "empty_column.favourited_statuses": "Még nincs egyetlen kedvenc bejegyzésed sem. Ha kedvencnek jelölsz egyet, itt fog megjelenni.", "empty_column.favourites": "Még senki sem jelölte ezt a bejegyzést kedvencnek. Ha valaki mégis megteszi, itt fogjuk mutatni.", "empty_column.follow_recommendations": "Úgy tűnik, neked nem tudunk javaslatokat adni. Próbáld a keresést használni olyanok megtalálására, akiket ismerhetsz, vagy fedezd fel a felkapott hastageket.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Próbáld letiltani őket és frissíteni az oldalt. Ha ez nem segít, egy másik böngészőn vagy appon keresztül még mindig használhatod a Mastodont.", "errors.unexpected_crash.copy_stacktrace": "Veremkiíratás vágólapra másolása", "errors.unexpected_crash.report_issue": "Probléma jelentése", + "explore.search_results": "Keresési találatok", + "explore.suggested_follows": "Neked", + "explore.title": "Felfedezés", + "explore.trending_links": "Hírek", + "explore.trending_statuses": "Bejegyzések", + "explore.trending_tags": "Hashtagek", "follow_recommendations.done": "Kész", "follow_recommendations.heading": "Kövesd azokat, akiknek a bejegyzéseit látni szeretnéd! Itt van néhány javaslat.", "follow_recommendations.lead": "Az általad követettek bejegyzései a saját idővonaladon fognak megjelenni időrendi sorrendben. Ne félj attól, hogy hibázol! A követést bármikor, ugyanilyen könnyen visszavonhatod!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "Bejegyzés megtolása", "keyboard_shortcuts.column": "Fókuszálás egy oszlopra", "keyboard_shortcuts.compose": "fókuszálás a szerkesztési szövegdobozra", + "keyboard_shortcuts.conversations": "beszélgetések megnyitása", "keyboard_shortcuts.description": "Leírás", - "keyboard_shortcuts.direct": "Közvetlen üzenetek oszlopának megnyitása", "keyboard_shortcuts.down": "lefele navigálás a listában", "keyboard_shortcuts.enter": "Bejegyzés megnyitása", "keyboard_shortcuts.favourite": "Bejegyzés kedvencnek jelölése", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Könyvjelzők", "navigation_bar.community_timeline": "Helyi idővonal", "navigation_bar.compose": "Új bejegyzés írása", - "navigation_bar.direct": "Közvetlen üzenetek", "navigation_bar.discover": "Felfedezés", "navigation_bar.domain_blocks": "Rejtett domainek", "navigation_bar.edit_profile": "Profil szerkesztése", + "navigation_bar.explore": "Felfedezés", "navigation_bar.favourites": "Kedvencek", "navigation_bar.filters": "Némított szavak", "navigation_bar.follow_requests": "Követési kérelmek", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Beállítások", "navigation_bar.public_timeline": "Föderációs idővonal", "navigation_bar.security": "Biztonság", + "notification.admin.sign_up": "{name} regisztrált", "notification.favourite": "{name} kedvencnek jelölte a bejegyzésedet", "notification.follow": "{name} követ téged", "notification.follow_request": "{name} követni szeretne téged", @@ -311,6 +320,7 @@ "notification.update": "{name} szerkesztett egy bejegyzést", "notifications.clear": "Értesítések törlése", "notifications.clear_confirmation": "Biztos, hogy véglegesen törölni akarod az összes értesítésed?", + "notifications.column_settings.admin.sign_up": "Új regisztrálók:", "notifications.column_settings.alert": "Asztali értesítések", "notifications.column_settings.favourite": "Kedvencek:", "notifications.column_settings.filter_bar.advanced": "Minden kategória mutatása", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Szavazás törlése", "privacy.change": "Bejegyzés láthatóságának módosítása", "privacy.direct.long": "Csak a megemlített felhasználóknak látható", - "privacy.direct.short": "Közvetlen", + "privacy.direct.short": "Csak a megemlítettek", "privacy.private.long": "Csak követőknek látható", - "privacy.private.short": "Csak követőknek", - "privacy.public.long": "Mindenki számára látható, nyilvános idővonalakon is szerepel", + "privacy.private.short": "Csak követők", + "privacy.public.long": "Mindenki számára látható", "privacy.public.short": "Nyilvános", - "privacy.unlisted.long": "Ne mutassuk nyilvános idővonalon", + "privacy.unlisted.long": "Mindenki számára látható, de kimarad a felfedezős funkciókból", "privacy.unlisted.short": "Listázatlan", "refresh": "Frissítés", "regeneration_indicator.label": "Töltődik…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}mp", "relative_time.today": "ma", "reply_indicator.cancel": "Mégsem", + "report.block": "Letiltás", + "report.block_explanation": "Nem fogod látni a bejegyzéseit. Nem fogja tudni megnézni a bejegyzéseidet és nem fog tudni követni sem. Azt is meg fogja tudni mondani, hogy letiltottad.", "report.categories.other": "Egyéb", "report.categories.spam": "Kéretlen üzenet", "report.categories.violation": "A tartalom a kiszolgáló egy vagy több szabályát sérti", + "report.category.subtitle": "Válaszd ki a legjobb találatot", + "report.category.title": "Mondd el, hogy mi van ezzel a {type}", + "report.category.title_account": "profillal", + "report.category.title_status": "bejegyzéssel", + "report.close": "Kész", + "report.comment.title": "Van valami, amiről tudnunk kellene?", "report.forward": "Továbbítás: {target}", "report.forward_hint": "Ez a fiók egy másik kiszolgálóról van. Oda is elküldöd a jelentés egy anonimizált másolatát?", - "report.hint": "A bejelentést a szervered moderátorainak küldjük el. Megmagyarázhatod, miért jelented az alábbi problémát:", + "report.mute": "Némítás", + "report.mute_explanation": "Nem fogod látni a bejegyzéseit. Továbbra is fog tudni követni, és látni fogja a bejegyzéseidet, és nem fogja tudni, hogy némítottad.", + "report.next": "Következő", "report.placeholder": "További megjegyzések", + "report.reasons.dislike": "Nem tetszik", + "report.reasons.dislike_description": "Ezt nem szeretném látni", + "report.reasons.other": "Valami más", + "report.reasons.other_description": "Az eset nem illik egyik kategóriába sem", + "report.reasons.spam": "Ez kéretlen tartalom", + "report.reasons.spam_description": "Rosszindulatú hivatkozások, hamis interakció vagy ismétlődő válaszok", + "report.reasons.violation": "Sérti a kiszolgáló szabályait", + "report.reasons.violation_description": "Tudod, hogy mely konkrét szabályokat sért meg", + "report.rules.subtitle": "Válaszd ki az összes megfelelőt", + "report.rules.title": "Mely szabályok lettek megsértve?", + "report.statuses.subtitle": "Válaszd ki az összes megfelelőt", + "report.statuses.title": "Vannak olyan bejegyzések, amelyek alátámasztják ezt a jelentést?", "report.submit": "Küldés", "report.target": "{target} jelentése", + "report.thanks.take_action": "Itt vannak a beállítások, melyek szabályozzák, hogy mit látsz a Mastodonon:", + "report.thanks.take_action_actionable": "Míg átnézzük, a következőket teheted @{name} ellen:", + "report.thanks.title": "Nem akarod ezt látni?", + "report.thanks.title_actionable": "Köszönjük, hogy jelentetted, megnézzük.", + "report.unfollow": "@{name} követésének leállítása", + "report.unfollow_explanation": "Követed ezt a fiókot. Hogy ne lásd a bejegyzéseit a saját idővonaladon, szüntesd meg a követését.", "search.placeholder": "Keresés", "search_popout.search_format": "Speciális keresés", "search_popout.tips.full_text": "Egyszerű szöveg, mely általad írt, kedvencnek jelölt vagy megtolt bejegyzéseket, rólad szóló megemlítéseket, felhasználói neveket, megjelenített neveket, hashtageket ad majd vissza.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Egyszerű szöveg. Illeszkedő megjelenített nevet, felhasználói nevet, hashtageket ad majd vissza", "search_popout.tips.user": "felhasználó", "search_results.accounts": "Emberek", + "search_results.all": "Összes", "search_results.hashtags": "Hashtagek", + "search_results.nothing_found": "Nincs találat ezekre a keresési kifejezésekre", "search_results.statuses": "Bejegyzések", "search_results.statuses_fts_disabled": "Ezen a Mastodon szerveren nem engedélyezett a bejegyzések tartalom szerinti keresése.", "search_results.total": "{count, number} {count, plural, one {találat} other {találat}}", @@ -474,6 +514,7 @@ "upload_error.poll": "Szavazásnál nem lehet fájlt feltölteni.", "upload_form.audio_description": "Írja le a hallássérültek számára", "upload_form.description": "Leírás látáskorlátozottak számára", + "upload_form.description_missing": "Nincs leírás megadva", "upload_form.edit": "Szerkesztés", "upload_form.thumbnail": "Előnézet megváltoztatása", "upload_form.undo": "Törlés", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index 24139d132..ed70d1a21 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -18,12 +18,12 @@ "account.followers": "Հետեւողներ", "account.followers.empty": "Այս օգտատիրոջը դեռ ոչ մէկ չի հետեւում։", "account.followers_counter": "{count, plural, one {{counter} Հետեւորդ} other {{counter} Հետեւորդ}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} հետեւած} other {{counter} հետեւած}}", "account.follows.empty": "Այս օգտատէրը դեռ ոչ մէկի չի հետեւում։", "account.follows_you": "Հետեւում է քեզ", "account.hide_reblogs": "Թաքցնել @{name}֊ի տարածածները", "account.joined": "Միացել է {date}-ից", - "account.last_status": "Վերջին այցը", "account.link_verified_on": "Սոյն յղման տիրապետումը ստուգուած է՝ {date}֊ին", "account.locked_info": "Սոյն հաշուի գաղտնիութեան մակարդակը նշուած է որպէս՝ փակ։ Հաշուի տէրն ընտրում է, թէ ով կարող է հետեւել իրեն։", "account.media": "Մեդիա", @@ -32,7 +32,6 @@ "account.mute": "Լռեցնել @{name}֊ին", "account.mute_notifications": "Անջատել ծանուցումները @{name}֊ից", "account.muted": "Լռեցուած", - "account.never_active": "Երբեք", "account.posts": "Գրառումներ", "account.posts_with_replies": "Գրառումներ եւ պատասխաններ", "account.report": "Բողոքել @{name}֊ի մասին", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Գրառում} other {{counter} Գրառումներ}}", "account.unblock": "Ապաարգելափակել @{name}֊ին", "account.unblock_domain": "Ցուցադրել {domain} թաքցուած տիրոյթի գրառումները", + "account.unblock_short": "Unblock", "account.unendorse": "Չցուցադրել անձնական էջում", "account.unfollow": "Ապահետեւել", "account.unmute": "Ապալռեցնել @{name}֊ին", "account.unmute_notifications": "Միացնել ծանուցումները @{name}֊ից", + "account.unmute_short": "Unmute", "account_note.placeholder": "Սեղմէ՛ք գրառելու համար\n", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "Արգելափակուած օգտատէրեր", "column.bookmarks": "Էջանիշեր", "column.community": "Տեղական հոսք", - "column.direct": "Հասցէագրուած հաղորդագրութիւններ", + "column.conversations": "Conversations", "column.directory": "Զննել անձնական էջերը", "column.domain_blocks": "Թաքցուած տիրոյթները", "column.favourites": "Հաւանածներ", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Միայն տեղական", "community.column_settings.media_only": "Միայն մեդիա", "community.column_settings.remote_only": "Միայն հեռակայ", - "compose_form.direct_message_warning": "Այս գրառումը տեսանելի կը լինի միայն նշուած օգտատէրերին։", "compose_form.direct_message_warning_learn_more": "Իմանալ աւելին", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Այս գրառումը չի հաշուառուի որեւէ պիտակի տակ, քանզի այն ծածուկ է։ Միայն հրապարակային թթերը հնարաւոր է որոնել պիտակներով։", "compose_form.lock_disclaimer": "Քո հաշիւը {locked} չէ։ Իւրաքանչիւրութիւն ոք կարող է հետեւել քեզ եւ տեսնել միայն հետեւողների համար նախատեսուած գրառումները։", "compose_form.lock_disclaimer.lock": "փակ", @@ -165,8 +166,9 @@ "empty_column.blocks": "Դու դեռ ոչ մէկի չես արգելափակել։", "empty_column.bookmarked_statuses": "Դու դեռ չունես որեւէ էջանշուած գրառում։ Երբ էջանշես, դրանք կը երեւան այստեղ։", "empty_column.community": "Տեղական հոսքը դատարկ է։ Հրապարակային մի բան գրի՛ր շարժիչը գործարկելու համար։", - "empty_column.direct": "Դու դեռ չունես ոչ մի հասցէագրուած հաղորդագրութիւն։ Երբ ուղարկես կամ ստանաս որեւէ անձնական նամակ, այն այստեղ կերեւայ։", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Թաքցուած տիրոյթներ դեռ չկան։", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Դու դեռ չունես որեւէ հաւանած գրառում։ Երբ հաւանես, դրանք կերեւան այստեղ։", "empty_column.favourites": "Այս գրառումը ոչ մէկ դեռ չի հաւանել։ Հաւանողները կերեւան այստեղ, երբ հաւանեն։", "empty_column.follow_recommendations": "Կարծես քեզ համար ոչ մի առաջարկ չի գեներացուել։ Օգտագործիր որոնման դաշտը մարդկանց փնտրելու համար կամ բացայայտիր յայտնի պիտակներով։", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Փորձիր անջատել յաւելուածները եւ թարմացնել էջը։ Եթե դա չօգնի, կարող ես օգտուել Մաստադոնից այլ դիտարկիչով կամ յաւելուածով։", "errors.unexpected_crash.copy_stacktrace": "Պատճենել սթաքթրեյսը սեղմատախտակին", "errors.unexpected_crash.report_issue": "Զեկուցել խնդրի մասին", + "explore.search_results": "Որոնման արդիւնքներ", + "explore.suggested_follows": "Ձեզ համար", + "explore.title": "Explore", + "explore.trending_links": "Նորութիւններ", + "explore.trending_statuses": "Գրառումներ", + "explore.trending_tags": "Պիտակներ", "follow_recommendations.done": "Աւարտուած է", "follow_recommendations.heading": "Հետեւիր այն մարդկանց, որոնց գրառումները կը ցանկանաս տեսնել։ Ահա մի քանի առաջարկ։", "follow_recommendations.lead": "Քո հոսքում, ժամանակագրական դասաւորութեամբ կը տեսնես այն մարդկանց գրառումները, որոնց հետեւում ես։ Մի վախեցիր սխալուել, դու միշտ կարող ես հեշտութեամբ ապահետեւել մարդկանց։", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "տարածելու համար", "keyboard_shortcuts.column": "սիւներից մէկի վրայ սեւեռուելու համար", "keyboard_shortcuts.compose": "շարադրման տիրոյթին սեւեռուելու համար", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Նկարագրութիւն", - "keyboard_shortcuts.direct": "հասցէագրուած գրուածքների հոսքը բացելու համար", "keyboard_shortcuts.down": "ցանկով ներքեւ շարժուելու համար", "keyboard_shortcuts.enter": "Գրառումը բացելու համար", "keyboard_shortcuts.favourite": "հաւանելու համար", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Էջանիշեր", "navigation_bar.community_timeline": "Տեղական հոսք", "navigation_bar.compose": "Ստեղծել նոր գրառում", - "navigation_bar.direct": "Հասցէագրուած", "navigation_bar.discover": "Բացայայտել", "navigation_bar.domain_blocks": "Թաքցուած տիրոյթներ", "navigation_bar.edit_profile": "Խմբագրել անձնական էջը", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Հաւանածներ", "navigation_bar.filters": "Լռեցուած բառեր", "navigation_bar.follow_requests": "Հետեւելու հայցեր", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Նախապատուութիւններ", "navigation_bar.public_timeline": "Դաշնային հոսք", "navigation_bar.security": "Անվտանգութիւն", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} հաւանեց գրառումդ", "notification.follow": "{name} սկսեց հետեւել քեզ", "notification.follow_request": "{name} քեզ հետեւելու հայց է ուղարկել", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Մաքրել ծանուցումները", "notifications.clear_confirmation": "Վստա՞հ ես, որ ուզում ես մշտապէս մաքրել քո բոլոր ծանուցումները։", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Աշխատատիրոյթի ծանուցումներ", "notifications.column_settings.favourite": "Հաւանածներից՝", "notifications.column_settings.filter_bar.advanced": "Ցուցադրել բոլոր կատեգորիաները", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Հեռացնել հարցումը", "privacy.change": "Կարգաւորել գրառման գաղտնիութիւնը", "privacy.direct.long": "Կը տեսնեն միայն նշուած օգտատէրերը", - "privacy.direct.short": "Հասցէագրուած", + "privacy.direct.short": "Direct", "privacy.private.long": "Կը տեսնեն միայն հետեւորդները", - "privacy.private.short": "Միայն հետեւողներին", - "privacy.public.long": "Կը տեսնեն բոլոր, հրապարակային հոսքում", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Հրապարակային", - "privacy.unlisted.long": "Կը տեսնեն բոլոր, բայց ոչ հրապարակային հոսքում", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Ծածուկ", "refresh": "Թարմացնել", "regeneration_indicator.label": "Բեռնւում է…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}վ", "relative_time.today": "Այսօր", "reply_indicator.cancel": "Չեղարկել", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Փոխանցել {target}֊ին", "report.forward_hint": "Այս հաշիւ այլ հանգոյցից է։ Ուղարկե՞մ այնտեղ էլ այս բողոքի անոնիմ պատճէնը։", - "report.hint": "Այս զեկոյցը կուղարկուի հանգոյցի մոդերատորներին։ Ներքեւում կարող ես տրամադրել բացատրութիւն, թէ ինչու ես զեկուցում այս հաշուի մասին․", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", "report.placeholder": "Լրացուցիչ մեկնաբանութիւններ", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Ուղարկել", "report.target": "Բողոքել {target}֊ի մասին", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Փնտրել", "search_popout.search_format": "Փնտրելու առաջադէմ ձեւ", "search_popout.tips.full_text": "Պարզ տեքստը վերադարձնում է գրառումներդ, հաւանածներդ, տարածածներդ, որտեղ ես նշուած եղել, ինչպէս նաեւ նման օգտանուններ, անուններ եւ պիտակներ։", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Հասարակ տեքստը կը վերադարձնի համընկնող անուններ, օգտանուններ ու պիտակներ", "search_popout.tips.user": "օգտատէր", "search_results.accounts": "Մարդիկ", + "search_results.all": "All", "search_results.hashtags": "Պիտակներ", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Գրառումներ", "search_results.statuses_fts_disabled": "Այս հանգոյցում միացուած չէ ըստ բովանդակութեան գրառում փնտրելու հնարաւորութիւնը։", "search_results.total": "{count, number} {count, plural, one {արդիւնք} other {արդիւնք}}", @@ -474,6 +514,7 @@ "upload_error.poll": "Հարցումների հետ նիշք կցել հնարաւոր չէ։", "upload_form.audio_description": "Նկարագրիր ձայնագրութեան բովանդակութիւնը լսողական խնդիրներով անձանց համար", "upload_form.description": "Նկարագիր՝ տեսողական խնդիրներ ունեցողների համար", + "upload_form.description_missing": "No description added", "upload_form.edit": "Խմբագրել", "upload_form.thumbnail": "Փոխել պատկերակը", "upload_form.undo": "Յետարկել", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index e8e81cfde..c093688e4 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -18,12 +18,12 @@ "account.followers": "Pengikut", "account.followers.empty": "Pengguna ini belum ada pengikut.", "account.followers_counter": "{count, plural, other {{counter} Pengikut}}", + "account.following": "Mengikuti", "account.following_counter": "{count, plural, other {{counter} Mengikuti}}", "account.follows.empty": "Pengguna ini belum mengikuti siapapun.", "account.follows_you": "Mengikuti anda", "account.hide_reblogs": "Sembunyikan boosts dari @{name}", "account.joined": "Bergabung {date}", - "account.last_status": "Terakhir aktif", "account.link_verified_on": "Kepemilikan tautan ini telah dicek pada {date}", "account.locked_info": "Status privasi akun ini disetel untuk dikunci. Pemilik secara manual meninjau siapa yang dapat mengikutinya.", "account.media": "Media", @@ -32,7 +32,6 @@ "account.mute": "Bisukan @{name}", "account.mute_notifications": "Bisukan pemberitahuan dari @{name}", "account.muted": "Dibisukan", - "account.never_active": "Tak pernah", "account.posts": "Kiriman", "account.posts_with_replies": "Postingan dengan balasan", "account.report": "Laporkan @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, other {{counter} Toot}}", "account.unblock": "Hapus blokir @{name}", "account.unblock_domain": "Buka blokir domain {domain}", + "account.unblock_short": "Buka blokir", "account.unendorse": "Jangan tampilkan di profil", "account.unfollow": "Berhenti mengikuti", "account.unmute": "Berhenti membisukan @{name}", "account.unmute_notifications": "Berhenti bisukan pemberitahuan dari @{name}", + "account.unmute_short": "Bunyikan", "account_note.placeholder": "Klik untuk menambah catatan", "admin.dashboard.daily_retention": "Tingkat retensi pengguna perhari setelah mendaftar", "admin.dashboard.monthly_retention": "Tingkat retensi pengguna perbulan setelah mendaftar", @@ -69,7 +70,7 @@ "column.blocks": "Pengguna yang diblokir", "column.bookmarks": "Markah", "column.community": "Linimasa Lokal", - "column.direct": "Pesan langsung", + "column.conversations": "Percakapan", "column.directory": "Jelajahi profil", "column.domain_blocks": "Topik tersembunyi", "column.favourites": "Favorit", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Hanya lokal", "community.column_settings.media_only": "Hanya media", "community.column_settings.remote_only": "Hanya jarak jauh", - "compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.", "compose_form.direct_message_warning_learn_more": "Pelajari selengkapnya", + "compose_form.encryption_warning": "Kiriman di Mastodon tidak dienkripsi end-to-end. Jangan bagikan informasi rahasial melalui Mastodon.", "compose_form.hashtag_warning": "Toot ini tidak akan ada dalam daftar tagar manapun karena telah diatur sebagai tidak terdaftar. Hanya postingan publik yang bisa dicari dengan tagar.", "compose_form.lock_disclaimer": "Akun anda tidak {locked}. Semua orang dapat mengikuti anda untuk melihat postingan khusus untuk pengikut anda.", "compose_form.lock_disclaimer.lock": "terkunci", @@ -165,8 +166,9 @@ "empty_column.blocks": "Anda belum memblokir siapapun.", "empty_column.bookmarked_statuses": "Anda belum memiliki toot termarkah. Saat Anda menandainya sebagai markah, ia akan muncul di sini.", "empty_column.community": "Linimasa lokal masih kosong. Tulis sesuatu secara publik dan buat roda berputar!", - "empty_column.direct": "Anda belum memiliki pesan langsung. Ketika Anda mengirim atau menerimanya, maka akan muncul di sini.", + "empty_column.conversations": "Saat Anda mengirim atau menerima kiriman yang hanya terlihat oleh orang yang disebutkan, itu akan muncul di sini.", "empty_column.domain_blocks": "Tidak ada topik tersembunyi.", + "empty_column.explore_statuses": "Tidak ada yang sedang tren pada saat ini. Silakan mengecek lagi nanti!", "empty_column.favourited_statuses": "Anda belum memiliki toot favorit. Ketika Anda mengirim atau menerimanya, maka akan muncul di sini.", "empty_column.favourites": "Belum ada yang memfavoritkan toot ini. Ketika seseorang melakukannya, akan muncul disini.", "empty_column.follow_recommendations": "Sepertinya tak ada saran yang dibuat untuk Anda. Anda dapat mencoba menggunakan pencarian untuk menemukan orang yang Anda ketahui atau menjelajahi tagar yang sedang tren.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Coba nonaktifkan mereka lalu segarkan halaman. Jika tak membantu, Anda masih bisa memakai Mastodon dengan peramban berbeda atau aplikasi murni.", "errors.unexpected_crash.copy_stacktrace": "Salin stacktrace ke papan klip", "errors.unexpected_crash.report_issue": "Laporkan masalah", + "explore.search_results": "Hasil pencarian", + "explore.suggested_follows": "Untuk Anda", + "explore.title": "Jelajahi", + "explore.trending_links": "Berita", + "explore.trending_statuses": "Postingan", + "explore.trending_tags": "Tagar", "follow_recommendations.done": "Selesai", "follow_recommendations.heading": "Ikuti orang yang ingin Anda lihat kirimannya! Ini ada beberapa saran.", "follow_recommendations.lead": "Kiriman dari orang yang Anda ikuti akan tampil berdasar waktu di beranda Anda. Jangan takut membuat kesalahan, Anda dapat berhenti mengikuti mereka dengan mudah kapan saja!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "untuk menyebarkan", "keyboard_shortcuts.column": "untuk fokus kepada sebuah status di sebuah kolom", "keyboard_shortcuts.compose": "untuk fokus ke area penulisan", + "keyboard_shortcuts.conversations": "untuk membuka kolom percakapan", "keyboard_shortcuts.description": "Deskripsi", - "keyboard_shortcuts.direct": "buka kolom pesan langsung", "keyboard_shortcuts.down": "untuk pindah ke bawah dalam sebuah daftar", "keyboard_shortcuts.enter": "untuk membuka status", "keyboard_shortcuts.favourite": "untuk memfavoritkan", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Markah", "navigation_bar.community_timeline": "Linimasa lokal", "navigation_bar.compose": "Tulis toot baru", - "navigation_bar.direct": "Pesan langsung", "navigation_bar.discover": "Temukan", "navigation_bar.domain_blocks": "Domain tersembunyi", "navigation_bar.edit_profile": "Ubah profil", + "navigation_bar.explore": "Jelajahi", "navigation_bar.favourites": "Favorit", "navigation_bar.filters": "Kata yang dibisukan", "navigation_bar.follow_requests": "Permintaan mengikuti", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Pengaturan", "navigation_bar.public_timeline": "Linimasa gabungan", "navigation_bar.security": "Keamanan", + "notification.admin.sign_up": "{name} mendaftar", "notification.favourite": "{name} menyukai status anda", "notification.follow": "{name} mengikuti anda", "notification.follow_request": "{name} ingin mengikuti Anda", @@ -311,6 +320,7 @@ "notification.update": "{name} mengedit kiriman", "notifications.clear": "Hapus notifikasi", "notifications.clear_confirmation": "Apa anda yakin hendak menghapus semua notifikasi anda?", + "notifications.column_settings.admin.sign_up": "Pendaftaran baru:", "notifications.column_settings.alert": "Notifikasi desktop", "notifications.column_settings.favourite": "Favorit:", "notifications.column_settings.filter_bar.advanced": "Tampilkan semua kategori", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Hapus japat", "privacy.change": "Tentukan privasi status", "privacy.direct.long": "Kirim hanya ke pengguna yang disebut", - "privacy.direct.short": "Langsung", + "privacy.direct.short": "Hanya orang yang saya sebut", "privacy.private.long": "Kirim postingan hanya kepada pengikut", - "privacy.private.short": "Pribadi", - "privacy.public.long": "Kirim ke linimasa publik", + "privacy.private.short": "Pengikut saja", + "privacy.public.long": "Terlihat oleh semua", "privacy.public.short": "Publik", - "privacy.unlisted.long": "Tidak ditampilkan di linimasa publik", + "privacy.unlisted.long": "Terlihat oleh semua, tapi jangan tampilkan di fitur jelajah", "privacy.unlisted.short": "Tak Terdaftar", "refresh": "Segarkan", "regeneration_indicator.label": "Memuat…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}d", "relative_time.today": "hari ini", "reply_indicator.cancel": "Batal", + "report.block": "Blokir", + "report.block_explanation": "Anda tidak akan melihat postingan mereka. Mereka tidak akan bisa melihat postingan Anda atau mengikuti Anda. Mereka akan mampu menduga bahwa mereka diblokir.", "report.categories.other": "Lainnya", "report.categories.spam": "Spam", "report.categories.violation": "Konten melanggar satu atau lebih peraturan server", + "report.category.subtitle": "Pilih pasangan terbaik", + "report.category.title": "Beritahu kami apa yang terjadi dengan {type} ini", + "report.category.title_account": "profil", + "report.category.title_status": "postingan", + "report.close": "Selesai", + "report.comment.title": "Adakah hal lain yang perlu kami ketahui?", "report.forward": "Teruskan ke {target}", "report.forward_hint": "Akun dari server lain. Kirim salinan laporan scr anonim ke sana?", - "report.hint": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:", + "report.mute": "Bisukan", + "report.mute_explanation": "Anda tidak akan melihat postingan mereka. Mereka masih dapat mengikuti Anda dan melihat postingan Anda dan tidak akan mengetahui bahwa mereka dibisukan.", + "report.next": "Selanjutnya", "report.placeholder": "Komentar tambahan", + "report.reasons.dislike": "Saya tidak menyukainya", + "report.reasons.dislike_description": "Ini bukan hal yang ingin Anda lihat", + "report.reasons.other": "Itu sesuatu yang lain", + "report.reasons.other_description": "Permasalahan ini tidak sesuai pada kategori lain", + "report.reasons.spam": "Ini spam", + "report.reasons.spam_description": "Tautan berbahaya, interaksi palsu, atau balasan berulang", + "report.reasons.violation": "Melanggar ketentuan server", + "report.reasons.violation_description": "Anda menyadari bahwa ia melanggar ketentuan tertentu", + "report.rules.subtitle": "Pilih semua yang berlaku", + "report.rules.title": "Ketentuan manakah yang dilanggar?", + "report.statuses.subtitle": "Pilih semua yang berlaku", + "report.statuses.title": "Adakah postingan yang mendukung pelaporan ini?", "report.submit": "Kirim", "report.target": "Melaporkan", + "report.thanks.take_action": "Berikut adalah pilihan Anda untuk mengatur apa yang Anda lihat di Mastodon:", + "report.thanks.take_action_actionable": "Ketika kami meninjau ini, Anda dapat mengambil tindakan terhadap @{name}:", + "report.thanks.title": "Tidak ingin melihat ini?", + "report.thanks.title_actionable": "Terima kasih atas pelaporan Anda, kami akan memeriksa ini lebih lanjut.", + "report.unfollow": "Berhenti mengikuti @{name}", + "report.unfollow_explanation": "Anda mengikuti akun ini. Untuk tidak melihat postingan mereka di Beranda Anda, berhenti mengikuti mereka.", "search.placeholder": "Pencarian", "search_popout.search_format": "Format pencarian mahir", "search_popout.tips.full_text": "Teks simpel menampilkan status yang Anda tulis, favoritkan, boost-kan, atau status yang menyebut Anda, serta nama pengguna, nama yang ditampilkan, dan tagar yang cocok.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Teks sederhana menampilkan nama yang ditampilkan, nama pengguna, dan tagar yang cocok", "search_popout.tips.user": "pengguna", "search_results.accounts": "Orang", + "search_results.all": "Semua", "search_results.hashtags": "Tagar", + "search_results.nothing_found": "Tidak dapat menemukan apapun untuk istilah-istilah pencarian ini", "search_results.statuses": "Toot", "search_results.statuses_fts_disabled": "Pencarian toot berdasarkan konten tidak diaktifkan di server Mastadon ini.", "search_results.total": "{count, number} {count, plural, one {hasil} other {hasil}}", @@ -474,6 +514,7 @@ "upload_error.poll": "Unggah berkas tak diizinkan di japat ini.", "upload_form.audio_description": "Penjelasan untuk orang dengan gangguan pendengaran", "upload_form.description": "Deskripsikan untuk mereka yang tidak bisa melihat dengan jelas", + "upload_form.description_missing": "Tidak ada deskripsi yang ditambahkan", "upload_form.edit": "Sunting", "upload_form.thumbnail": "Ubah gambar kecil", "upload_form.undo": "Undo", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index e4ae1d2ff..6637e992a 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -18,12 +18,12 @@ "account.followers": "Sequanti", "account.followers.empty": "No one follows this user yet.", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Sequas tu", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", - "account.last_status": "Last active", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", @@ -32,7 +32,6 @@ "account.mute": "Celar @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", - "account.never_active": "Never", "account.posts": "Mesaji", "account.posts_with_replies": "Toots with replies", "account.report": "Denuncar @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "Desblokusar @{name}", "account.unblock_domain": "Unhide {domain}", + "account.unblock_short": "Unblock", "account.unendorse": "Don't feature on profile", "account.unfollow": "Ne plus sequar", "account.unmute": "Ne plus celar @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", + "account.unmute_short": "Unmute", "account_note.placeholder": "Click to add a note", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "Blokusita uzeri", "column.bookmarks": "Bookmarks", "column.community": "Lokala tempolineo", - "column.direct": "Direct messages", + "column.conversations": "Conversations", "column.directory": "Browse profiles", "column.domain_blocks": "Hidden domains", "column.favourites": "Favorati", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Remote only", - "compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.", "compose_form.direct_message_warning_learn_more": "Learn more", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "locked", @@ -165,8 +166,9 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "La lokala tempolineo esas vakua. Skribez ulo publike por iniciar la agiveso!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "There are no hidden domains yet.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", "errors.unexpected_crash.report_issue": "Report issue", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Lokala tempolineo", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Modifikar profilo", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Favorati", "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Demandi di sequado", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Preferi", "navigation_bar.public_timeline": "Federata tempolineo", "navigation_bar.security": "Security", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favorizis tua mesajo", "notification.follow": "{name} sequeskis tu", "notification.follow_request": "{name} has requested to follow you", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Efacar savigi", "notifications.clear_confirmation": "Ka tu esas certa, ke tu volas efacar omna tua savigi?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Surtabla savigi", "notifications.column_settings.favourite": "Favorati:", "notifications.column_settings.filter_bar.advanced": "Display all categories", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Remove poll", "privacy.change": "Aranjar privateso di mesaji", "privacy.direct.long": "Sendar nur a mencionata uzeri", - "privacy.direct.short": "Direte", + "privacy.direct.short": "Direct", "privacy.private.long": "Sendar nur a sequanti", - "privacy.private.short": "Private", - "privacy.public.long": "Sendar a publika tempolinei", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Publike", - "privacy.unlisted.long": "Ne montrar en publika tempolinei", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Ne enlistigota", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "Nihiligar", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", - "report.hint": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", "report.placeholder": "Plusa komenti", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Sendar", "report.target": "Denuncante", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Serchez", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", "search_popout.tips.user": "user", "search_results.accounts": "People", + "search_results.all": "All", "search_results.hashtags": "Hashtags", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.total": "{count, number} {count, plural, one {rezulto} other {rezulti}}", @@ -474,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Desfacar", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index a5164fa24..7df325463 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -18,12 +18,12 @@ "account.followers": "Fylgjendur", "account.followers.empty": "Ennþá fylgist enginn með þessum notanda.", "account.followers_counter": "{count, plural, one {{counter} fylgjandi} other {{counter} fylgjendur}}", + "account.following": "Fylgist með", "account.following_counter": "{count, plural, one {{counter} fylgist með} other {{counter} fylgjast með}}", "account.follows.empty": "Þessi notandi fylgist ennþá ekki með neinum.", "account.follows_you": "Fylgir þér", "account.hide_reblogs": "Fela endurbirtingar fyrir @{name}", "account.joined": "Gerðist þátttakandi {date}", - "account.last_status": "Síðasta virkni", "account.link_verified_on": "Eignarhald á þessum tengli var athugað þann {date}", "account.locked_info": "Staða gagnaleyndar á þessum aðgangi er stillt á læsingu. Eigandinn yfirfer handvirkt hverjir geti fylgst með honum.", "account.media": "Myndskrár", @@ -31,8 +31,7 @@ "account.moved_to": "{name} hefur verið færður til:", "account.mute": "Þagga niður í @{name}", "account.mute_notifications": "Þagga tilkynningar frá @{name}", - "account.muted": "Þaggað", - "account.never_active": "Aldrei", + "account.muted": "Þaggaður", "account.posts": "Færslur", "account.posts_with_replies": "Færslur og svör", "account.report": "Kæra @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} færsla} other {{counter} færslur}}", "account.unblock": "Aflétta útilokun af @{name}", "account.unblock_domain": "Aflétta útilokun lénsins {domain}", + "account.unblock_short": "Hætta að loka á", "account.unendorse": "Ekki birta á notandasniði", "account.unfollow": "Hætta að fylgja", "account.unmute": "Hætta að þagga niður í @{name}", "account.unmute_notifications": "Hætta að þagga tilkynningar frá @{name}", + "account.unmute_short": "Hætta að þagga niður", "account_note.placeholder": "Smelltu til að bæta við minnispunkti", "admin.dashboard.daily_retention": "Hlutfall virkra notenda eftir nýskráningu eftir dögum", "admin.dashboard.monthly_retention": "Hlutfall virkra notenda eftir nýskráningu eftir mánuðum", @@ -69,7 +70,7 @@ "column.blocks": "Útilokaðir notendur", "column.bookmarks": "Bókamerki", "column.community": "Staðvær tímalína", - "column.direct": "Bein skilaboð", + "column.conversations": "Samtöl", "column.directory": "Skoða notandasnið", "column.domain_blocks": "Útilokuð lén", "column.favourites": "Eftirlæti", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Einungis staðvært", "community.column_settings.media_only": "Einungis myndskrár", "community.column_settings.remote_only": "Einungis fjartengt", - "compose_form.direct_message_warning": "Þessi færsla verður aðeins send á notendur sem minnst er á.", "compose_form.direct_message_warning_learn_more": "Kanna nánar", + "compose_form.encryption_warning": "Færslur á Mastodon eru ekki enda-í-enda dulritaðar. Ekki deila viðkvæmum upplýsingum á Mastodon.", "compose_form.hashtag_warning": "Þessi færsla verður ekki talin með undir nokkru myllumerki þar sem það er óskráð. Einungis er hægt að leita að opinberum færslum eftir myllumerkjum.", "compose_form.lock_disclaimer": "Aðgangurinn þinn er ekki {locked}. Hver sem er getur fylgst með þeim færslum þínum sem einungis eru til fylgjenda þinna.", "compose_form.lock_disclaimer.lock": "læst", @@ -165,8 +166,9 @@ "empty_column.blocks": "Þú hefur ekki ennþá útilokað neina notendur.", "empty_column.bookmarked_statuses": "Þú ert ekki ennþá með neinar bókamerktar færslur. Þegar þú bókamerkir færslu, mun það birtast hér.", "empty_column.community": "Staðværa tímalínan er tóm. Skrifaðu eitthvað opinberlega til að láta boltann fara að rúlla!", - "empty_column.direct": "Þú átt ennþá engin bein skilaboð. Þegar þú sendir eða tekur á móti slíkum skilaboðum, munu þau birtast hér.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Það eru ennþá engin útilokuð lén.", + "empty_column.explore_statuses": "Ekkert er á uppleið í augnablikinu. Athugaðu aftur síðar!", "empty_column.favourited_statuses": "Þú ert ekki ennþá með neinar eftirlætisfærslur. Þegar þú setur færslu í eftirlæti, munu þau birtast hér.", "empty_column.favourites": "Enginn hefur ennþá sett þessa færslu í eftirlæti. Þegar einhver gerir það, mun það birtast hér.", "empty_column.follow_recommendations": "Það lítur út fyrir að ekki hafi verið hægt að útbúa neinar tillögur fyrir þig. Þú getur reynt að leita að fólki sem þú gætir þekkt eða skoðað myllumerki sem eru í umræðunni.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Prófaðu að gera þau óvirk og svo endurlesa síðuna. Ef það hjálpar ekki til, má samt vera að þú getir notað Mastodon í gegnum annan vafra eða forrit.", "errors.unexpected_crash.copy_stacktrace": "Afrita rakningarupplýsingar (stacktrace) á klippispjald", "errors.unexpected_crash.report_issue": "Tilkynna vandamál", + "explore.search_results": "Leitarniðurstöður", + "explore.suggested_follows": "Fyrir þig", + "explore.title": "Kanna", + "explore.trending_links": "Fréttir", + "explore.trending_statuses": "Færslur", + "explore.trending_tags": "Myllumerki", "follow_recommendations.done": "Lokið", "follow_recommendations.heading": "Fylgstu með fólki sem þú vilt sjá færslur frá! Hér eru nokkrar tillögur.", "follow_recommendations.lead": "Færslur frá fólki sem þú fylgist með eru birtar í tímaröð á heimastreyminu þínu. Þú þarft ekki að hræðast mistök, það er jafn auðvelt að hætta að fylgjast með fólki hvenær sem er!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "Endurbirta færslu", "keyboard_shortcuts.column": "Setja virkni í dálk", "keyboard_shortcuts.compose": "Setja virkni á textainnsetningarreit", + "keyboard_shortcuts.conversations": "að opna samtalsdálka", "keyboard_shortcuts.description": "Lýsing", - "keyboard_shortcuts.direct": "Opna dálk með beinum skilaboðum", "keyboard_shortcuts.down": "Fara neðar í listanum", "keyboard_shortcuts.enter": "Opna færslu", "keyboard_shortcuts.favourite": "Eftirlætisfærsla", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Bókamerki", "navigation_bar.community_timeline": "Staðvær tímalína", "navigation_bar.compose": "Semja nýja færslu", - "navigation_bar.direct": "Bein skilaboð", "navigation_bar.discover": "Uppgötva", "navigation_bar.domain_blocks": "Útilokuð lén", "navigation_bar.edit_profile": "Breyta notandasniði", + "navigation_bar.explore": "Kanna", "navigation_bar.favourites": "Eftirlæti", "navigation_bar.filters": "Þögguð orð", "navigation_bar.follow_requests": "Beiðnir um að fylgjast með", @@ -300,17 +308,19 @@ "navigation_bar.preferences": "Kjörstillingar", "navigation_bar.public_timeline": "Sameiginleg tímalína", "navigation_bar.security": "Öryggi", + "notification.admin.sign_up": "{name} skráði sig", "notification.favourite": "{name} setti færslu þína í eftirlæti", "notification.follow": "{name} fylgist með þér", "notification.follow_request": "{name} hefur beðið um að fylgjast með þér", "notification.mention": "{name} minntist á þig", "notification.own_poll": "Könnuninni þinni er lokið", - "notification.poll": "Könnun sem þú tókst þátt í er lokið", + "notification.poll": "Könnun sem þú tókst þátt í er lokin", "notification.reblog": "{name} endurbirti færsluna þína", "notification.status": "{name} sendi inn rétt í þessu", "notification.update": "{name} breytti færslu", "notifications.clear": "Hreinsa tilkynningar", "notifications.clear_confirmation": "Ertu viss um að þú viljir endanlega eyða öllum tilkynningunum þínum?", + "notifications.column_settings.admin.sign_up": "Nýjar skráningar:", "notifications.column_settings.alert": "Tilkynningar á skjáborði", "notifications.column_settings.favourite": "Eftirlæti:", "notifications.column_settings.filter_bar.advanced": "Birta alla flokka", @@ -345,7 +355,7 @@ "notifications_permission_banner.how_to_control": "Til að taka á móti tilkynningum þegar Mastodon er ekki opið, skaltu virkja tilkynningar á skjáborði. Þegar þær eru orðnar virkar geturðu stýrt nákvæmlega hverskonar atvik framleiða tilkynningar með því að nota {icon}-hnappinn hér fyrir ofan.", "notifications_permission_banner.title": "Aldrei missa af neinu", "picture_in_picture.restore": "Setja til baka", - "poll.closed": "Lokað", + "poll.closed": "Lokuð", "poll.refresh": "Endurlesa", "poll.total_people": "{count, plural, one {# aðili} other {# aðilar}}", "poll.total_votes": "{count, plural, one {# atkvæði} other {# atkvæði}}", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Fjarlægja könnun", "privacy.change": "Aðlaga gagnaleynd færslu", "privacy.direct.long": "Senda einungis á notendur sem minnst er á", - "privacy.direct.short": "Beint", + "privacy.direct.short": "Aðeins fólk sem ég minnist á", "privacy.private.long": "Senda einungis á fylgjendur", "privacy.private.short": "Einungis fylgjendur", - "privacy.public.long": "Senda á opinberar tímalínur", + "privacy.public.long": "Sýnilegt fyrir alla", "privacy.public.short": "Opinbert", - "privacy.unlisted.long": "Ekki senda á opinberar tímalínur", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Óskráð", "refresh": "Endurlesa", "regeneration_indicator.label": "Hleð inn…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}sek", "relative_time.today": "í dag", "reply_indicator.cancel": "Hætta við", + "report.block": "Útiloka", + "report.block_explanation": "Þú munt ekki sjá færslurnar þeirra. Þeir munu ekki geta séð færslurnar þínar eða fylgst með þér. Þeir munu ekki geta séð að lokað sé á þá.", "report.categories.other": "Annað", "report.categories.spam": "Ruslpóstur", "report.categories.violation": "Efnið brýtur gegn einni eða fleiri reglum netþjónsins", + "report.category.subtitle": "Veldu hvað samsvarar best", + "report.category.title": "Segðu okkur hvað er í gangi með þetta {type}-atriði", + "report.category.title_account": "notandasnið", + "report.category.title_status": "færsla", + "report.close": "Lokið", + "report.comment.title": "Er eitthvað annað sem þú heldur að við ættum að vita?", "report.forward": "Áframsenda til {target}", "report.forward_hint": "Notandaaðgangurinn er af öðrum vefþjóni. Á einnig að senda nafnlaust afrit af kærunni þangað?", - "report.hint": "Kæran verður send á umsjónarmenn vefþjónsins þíns. Þú getur gefið skýringu hér fyrir neðan á því af hverju þú ert að kæra þennan notandaaðgang:", + "report.mute": "Þagga niður", + "report.mute_explanation": "Þú munt ekki sjá færslurnar þeirra. Þeir munu samt geta séð færslurnar þínar eða fylgst með þér, en munu ekki geta séð að þaggað sé niður í þeim.", + "report.next": "Næsta", "report.placeholder": "Viðbótarathugasemdir", + "report.reasons.dislike": "Mér líkar það ekki", + "report.reasons.dislike_description": "Þetta er ekki eitthvað sem þið viljið sjá", + "report.reasons.other": "Það er eitthvað annað", + "report.reasons.other_description": "Vandamálið fellur ekki í aðra flokka", + "report.reasons.spam": "Þetta er ruslpóstur", + "report.reasons.spam_description": "Slæmir tenglar, fölsk samskipti eða endurtekin svör", + "report.reasons.violation": "Það gengur þvert á reglur fyrir netþjóninn", + "report.reasons.violation_description": "Þið eruð meðvituð um að þetta brýtur sértækar reglur", + "report.rules.subtitle": "Veldu allt sem á við", + "report.rules.title": "Hvaða reglur eru brotnar?", + "report.statuses.subtitle": "Veldu allt sem á við", + "report.statuses.title": "Eru einhverjar færslur sem styðja þessa kæru?", "report.submit": "Senda inn", "report.target": "Kæri {target}", + "report.thanks.take_action": "Hér eru nokkrir valkostir til að stýra hvað þú sérð á Mastodon:", + "report.thanks.take_action_actionable": "Á meðan við yfirförum þetta, geturðu tekið til aðgerða gegn @{name}:", + "report.thanks.title": "Viltu ekki sjá þetta?", + "report.thanks.title_actionable": "Takk fyrir tilkynninguna, við munum skoða málið.", + "report.unfollow": "Hætta að fylgjast með @{name}", + "report.unfollow_explanation": "Þú ert að fylgjast með þessum aðgangi. Til að hætta að sjá viðkomandi færslur á streyminu þínu, skaltu hætta að fylgjast með viðkomandi.", "search.placeholder": "Leita", "search_popout.search_format": "Snið ítarlegrar leitar", "search_popout.tips.full_text": "Einfaldur texti skilar færslum sem þú hefur skrifað, sett í eftirlæti, endurbirt eða verið minnst á þig í, ásamt samsvarandi birtingarnöfnum, notendanöfnum og myllumerkjum.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Einfaldur texti skilar samsvarandi birtingarnöfnum, notendanöfnum og myllumerkjum", "search_popout.tips.user": "notandi", "search_results.accounts": "Fólk", + "search_results.all": "Allt", "search_results.hashtags": "Myllumerki", + "search_results.nothing_found": "Gat ekki fundið neitt sem samsvarar þessum leitarorðum", "search_results.statuses": "Færslur", "search_results.statuses_fts_disabled": "Að leita í efni færslna er ekki virkt á þessum Mastodon-þjóni.", "search_results.total": "{count, number} {count, plural, one {niðurstaða} other {niðurstöður}}", @@ -474,6 +514,7 @@ "upload_error.poll": "Innsending skráa er ekki leyfð í könnunum.", "upload_form.audio_description": "Lýstu þessu fyrir heyrnarskerta", "upload_form.description": "Lýstu þessu fyrir sjónskerta", + "upload_form.description_missing": "Engri lýsingu bætt við", "upload_form.edit": "Breyta", "upload_form.thumbnail": "Skipta um smámynd", "upload_form.undo": "Eyða", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index a4847b77b..8e881e284 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -18,12 +18,12 @@ "account.followers": "Follower", "account.followers.empty": "Nessuno segue ancora questo utente.", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Follower}}", + "account.following": "Seguiti", "account.following_counter": "{count, plural, other {{counter} Seguiti}}", "account.follows.empty": "Questo utente non segue nessuno ancora.", "account.follows_you": "Ti segue", "account.hide_reblogs": "Nascondi condivisioni da @{name}", "account.joined": "Su questa istanza dal {date}", - "account.last_status": "Ultima attività", "account.link_verified_on": "La proprietà di questo link è stata controllata il {date}", "account.locked_info": "Questo è un account privato. Il proprietario approva manualmente chi può seguirlo.", "account.media": "Media", @@ -32,7 +32,6 @@ "account.mute": "Silenzia @{name}", "account.mute_notifications": "Silenzia notifiche da @{name}", "account.muted": "Silenziato", - "account.never_active": "Mai", "account.posts": "Post", "account.posts_with_replies": "Post e risposte", "account.report": "Segnala @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Post} other {{counter} Post}}", "account.unblock": "Sblocca @{name}", "account.unblock_domain": "Sblocca il dominio {domain}", + "account.unblock_short": "Sblocca", "account.unendorse": "Non mostrare sul profilo", "account.unfollow": "Smetti di seguire", "account.unmute": "Riattiva @{name}", "account.unmute_notifications": "Riattiva le notifiche da @{name}", + "account.unmute_short": "Riattiva l'audio", "account_note.placeholder": "Clicca per aggiungere una nota", "admin.dashboard.daily_retention": "Tasso di ritenzione utente per giorno dopo la registrazione", "admin.dashboard.monthly_retention": "Tasso di ritenzione utente per mese dopo la registrazione", @@ -69,7 +70,7 @@ "column.blocks": "Utenti bloccati", "column.bookmarks": "Segnalibri", "column.community": "Timeline locale", - "column.direct": "Messaggi diretti", + "column.conversations": "Conversazioni", "column.directory": "Sfoglia profili", "column.domain_blocks": "Domini bloccati", "column.favourites": "Preferiti", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Solo Locale", "community.column_settings.media_only": "Solo Media", "community.column_settings.remote_only": "Solo Remoto", - "compose_form.direct_message_warning": "Questo post sarà inviato solo agli utenti menzionati.", "compose_form.direct_message_warning_learn_more": "Scopri di più", + "compose_form.encryption_warning": "I messaggi su Mastodon non sono crittografati end-to-end. Non condividere alcuna informazione sensibile su Mastodon.", "compose_form.hashtag_warning": "Questo post non sarà elencato sotto alcun hashtag poiché senza elenco. Solo i toot pubblici possono essere ricercati per hashtag.", "compose_form.lock_disclaimer": "Il tuo profilo non è {locked}. Chiunque può seguirti e vedere le tue pubblicazioni visibili solo dai follower.", "compose_form.lock_disclaimer.lock": "bloccato", @@ -147,7 +148,7 @@ "embed.preview": "Ecco come apparirà:", "emoji_button.activity": "Attività", "emoji_button.custom": "Personalizzato", - "emoji_button.flags": "Segnalazioni", + "emoji_button.flags": "Bandiere", "emoji_button.food": "Cibo & Bevande", "emoji_button.label": "Inserisci emoji", "emoji_button.nature": "Natura", @@ -165,8 +166,9 @@ "empty_column.blocks": "Non hai ancora bloccato alcun utente.", "empty_column.bookmarked_statuses": "Non hai ancora segnato alcun post. Quando ne segni uno, sarà mostrato qui.", "empty_column.community": "La timeline locale è vuota. Condividi qualcosa pubblicamente per dare inizio alla festa!", - "empty_column.direct": "Non hai ancora nessun messaggio privato. Quando ne manderai o riceverai qualcuno, apparirà qui.", + "empty_column.conversations": "Quando invii o ricevi un post visibile solo alle persone citate in esso, apparirà qui.", "empty_column.domain_blocks": "Non vi sono domini nascosti.", + "empty_column.explore_statuses": "Nulla è in tendenza in questo momento. Riprova più tardi!", "empty_column.favourited_statuses": "Non hai ancora segnato nessun post come apprezzato. Quando lo farai, comparirà qui.", "empty_column.favourites": "Nessuno ha ancora segnato questo post come apprezzato. Quando qualcuno lo farà, apparirà qui.", "empty_column.follow_recommendations": "Sembra che nessun suggerimento possa essere generato per te. Puoi provare a usare la ricerca per cercare persone che potresti conoscere o esplorare hashtag di tendenza.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Prova a disabilitarli e ad aggiornare la pagina. Se questo non funziona, potresti ancora essere in grado di utilizzare Mastodon attraverso un browser o un'app diversi.", "errors.unexpected_crash.copy_stacktrace": "Copia stacktrace negli appunti", "errors.unexpected_crash.report_issue": "Segnala il problema", + "explore.search_results": "Risultati della ricerca", + "explore.suggested_follows": "Per te", + "explore.title": "Esplora", + "explore.trending_links": "Novità", + "explore.trending_statuses": "Post", + "explore.trending_tags": "Hashtag", "follow_recommendations.done": "Fatto", "follow_recommendations.heading": "Segui le persone da cui vuoi vedere i messaggi! Ecco alcuni suggerimenti.", "follow_recommendations.lead": "I messaggi da persone che segui verranno visualizzati in ordine cronologico nel tuo home feed. Non abbiate paura di commettere errori, potete smettere di seguire le persone altrettanto facilmente in qualsiasi momento!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "Condividi il post", "keyboard_shortcuts.column": "per portare il focus su uno status in una delle colonne", "keyboard_shortcuts.compose": "per portare il focus nell'area di composizione", + "keyboard_shortcuts.conversations": "per aprire la colonna conversazioni", "keyboard_shortcuts.description": "Descrizione", - "keyboard_shortcuts.direct": "per aprire la colonna dei messaggi diretti", "keyboard_shortcuts.down": "Spostati in basso nella lista", "keyboard_shortcuts.enter": "Apri il post", "keyboard_shortcuts.favourite": "Apprezza post", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Segnalibri", "navigation_bar.community_timeline": "Timeline locale", "navigation_bar.compose": "Componi nuovo toot", - "navigation_bar.direct": "Messaggi diretti", "navigation_bar.discover": "Scopri", "navigation_bar.domain_blocks": "Domini nascosti", "navigation_bar.edit_profile": "Modifica profilo", + "navigation_bar.explore": "Esplora", "navigation_bar.favourites": "Apprezzati", "navigation_bar.filters": "Parole silenziate", "navigation_bar.follow_requests": "Richieste di seguirti", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Impostazioni", "navigation_bar.public_timeline": "Timeline federata", "navigation_bar.security": "Sicurezza", + "notification.admin.sign_up": "{name} si è iscritto", "notification.favourite": "{name} ha apprezzato il tuo post", "notification.follow": "{name} ha iniziato a seguirti", "notification.follow_request": "{name} ti ha mandato una richiesta di follow", @@ -311,6 +320,7 @@ "notification.update": "{name} ha modificato un post", "notifications.clear": "Cancella notifiche", "notifications.clear_confirmation": "Vuoi davvero cancellare tutte le notifiche?", + "notifications.column_settings.admin.sign_up": "Nuove iscrizioni:", "notifications.column_settings.alert": "Notifiche desktop", "notifications.column_settings.favourite": "Apprezzati:", "notifications.column_settings.filter_bar.advanced": "Mostra tutte le categorie", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Rimuovi sondaggio", "privacy.change": "Modifica privacy del post", "privacy.direct.long": "Invia solo a utenti menzionati", - "privacy.direct.short": "Diretto in privato", + "privacy.direct.short": "Solo le persone che menziono", "privacy.private.long": "Invia solo ai follower", - "privacy.private.short": "Privato", - "privacy.public.long": "Invia alla timeline pubblica", + "privacy.private.short": "Solo i seguaci", + "privacy.public.long": "Visibile a tutti", "privacy.public.short": "Pubblico", - "privacy.unlisted.long": "Non mostrare sulla timeline pubblica", + "privacy.unlisted.long": "Visibile a tutti, ma escluso dalle funzioni di scoperta", "privacy.unlisted.short": "Non elencato", "refresh": "Aggiorna", "regeneration_indicator.label": "Caricamento in corso…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number} secondi", "relative_time.today": "oggi", "reply_indicator.cancel": "Annulla", + "report.block": "Blocca", + "report.block_explanation": "Non vedrai i loro post. Non saranno in grado di vedere i tuoi post o di seguirti. Potranno sapere che sono bloccati.", "report.categories.other": "Altro", "report.categories.spam": "Spam", "report.categories.violation": "Il contenuto viola una o più regole del server", + "report.category.subtitle": "Scegli la migliore corrispondenza", + "report.category.title": "Dicci cosa sta succedendo con questo {type}", + "report.category.title_account": "profilo", + "report.category.title_status": "post", + "report.close": "Fatto", + "report.comment.title": "C'è altro che pensi che dovremmo sapere?", "report.forward": "Inoltra a {target}", "report.forward_hint": "Questo account appartiene a un altro server. Mandare anche là una copia anonima del rapporto?", - "report.hint": "La segnalazione sarà inviata ai moderatori del tuo server. Di seguito, puoi fornire il motivo per il quale stai segnalando questo account:", + "report.mute": "Silenzia", + "report.mute_explanation": "Non vedrai i loro post. Potranno ancora seguirti e vedere i tuoi post e non sapranno che sono stati silenziati.", + "report.next": "Successivo", "report.placeholder": "Commenti aggiuntivi", + "report.reasons.dislike": "Non mi piace", + "report.reasons.dislike_description": "Non è qualcosa che vuoi vedere", + "report.reasons.other": "È qualcos'altro", + "report.reasons.other_description": "Il problema non rientra in altre categorie", + "report.reasons.spam": "È spam", + "report.reasons.spam_description": "Collegamenti malevoli, false interazioni, o risposte ripetitive", + "report.reasons.violation": "Viola le regole del server", + "report.reasons.violation_description": "Siete consapevoli che viola regole specifiche", + "report.rules.subtitle": "Seleziona tutte le risposte pertinenti", + "report.rules.title": "Quali regole vengono violate?", + "report.statuses.subtitle": "Seleziona tutte le risposte pertinenti", + "report.statuses.title": "Ci sono post a sostegno di questa segnalazione?", "report.submit": "Invia", "report.target": "Invio la segnalazione {target}", + "report.thanks.take_action": "Ecco le tue opzioni per controllare quello che vedi su Mastodon:", + "report.thanks.take_action_actionable": "Mentre controlliamo, puoi fare questo contro @{name}:", + "report.thanks.title": "Non vuoi vedere questo?", + "report.thanks.title_actionable": "Grazie per la segnalazione, controlleremo il problema.", + "report.unfollow": "Non seguire più @{name}", + "report.unfollow_explanation": "Stai seguendo questo account. Per non vedere più i suoi post nel tuo feed home, smetti di seguirlo.", "search.placeholder": "Cerca", "search_popout.search_format": "Formato di ricerca avanzato", "search_popout.tips.full_text": "Testo semplice per trovare gli status che hai scritto, segnato come apprezzati, condiviso o in cui sei stato citato, e inoltre i nomi utente, nomi visualizzati e hashtag che lo contengono.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Testo semplice per trovare nomi visualizzati, nomi utente e hashtag che lo contengono", "search_popout.tips.user": "utente", "search_results.accounts": "Gente", + "search_results.all": "Tutto", "search_results.hashtags": "Hashtag", + "search_results.nothing_found": "Impossibile trovare qualcosa per questi termini di ricerca", "search_results.statuses": "Post", "search_results.statuses_fts_disabled": "La ricerca di post per il loro contenuto non è abilitata su questo server Mastodon.", "search_results.total": "{count} {count, plural, one {risultato} other {risultati}}", @@ -419,7 +459,7 @@ "status.history.edited": "{name} ha modificato {date}", "status.load_more": "Mostra di più", "status.media_hidden": "Allegato nascosto", - "status.mention": "Nomina @{name}", + "status.mention": "Menziona @{name}", "status.more": "Altro", "status.mute": "Silenzia @{name}", "status.mute_conversation": "Silenzia conversazione", @@ -442,7 +482,7 @@ "status.show_less_all": "Mostra meno per tutti", "status.show_more": "Mostra di più", "status.show_more_all": "Mostra di più per tutti", - "status.show_thread": "Mostra thread", + "status.show_thread": "Mostra conversazione", "status.uncached_media_warning": "Non disponibile", "status.unmute_conversation": "Annulla silenzia conversazione", "status.unpin": "Non fissare in cima al profilo", @@ -462,7 +502,7 @@ "timeline_hint.resources.followers": "Follower", "timeline_hint.resources.follows": "Segue", "timeline_hint.resources.statuses": "Post meno recenti", - "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} persone}} ne parla·no", + "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} persone}} ne parlano", "trends.trending_now": "Di tendenza ora", "ui.beforeunload": "La bozza andrà persa se esci da Mastodon.", "units.short.billion": "{count}G", @@ -474,6 +514,7 @@ "upload_error.poll": "Caricamento file non consentito nei sondaggi.", "upload_form.audio_description": "Descrizione per persone con difetti uditivi", "upload_form.description": "Descrizione per utenti con disabilità visive", + "upload_form.description_missing": "Nessuna descrizione inserita", "upload_form.edit": "Modifica", "upload_form.thumbnail": "Cambia miniatura", "upload_form.undo": "Cancella", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index e44ebf12c..b2e2ac455 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -18,12 +18,12 @@ "account.followers": "フォロワー", "account.followers.empty": "まだ誰もフォローしていません。", "account.followers_counter": "{counter} フォロワー", + "account.following": "フォロー中", "account.following_counter": "{counter} フォロー", "account.follows.empty": "まだ誰もフォローしていません。", "account.follows_you": "フォローされています", "account.hide_reblogs": "@{name}さんからのブーストを非表示", "account.joined": "{date} に登録", - "account.last_status": "最後の活動", "account.link_verified_on": "このリンクの所有権は{date}に確認されました", "account.locked_info": "このアカウントは承認制アカウントです。相手が承認するまでフォローは完了しません。", "account.media": "メディア", @@ -32,7 +32,6 @@ "account.mute": "@{name}さんをミュート", "account.mute_notifications": "@{name}さんからの通知を受け取らない", "account.muted": "ミュート済み", - "account.never_active": "活動なし", "account.posts": "投稿", "account.posts_with_replies": "投稿と返信", "account.report": "@{name}さんを通報", @@ -42,10 +41,12 @@ "account.statuses_counter": "{counter} 投稿", "account.unblock": "@{name}さんのブロックを解除", "account.unblock_domain": "{domain}のブロックを解除", + "account.unblock_short": "ブロック解除", "account.unendorse": "プロフィールから外す", "account.unfollow": "フォロー解除", "account.unmute": "@{name}さんのミュートを解除", "account.unmute_notifications": "@{name}さんからの通知を受け取るようにする", + "account.unmute_short": "ミュート解除", "account_note.placeholder": "クリックしてメモを追加", "admin.dashboard.daily_retention": "サインアップ後の日ごとのユーザー継続率", "admin.dashboard.monthly_retention": "サインアップ後の月ごとのユーザー継続率", @@ -69,7 +70,7 @@ "column.blocks": "ブロックしたユーザー", "column.bookmarks": "ブックマーク", "column.community": "ローカルタイムライン", - "column.direct": "ダイレクトメッセージ", + "column.conversations": "ダイレクトメッセージ", "column.directory": "ディレクトリ", "column.domain_blocks": "ブロックしたドメイン", "column.favourites": "お気に入り", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "ローカルのみ表示", "community.column_settings.media_only": "メディアのみ表示", "community.column_settings.remote_only": "リモートのみ表示", - "compose_form.direct_message_warning": "この投稿はメンションされた人にのみ送信されます。", "compose_form.direct_message_warning_learn_more": "もっと詳しく", + "compose_form.encryption_warning": "Mastodon の投稿はエンドツーエンド暗号化に対応していません。安全に送受信されるべき情報を Mastodon で共有しないでください。", "compose_form.hashtag_warning": "この投稿は公開設定ではないのでハッシュタグの一覧に表示されません。公開投稿だけがハッシュタグで検索できます。", "compose_form.lock_disclaimer": "あなたのアカウントは{locked}になっていません。誰でもあなたをフォローすることができ、フォロワー限定の投稿を見ることができます。", "compose_form.lock_disclaimer.lock": "承認制", @@ -167,8 +168,9 @@ "empty_column.blocks": "まだ誰もブロックしていません。", "empty_column.bookmarked_statuses": "まだ何もブックマーク登録していません。ブックマーク登録するとここに表示されます。", "empty_column.community": "ローカルタイムラインはまだ使われていません。何か書いてみましょう!", - "empty_column.direct": "ダイレクトメッセージはまだありません。ダイレクトメッセージをやりとりすると、ここに表示されます。", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "ブロックしているドメインはありません。", + "empty_column.explore_statuses": "まだ何もありません。後で確認してください。", "empty_column.favourited_statuses": "まだ何もお気に入り登録していません。お気に入り登録するとここに表示されます。", "empty_column.favourites": "まだ誰もお気に入り登録していません。お気に入り登録されるとここに表示されます。", "empty_column.follow_recommendations": "おすすめを生成できませんでした。検索を使って知り合いを探したり、トレンドハッシュタグを見てみましょう。", @@ -187,6 +189,12 @@ "error.unexpected_crash.next_steps_addons": "それらを無効化してからリロードをお試しください。それでも解決しない場合、他のブラウザやアプリで Mastodon をお試しください。", "errors.unexpected_crash.copy_stacktrace": "スタックトレースをクリップボードにコピー", "errors.unexpected_crash.report_issue": "問題を報告", + "explore.search_results": "検索結果", + "explore.suggested_follows": "おすすめ", + "explore.title": "エクスプローラー", + "explore.trending_links": "ニュース", + "explore.trending_statuses": "投稿", + "explore.trending_tags": "ハッシュタグ", "follow_recommendations.done": "完了", "follow_recommendations.heading": "投稿を見たい人をフォローしてください!ここにおすすめがあります。", "follow_recommendations.lead": "あなたがフォローしている人の投稿は、ホームフィードに時系列で表示されます。いつでも簡単に解除できるので、気軽にフォローしてみてください!", @@ -224,8 +232,8 @@ "keyboard_shortcuts.boost": "ブースト", "keyboard_shortcuts.column": "左からn番目のカラムの最新に移動", "keyboard_shortcuts.compose": "投稿の入力欄に移動", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "説明", - "keyboard_shortcuts.direct": "ダイレクトメッセージのカラムを開く", "keyboard_shortcuts.down": "カラム内一つ下に移動", "keyboard_shortcuts.enter": "投稿の詳細を表示", "keyboard_shortcuts.favourite": "お気に入り", @@ -284,10 +292,10 @@ "navigation_bar.bookmarks": "ブックマーク", "navigation_bar.community_timeline": "ローカルタイムライン", "navigation_bar.compose": "投稿の新規作成", - "navigation_bar.direct": "ダイレクトメッセージ", "navigation_bar.discover": "見つける", "navigation_bar.domain_blocks": "ブロックしたドメイン", "navigation_bar.edit_profile": "プロフィールを編集", + "navigation_bar.explore": "エクスプローラー", "navigation_bar.favourites": "お気に入り", "navigation_bar.filters": "フィルター設定", "navigation_bar.follow_requests": "フォローリクエスト", @@ -302,6 +310,7 @@ "navigation_bar.preferences": "ユーザー設定", "navigation_bar.public_timeline": "連合タイムライン", "navigation_bar.security": "セキュリティ", + "notification.admin.sign_up": "{name} がサインアップしました", "notification.favourite": "{name}さんがあなたの投稿をお気に入りに登録しました", "notification.follow": "{name}さんにフォローされました", "notification.follow_request": "{name} さんがあなたにフォローリクエストしました", @@ -313,6 +322,7 @@ "notification.update": "{name} が投稿を編集しました", "notifications.clear": "通知を消去", "notifications.clear_confirmation": "本当に通知を消去しますか?", + "notifications.column_settings.admin.sign_up": "新規登録:", "notifications.column_settings.alert": "デスクトップ通知", "notifications.column_settings.favourite": "お気に入り:", "notifications.column_settings.filter_bar.advanced": "すべてのカテゴリを表示", @@ -329,7 +339,7 @@ "notifications.column_settings.status": "新しい投稿:", "notifications.column_settings.unread_notifications.category": "未読の通知:", "notifications.column_settings.unread_notifications.highlight": "未読の通知を強調表示", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.update": "編集:", "notifications.filter.all": "すべて", "notifications.filter.boosts": "ブースト", "notifications.filter.favourites": "お気に入り", @@ -360,10 +370,10 @@ "privacy.direct.long": "送信した相手のみ閲覧可", "privacy.direct.short": "ダイレクト", "privacy.private.long": "フォロワーのみ閲覧可", - "privacy.private.short": "フォロワー限定", - "privacy.public.long": "誰でも閲覧可、公開TLに表示", + "privacy.private.short": "フォロワーのみ", + "privacy.public.long": "誰でも閲覧可", "privacy.public.short": "公開", - "privacy.unlisted.long": "誰でも閲覧可、公開TLに非表示", + "privacy.unlisted.long": "誰でも閲覧可、サイレント", "privacy.unlisted.short": "未収載", "refresh": "更新", "regeneration_indicator.label": "読み込み中…", @@ -380,15 +390,43 @@ "relative_time.seconds": "{number}秒前", "relative_time.today": "今日", "reply_indicator.cancel": "キャンセル", + "report.block": "ブロック", + "report.block_explanation": "相手の投稿が表示されなくなります。相手はあなたの投稿を見ることやフォローすることができません。相手はブロックされていることがわかります。", "report.categories.other": "その他", "report.categories.spam": "スパム", "report.categories.violation": "サーバーのルールに違反", + "report.category.subtitle": "近いものを選択してください", + "report.category.title": "この{type}について教えてください", + "report.category.title_account": "プロフィール", + "report.category.title_status": "投稿", + "report.close": "完了", + "report.comment.title": "その他に私たちに伝えておくべき事はありますか?", "report.forward": "{target} に転送する", "report.forward_hint": "このアカウントは別のサーバーに所属しています。通報内容を匿名で転送しますか?", - "report.hint": "通報内容はあなたのサーバーのモデレーターへ送信されます。通報理由を入力してください。:", + "report.mute": "ミュート", + "report.mute_explanation": "相手の投稿は表示されなくなります。相手は引き続きあなたをフォローして、あなたの投稿を表示することができますが、ミュートされていることはわかりません。", + "report.next": "次へ", "report.placeholder": "追加コメント", + "report.reasons.dislike": "興味がありません", + "report.reasons.dislike_description": "見たくない内容の場合", + "report.reasons.other": "その他", + "report.reasons.other_description": "当てはまる選択肢がない場合", + "report.reasons.spam": "これはスパムです", + "report.reasons.spam_description": "悪意のあるリンクや虚偽の情報、執拗な返信など", + "report.reasons.violation": "サーバーのルールに違反しています", + "report.reasons.violation_description": "ルールに違反しているのを見つけた場合", + "report.rules.subtitle": "当てはまるものをすべて選んでください:", + "report.rules.title": "どのルールに違反していますか?", + "report.statuses.subtitle": "当てはまるものをすべて選んでください:", + "report.statuses.title": "この通報を裏付けるような投稿はありますか?", "report.submit": "通報する", "report.target": "{target}さんを通報する", + "report.thanks.take_action": "次のような方法はいかがでしょうか?", + "report.thanks.take_action_actionable": "私達が確認している間でも、あなたは @{name} さんに対して対応することが出来ます:", + "report.thanks.title": "見えないようにしたいですか?", + "report.thanks.title_actionable": "ご報告ありがとうございます、追って確認します。", + "report.unfollow": "@{name}のフォローを解除", + "report.unfollow_explanation": "このアカウントをフォローしています。ホームフィードに彼らの投稿を表示しないようにするには、彼らのフォローを外してください。", "search.placeholder": "検索", "search_popout.search_format": "高度な検索フォーマット", "search_popout.tips.full_text": "表示名やユーザー名、ハッシュタグのほか、あなたの投稿やお気に入り、ブーストした投稿、返信に一致する単純なテキスト。", @@ -397,7 +435,9 @@ "search_popout.tips.text": "表示名やユーザー名、ハッシュタグに一致する単純なテキスト", "search_popout.tips.user": "ユーザー", "search_results.accounts": "人々", + "search_results.all": "すべて", "search_results.hashtags": "ハッシュタグ", + "search_results.nothing_found": "この検索条件では何も見つかりませんでした", "search_results.statuses": "投稿", "search_results.statuses_fts_disabled": "このサーバーでは投稿本文の検索は利用できません。", "search_results.total": "{count, number}件の結果", @@ -480,6 +520,7 @@ "upload_error.poll": "アンケートではファイルをアップロードできません。", "upload_form.audio_description": "聴取が難しいユーザーへの説明", "upload_form.description": "閲覧が難しいユーザーへの説明", + "upload_form.description_missing": "説明を追加していません", "upload_form.edit": "編集", "upload_form.thumbnail": "サムネイルを変更", "upload_form.undo": "削除", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index c6c177d58..6b5fa5c97 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -18,12 +18,12 @@ "account.followers": "მიმდევრები", "account.followers.empty": "No one follows this user yet.", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "მოგყვებათ", "account.hide_reblogs": "დაიმალოს ბუსტები @{name}-სგან", "account.joined": "Joined {date}", - "account.last_status": "Last active", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "მედია", @@ -32,7 +32,6 @@ "account.mute": "გააჩუმე @{name}", "account.mute_notifications": "გააჩუმე შეტყობინებები @{name}-სგან", "account.muted": "გაჩუმებული", - "account.never_active": "Never", "account.posts": "ტუტები", "account.posts_with_replies": "ტუტები და პასუხები", "account.report": "დაარეპორტე @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "განბლოკე @{name}", "account.unblock_domain": "გამოაჩინე {domain}", + "account.unblock_short": "Unblock", "account.unendorse": "არ გამოირჩეს პროფილზე", "account.unfollow": "ნუღარ მიჰყვები", "account.unmute": "ნუღარ აჩუმებ @{name}-ს", "account.unmute_notifications": "ნუღარ აჩუმებ შეტყობინებებს @{name}-სგან", + "account.unmute_short": "Unmute", "account_note.placeholder": "Click to add a note", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "დაბლოკილი მომხმარებლები", "column.bookmarks": "Bookmarks", "column.community": "ლოკალური თაიმლაინი", - "column.direct": "პირდაპირი წერილები", + "column.conversations": "Conversations", "column.directory": "Browse profiles", "column.domain_blocks": "დამალული დომენები", "column.favourites": "ფავორიტები", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "მხოლოდ მედია", "community.column_settings.remote_only": "Remote only", - "compose_form.direct_message_warning": "ეს ტუტი გაეგზავნება მხოლოდ ნახსენებ მომხმარებლებს.", "compose_form.direct_message_warning_learn_more": "გაიგე მეტი", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "ეს ტუტი არ მოექცევა ჰეშტეგების ქვეს, რამეთუ ის არაა მითითებული. მხოლოდ ღია ტუტები მოიძებნება ჰეშტეგით.", "compose_form.lock_disclaimer": "თქვენი ანგარიში არაა {locked}. ნებისმიერს შეიძლია გამოგყვეთ, რომ იხილოს თქვენი მიმდევრებზე გათვლილი პოსტები.", "compose_form.lock_disclaimer.lock": "ჩაკეტილი", @@ -165,8 +166,9 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "ლოკალური თაიმლაინი ცარიელია. დაწერეთ რაიმე ღიად ან ქენით რაიმე სხვა!", - "empty_column.direct": "ჯერ პირდაპირი წერილები არ გაქვთ. როდესაც მიიღებთ ან გააგზავნით, გამოჩნდება აქ.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "There are no hidden domains yet.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", "errors.unexpected_crash.report_issue": "Report issue", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "დასაბუსტად", "keyboard_shortcuts.column": "ერთ-ერთი სვეტში სტატუსზე ფოკუსირებისთვის", "keyboard_shortcuts.compose": "შედგენის ტექსტ-არეაზე ფოკუსირებისთვის", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "აღწერილობა", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "სიაში ქვემოთ გადასაადგილებლად", "keyboard_shortcuts.enter": "სტატუსის გასახსნელად", "keyboard_shortcuts.favourite": "ფავორიტად ქცევისთვის", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "ლოკალური თაიმლაინი", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "პირდაპირი წერილები", "navigation_bar.discover": "აღმოაჩინე", "navigation_bar.domain_blocks": "დამალული დომენები", "navigation_bar.edit_profile": "შეცვალე პროფილი", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "ფავორიტები", "navigation_bar.filters": "გაჩუმებული სიტყვები", "navigation_bar.follow_requests": "დადევნების მოთხოვნები", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "პრეფერენსიები", "navigation_bar.public_timeline": "ფედერალური თაიმლაინი", "navigation_bar.security": "უსაფრთხოება", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name}-მა თქვენი სტატუსი აქცია ფავორიტად", "notification.follow": "{name} გამოგყვათ", "notification.follow_request": "{name} has requested to follow you", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "შეტყობინებების გასუფთავება", "notifications.clear_confirmation": "დარწმუნებული ხართ, გსურთ სამუდამოდ წაშალოთ ყველა თქვენი შეტყობინება?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "დესკტოპ შეტყობინებები", "notifications.column_settings.favourite": "ფავორიტები:", "notifications.column_settings.filter_bar.advanced": "Display all categories", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Remove poll", "privacy.change": "სტატუსის კონფიდენციალურობის მითითება", "privacy.direct.long": "დაიპოსტოს მხოლოდ დასახელებულ მომხმარებლებთან", - "privacy.direct.short": "პირდაპირი", + "privacy.direct.short": "Direct", "privacy.private.long": "დაიპოსტოს მხოლოდ მიმდევრებთან", - "privacy.private.short": "მხოლოდ-მიმდევრებისთვის", - "privacy.public.long": "დაიპოსტოს საჯარო თაიმლაინებზე", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "საჯარო", - "privacy.unlisted.long": "არ დაიპოსტოს საჯარო თაიმლაინებზე", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "ჩამოუთვლელი", "refresh": "Refresh", "regeneration_indicator.label": "იტვირთება…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}წმ", "relative_time.today": "today", "reply_indicator.cancel": "უარყოფა", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "ფორვარდი {target}-ს", "report.forward_hint": "ანგარიში სხვა სერვერიდანაა. გავაგზავნოთ რეპორტის ანონიმური ასლიც?", - "report.hint": "რეპორტი გაეგზავნება თქვენი ინსტანციის მოდერატორებს. ქვემოთ შეგიძლიათ დაამატოთ მიზეზი თუ რატომ არეპორტებთ ამ ანგარიშს:", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", "report.placeholder": "დამატებითი კომენტარები", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "დასრულება", "report.target": "არეპორტებთ {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "ძებნა", "search_popout.search_format": "დეტალური ძებნის ფორმა", "search_popout.tips.full_text": "მარტივი ტექსტი აბრუნებს სტატუსებს რომლებიც შექმენით, აქციეთ ფავორიტად, დაბუსტეთ, ან რაშიც ასახელეთ, ასევე ემთხვევა მომხმარებლის სახელებს, დისპლეი სახელებს, და ჰეშტეგებს.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "მარტივი ტექსტი აბრუნებს დამთხვეულ დისპლეი სახელებს, მომხმარებლის სახელებს და ჰეშტეგებს", "search_popout.tips.user": "მომხმარებელი", "search_results.accounts": "ხალხი", + "search_results.all": "All", "search_results.hashtags": "ჰეშტეგები", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "ტუტები", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", @@ -474,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "აღწერილობა ვიზუალურად უფასურისთვის", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "გაუქმება", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index b575db516..48a1d6fa8 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -18,12 +18,12 @@ "account.followers": "Imeḍfaren", "account.followers.empty": "Ar tura, ulac yiwen i yeṭṭafaṛen amseqdac-agi.", "account.followers_counter": "{count, plural, one {{count} n umeḍfar} other {{count} n imeḍfaren}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} yeṭṭafaren} aḍfar {{counter} wayeḍ}}", "account.follows.empty": "Ar tura, amseqdac-agi ur yeṭṭafaṛ yiwen.", "account.follows_you": "Yeṭṭafaṛ-ik", "account.hide_reblogs": "Ffer ayen i ibeṭṭu @{name}", "account.joined": "Yerna-d {date}", - "account.last_status": "Armud aneggaru", "account.link_verified_on": "Taɣara n useɣwen-a tettwasenqed ass n {date}", "account.locked_info": "Amiḍan-agi uslig isekweṛ. D bab-is kan i izemren ad yeǧǧ, s ufus-is, win ara t-iḍefṛen.", "account.media": "Amidya", @@ -32,7 +32,6 @@ "account.mute": "Sgugem @{name}", "account.mute_notifications": "Sgugem tilɣa sγur @{name}", "account.muted": "Yettwasgugem", - "account.never_active": "Werǧin", "account.posts": "Tijewwaqin", "account.posts_with_replies": "Tijewwaqin akked tririyin", "account.report": "Cetki ɣef @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} ajewwaq} other {{counter} ijewwaqen}}", "account.unblock": "Serreḥ i @{name}", "account.unblock_domain": "Ssken-d {domain}", + "account.unblock_short": "Unblock", "account.unendorse": "Ur ttwellih ara fell-as deg umaɣnu-inek", "account.unfollow": "Ur ṭṭafaṛ ara", "account.unmute": "Kkes asgugem ɣef @{name}", "account.unmute_notifications": "Serreḥ ilɣa sɣur @{name}", + "account.unmute_short": "Unmute", "account_note.placeholder": "Ulac iwenniten", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "Imiḍanen yettusḥebsen", "column.bookmarks": "Ticraḍ", "column.community": "Tasuddemt tadigant", - "column.direct": "Iznan usriden", + "column.conversations": "Conversations", "column.directory": "Inig deg imaɣnuten", "column.domain_blocks": "Taɣulin yeffren", "column.favourites": "Ismenyifen", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Adigan kan", "community.column_settings.media_only": "Allal n teywalt kan", "community.column_settings.remote_only": "Anmeggag kan", - "compose_form.direct_message_warning": "Tajewwaqt-a ad d-tettwasken kan i yimseqdacen i d-yettwabedren.", "compose_form.direct_message_warning_learn_more": "Issin ugar", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Amiḍan-ik ur yelli ara {locked}. Menwala yezmer ad k-yeḍfeṛ akken ad iẓer acu tbeṭṭuḍ akked yimeḍfaṛen-ik.", "compose_form.lock_disclaimer.lock": "yettwacekkel", @@ -165,8 +166,9 @@ "empty_column.blocks": "Ur tesḥebseḍ ula yiwen n umseqdac ar tura.", "empty_column.bookmarked_statuses": "Ulac tijewwaqin i terniḍ ɣer yismenyifen-ik ar tura. Ticki terniḍ yiwet, ad d-tettwasken da.", "empty_column.community": "Tasuddemt tazayezt tadigant n yisallen d tilemt. Aru ihi kra akken ad tt-teččareḍ!", - "empty_column.direct": "Ulac ɣur-k ula yiwen n yizen usrid. Ad d-yettwasken da, ticki tuzneḍ neɣ teṭṭfeḍ-d yiwen.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Ulac kra n taɣult yettwaffren ar tura.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Ulac ula yiwet n tjewwaqt deg yismenyifen-ik ar tura. Ticki Tella-d yiwet, ad d-ban da.", "empty_column.favourites": "Ula yiwen ur yerri tajewwaqt-agi deg yismenyifen-is. Melmi i d-yella waya, ad d-yettwasken da.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Nɣel stacktrace ɣef wafus", "errors.unexpected_crash.report_issue": "Mmel ugur", + "explore.search_results": "Search results", + "explore.suggested_follows": "I kečč·kem", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Tisuffaɣ", + "explore.trending_tags": "Ihacṭagen", "follow_recommendations.done": "Immed", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "i beṭṭu tikelt-nniḍen", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Aglam", - "keyboard_shortcuts.direct": "akken ad teldiḍ ajgu n yiznan usriden", "keyboard_shortcuts.down": "i kennu ɣer wadda n tebdart", "keyboard_shortcuts.enter": "i tildin n tsuffeɣt", "keyboard_shortcuts.favourite": "akken ad ternuḍ ɣer yismenyifen", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Ticraḍ", "navigation_bar.community_timeline": "Tasuddemt tadigant", "navigation_bar.compose": "Aru tajewwiqt tamaynut", - "navigation_bar.direct": "Iznan usridden", "navigation_bar.discover": "Ẓer", "navigation_bar.domain_blocks": "Tiɣula yeffren", "navigation_bar.edit_profile": "Ẓreg amaɣnu", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Ismenyifen", "navigation_bar.filters": "Awalen i yettwasgugmen", "navigation_bar.follow_requests": "Isuturen n teḍfeṛt", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Imenyafen", "navigation_bar.public_timeline": "Tasuddemt tazayezt tamatut", "navigation_bar.security": "Taɣellist", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} yesmenyef tasuffeɣt-ik·im", "notification.follow": "{name} yeṭṭafaṛ-ik", "notification.follow_request": "{name} yessuter-d ad k-yeḍfeṛ", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Sfeḍ tilɣa", "notifications.clear_confirmation": "Tebɣiḍ s tidet ad tekkseḍ akk tilɣa-inek·em i lebda?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Tilɣa n tnarit", "notifications.column_settings.favourite": "Ismenyifen:", "notifications.column_settings.filter_bar.advanced": "Ssken-d meṛṛa tiggayin", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Kkes asenqed", "privacy.change": "Seggem tabaḍnit n yizen", "privacy.direct.long": "Bḍu gar yimseqdacen i tbedreḍ kan", - "privacy.direct.short": "Usrid", + "privacy.direct.short": "Direct", "privacy.private.long": "Bḍu i yimeḍfaṛen-ik kan", - "privacy.private.short": "Imeḍfaṛen kan", - "privacy.public.long": "Bḍu deg tsuddemt tazayezt", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Azayez", - "privacy.unlisted.long": "Ur beṭṭu ara deg tsuddemt tazayezt", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "War tabdert", "refresh": "Smiren", "regeneration_indicator.label": "Yessalay-d…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}tas", "relative_time.today": "assa", "reply_indicator.cancel": "Sefsex", - "report.categories.other": "Other", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.categories.other": "Tiyyaḍ", "report.categories.spam": "Aspam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "ameγnu", + "report.category.title_status": "tasuffeɣt", + "report.close": "Immed", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Bren-it ɣeṛ {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", - "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", + "report.mute": "Sgugem", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", "report.placeholder": "Iwenniten-nniḍen", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Azen", "report.target": "Mmel {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Nadi", "search_popout.search_format": "Anadi yenneflin", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", "search_popout.tips.user": "amseqdac", "search_results.accounts": "Medden", + "search_results.all": "All", "search_results.hashtags": "Ihacṭagen", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Tibeṛṛaniyin", "search_results.statuses_fts_disabled": "Anadi ɣef tjewwiqin s ugbur-nsent ur yermid ara deg uqeddac-agi n Maṣṭudun.", "search_results.total": "{count, number} {count, plural, one {n ugemmuḍ} other {n yigemmuḍen}}", @@ -474,6 +514,7 @@ "upload_error.poll": "Ur ittusireg ara usali n ufaylu s tefranin.", "upload_form.audio_description": "Glem-d i yemdanen i yesɛan ugur deg tmesliwt", "upload_form.description": "Glem-d i yemdaneni yesɛan ugur deg yiẓri", + "upload_form.description_missing": "No description added", "upload_form.edit": "Ẓreg", "upload_form.thumbnail": "Beddel tugna", "upload_form.undo": "Kkes", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index 4fb5cb3d1..fd9074afd 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -18,12 +18,12 @@ "account.followers": "Оқырмандар", "account.followers.empty": "Әлі ешкім жазылмаған.", "account.followers_counter": "{count, plural, one {{counter} Оқырман} other {{counter} Оқырман}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} Жазылым} other {{counter} Жазылым}}", "account.follows.empty": "Ешкімге жазылмапты.", "account.follows_you": "Сізге жазылыпты", "account.hide_reblogs": "@{name} атты қолданушының әрекеттерін жасыру", "account.joined": "Joined {date}", - "account.last_status": "Соңғы белсенділік", "account.link_verified_on": "Сілтеме меншігі расталған күн {date}", "account.locked_info": "Бұл қолданушы өзі туралы мәліметтерді жасырған. Тек жазылғандар ғана көре алады.", "account.media": "Медиа", @@ -32,7 +32,6 @@ "account.mute": "Үнсіз қылу @{name}", "account.mute_notifications": "@{name} туралы ескертпелерді жасыру", "account.muted": "Үнсіз", - "account.never_active": "Ешқашан", "account.posts": "Жазбалар", "account.posts_with_replies": "Жазбалар мен жауаптар", "account.report": "Шағымдану @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Пост} other {{counter} Пост}}", "account.unblock": "Бұғаттан шығару @{name}", "account.unblock_domain": "Бұғаттан шығару {domain}", + "account.unblock_short": "Unblock", "account.unendorse": "Профильде рекомендемеу", "account.unfollow": "Оқымау", "account.unmute": "@{name} ескертпелерін қосу", "account.unmute_notifications": "@{name} ескертпелерін көрсету", + "account.unmute_short": "Unmute", "account_note.placeholder": "Жазба қалдыру үшін бас", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "Бұғатталғандар", "column.bookmarks": "Бетбелгілер", "column.community": "Жергілікті желі", - "column.direct": "Жеке хаттар", + "column.conversations": "Conversations", "column.directory": "Профильдерді аралау", "column.domain_blocks": "Жасырылған домендер", "column.favourites": "Таңдаулылар", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Тек жергілікті", "community.column_settings.media_only": "Тек медиа", "community.column_settings.remote_only": "Тек сыртқы", - "compose_form.direct_message_warning": "Тек аталған қолданушыларға.", "compose_form.direct_message_warning_learn_more": "Көбірек білу", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Бұл пост іздеуде хэштегпен шықпайды, өйткені ол бәріне ашық емес. Тек ашық жазбаларды ғана хэштег арқылы іздеп табуға болады.", "compose_form.lock_disclaimer": "Аккаунтыңыз {locked} емес. Кез келген адам жазылып, сізді оқи алады.", "compose_form.lock_disclaimer.lock": "жабық", @@ -165,8 +166,9 @@ "empty_column.blocks": "Ешкімді бұғаттамағансыз.", "empty_column.bookmarked_statuses": "Ешқандай жазба Бетбелгілер тізіміне қосылмапты. Қосылғаннан кейін осында жинала бастайды.", "empty_column.community": "Жергілікті желі бос. Сіз бастап жазыңыз!", - "empty_column.direct": "Әзірше дым хат жоқ. Өзіңіз жазып көріңіз алдымен.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Бұғатталған домен жоқ.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Ешқандай жазба 'Таңдаулылар' тізіміне қосылмапты. Қосылғаннан кейін осында жинала бастайды.", "empty_column.favourites": "Бұл постты әлі ешкім 'Таңдаулылар' тізіміне қоспапты. Біреу бастағаннан кейін осында көрінетін болады.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Жиынтықты көшіріп ал клипбордқа", "errors.unexpected_crash.report_issue": "Мәселені хабарла", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "жазба бөлісу", "keyboard_shortcuts.column": "бағандардағы жазбаны оқу", "keyboard_shortcuts.compose": "пост жазу", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Сипаттама", - "keyboard_shortcuts.direct": "жеке хаттар бағаны", "keyboard_shortcuts.down": "тізімде төмен түсу", "keyboard_shortcuts.enter": "жазбаны ашу", "keyboard_shortcuts.favourite": "таңдаулыға қосу", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Бетбелгілер", "navigation_bar.community_timeline": "Жергілікті желі", "navigation_bar.compose": "Жаңа жазба бастау", - "navigation_bar.direct": "Жеке хаттар", "navigation_bar.discover": "шарлау", "navigation_bar.domain_blocks": "Жабық домендер", "navigation_bar.edit_profile": "Профиль түзету", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Таңдаулылар", "navigation_bar.filters": "Үнсіз сөздер", "navigation_bar.follow_requests": "Жазылуға сұранғандар", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Басымдықтар", "navigation_bar.public_timeline": "Жаһандық желі", "navigation_bar.security": "Қауіпсіздік", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} жазбаңызды таңдаулыға қосты", "notification.follow": "{name} сізге жазылды", "notification.follow_request": "{name} сізге жазылғысы келеді", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Ескертпелерді тазарт", "notifications.clear_confirmation": "Шынымен барлық ескертпелерді өшіресіз бе?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Үстел ескертпелері", "notifications.column_settings.favourite": "Таңдаулылар:", "notifications.column_settings.filter_bar.advanced": "Барлық категорияны көрсет", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Сауалнаманы өшіру", "privacy.change": "Құпиялылықты реттеу", "privacy.direct.long": "Аталған адамдарға ғана көрінетін жазба", - "privacy.direct.short": "Тікелей", + "privacy.direct.short": "Direct", "privacy.private.long": "Тек оқырмандарға арналған жазба", - "privacy.private.short": "Оқырмандарға ғана", - "privacy.public.long": "Ашық желіге жібер", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Ашық", - "privacy.unlisted.long": "Do not show in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Тізімсіз", "refresh": "Жаңарту", "regeneration_indicator.label": "Жүктеу…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}с", "relative_time.today": "бүгін", "reply_indicator.cancel": "Қайтып алу", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Жіберу {target}", "report.forward_hint": "Бұл аккаунт басқа серверден. Аноним шағым жібересіз бе?", - "report.hint": "Шағым сіздің модераторларға жіберіледі. Шағымның себептерін мына жерге жазуыңызға болады:", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", "report.placeholder": "Қосымша пікірлер", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Жіберу", "report.target": "Шағымдану {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Іздеу", "search_popout.search_format": "Кеңейтілген іздеу форматы", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, bоosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Simple text returns matching display names, usernames аnd hashtags", "search_popout.tips.user": "қолданушы", "search_results.accounts": "Адамдар", + "search_results.all": "All", "search_results.hashtags": "Хэштегтер", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Жазбалар", "search_results.statuses_fts_disabled": "Mastodon серверінде постты толық мәтінмен іздей алмайсыз.", "search_results.total": "{count, number} {count, plural, one {нәтиже} other {нәтиже}}", @@ -474,6 +514,7 @@ "upload_error.poll": "Сауалнамамен бірге файл жүктеуге болмайды.", "upload_form.audio_description": "Есту қабілеті нашар адамдарға сипаттама беріңіз", "upload_form.description": "Көру қабілеті нашар адамдар үшін сипаттаңыз", + "upload_form.description_missing": "No description added", "upload_form.edit": "Түзету", "upload_form.thumbnail": "Суретті өзгерту", "upload_form.undo": "Өшіру", diff --git a/app/javascript/mastodon/locales/kmr.json b/app/javascript/mastodon/locales/kmr.json deleted file mode 100644 index 2ae288581..000000000 --- a/app/javascript/mastodon/locales/kmr.json +++ /dev/null @@ -1,502 +0,0 @@ -{ - "account.account_note_header": "Nîşe", - "account.add_or_remove_from_list": "Tevlî bike an rake ji rêzokê", - "account.badges.bot": "Bot", - "account.badges.group": "Kom", - "account.block": "@{name} asteng bike", - "account.block_domain": "{domain} navpar asteng bike", - "account.blocked": "Astengkirî", - "account.browse_more_on_origin_server": "Li pelên resen bêhtir bigere", - "account.cancel_follow_request": "Daxwaza şopandinê rake", - "account.direct": "Peyamekê bişîne @{name}", - "account.disable_notifications": "Êdî min agahdar neke gava @{name} diweşîne", - "account.domain_blocked": "Navper hate astengkirin", - "account.edit_profile": "Profîl serrast bike", - "account.enable_notifications": "Min agahdar bike gava @{name} diweşîne", - "account.endorse": "Taybetiyên li ser profîl", - "account.follow": "Bişopîne", - "account.followers": "Şopîner", - "account.followers.empty": "Kesekî hin ev bikarhêner neşopandiye.", - "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", - "account.following_counter": "{count, plural, one {{counter} Dişopîne} other {{counter} Dişopîne}}", - "account.follows.empty": "Ev bikarhêner hin kesekî heya niha neşopandiye.", - "account.follows_you": "Te dişopîne", - "account.hide_reblogs": "Bilindkirinên ji @{name} veşêre", - "account.joined": "Tevlîbû di {date} de", - "account.last_status": "Çalakiya dawî", - "account.link_verified_on": "Xwedaniya li vê girêdanê di {date} de hatiye kontrolkirin", - "account.locked_info": "Rewşa vê ajimêrê wek kilît kirî hatiye saz kirin. Xwedî yê ajimêrê, kesên vê bişopîne bi dest vekolin dike.", - "account.media": "Medya", - "account.mention": "Qal @{name} bike", - "account.moved_to": "{name} hate livandin bo:", - "account.mute": "@{name} Bêdeng bike", - "account.mute_notifications": "Agahdariyan ji @{name} bêdeng bike", - "account.muted": "Bêdengkirî", - "account.never_active": "Tu car", - "account.posts": "Şandî", - "account.posts_with_replies": "Şandî û bersiv", - "account.report": "@{name} Ragihîne", - "account.requested": "Li benda erêkirinê ye. Ji bo betal kirina daxwazê pêl bikin", - "account.share": "Profîla @{name} parve bike", - "account.show_reblogs": "Bilindkirinên ji @{name} nîşan bike", - "account.statuses_counter": "{count, plural,one {{counter} şandî}other {{counter} şandî}}", - "account.unblock": "Astengê li ser @{name} rake", - "account.unblock_domain": "Astengê li ser navperê {domain} rake", - "account.unendorse": "Li ser profîl nîşan neke", - "account.unfollow": "Neşopîne", - "account.unmute": "@{name} Bêdeng bike", - "account.unmute_notifications": "Agahdariyan ji @{name} bêdeng bike", - "account_note.placeholder": "Bitikîne bo nîşeyekê tevlî bikî", - "admin.dashboard.daily_retention": "Rêjeya ragirtina bikarhêner bi roj piştî tomarkirinê", - "admin.dashboard.monthly_retention": "Rêjeya ragirtina bikarhêner bi meh piştî tomarkirinê", - "admin.dashboard.retention.average": "Navîn", - "admin.dashboard.retention.cohort": "Meha tomarkirinê", - "admin.dashboard.retention.cohort_size": "Bikarhênerên nû", - "alert.rate_limited.message": "Jkx dîsa biceribîne piştî {retry_time, time, medium}.\n \n", - "alert.rate_limited.title": "Rêje sînorkirî ye", - "alert.unexpected.message": "Çewtiyeke bêhêvî çê bû.", - "alert.unexpected.title": "Wey li min!", - "announcement.announcement": "Daxuyanî", - "attachments_list.unprocessed": "(bêpêvajo)", - "autosuggest_hashtag.per_week": "Her hefte {count}", - "boost_modal.combo": "Ji bo derbas bî carekî din de pêlê {combo} bike", - "bundle_column_error.body": "Di dema barkirina vê hêmanê de tiştek çewt çê bû.", - "bundle_column_error.retry": "Dîsa biceribîne", - "bundle_column_error.title": "Çewtiya torê", - "bundle_modal_error.close": "Bigire", - "bundle_modal_error.message": "Di dema barkirina vê hêmanê de tiştek çewt çê bû.", - "bundle_modal_error.retry": "Dîsa bicerbîne", - "column.blocks": "Bikarhênerên astengkirî", - "column.bookmarks": "Şûnpel", - "column.community": "Demnameya herêmî", - "column.direct": "Peyamên taybet", - "column.directory": "Li profîlan bigere", - "column.domain_blocks": "Navperên astengkirî", - "column.favourites": "Bijarte", - "column.follow_requests": "Daxwazên şopandinê", - "column.home": "Serrûpel", - "column.lists": "Rêzok", - "column.mutes": "Bikarhênerên bêdengkirî", - "column.notifications": "Agahdarî", - "column.pins": "Şandiya derzîkirî", - "column.public": "Demnameyê federalîkirî", - "column_back_button.label": "Veger", - "column_header.hide_settings": "Sazkariyan veşêre", - "column_header.moveLeft_settings": "Stûnê bilivîne bo çepê", - "column_header.moveRight_settings": "Stûnê bilivîne bo rastê", - "column_header.pin": "Bi derzî bike", - "column_header.show_settings": "Sazkariyan nîşan bide", - "column_header.unpin": "Bi derzî neke", - "column_subheading.settings": "Sazkarî", - "community.column_settings.local_only": "Tenê herêmî", - "community.column_settings.media_only": "Tenê media", - "community.column_settings.remote_only": "Tenê ji dûr ve", - "compose_form.direct_message_warning": "Ev şandî tenê ji bikarhênerên qalkirî re wê were şandin.", - "compose_form.direct_message_warning_learn_more": "Bêtir fêr bibe", - "compose_form.hashtag_warning": "Ev şandî ji ber ku nehatiye tomarkirin dê di binê hashtagê de neyê tomar kirin. Tenê peyamên gelemperî dikarin bi hashtagê werin lêgerîn.", - "compose_form.lock_disclaimer": "Ajimêrê te {locked} nîne. Herkes dikare te bişopîne da ku şandiyên te yên tenê şopînerên te ra xûya dibin bibînin.", - "compose_form.lock_disclaimer.lock": "girtî ye", - "compose_form.placeholder": "Çi di hişê te derbas dibe?", - "compose_form.poll.add_option": "Hilbijarekî tevlî bike", - "compose_form.poll.duration": "Dema rapirsî yê", - "compose_form.poll.option_placeholder": "{number} Hilbijêre", - "compose_form.poll.remove_option": "Vê hilbijarê rake", - "compose_form.poll.switch_to_multiple": "Rapirsî yê biguherînin da ku destûr bidin vebijarkên pirjimar", - "compose_form.poll.switch_to_single": "Rapirsîyê biguherîne da ku mafê bidî tenê vebijêrkek", - "compose_form.publish": "Toot", - "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Guhertinan tomar bike", - "compose_form.sensitive.hide": "{count, plural, one {Medya wekî hestiyar nîşan bide} other {Medya wekî hestiyar nîşan bide}}", - "compose_form.sensitive.marked": "{count, plural, one {Medya wekî hestiyar hate nîşan} other {Medya wekî hestiyar nîşan}}", - "compose_form.sensitive.unmarked": "{count, plural, one {Medya wekî hestiyar nehatiye nîşan} other {Medya wekî hestiyar nehatiye nîşan}}", - "compose_form.spoiler.marked": "Hişyariya naverokê rake", - "compose_form.spoiler.unmarked": "Hişyariya naverokê tevlî bike", - "compose_form.spoiler_placeholder": "Li vir hişyariya xwe binivîse", - "confirmation_modal.cancel": "Dev jê berde", - "confirmations.block.block_and_report": "Asteng bike & ragihîne", - "confirmations.block.confirm": "Asteng bike", - "confirmations.block.message": "Ma tu dixwazî ku {name} asteng bikî?", - "confirmations.delete.confirm": "Jê bibe", - "confirmations.delete.message": "Ma tu dixwazî vê şandiyê jê bibî?", - "confirmations.delete_list.confirm": "Jê bibe", - "confirmations.delete_list.message": "Ma tu dixwazî bi awayekî herdemî vê rêzokê jê bibî?", - "confirmations.discard_edit_media.confirm": "Biavêje", - "confirmations.discard_edit_media.message": "Guhertinên neqedandî di danasîna an pêşdîtina medyayê de hene, wan bi her awayî bavêje?", - "confirmations.domain_block.confirm": "Hemî navperê asteng bike", - "confirmations.domain_block.message": "Tu ji xwe bawerî, bi rastî tu dixwazî hemû {domain} asteng bikî? Di gelek rewşan de asteng kirin an jî bêdeng kirin têrê dike û tê tercîh kirin. Tu nikarî naveroka vê navperê di demnameyê an jî agahdariyên xwe de bibînî. Şopînerên te yê di vê navperê were jêbirin.", - "confirmations.logout.confirm": "Derkeve", - "confirmations.logout.message": "Ma tu dixwazî ku derkevî?", - "confirmations.mute.confirm": "Bêdeng bike", - "confirmations.mute.explanation": "Ev ê şandinên ji wan tê û şandinên ku behsa wan dike veşêre, lê hê jî maf dide ku ew şandinên te bibînin û te bişopînin.", - "confirmations.mute.message": "Bi rastî tu dixwazî {name} bêdeng bikî?", - "confirmations.redraft.confirm": "Jê bibe & ji nû ve serrast bike", - "confirmations.redraft.message": "Bi rastî tu dixwazî şandî ye jê bibî û nûve reşnivîsek çê bikî? Bijare û şandî wê wenda bibin û bersivên ji bo şandiyê resen wê sêwî bimînin.", - "confirmations.reply.confirm": "Bersivê bide", - "confirmations.reply.message": "Bersiva niha li ser peyama ku tu niha berhev dikî dê binivsîne. Ma pê bawer î ku tu dixwazî bidomînî?", - "confirmations.unfollow.confirm": "Neşopîne", - "confirmations.unfollow.message": "Ma tu dixwazî ku dev ji şopa {name} berdî?", - "conversation.delete": "Axaftinê jê bibe", - "conversation.mark_as_read": "Wekî xwendî nîşan bide", - "conversation.open": "Axaftinê nîşan bide", - "conversation.with": "Bi {names} re", - "directory.federated": "Ji fediversên naskirî", - "directory.local": "Tenê ji {domain}", - "directory.new_arrivals": "Kesên ku nû hatine", - "directory.recently_active": "Di demên dawî de çalak", - "embed.instructions": "Bi jêgirtina koda jêrîn vê şandiyê li ser malpera xwe bicîh bikin.", - "embed.preview": "Wa ye wê wusa xuya bike:", - "emoji_button.activity": "Çalakî", - "emoji_button.custom": "Kesanekirî", - "emoji_button.flags": "Nîşankirî", - "emoji_button.food": "Xwarin û vexwarin", - "emoji_button.label": "Emoji têxe", - "emoji_button.nature": "Sirûştî", - "emoji_button.not_found": "Hestokên lihevhatî nehate dîtin", - "emoji_button.objects": "Tişt", - "emoji_button.people": "Mirov", - "emoji_button.recent": "Pir caran tê bikaranîn", - "emoji_button.search": "Bigere...", - "emoji_button.search_results": "Encamên lêgerînê", - "emoji_button.symbols": "Sembol", - "emoji_button.travel": "Geşt û şûn", - "empty_column.account_suspended": "Ajimêr hatiye rawestandin", - "empty_column.account_timeline": "Li vir şandî tune!", - "empty_column.account_unavailable": "Profîl nayê peydakirin", - "empty_column.blocks": "Te tu bikarhêner asteng nekiriye.", - "empty_column.bookmarked_statuses": "Hîn tu peyamên şûnpelkirî tuneye. Gava ku hûn yek şûnpel bikin, ew ê li vir xûya bike.", - "empty_column.community": "Demnameya herêmî vala ye. Tiştek ji raya giştî re binivsînin da ku rûpel biherike!", - "empty_column.direct": "Hêj peyameke te yê rasterast tuneye. Gava ku tu yekî bişeynî an jî bigirî, ew ê li vir xûya bike.", - "empty_column.domain_blocks": "Hê jî navperên hatine asteng kirin tune ne.", - "empty_column.favourited_statuses": "Hîn tu peyamên te yên bijare tunene. Gava ku te yekî bijart, ew ê li vir xûya bike.", - "empty_column.favourites": "Hîn tu kes vê peyamê nebijartiye. Gava ku hin kes bijartin, ew ê li vir xûya bikin.", - "empty_column.follow_recommendations": "Wusa dixuye ku ji bo we tu pêşniyar nehatine çêkirin. Hûn dikarin lêgerînê bikarbînin da ku li kesên ku hûn nas dikin bigerin an hashtagên trendî bigerin.", - "empty_column.follow_requests": "Hê jî daxwaza şopandinê tunne ye. Dema daxwazek hat, yê li vir were nîşan kirin.", - "empty_column.hashtag": "Di vê hashtagê de hêj tiştekî tune.", - "empty_column.home": "Demnameya mala we vala ye! Ji bona tijîkirinê bêtir mirovan bişopînin. {suggestions}", - "empty_column.home.suggestions": "Hinek pêşniyaran bibîne", - "empty_column.list": "Di vê rêzokê de hîn tiştek tune ye. Gava ku endamên vê rêzokê peyamên nû biweşînin, ew ê li vir xuya bibin.", - "empty_column.lists": "Hêj qet rêzokê te tunne ye. Dema yek peyda bû, yê li vir were nîşan kirin.", - "empty_column.mutes": "Te tu bikarhêner bêdeng nekiriye.", - "empty_column.notifications": "Hêj hişyariyên te tunene. Dema ku mirovên din bi we re têkilî danîn, hûn ê wê li vir bibînin.", - "empty_column.public": "Li vir tiştekî tuneye! Ji raya giştî re tiştekî binivîsîne, an ji bo tijîkirinê ji rajekerên din bikarhêneran bi destan bişopînin", - "error.unexpected_crash.explanation": "Ji ber xeletîyeke di koda me da an jî ji ber mijara lihevhatina gerokan, ev rûpel rast nehat nîşandan.", - "error.unexpected_crash.explanation_addons": "Ev rûpel bi awayekî rast nehat nîşandan. Ev çewtî mimkûn e ji ber lêzêdekirina gerokan an jî amûrên wergera xweberî pêk tê.", - "error.unexpected_crash.next_steps": "Nûkirina rûpelê biceribîne. Heke ev bi kêr neyê, dibe ku te hîn jî bi rêya gerokeke cuda an jî sepana xwecîhê Mastodonê bi kar bîne.", - "error.unexpected_crash.next_steps_addons": "Ne çalak kirin û nûkirina rûpelê biceribîne. Heke ev bi kêr neyê, dibe ku te hîn jî bi rêya gerokeke cuda an jî sepana xwecîhê Mastodonê bi kar bîne.", - "errors.unexpected_crash.copy_stacktrace": "Şopa gemara (stacktrace) tûrikê ra jê bigire", - "errors.unexpected_crash.report_issue": "Pirsgirêkekê ragihîne", - "follow_recommendations.done": "Qediya", - "follow_recommendations.heading": "Mirovên ku tu dixwazî ji wan peyaman bibînî bişopîne! Hin pêşnîyar li vir in.", - "follow_recommendations.lead": "Li gorî rêza kronolojîkî peyamên mirovên ku tu dişopînî dê demnameya te de xûya bike. Ji xeletiyan netirse, bi awayekî hêsan her wextî tu dikarî dev ji şopandinê berdî!", - "follow_request.authorize": "Mafê bide", - "follow_request.reject": "Nepejirîne", - "follow_requests.unlocked_explanation": "Tevlî ku ajimêra te ne kilît kiriye, karmendên {domain} digotin qey tu dixwazî ku pêşdîtina daxwazên şopandinê bi destan bike.", - "generic.saved": "Tomarkirî", - "getting_started.developers": "Pêşdebir", - "getting_started.directory": "Rêgeha profîlê", - "getting_started.documentation": "Pelbend", - "getting_started.heading": "Destpêkirin", - "getting_started.invite": "Mirovan Vexwîne", - "getting_started.open_source_notice": "Mastodon nermalava çavkaniya vekirî ye. Tu dikarî pirsgirêkan li ser GitHub-ê ragihînî di {github} de an jî dikarî tevkariyê bikî.", - "getting_started.security": "Sazkariyên ajimêr", - "getting_started.terms": "Mercên karûberan", - "hashtag.column_header.tag_mode.all": "û {additional}", - "hashtag.column_header.tag_mode.any": "an {additional}", - "hashtag.column_header.tag_mode.none": "bêyî {additional}", - "hashtag.column_settings.select.no_options_message": "Ti pêşniyar nehatin dîtin", - "hashtag.column_settings.select.placeholder": "Têkeve hashtagê…", - "hashtag.column_settings.tag_mode.all": "Van hemûyan", - "hashtag.column_settings.tag_mode.any": "Yek ji van", - "hashtag.column_settings.tag_mode.none": "Ne yek ji van", - "hashtag.column_settings.tag_toggle": "Ji bo vê stûnê hin pêvekan tevlî bike", - "home.column_settings.basic": "Bingehîn", - "home.column_settings.show_reblogs": "Bilindkirinan nîşan bike", - "home.column_settings.show_replies": "Bersivan nîşan bide", - "home.hide_announcements": "Reklaman veşêre", - "home.show_announcements": "Reklaman nîşan bide", - "intervals.full.days": "{number, plural, one {# roj} other {# roj}}", - "intervals.full.hours": "{number, plural, one {# demjimêr} other {# demjimêr}}\n \n", - "intervals.full.minutes": "{number, plural, one {# xulek} other {# xulek}}", - "keyboard_shortcuts.back": "Vegere paşê", - "keyboard_shortcuts.blocked": "Rêzoka bikarhênerên astengkirî veke", - "keyboard_shortcuts.boost": "Şandiyê bilind bike", - "keyboard_shortcuts.column": "Stûna balkişandinê", - "keyboard_shortcuts.compose": "Bal bikşîne cîhê nivîsê/textarea", - "keyboard_shortcuts.description": "Danasîn", - "keyboard_shortcuts.direct": "Ji stûnê peyamên rasterast veke", - "keyboard_shortcuts.down": "Di rêzokê de dakêşe jêr", - "keyboard_shortcuts.enter": "Şandiyê veke", - "keyboard_shortcuts.favourite": "Şandiya bijarte", - "keyboard_shortcuts.favourites": "Rêzokên bijarte veke", - "keyboard_shortcuts.federated": "Demnameyê federalîkirî veke", - "keyboard_shortcuts.heading": "Kurterêyên klavyeyê", - "keyboard_shortcuts.home": "Demnameyê veke", - "keyboard_shortcuts.hotkey": "Bişkoka kurterê", - "keyboard_shortcuts.legend": "Vê çîrokê nîşan bike", - "keyboard_shortcuts.local": "Demnameya herêmî veke", - "keyboard_shortcuts.mention": "Qala nivîskarî/ê bike", - "keyboard_shortcuts.muted": "Rêzoka bikarhênerên bêdeng kirî veke", - "keyboard_shortcuts.my_profile": "Profîla xwe veke", - "keyboard_shortcuts.notifications": "Stûnê agahdariyan veke", - "keyboard_shortcuts.open_media": "Medya veke", - "keyboard_shortcuts.pinned": "Şandiyên derzîkirî veke", - "keyboard_shortcuts.profile": "Profîla nivîskaran veke", - "keyboard_shortcuts.reply": "Bersivê bide şandiyê", - "keyboard_shortcuts.requests": "Rêzoka daxwazên şopandinê veke", - "keyboard_shortcuts.search": "Bal bide şivika lêgerînê", - "keyboard_shortcuts.spoilers": "Zeviya hişyariya naverokê nîşan bide/veşêre", - "keyboard_shortcuts.start": "Stûna \"destpêkê\" veke", - "keyboard_shortcuts.toggle_hidden": "Nivîsa paş hişyariya naverokê nîşan bide/veşêre", - "keyboard_shortcuts.toggle_sensitivity": "Medyayê nîşan bide/veşêre", - "keyboard_shortcuts.toot": "Dest bi şandiyeke nû bike", - "keyboard_shortcuts.unfocus": "Bal nede cîhê nivîsê /lêgerînê", - "keyboard_shortcuts.up": "Di rêzokê de rake jor", - "lightbox.close": "Bigire", - "lightbox.compress": "Qutîya wêneya nîşan dike bitepisîne", - "lightbox.expand": "Qutîya wêneya nîşan dike fireh bike", - "lightbox.next": "Pêş", - "lightbox.previous": "Paş", - "lists.account.add": "Tevlî rêzokê bike", - "lists.account.remove": "Ji rêzokê rake", - "lists.delete": "Rêzokê jê bibe", - "lists.edit": "Rêzokê serrast bike", - "lists.edit.submit": "Sernavê biguherîne", - "lists.new.create": "Rêzokê tevlî bike", - "lists.new.title_placeholder": "Sernavê rêzoka nû", - "lists.replies_policy.followed": "Bikarhênereke şopandî", - "lists.replies_policy.list": "Endamên rêzokê", - "lists.replies_policy.none": "Ne yek", - "lists.replies_policy.title": "Bersivan nîşan bide:", - "lists.search": "Di navbera kesên ku te dişopînin bigere", - "lists.subheading": "Rêzokên te", - "load_pending": "{count, plural, one {# hêmaneke nû} other {#hêmaneke nû}}", - "loading_indicator.label": "Tê barkirin...", - "media_gallery.toggle_visible": "{number, plural, one {Wêneyê veşêre} other {Wêneyan veşêre}}", - "missing_indicator.label": "Nehate dîtin", - "missing_indicator.sublabel": "Ev çavkanî nehat dîtin", - "mute_modal.duration": "Dem", - "mute_modal.hide_notifications": "Agahdariyan ji ev bikarhêner veşêre?", - "mute_modal.indefinite": "Nediyar", - "navigation_bar.apps": "Sepana mobîl", - "navigation_bar.blocks": "Bikarhênerên astengkirî", - "navigation_bar.bookmarks": "Şûnpel", - "navigation_bar.community_timeline": "Demnameya herêmî", - "navigation_bar.compose": "Şandiyeke nû binivsîne", - "navigation_bar.direct": "Peyamên rasterast", - "navigation_bar.discover": "Vekolê", - "navigation_bar.domain_blocks": "Navparên astengkirî", - "navigation_bar.edit_profile": "Profîl serrast bike", - "navigation_bar.favourites": "Bijarte", - "navigation_bar.filters": "Peyvên bêdengkirî", - "navigation_bar.follow_requests": "Daxwazên şopandinê", - "navigation_bar.follows_and_followers": "Yên tê şopandin û şopîner", - "navigation_bar.info": "Derbarê vî rajekarî", - "navigation_bar.keyboard_shortcuts": "Bişkoka kurterê", - "navigation_bar.lists": "Rêzok", - "navigation_bar.logout": "Derkeve", - "navigation_bar.mutes": "Bikarhênerên bêdengkirî", - "navigation_bar.personal": "Kesanî", - "navigation_bar.pins": "Şandiya derzîkirî", - "navigation_bar.preferences": "Sazkarî", - "navigation_bar.public_timeline": "Demnameyê federalîkirî", - "navigation_bar.security": "Ewlehî", - "notification.favourite": "{name} şandiya te hez kir", - "notification.follow": "{name} te şopand", - "notification.follow_request": "{name} dixwazê te bişopîne", - "notification.mention": "{name} qale te kir", - "notification.own_poll": "Rapirsîya te qediya", - "notification.poll": "Rapirsiyeke ku te deng daye qediya", - "notification.reblog": "{name} şandiya te bilind kir", - "notification.status": "{name} niha şand", - "notification.update": "{name} şandiyek serrast kir", - "notifications.clear": "Agahdariyan pak bike", - "notifications.clear_confirmation": "Bi rastî tu dixwazî bi awayekî dawî hemû agahdariyên xwe pak bikî?", - "notifications.column_settings.alert": "Agahdariyên sermaseyê", - "notifications.column_settings.favourite": "Bijarte:", - "notifications.column_settings.filter_bar.advanced": "Hemû beşan nîşan bide", - "notifications.column_settings.filter_bar.category": "Şivika parzûna bilêz", - "notifications.column_settings.filter_bar.show_bar": "Darika parzûnê nîşan bide", - "notifications.column_settings.follow": "Şopînerên nû:", - "notifications.column_settings.follow_request": "Daxwazên şopandinê nû:", - "notifications.column_settings.mention": "Qalkirin:", - "notifications.column_settings.poll": "Encamên rapirsiyê:", - "notifications.column_settings.push": "Agahdarîyên yekser", - "notifications.column_settings.reblog": "Bilindkirî:", - "notifications.column_settings.show": "Di nav stûnê de nîşan bike", - "notifications.column_settings.sound": "Deng lêxe", - "notifications.column_settings.status": "Şandiyên nû:", - "notifications.column_settings.unread_notifications.category": "Agahdariyên nexwendî", - "notifications.column_settings.unread_notifications.highlight": "Agahiyên nexwendî nîşan bike", - "notifications.column_settings.update": "Serrastkirin:", - "notifications.filter.all": "Hemû", - "notifications.filter.boosts": "Bilindkirî", - "notifications.filter.favourites": "Bijarte", - "notifications.filter.follows": "Şopîner", - "notifications.filter.mentions": "Qalkirin", - "notifications.filter.polls": "Encamên rapirsiyê", - "notifications.filter.statuses": "Ji kesên tu dişopînî re rojanekirin", - "notifications.grant_permission": "Destûrê bide.", - "notifications.group": "{count} agahdarî", - "notifications.mark_as_read": "Hemî agahdarîya wek xwendî nîşan bike", - "notifications.permission_denied": "Agahdarîyên sermaseyê naxebite ji ber ku berê de daxwazî ya destûr dayîna gerokê hati bû red kirin", - "notifications.permission_denied_alert": "Agahdarîyên sermaseyê nay çalak kirin, ji ber ku destûr kirina gerokê pêşî de hati bû red kirin", - "notifications.permission_required": "Agahdarîyên sermaseyê naxebite çunkî mafê pêwîst dike nehatiye dayîn.", - "notifications_permission_banner.enable": "Agahdarîyên sermaseyê çalak bike", - "notifications_permission_banner.how_to_control": "Da ku agahdariyên mastodon bistînî gava ne vekirî be. Agahdariyên sermaseyê çalak bike\n Tu dikarî agahdariyên sermaseyê bi rê ve bibî ku bi hemû cureyên çalakiyên ên ku agahdariyan rû didin ku bi riya tikandînê li ser bişkoka {icon} çalak dibe.", - "notifications_permission_banner.title": "Tu tiştî bîr neke", - "picture_in_picture.restore": "Vegerîne paş", - "poll.closed": "Girtî", - "poll.refresh": "Nû bike", - "poll.total_people": "{count, plural, one {# kes} other {# kes}}", - "poll.total_votes": "{count, plural, one {# deng} other {# deng}}", - "poll.vote": "Deng bide", - "poll.voted": "Te dengê xwe da vê bersivê", - "poll.votes": "{votes, plural, one {# deng} other {# deng}}", - "poll_button.add_poll": "Rapirsîyek zêde bike", - "poll_button.remove_poll": "Rapirsî yê rake", - "privacy.change": "Nepênîtiya şandiyan biguherîne", - "privacy.direct.long": "Tenê ji bo bikarhênerên qalkirî tê dîtin", - "privacy.direct.short": "Taybet", - "privacy.private.long": "Tenê bo şopîneran xuyabar e", - "privacy.private.short": "Tenê şopîneran", - "privacy.public.long": "Ji bo herkesî li berçav e, di demnameyên gelemperî de dê xûyakirin", - "privacy.public.short": "Gelemperî", - "privacy.unlisted.long": "Ji herkesî ra tê xûya, lê demnameyê gelemperî ra nay xûyakirin", - "privacy.unlisted.short": "Nerêzok", - "refresh": "Nû bike", - "regeneration_indicator.label": "Tê barkirin…", - "regeneration_indicator.sublabel": "Mala te da tê amedekirin!", - "relative_time.days": "{number}r", - "relative_time.full.days": "{number, plural, one {# roj} other {# roj}} berê", - "relative_time.full.hours": "{number, plural, one {# demjimêr} other {# demjimêr}} berê", - "relative_time.full.just_now": "hema niha", - "relative_time.full.minutes": "{number, plural, one {# xulek} other {# xulek}} berê", - "relative_time.full.seconds": "{number, plural, one {# çirke} other {# çirke}} xulek", - "relative_time.hours": "{number}d", - "relative_time.just_now": "niha", - "relative_time.minutes": "{number}x", - "relative_time.seconds": "{number}ç", - "relative_time.today": "îro", - "reply_indicator.cancel": "Dev jê berde", - "report.categories.other": "Yên din", - "report.categories.spam": "Nexwestî (Spam)", - "report.categories.violation": "Naverok yek an çend rêbazên rajekar binpê dike", - "report.forward": "Biçe bo {target}", - "report.forward_hint": "Ajimêr ji rajekarek din da ne. Tu kopîyeka anonîm ya raporê bişînî li wur?", - "report.hint": "Ev rapor yê rajekarê lihevkarên te ra were şandin. Tu dikarî şiroveyekê pêşkêş bikî bê ka tu çima vê ajimêrê jor radigîhînî:", - "report.placeholder": "Şiroveyên zêde", - "report.submit": "Bişîne", - "report.target": "Ragihandin {target}", - "search.placeholder": "Bigere", - "search_popout.search_format": "Dirûva lêgerîna pêşketî", - "search_popout.tips.full_text": "Nivîsên hêsan, şandiyên ku te nivîsandiye, bijare kiriye, bilind kiriye an jî yên behsa te kirine û her wiha navê bikarhêneran, navên xûya dike û hashtagan vedigerîne.", - "search_popout.tips.hashtag": "hashtag", - "search_popout.tips.status": "şandî", - "search_popout.tips.text": "Nivîsên hêsan, navên xûya ên ku li hev hatî, bikarhêner û hashtagan vedigerîne", - "search_popout.tips.user": "bikarhêner", - "search_results.accounts": "Mirov", - "search_results.hashtags": "Hashtag", - "search_results.statuses": "Şandî", - "search_results.statuses_fts_disabled": "Di vê rajekara Mastodonê da lêgerîna şandîyên li gorî naveroka wan ne çalak e.", - "search_results.total": "{count, number} {count, plural, one {encam} other {encam}}", - "status.admin_account": "Ji bo @{name} navrûya venihêrtinê veke", - "status.admin_status": "Vê şandîyê di navrûya venihêrtinê de veke", - "status.block": "@{name} asteng bike", - "status.bookmark": "Şûnpel", - "status.cancel_reblog_private": "Bilind neke", - "status.cannot_reblog": "Ev şandî nayê bilindkirin", - "status.copy": "Girêdanê jê bigire bo weşankirinê", - "status.delete": "Jê bibe", - "status.detailed_status": "Dîtina axaftina berfireh", - "status.direct": "Peyama rasterast @{name}", - "status.edit": "Serrast bike", - "status.edited": "Di {date} de hate serrastkirin", - "status.edited_x_times": "{count, plural, one {{count} car} other {{count} car}} hate serrastkirin", - "status.embed": "Hedimandî", - "status.favourite": "Bijarte", - "status.filtered": "Parzûnkirî", - "status.history.created": "{name} {date} afirand", - "status.history.edited": "{name} {date} serrast kir", - "status.load_more": "Bêtir bar bike", - "status.media_hidden": "Medya veşartî ye", - "status.mention": "Qal @{name} bike", - "status.more": "Bêtir", - "status.mute": "@{name} Bêdeng bike", - "status.mute_conversation": "Axaftinê bêdeng bike", - "status.open": "Vê şandiyê berferh bike", - "status.pin": "Li ser profîlê derzî bike", - "status.pinned": "Şandiya derzîkirî", - "status.read_more": "Bêtir bixwîne", - "status.reblog": "Bilind bike", - "status.reblog_private": "Bi dîtina resen bilind bike", - "status.reblogged_by": "{name} bilind kir", - "status.reblogs.empty": "Kesekî hin ev şandî bilind nekiriye. Gava kesek bilind bike, ew ên li vir werin xuyakirin.", - "status.redraft": "Jê bibe & ji nû ve reşnivîs bike", - "status.remove_bookmark": "Şûnpêlê jê rake", - "status.reply": "Bersivê bide", - "status.replyAll": "Mijarê bibersivîne", - "status.report": "{name} gilî bike", - "status.sensitive_warning": "Naveroka hestiyarî", - "status.share": "Parve bike", - "status.show_less": "Kêmtir nîşan bide", - "status.show_less_all": "Ji bo hemîyan kêmtir nîşan bide", - "status.show_more": "Hêj zehftir nîşan bide", - "status.show_more_all": "Bêtir nîşan bide bo hemûyan", - "status.show_thread": "Mijarê nîşan bide", - "status.uncached_media_warning": "Tune ye", - "status.unmute_conversation": "Axaftinê bêdeng neke", - "status.unpin": "Şandiya derzîkirî ji profîlê rake", - "suggestions.dismiss": "Pêşniyarê paşguh bike", - "suggestions.header": "Dibe ku bala te bikşîne…", - "tabs_bar.federated_timeline": "Giştî", - "tabs_bar.home": "Serrûpel", - "tabs_bar.local_timeline": "Herêmî", - "tabs_bar.notifications": "Agahdarî", - "tabs_bar.search": "Bigere", - "time_remaining.days": "{number, plural, one {# roj} other {# roj}} maye", - "time_remaining.hours": "{number, plural, one {# demjimêr} other {# demjimêr}} maye", - "time_remaining.minutes": "{number, plural, one {# xulek} other {# xulek}} maye", - "time_remaining.moments": "Demên mayî", - "time_remaining.seconds": "{number, plural, one {# çirke} other {# çirke}} maye", - "timeline_hint.remote_resource_not_displayed": "{resource} Ji rajekerên din nayê dîtin.", - "timeline_hint.resources.followers": "Şopîner", - "timeline_hint.resources.follows": "Şopîner", - "timeline_hint.resources.statuses": "Şandiyên kevn", - "trends.counter_by_accounts": "{count, plural, one {{counter} kes} other {{counter} kes}} diaxivin", - "trends.trending_now": "Rojev", - "ui.beforeunload": "Ger ji Mastodonê veketi wê reşnivîsa te jî winda bibe.", - "units.short.billion": "{count}B", - "units.short.million": "{count}M", - "units.short.thousand": "{count}H", - "upload_area.title": "Ji bo barkirinê kaş bike û deyne", - "upload_button.label": "Wêne, vîdeoyek an jî pelê dengî tevlî bike", - "upload_error.limit": "Sînora barkirina pelan derbas bû.", - "upload_error.poll": "Di rapirsîyan de mafê barkirina pelan nayê dayîn.", - "upload_form.audio_description": "Ji bona kesên kêm dibihîsin re pênase bike", - "upload_form.description": "Ji bona astengdarên dîtinê re vebêje", - "upload_form.edit": "Serrast bike", - "upload_form.thumbnail": "Wêneyê biçûk biguherîne", - "upload_form.undo": "Jê bibe", - "upload_form.video_description": "Ji bo kesên kerr û lalan pênase bike", - "upload_modal.analyzing_picture": "Wêne tê analîzkirin…", - "upload_modal.apply": "Bisepîne", - "upload_modal.applying": "Tê sepandin…", - "upload_modal.choose_image": "Wêneyê hilbijêre", - "upload_modal.description_placeholder": "Rovîyek qehweyî û bilez li ser kûçikê tîral banz dide", - "upload_modal.detect_text": "Ji nivîsa wêneyê re serwext be", - "upload_modal.edit_media": "Medyayê sererast bike", - "upload_modal.hint": "Ji bo hilbijartina xala navendê her tim dîmenê piçûk de pêşdîtina çerxê bitikîne an jî kaş bike.", - "upload_modal.preparing_ocr": "OCR dihê amadekirin…", - "upload_modal.preview_label": "Pêşdîtin ({ratio})", - "upload_progress.label": "Tê barkirin...", - "video.close": "Vîdyoyê bigire", - "video.download": "Pelê daxe", - "video.exit_fullscreen": "Ji dîmendera tijî derkeve", - "video.expand": "Vîdyoyê berferh bike", - "video.fullscreen": "Dimendera tijî", - "video.hide": "Vîdyo veşêre", - "video.mute": "Dengê qut bike", - "video.pause": "Rawestîne", - "video.play": "Vêxe", - "video.unmute": "Dengê qut neke" -} diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index e877f8eab..222a62164 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -18,12 +18,12 @@ "account.followers": "ಹಿಂಬಾಲಕರು", "account.followers.empty": "No one follows this user yet.", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", - "account.last_status": "Last active", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", @@ -32,7 +32,6 @@ "account.mute": "Mute @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", - "account.never_active": "Never", "account.posts": "ಟೂಟ್‌ಗಳು", "account.posts_with_replies": "Toots and replies", "account.report": "Report @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "Unblock @{name}", "account.unblock_domain": "Unhide {domain}", + "account.unblock_short": "Unblock", "account.unendorse": "Don't feature on profile", "account.unfollow": "Unfollow", "account.unmute": "Unmute @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", + "account.unmute_short": "Unmute", "account_note.placeholder": "Click to add a note", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.conversations": "Conversations", "column.directory": "Browse profiles", "column.domain_blocks": "Hidden domains", "column.favourites": "Favourites", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Remote only", - "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.", "compose_form.direct_message_warning_learn_more": "Learn more", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "locked", @@ -165,8 +166,9 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "There are no hidden domains yet.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", "errors.unexpected_crash.report_issue": "Report issue", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Favourites", "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", "notification.follow_request": "{name} has requested to follow you", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.filter_bar.advanced": "Display all categories", @@ -359,9 +369,9 @@ "privacy.direct.short": "Direct", "privacy.private.long": "Post to followers only", "privacy.private.short": "Followers-only", - "privacy.public.long": "Post to public timelines", + "privacy.public.long": "Visible for all", "privacy.public.short": "Public", - "privacy.unlisted.long": "Do not show in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "Cancel", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", - "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", - "report.placeholder": "Additional comments", - "report.submit": "Submit", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", + "report.placeholder": "Type or paste additional comments", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", + "report.submit": "Submit report", "report.target": "Report {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Search", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", "search_popout.tips.user": "user", "search_results.accounts": "People", + "search_results.all": "All", "search_results.hashtags": "Hashtags", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", @@ -474,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Delete", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index b3aa2e6ab..4af91f569 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -3,7 +3,7 @@ "account.add_or_remove_from_list": "리스트에 추가 혹은 삭제", "account.badges.bot": "봇", "account.badges.group": "그룹", - "account.block": "@{name}을 차단", + "account.block": "@{name} 차단", "account.block_domain": "도메인 {domain}을 차단", "account.blocked": "차단됨", "account.browse_more_on_origin_server": "원본 프로필에서 더 탐색하기", @@ -18,12 +18,12 @@ "account.followers": "팔로워", "account.followers.empty": "아직 아무도 이 유저를 팔로우하고 있지 않습니다.", "account.followers_counter": "{counter} 팔로워", + "account.following": "팔로잉", "account.following_counter": "{counter} 팔로잉", "account.follows.empty": "이 유저는 아직 아무도 팔로우하고 있지 않습니다.", "account.follows_you": "날 팔로우합니다", "account.hide_reblogs": "@{name}의 부스트를 숨기기", "account.joined": "{date}에 가입함", - "account.last_status": "마지막 활동", "account.link_verified_on": "{date}에 이 링크의 소유권이 확인 됨", "account.locked_info": "이 계정의 프라이버시 설정은 잠금으로 설정되어 있습니다. 계정 소유자가 수동으로 팔로워를 승인합니다.", "account.media": "미디어", @@ -32,7 +32,6 @@ "account.mute": "@{name} 뮤트", "account.mute_notifications": "@{name}의 알림을 뮤트", "account.muted": "뮤트 됨", - "account.never_active": "없음", "account.posts": "게시물", "account.posts_with_replies": "게시물과 답장", "account.report": "@{name} 신고", @@ -42,10 +41,12 @@ "account.statuses_counter": "{counter} 게시물", "account.unblock": "차단 해제", "account.unblock_domain": "도메인 {domain} 차단 해제", + "account.unblock_short": "차단 해제", "account.unendorse": "프로필에 추천하지 않기", "account.unfollow": "팔로우 해제", "account.unmute": "@{name} 뮤트 해제", "account.unmute_notifications": "@{name}의 알림 뮤트 해제", + "account.unmute_short": "뮤트 해제", "account_note.placeholder": "클릭해서 노트 추가", "admin.dashboard.daily_retention": "가입 후 일별 사용자 유지율", "admin.dashboard.monthly_retention": "가입 후 월별 사용자 유지율", @@ -69,10 +70,10 @@ "column.blocks": "차단한 사용자", "column.bookmarks": "보관함", "column.community": "로컬 타임라인", - "column.direct": "다이렉트 메시지", + "column.conversations": "대화", "column.directory": "프로필 둘러보기", "column.domain_blocks": "차단한 도메인", - "column.favourites": "즐겨찾기", + "column.favourites": "좋아요", "column.follow_requests": "팔로우 요청", "column.home": "홈", "column.lists": "리스트", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "로컬만", "community.column_settings.media_only": "미디어만", "community.column_settings.remote_only": "원격만", - "compose_form.direct_message_warning": "이 게시물은 멘션 된 유저들에게만 보여집니다.", "compose_form.direct_message_warning_learn_more": "더 알아보기", + "compose_form.encryption_warning": "마스토돈의 게시물들은 종단간 암호화가 되지 않습니아. 위험한 정보를 마스토돈을 통해 전달하지 마세요.", "compose_form.hashtag_warning": "이 게시물은 어떤 해시태그로도 검색 되지 않습니다. 전체공개로 게시 된 게시물만이 해시태그로 검색 될 수 있습니다.", "compose_form.lock_disclaimer": "이 계정은 {locked}로 설정 되어 있지 않습니다. 누구나 이 계정을 팔로우 할 수 있으며, 팔로워 공개의 포스팅을 볼 수 있습니다.", "compose_form.lock_disclaimer.lock": "비공개", @@ -120,26 +121,26 @@ "confirmations.delete.message": "정말로 이 게시물을 삭제하시겠습니까?", "confirmations.delete_list.confirm": "삭제", "confirmations.delete_list.message": "정말로 이 리스트를 영구적으로 삭제하시겠습니까?", - "confirmations.discard_edit_media.confirm": "취소", + "confirmations.discard_edit_media.confirm": "저장 안함", "confirmations.discard_edit_media.message": "미디어 설명이나 미리보기에 대한 저장하지 않은 변경사항이 있습니다. 버리시겠습니까?", "confirmations.domain_block.confirm": "도메인 전체를 차단", "confirmations.domain_block.message": "정말로 {domain} 전체를 차단하시겠습니까? 대부분의 경우 개별 차단이나 뮤트로 충분합니다. 모든 공개 타임라인과 알림에서 해당 도메인에서 작성된 컨텐츠를 보지 못합니다. 해당 도메인에 속한 팔로워와의 관계가 사라집니다.", "confirmations.logout.confirm": "로그아웃", "confirmations.logout.message": "정말로 로그아웃 하시겠습니까?", "confirmations.mute.confirm": "뮤트", - "confirmations.mute.explanation": "이 동작은 그의 게시물, 그를 멘션하는 게시물을 숨깁니다, 하지만 여전히 그가 당신의 게시물을 보고 팔로우 할 수 있습니다.", + "confirmations.mute.explanation": "이 동작은 해당 계정의 게시물과 해당 계정을 멘션하는 게시물을 숨깁니다, 하지만 여전히 해당 계정이 당신의 게시물을 보고 팔로우 할 수 있습니다.", "confirmations.mute.message": "정말로 {name}를 뮤트하시겠습니까?", "confirmations.redraft.confirm": "삭제하고 다시 쓰기", - "confirmations.redraft.message": "정말로 이 게시물을 삭제하고 다시 쓰시겠습니까? 해당 포스트에 대한 부스트와 즐겨찾기를 잃게 되고 원본에 대한 답장은 연결 되지 않습니다.", + "confirmations.redraft.message": "정말로 이 게시물을 삭제하고 다시 쓰시겠습니까? 해당 게시물에 대한 부스트와 좋아요를 잃게 되고 원본에 대한 답장은 연결 되지 않습니다.", "confirmations.reply.confirm": "답글", "confirmations.reply.message": "답글을 달기 위해 현재 작성 중인 메시지가 덮어 씌워집니다. 진행하시겠습니까?", - "confirmations.unfollow.confirm": "언팔로우", - "confirmations.unfollow.message": "정말로 {name}를 언팔로우하시겠습니까?", + "confirmations.unfollow.confirm": "팔로우 해제", + "confirmations.unfollow.message": "정말로 {name} 님을 팔로우 해제하시겠습니까?", "conversation.delete": "대화 삭제", "conversation.mark_as_read": "읽은 상태로 표시", "conversation.open": "대화 보기", "conversation.with": "{names} 님과", - "directory.federated": "알려진 별무리로부터", + "directory.federated": "알려진 연합우주로부터", "directory.local": "{domain}에서만", "directory.new_arrivals": "새로운 사람들", "directory.recently_active": "최근 활동", @@ -165,10 +166,11 @@ "empty_column.blocks": "아직 아무도 차단하지 않았습니다.", "empty_column.bookmarked_statuses": "아직 보관한 게시물이 없습니다. 게시물을 보관하면 여기에 나타납니다.", "empty_column.community": "로컬 타임라인에 아무 것도 없습니다. 아무거나 적어 보세요!", - "empty_column.direct": "아직 다이렉트 메시지가 없습니다. 다이렉트 메시지를 보내거나 받은 경우, 여기에 표시 됩니다.", + "empty_column.conversations": "멘션한 사람만 볼 수 있는 게시물을 보내거나 받은 경우에, 여기에 나타납니다.", "empty_column.domain_blocks": "아직 차단한 도메인이 없습니다.", - "empty_column.favourited_statuses": "아직 즐겨찾기 한 게시물이 없습니다. 게시물을 즐겨찾기 하면 여기에 나타납니다.", - "empty_column.favourites": "아직 아무도 이 게시물을 즐겨찾기 하지 않았습니다. 누군가 즐겨찾기를 하면 여기에 나타납니다.", + "empty_column.explore_statuses": "아직 유행하는 것이 없습니다. 나중에 다시 확인하세요!", + "empty_column.favourited_statuses": "아직 마음에 들어한 게시물이 없습니다. 게시물을 좋아요 하면 여기에 나타납니다.", + "empty_column.favourites": "아직 아무도 이 게시물을 마음에 들어하지 않았습니다. 누군가 좋아요를 하면 여기에 나타납니다.", "empty_column.follow_recommendations": "당신을 위한 제안이 생성될 수 없는 것 같습니다. 알 수도 있는 사람을 검색하거나 유행하는 해시태그를 둘러볼 수 있습니다.", "empty_column.follow_requests": "아직 팔로우 요청이 없습니다. 요청을 받았을 때 여기에 나타납니다.", "empty_column.hashtag": "이 해시태그는 아직 사용되지 않았습니다.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "그것들을 끄고 페이지를 새로고침 해보세요. 그래도 해결되지 않는 경우, 다른 브라우저나 네이티브 앱으로도 마스토돈을 이용하실 수 있습니다.", "errors.unexpected_crash.copy_stacktrace": "에러 내용을 클립보드에 복사", "errors.unexpected_crash.report_issue": "문제 신고", + "explore.search_results": "검색 결과", + "explore.suggested_follows": "당신을 위한 추천", + "explore.title": "둘러보기", + "explore.trending_links": "소식", + "explore.trending_statuses": "게시물", + "explore.trending_tags": "해시태그", "follow_recommendations.done": "완료", "follow_recommendations.heading": "게시물을 받아 볼 사람들을 팔로우 하세요! 여기 몇몇의 추천이 있습니다.", "follow_recommendations.lead": "당신이 팔로우 하는 사람들의 게시물이 시간순으로 정렬되어 당신의 홈 피드에 표시될 것입니다. 실수를 두려워 하지 마세요, 언제든지 쉽게 팔로우 취소를 할 수 있습니다!", @@ -222,12 +230,12 @@ "keyboard_shortcuts.boost": "게시물 부스트", "keyboard_shortcuts.column": "해당 컬럼에 포커스", "keyboard_shortcuts.compose": "작성창에 포커스", + "keyboard_shortcuts.conversations": "대화 컬럼 열기", "keyboard_shortcuts.description": "설명", - "keyboard_shortcuts.direct": "다이렉트 메시지 컬럼 열기", "keyboard_shortcuts.down": "리스트에서 아래로 이동", "keyboard_shortcuts.enter": "게시물 열기", "keyboard_shortcuts.favourite": "관심글 지정", - "keyboard_shortcuts.favourites": "즐겨찾기 목록 열기", + "keyboard_shortcuts.favourites": "좋아요 목록 열기", "keyboard_shortcuts.federated": "연합 타임라인 열기", "keyboard_shortcuts.heading": "키보드 단축키", "keyboard_shortcuts.home": "홈 타임라인 열기", @@ -282,11 +290,11 @@ "navigation_bar.bookmarks": "보관함", "navigation_bar.community_timeline": "로컬 타임라인", "navigation_bar.compose": "새 게시물 작성", - "navigation_bar.direct": "다이렉트 메시지", "navigation_bar.discover": "발견하기", "navigation_bar.domain_blocks": "차단한 도메인", "navigation_bar.edit_profile": "프로필 편집", - "navigation_bar.favourites": "즐겨찾기", + "navigation_bar.explore": "탐색하기", + "navigation_bar.favourites": "좋아요", "navigation_bar.filters": "뮤트한 단어", "navigation_bar.follow_requests": "팔로우 요청", "navigation_bar.follows_and_followers": "팔로우와 팔로워", @@ -300,7 +308,8 @@ "navigation_bar.preferences": "사용자 설정", "navigation_bar.public_timeline": "연합 타임라인", "navigation_bar.security": "보안", - "notification.favourite": "{name} 님이 즐겨찾기 했습니다", + "notification.admin.sign_up": "{name} 님이 가입했습니다", + "notification.favourite": "{name} 님이 당신의 게시물을 마음에 들어합니다", "notification.follow": "{name} 님이 나를 팔로우 했습니다", "notification.follow_request": "{name} 님이 팔로우 요청을 보냈습니다", "notification.mention": "{name} 님이 답글을 보냈습니다", @@ -311,8 +320,9 @@ "notification.update": "{name} 님이 게시물을 수정했습니다", "notifications.clear": "알림 지우기", "notifications.clear_confirmation": "정말로 알림을 삭제하시겠습니까?", + "notifications.column_settings.admin.sign_up": "새로운 가입:", "notifications.column_settings.alert": "데스크탑 알림", - "notifications.column_settings.favourite": "즐겨찾기:", + "notifications.column_settings.favourite": "좋아요:", "notifications.column_settings.filter_bar.advanced": "카테고리의 모든 종류를 표시", "notifications.column_settings.filter_bar.category": "퀵 필터 바", "notifications.column_settings.filter_bar.show_bar": "필터 막대 표시", @@ -330,7 +340,7 @@ "notifications.column_settings.update": "수정내역:", "notifications.filter.all": "모두", "notifications.filter.boosts": "부스트", - "notifications.filter.favourites": "즐겨찾기", + "notifications.filter.favourites": "좋아요", "notifications.filter.follows": "팔로우", "notifications.filter.mentions": "멘션", "notifications.filter.polls": "투표 결과", @@ -354,14 +364,14 @@ "poll.votes": "{votes} 표", "poll_button.add_poll": "투표 추가", "poll_button.remove_poll": "투표 삭제", - "privacy.change": "포스트의 프라이버시 설정을 변경", + "privacy.change": "게시물의 프라이버시 설정을 변경", "privacy.direct.long": "멘션한 사용자에게만 공개", - "privacy.direct.short": "다이렉트", + "privacy.direct.short": "내가 멘션한 사람만", "privacy.private.long": "팔로워에게만 공개", - "privacy.private.short": "비공개", - "privacy.public.long": "공개 타임라인에 표시", + "privacy.private.short": "팔로워 전용", + "privacy.public.long": "모두가 볼 수 있음", "privacy.public.short": "공개", - "privacy.unlisted.long": "공개 타임라인에 표시하지 않음", + "privacy.unlisted.long": "모두가 볼 수 있지만, 발견하기 기능에서는 제외됨", "privacy.unlisted.short": "타임라인에 비표시", "refresh": "새로고침", "regeneration_indicator.label": "불러오는 중…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}초 전", "relative_time.today": "오늘", "reply_indicator.cancel": "취소", + "report.block": "차단", + "report.block_explanation": "당신은 해당 계정의 게시물을 보지 않게 됩니다. 해당 계정은 당신의 게시물을 보거나 팔로우 할 수 없습니다. 해당 계정은 자신이 차단되었다는 사실을 알 수 있습니다.", "report.categories.other": "기타", "report.categories.spam": "스팸", "report.categories.violation": "컨텐츠가 한 개 이상의 서버 규칙을 위반합니다", + "report.category.subtitle": "가장 알맞은 것을 선택하세요", + "report.category.title": "이 {type}에 무슨 문제가 있는지 알려주세요", + "report.category.title_account": "프로필", + "report.category.title_status": "게시물", + "report.close": "완료", + "report.comment.title": "우리가 더 알아야 할 내용이 있나요?", "report.forward": "{target}에 포워드 됨", "report.forward_hint": "이 계정은 다른 서버에 있습니다. 익명화 된 사본을 해당 서버에도 전송할까요?", - "report.hint": "신고는 당신의 서버 스태프에게 전송 됩니다. 왜 이 계정을 신고하는 지에 대한 설명을 아래에 작성할 수 있습니다:", + "report.mute": "침묵", + "report.mute_explanation": "당신은 해당 계정의 게시물을 보지 않게 됩니다. 해당 계정은 여전히 당신을 팔로우 하거나 당신의 게시물을 볼 수 있으며 해당 계정은 자신이 뮤트 되었는지 알지 못합니다.", + "report.next": "다음", "report.placeholder": "코멘트", + "report.reasons.dislike": "마음에 안듭니다", + "report.reasons.dislike_description": "내가 보기 싫은 종류에 속합니다", + "report.reasons.other": "기타", + "report.reasons.other_description": "이슈가 다른 분류에 속하지 않습니다", + "report.reasons.spam": "스팸입니다", + "report.reasons.spam_description": "악성 링크, 반응 스팸, 또는 반복적인 답글", + "report.reasons.violation": "서버 규칙을 위반합니다", + "report.reasons.violation_description": "특정 규칙을 위반합니다", + "report.rules.subtitle": "해당하는 사항을 모두 선택하세요", + "report.rules.title": "어떤 규칙을 위반했나요?", + "report.statuses.subtitle": "해당하는 사항을 모두 선택하세요", + "report.statuses.title": "이 신고에 대해서 더 참고해야 할 게시물이 있나요?", "report.submit": "신고하기", - "report.target": "문제가 된 사용자", + "report.target": "{target} 신고하기", + "report.thanks.take_action": "마스토돈에서 나에게 보이는 것을 조절하기 위한 몇 가지 선택사항들이 존재합니다:", + "report.thanks.take_action_actionable": "서버의 중재자들이 이것을 심사하는 동안, 당신은 @{name}에 대한 행동을 취할 수 있습니다:", + "report.thanks.title": "이런 것을 보지 않길 원하나요?", + "report.thanks.title_actionable": "신고해주셔서 감사합니다, 중재자분들이 확인할 예정입니다.", + "report.unfollow": "@{name}을 팔로우 해제", + "report.unfollow_explanation": "당신을 이 계정을 팔로우 하고 있습니다. 홈 피드에서 게시물을 보지 않으려면, 팔로우를 해제하세요.", "search.placeholder": "검색", "search_popout.search_format": "고급 검색 방법", "search_popout.tips.full_text": "단순한 텍스트 검색은 당신이 작성했거나, 관심글로 지정했거나, 부스트했거나, 멘션을 받은 게시글, 그리고 유저네임, 디스플레이네임, 해시태그를 반환합니다.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "단순한 텍스트 검색은 관계된 프로필 이름, 유저 이름 그리고 해시태그를 표시합니다", "search_popout.tips.user": "유저", "search_results.accounts": "사람", + "search_results.all": "전부", "search_results.hashtags": "해시태그", + "search_results.nothing_found": "검색어에 대한 결과를 찾을 수 없습니다", "search_results.statuses": "게시물", "search_results.statuses_fts_disabled": "이 마스토돈 서버에선 게시물의 내용을 통한 검색이 활성화 되어 있지 않습니다.", "search_results.total": "{count, number}건의 결과", @@ -404,7 +444,7 @@ "status.block": "@{name} 차단", "status.bookmark": "보관", "status.cancel_reblog_private": "부스트 취소", - "status.cannot_reblog": "이 포스트는 부스트 할 수 없습니다", + "status.cannot_reblog": "이 게시물은 부스트 할 수 없습니다", "status.copy": "게시물 링크 복사", "status.delete": "삭제", "status.detailed_status": "대화 자세히 보기", @@ -413,7 +453,7 @@ "status.edited": "{date}에 편집됨", "status.edited_x_times": "{count}번 수정됨", "status.embed": "공유하기", - "status.favourite": "즐겨찾기", + "status.favourite": "좋아요", "status.filtered": "필터로 걸러짐", "status.history.created": "{name} 님이 {date}에 생성함", "status.history.edited": "{name} 님이 {date}에 수정함", @@ -474,6 +514,7 @@ "upload_error.poll": "파일 업로드는 투표와 함께 첨부할 수 없습니다.", "upload_form.audio_description": "청각 장애인을 위한 설명", "upload_form.description": "시각장애인을 위한 설명", + "upload_form.description_missing": "설명이 추가되지 않음", "upload_form.edit": "편집", "upload_form.thumbnail": "썸네일 변경", "upload_form.undo": "삭제", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 331ab57f0..02df9eff6 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -1,502 +1,543 @@ { - "account.account_note_header": "تێبینی ", - "account.add_or_remove_from_list": "زیادکردن یان سڕینەوە لە پێرستەکان", - "account.badges.bot": "بوت", - "account.badges.group": "گرووپ", - "account.block": "بلۆکی @{name}", - "account.block_domain": "بلۆکی هەموو شتێک لە {domain}", - "account.blocked": "بلۆککرا", - "account.browse_more_on_origin_server": "گەڕانی فرەتر لە سەر پرۆفایلی سەرەکی", - "account.cancel_follow_request": "بەتاڵکردنی داوای شوێنکەوتن", - "account.direct": "پەیامی تایبەت بە @{name}", - "account.disable_notifications": "ئاگانامە مەنێرە بۆم کاتێک @{name} پۆست دەکرێت", - "account.domain_blocked": "دۆمەین قەپاتکرا", - "account.edit_profile": "دەستکاری پرۆفایل", - "account.enable_notifications": "ئاگادارم بکەوە کاتێک @{name} بابەتەکان", - "account.endorse": "ناساندن لە پرۆفایل", - "account.follow": "شوێنکەوتن", - "account.followers": "شوێنکەوتووان", - "account.followers.empty": "کەسێک شوێن ئەم بەکارهێنەرە نەکەوتووە", - "account.followers_counter": "{count, plural, one {{counter} شوێنکەوتوو} other {{counter} شوێنکەوتوو}}", - "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", - "account.follows.empty": "ئەم بەکارهێنەرە تا ئێستا شوێن کەس نەکەوتووە.", - "account.follows_you": "شوێنکەوتووەکانت", - "account.hide_reblogs": "داشاردنی بووستەکان لە @{name}", - "account.joined": "Joined {date}", - "account.last_status": "دوایین چالاکی", - "account.link_verified_on": "خاوەنداریەتی ئەم لینکە لە {date} چێک کراوە", - "account.locked_info": "تایبەتمەندی ئەم هەژمارەیە ڕیکخراوە بۆ قوفڵدراوە. خاوەنەکە بە دەستی پێداچوونەوە دەکات کە کێ دەتوانێت شوێنیان بکەوێت.", - "account.media": "میدیا", - "account.mention": "ئاماژە @{name}", - "account.moved_to": "{name} گواسترایەوە بۆ:", - "account.mute": "بێدەنگکردن @{name}", - "account.mute_notifications": "هۆشیارکەرەوەکان لاببە لە @{name}", - "account.muted": "بێ دەنگ", - "account.never_active": "هەرگیز", - "account.posts": "توتس", - "account.posts_with_replies": "توتس و وەڵامەکان", - "account.report": "گوزارشت @{name}", - "account.requested": "چاوەڕێی ڕەزامەندین. کرتە بکە بۆ هەڵوەشاندنەوەی داواکاری شوێنکەوتن", - "account.share": "پرۆفایلی @{name} هاوبەش بکە", - "account.show_reblogs": "پیشاندانی بەرزکردنەوەکان لە @{name}", - "account.statuses_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", - "account.unblock": "@{name} لاببە", - "account.unblock_domain": "کردنەوەی دۆمەینی {domain}", - "account.unendorse": "تایبەتمەندی لەسەر پرۆفایلەکە نیە", - "account.unfollow": "بەدوادانەچو", - "account.unmute": "بێدەنگکردنی @{name}", - "account.unmute_notifications": "بێدەنگکردنی هۆشیارییەکان لە @{name}", - "account_note.placeholder": "کرتەبکە بۆ زیادکردنی تێبینی", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", - "alert.rate_limited.message": "تکایە هەوڵبدەرەوە دوای {retry_time, time, medium}.", - "alert.rate_limited.title": "ڕێژەی سنووردار", - "alert.unexpected.message": "هەڵەیەکی چاوەڕوان نەکراو ڕوویدا.", - "alert.unexpected.title": "تەححح!", - "announcement.announcement": "بانگەواز", - "attachments_list.unprocessed": "(unprocessed)", - "autosuggest_hashtag.per_week": "{count} هەرهەفتە", - "boost_modal.combo": "دەتوانیت دەست بنێی بە سەر {combo} بۆ بازدان لە جاری داهاتوو", - "bundle_column_error.body": "هەڵەیەک ڕوویدا لەکاتی بارکردنی ئەم پێکهاتەیە.", - "bundle_column_error.retry": "دووبارە هەوڵبدە", - "bundle_column_error.title": "هەڵيی تۆڕ", - "bundle_modal_error.close": "داخستن", - "bundle_modal_error.message": "هەڵەیەک ڕوویدا لەکاتی بارکردنی ئەم پێکهاتەیە.", - "bundle_modal_error.retry": "دووبارە تاقی بکەوە", - "column.blocks": "بەکارهێنەرە بلۆککراوەکان", - "column.bookmarks": "نیشانەکان", - "column.community": "هێڵی کاتی ناوخۆیی", - "column.direct": "نامە ڕاستەوخۆکان", - "column.directory": "گەڕان لە پرۆفایلەکان", - "column.domain_blocks": "دۆمەینە داخراوەکان", - "column.favourites": "دڵخوازترینەکان", - "column.follow_requests": "بەدواداچوی داواکاریەکان بکە", - "column.home": "سەرەتا", - "column.lists": "پێرست", - "column.mutes": "بێدەنگکردنی بەکارهێنەران", - "column.notifications": "ئاگادارییەکان", - "column.pins": "تووتسی چەسپاو", - "column.public": "نووسراوەکانی هەمووشوێنێک", - "column_back_button.label": "دواوە", - "column_header.hide_settings": "شاردنەوەی ڕێکخستنەکان", - "column_header.moveLeft_settings": "ستوون بگوێزەرەوە بۆ لای چەپ", - "column_header.moveRight_settings": "جوولاندنی ئەستوون بۆ لای ڕاست", - "column_header.pin": "سنجاق", - "column_header.show_settings": "نیشاندانی رێکخستنەکان", - "column_header.unpin": "سنجاق نەکردن", - "column_subheading.settings": "رێکخستنەکان", - "community.column_settings.local_only": "تەنها خۆماڵی", - "community.column_settings.media_only": "تەنها میدیا", - "community.column_settings.remote_only": "تەنها بۆ دوور", - "compose_form.direct_message_warning": "ئەم توتە تەنیا بۆ بەکارهێنەرانی ناوبراو دەنێردرێت.", - "compose_form.direct_message_warning_learn_more": "زیاتر فێربه", - "compose_form.hashtag_warning": "ئەم توتە لە ژێر هیچ هاشتاگییەک دا ناکرێت وەک ئەوەی لە لیستەکەدا نەریزراوە. تەنها توتی گشتی دەتوانرێت بە هاشتاگی بگەڕێت.", - "compose_form.lock_disclaimer": "هەژمێرەکەی لە حاڵەتی {locked}. هەر کەسێک دەتوانێت شوێنت بکەوێت بۆ پیشاندانی بابەتەکانی تەنها دوایخۆی.", - "compose_form.lock_disclaimer.lock": "قفڵ دراوە", - "compose_form.placeholder": "چی لە مێشکتدایە?", - "compose_form.poll.add_option": "زیادکردنی هەڵبژاردەیەک", - "compose_form.poll.duration": "ماوەی ڕاپرسی", - "compose_form.poll.option_placeholder": "هەڵبژاردن {number}", - "compose_form.poll.remove_option": "لابردنی ئەم هەڵبژاردەیە", - "compose_form.poll.switch_to_multiple": "ڕاپرسی بگۆڕە بۆ ڕێگەدان بە چەند هەڵبژاردنێک", - "compose_form.poll.switch_to_single": "گۆڕینی ڕاپرسی بۆ ڕێگەدان بە تاکە هەڵبژاردنێک", - "compose_form.publish": "توت", + "account.account_note_header": "Nîşe", + "account.add_or_remove_from_list": "Tevlî bike an rake ji rêzokê", + "account.badges.bot": "Bot", + "account.badges.group": "Kom", + "account.block": "@{name} asteng bike", + "account.block_domain": "{domain} navpar asteng bike", + "account.blocked": "Astengkirî", + "account.browse_more_on_origin_server": "Li pelên resen bêhtir bigere", + "account.cancel_follow_request": "Daxwaza şopandinê rake", + "account.direct": "Peyamekê bişîne @{name}", + "account.disable_notifications": "Êdî min agahdar neke gava @{name} diweşîne", + "account.domain_blocked": "Navper hate astengkirin", + "account.edit_profile": "Profîl serrast bike", + "account.enable_notifications": "Min agahdar bike gava @{name} diweşîne", + "account.endorse": "Taybetiyên li ser profîl", + "account.follow": "Bişopîne", + "account.followers": "Şopîner", + "account.followers.empty": "Kesekî hin ev bikarhêner neşopandiye.", + "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", + "account.following": "Dişopîne", + "account.following_counter": "{count, plural, one {{counter} Dişopîne} other {{counter} Dişopîne}}", + "account.follows.empty": "Ev bikarhêner hin kesekî heya niha neşopandiye.", + "account.follows_you": "Te dişopîne", + "account.hide_reblogs": "Bilindkirinên ji @{name} veşêre", + "account.joined": "Tevlîbû di {date} de", + "account.link_verified_on": "Xwedaniya li vê girêdanê di {date} de hatiye kontrolkirin", + "account.locked_info": "Rewşa vê ajimêrê wek kilît kirî hatiye saz kirin. Xwedî yê ajimêrê, kesên vê bişopîne bi dest vekolin dike.", + "account.media": "Medya", + "account.mention": "Qal @{name} bike", + "account.moved_to": "{name} hate livandin bo:", + "account.mute": "@{name} Bêdeng bike", + "account.mute_notifications": "Agahdariyan ji @{name} bêdeng bike", + "account.muted": "Bêdengkirî", + "account.posts": "Şandî", + "account.posts_with_replies": "Şandî û bersiv", + "account.report": "@{name} Ragihîne", + "account.requested": "Li benda erêkirinê ye. Ji bo betal kirina daxwazê pêl bikin", + "account.share": "Profîla @{name} parve bike", + "account.show_reblogs": "Bilindkirinên ji @{name} nîşan bike", + "account.statuses_counter": "{count, plural,one {{counter} şandî}other {{counter} şandî}}", + "account.unblock": "Astengê li ser @{name} rake", + "account.unblock_domain": "Astengê li ser navperê {domain} rake", + "account.unblock_short": "Astengiyê rake", + "account.unendorse": "Li ser profîl nîşan neke", + "account.unfollow": "Neşopîne", + "account.unmute": "@{name} Bêdeng bike", + "account.unmute_notifications": "Agahdariyan ji @{name} bêdeng bike", + "account.unmute_short": "Bêdeng neke", + "account_note.placeholder": "Bitikîne bo nîşeyekê tevlî bikî", + "admin.dashboard.daily_retention": "Rêjeya ragirtina bikarhêner bi roj piştî tomarkirinê", + "admin.dashboard.monthly_retention": "Rêjeya ragirtina bikarhêner bi meh piştî tomarkirinê", + "admin.dashboard.retention.average": "Navîn", + "admin.dashboard.retention.cohort": "Meha tomarkirinê", + "admin.dashboard.retention.cohort_size": "Bikarhênerên nû", + "alert.rate_limited.message": "Jkx dîsa biceribîne piştî {retry_time, time, medium}.\n \n", + "alert.rate_limited.title": "Rêje sînorkirî ye", + "alert.unexpected.message": "Çewtiyeke bêhêvî çê bû.", + "alert.unexpected.title": "Wey li min!", + "announcement.announcement": "Daxuyanî", + "attachments_list.unprocessed": "(bêpêvajo)", + "autosuggest_hashtag.per_week": "Her hefte {count}", + "boost_modal.combo": "Ji bo derbas bî carekî din de pêlê {combo} bike", + "bundle_column_error.body": "Di dema barkirina vê hêmanê de tiştek çewt çê bû.", + "bundle_column_error.retry": "Dîsa biceribîne", + "bundle_column_error.title": "Çewtiya torê", + "bundle_modal_error.close": "Bigire", + "bundle_modal_error.message": "Di dema barkirina vê hêmanê de tiştek çewt çê bû.", + "bundle_modal_error.retry": "Dîsa bicerbîne", + "column.blocks": "Bikarhênerên astengkirî", + "column.bookmarks": "Şûnpel", + "column.community": "Demnameya herêmî", + "column.conversations": "Axaftin", + "column.directory": "Li profîlan bigere", + "column.domain_blocks": "Navperên astengkirî", + "column.favourites": "Bijarte", + "column.follow_requests": "Daxwazên şopandinê", + "column.home": "Serrûpel", + "column.lists": "Rêzok", + "column.mutes": "Bikarhênerên bêdengkirî", + "column.notifications": "Agahdarî", + "column.pins": "Şandiya derzîkirî", + "column.public": "Demnameyê federalîkirî", + "column_back_button.label": "Veger", + "column_header.hide_settings": "Sazkariyan veşêre", + "column_header.moveLeft_settings": "Stûnê bilivîne bo çepê", + "column_header.moveRight_settings": "Stûnê bilivîne bo rastê", + "column_header.pin": "Bi derzî bike", + "column_header.show_settings": "Sazkariyan nîşan bide", + "column_header.unpin": "Bi derzî neke", + "column_subheading.settings": "Sazkarî", + "community.column_settings.local_only": "Tenê herêmî", + "community.column_settings.media_only": "Tenê media", + "community.column_settings.remote_only": "Tenê ji dûr ve", + "compose_form.direct_message_warning_learn_more": "Bêtir fêr bibe", + "compose_form.encryption_warning": "Şandiyên li ser Mastodon dawî-bi-dawî ne şîfrekirî ne. Li ser Mastodon zanyariyên talûke parve neke.", + "compose_form.hashtag_warning": "Ev şandî ji ber ku nehatiye tomarkirin dê di binê hashtagê de neyê tomar kirin. Tenê peyamên gelemperî dikarin bi hashtagê werin lêgerîn.", + "compose_form.lock_disclaimer": "Ajimêrê te {locked} nîne. Herkes dikare te bişopîne da ku şandiyên te yên tenê şopînerên te ra xûya dibin bibînin.", + "compose_form.lock_disclaimer.lock": "girtî ye", + "compose_form.placeholder": "Çi di hişê te derbas dibe?", + "compose_form.poll.add_option": "Hilbijarekî tevlî bike", + "compose_form.poll.duration": "Dema rapirsî yê", + "compose_form.poll.option_placeholder": "{number} Hilbijêre", + "compose_form.poll.remove_option": "Vê hilbijarê rake", + "compose_form.poll.switch_to_multiple": "Rapirsî yê biguherînin da ku destûr bidin vebijarkên pirjimar", + "compose_form.poll.switch_to_single": "Rapirsîyê biguherîne da ku mafê bidî tenê vebijêrkek", + "compose_form.publish": "Toot", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", - "compose_form.sensitive.hide": "نیشانکردنی میدیا وەک هەستیار", - "compose_form.sensitive.marked": "وادەی کۆتایی", - "compose_form.sensitive.unmarked": "میدیا وەک هەستیار نیشان نەکراوە", - "compose_form.spoiler.marked": "دەق لە پشت ئاگاداریدا شاراوەتەوە", - "compose_form.spoiler.unmarked": "دەق شاراوە نییە", - "compose_form.spoiler_placeholder": "ئاگاداریەکەت لێرە بنووسە", - "confirmation_modal.cancel": "هەڵوەشاندنەوه", - "confirmations.block.block_and_report": "بلۆک & گوزارشت", - "confirmations.block.confirm": "بلۆک", - "confirmations.block.message": "ئایا دڵنیایت لەوەی دەتەوێت {name} بلۆک بکەیت?", - "confirmations.delete.confirm": "سڕینەوە", - "confirmations.delete.message": "ئایا دڵنیایت لەوەی دەتەوێت ئەم توتە بسڕیتەوە?", - "confirmations.delete_list.confirm": "سڕینەوە", - "confirmations.delete_list.message": "ئایا دڵنیایت لەوەی دەتەوێت بە هەمیشەیی ئەم لیستە بسڕیتەوە?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", - "confirmations.domain_block.confirm": "بلۆککردنی هەموو دۆمەینەکە", - "confirmations.domain_block.message": "ئایا بەڕاستی، بەڕاستی تۆ دەتەوێت هەموو {domain} بلۆک بکەیت؟ لە زۆربەی حاڵەتەکاندا چەند بلۆکێکی ئامانجدار یان بێدەنگەکان پێویست و پەسەندن. تۆ ناوەڕۆک ێک نابینیت لە دۆمەینەکە لە هیچ هێڵی کاتی گشتی یان ئاگانامەکانت. شوێنکەوتوانی تۆ لەو دۆمەینەوە لادەبرێن.", - "confirmations.logout.confirm": "چوونە دەرەوە", - "confirmations.logout.message": "ئایا دڵنیایت لەوەی دەتەوێت بچیتە دەرەوە?", - "confirmations.mute.confirm": "بێدەنگ", - "confirmations.mute.explanation": "ئەمەش دەبێتە هۆی شاردنەوەی پۆستەکان یان ئەو بابەتانەی کە ئاماژەیان پێ دەکات ، بەڵام هێشتا ڕێگەیان پێ دەدات کە پۆستەکانتان ببینن و شوێنتان بکەون.", - "confirmations.mute.message": "ئایا دڵنیایت لەوەی دەتەوێت بیلێیت {name}?", - "confirmations.redraft.confirm": "سڕینەوە & دووبارە ڕەشکردنەوە", - "confirmations.redraft.message": "ئایا دڵنیایت لەوەی دەتەوێت ئەم توتە بسڕیتەوە و دووبارە دایبنووسیتەوە؟ دڵخوازەکان و بەرزکردنەوەکان وون دەبن، و وەڵامەکان بۆ پۆستە ڕەسەنەکە هەتیو دەبن.", - "confirmations.reply.confirm": "وەڵام", - "confirmations.reply.message": "وەڵامدانەوە ئێستا ئەو نامەیە ی کە تۆ ئێستا دایڕشتووە، دەنووسێتەوە. ئایا دڵنیایت کە دەتەوێت بەردەوام بیت?", - "confirmations.unfollow.confirm": "بەدوادانەچو", - "confirmations.unfollow.message": "ئایا دڵنیایت لەوەی دەتەوێت پەیڕەوی {name}?", - "conversation.delete": "سڕینەوەی گفتوگۆ", - "conversation.mark_as_read": "نیشانەکردن وەک خوێندراوە", - "conversation.open": "نیشاندان گفتوگۆ", - "conversation.with": "لەگەڵ{names}", - "directory.federated": "لە ڕاژەکانی ناسراو", - "directory.local": "تەنها لە {domain}", - "directory.new_arrivals": "تازە گەیشتنەکان", - "directory.recently_active": "بەم دواییانە چالاکە", - "embed.instructions": "ئەم توتە بنچین بکە لەسەر وێب سایتەکەت بە کۆپیکردنی کۆدەکەی خوارەوە.", - "embed.preview": "ئەمە ئەو شتەیە کە لە شێوەی خۆی دەچێت:", - "emoji_button.activity": "چالاکی", - "emoji_button.custom": "ئاسایی", - "emoji_button.flags": "ئاڵاکان", - "emoji_button.food": "خواردن& خواردنەوە", - "emoji_button.label": "ئیمۆجی بکەنێو", - "emoji_button.nature": "سروشت", - "emoji_button.not_found": "بێ ئیمۆجی! (╯°□°)╯( ┻━┻", - "emoji_button.objects": "ئامانجەکان", - "emoji_button.people": "خەڵک", - "emoji_button.recent": "زۆرجار بەکارهێنراوە", - "emoji_button.search": "گەڕان...", - "emoji_button.search_results": "ئەنجامەکانی گەڕان", - "emoji_button.symbols": "هێماکان", - "emoji_button.travel": "گەشت & شوێنەکان", - "empty_column.account_suspended": "Account suspended", - "empty_column.account_timeline": "لێرە هیچ توتەک نییە!", - "empty_column.account_unavailable": "پرۆفایل بەردەست نیە", - "empty_column.blocks": "تۆ هێشتا هیچ بەکارهێنەرێکت بلۆک نەکردووە.", - "empty_column.bookmarked_statuses": "تۆ هێشتا هیچ توتێکی دیاریکراوت نیە کاتێک نیشانەیەک نیشان دەکەیت، لێرە دەرئەکەویت.", - "empty_column.community": "هێڵی کاتی ناوخۆیی بەتاڵە. شتێک بە ئاشکرا بنووسە بۆ ئەوەی تۆپەکە بسووڕێت!", - "empty_column.direct": "تۆ هیچ نامەی ڕاستەوخۆت نیە تا ئێستا. کاتێک دانەیەک دەنێریت یان وەرت دەگرێت، لێرە پیشان دەدات.", - "empty_column.domain_blocks": "هێشتا هیچ دۆمەینێکی بلۆک کراو نییە.", - "empty_column.favourited_statuses": "تۆ هێشتا هیچ توتێکی دڵخوازت نییە، کاتێک حەزت لە دانەیەکی باشە، لێرە دەرئەکەویت.", - "empty_column.favourites": "کەس ئەم توتەی دڵخواز نەکردووە،کاتێک کەسێک وا بکات، لێرە دەرئەکەون.", - "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", - "empty_column.follow_requests": "تۆ هێشتا هیچ داواکارییەکی بەدواداچووت نیە. کاتێک یەکێکت بۆ هات، لێرە دەرئەکەویت.", - "empty_column.hashtag": "هێشتا هیچ شتێک لەم هاشتاگەدا نییە.", - "empty_column.home": "تایم لاینی ماڵەوەت بەتاڵە! سەردانی {public} بکە یان گەڕان بەکاربێنە بۆ دەستپێکردن و بینینی بەکارهێنەرانی تر.", - "empty_column.home.suggestions": "See some suggestions", - "empty_column.list": "هێشتا هیچ شتێک لەم لیستەدا نییە. کاتێک ئەندامانی ئەم لیستە دەنگی نوێ بڵاودەکەن، لێرە دەردەکەون.", - "empty_column.lists": "تۆ هێشتا هیچ لیستت دروست نەکردووە، کاتێک دانەیەک دروست دەکەیت، لێرە پیشان دەدرێت.", - "empty_column.mutes": "تۆ هێشتا هیچ بەکارهێنەرێکت بێدەنگ نەکردووە.", - "empty_column.notifications": "تۆ هێشتا هیچ ئاگانامێکت نیە. چالاکی لەگەڵ کەسانی دیکە بکە بۆ دەستپێکردنی گفتوگۆکە.", - "empty_column.public": "لێرە هیچ نییە! شتێک بە ئاشکرا بنووسە(بەگشتی)، یان بە دەستی شوێن بەکارهێنەران بکەوە لە ڕاژەکانی ترەوە بۆ پڕکردنەوەی", - "error.unexpected_crash.explanation": "بەهۆی بوونی کێشە لە کۆدەکەمان یان کێشەی گونجانی وێبگەڕەکە، ئەم لاپەڕەیە بە دروستی پیشان نادرێت.", - "error.unexpected_crash.explanation_addons": "ئەم لاپەڕەیە ناتوانرێت بە دروستی پیشان بدرێت. ئەم هەڵەیە لەوانەیە بەهۆی ئامێری وەرگێڕانی خۆکار یان زیادکراوی وێبگەڕەوە بێت.", - "error.unexpected_crash.next_steps": "هەوڵدە لاپەڕەکە تازە بکەوە. ئەگەر ئەمە یارمەتیدەر نەبوو، لەوانەیە هێشتا بتوانیت ماستۆدۆن بەکاربێنیت لە ڕێگەی وێبگەڕەکەیان کاربەرنامەی ڕەسەن.", - "error.unexpected_crash.next_steps_addons": "هەوڵدە لەکاریان بخەیت و لاپەڕەکە تازە بکەوە. ئەگەر ئەمە یارمەتیدەر نەبوو، لەوانەیە هێشتا بتوانیت ماستۆدۆن بەکاربێنیت لە ڕێگەی وێبگەڕەکانی دیکە یان نەرمەکالاکانی ئەسڵی.", - "errors.unexpected_crash.copy_stacktrace": "کۆپیکردنی ستێکتراسی بۆ کلیپ بۆرد", - "errors.unexpected_crash.report_issue": "کێشەی گوزارشت", - "follow_recommendations.done": "Done", - "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", - "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", - "follow_request.authorize": "ده‌سه‌ڵاتپێدراو", - "follow_request.reject": "ڕەتکردنەوە", - "follow_requests.unlocked_explanation": "هەرچەندە هەژمارەکەت داخراو نییە، ستافی {domain} وا بیریان کردەوە کە لەوانەیە بتانەوێت پێداچوونەوە بە داواکاریەکانی ئەم هەژمارەدا بکەن بە دەستی.", - "generic.saved": "پاشکەوتکرا", - "getting_started.developers": "پەرەپێدەران", - "getting_started.directory": "پەڕەی پرۆفایل", - "getting_started.documentation": "بەڵگەنامە", - "getting_started.heading": "دەست پێکردن", - "getting_started.invite": "بانگهێشتکردنی خەڵک", - "getting_started.open_source_notice": "ماستۆدۆن نەرمەکالایەکی سەرچاوەی کراوەیە. دەتوانیت بەشداری بکەیت یان گوزارشت بکەیت لەسەر کێشەکانی لە پەڕەی گیتهاب {github}.", - "getting_started.security": "ڕێکخستنەکانی هەژمارە", - "getting_started.terms": "مەرجەکانی خزمەتگوزاری", - "hashtag.column_header.tag_mode.all": "و {additional}", - "hashtag.column_header.tag_mode.any": "یا {additional}", - "hashtag.column_header.tag_mode.none": "بەبێ {additional}", - "hashtag.column_settings.select.no_options_message": "هیچ پێشنیارێک نەدۆزرایەوە", - "hashtag.column_settings.select.placeholder": "هاشتاگی تێبنووسە…", - "hashtag.column_settings.tag_mode.all": "هەموو ئەمانە", - "hashtag.column_settings.tag_mode.any": "هەر کام لەمانە", - "hashtag.column_settings.tag_mode.none": "هیچ کام لەمانە", - "hashtag.column_settings.tag_toggle": "تاگی زیادە ی ئەم ستوونە لەخۆ بنووسە", - "home.column_settings.basic": "بنەڕەتی", - "home.column_settings.show_reblogs": "پیشاندانی بەهێزکردن", - "home.column_settings.show_replies": "وەڵامدانەوەکان پیشان بدە", - "home.hide_announcements": "شاردنەوەی راگەیەنراوەکان", - "home.show_announcements": "پیشاندانی راگەیەنراوەکان", - "intervals.full.days": "{number, plural, one {# ڕۆژ} other {# ڕۆژەک}}", - "intervals.full.hours": "{number, plural, one {# کات} other {# کات}}", - "intervals.full.minutes": "{number, plural, one {# خولەک} other {# خولەک}}", - "keyboard_shortcuts.back": "بۆ گەڕانەوە", - "keyboard_shortcuts.blocked": "بۆ کردنەوەی لیستی بەکارهێنەرە بلۆککراوەکان", - "keyboard_shortcuts.boost": "بۆ بەهێزکردن", - "keyboard_shortcuts.column": "بۆ ئەوەی تیشک بخاتە سەر توتێک لە یەکێک لە ستوونەکان", - "keyboard_shortcuts.compose": "بۆ سەرنجدان بە نووسینی ناوچەی دەق", - "keyboard_shortcuts.description": "وه‌سف", - "keyboard_shortcuts.direct": "بۆ کردنەوەی ستوونی نامە ڕاستەوخۆکان", - "keyboard_shortcuts.down": "بۆ چوونە خوارەوە لە لیستەکەدا", - "keyboard_shortcuts.enter": "بۆ کردنەوەی توت", - "keyboard_shortcuts.favourite": "بۆ دڵخواز", - "keyboard_shortcuts.favourites": "بۆ کردنەوەی لیستی دڵخوازەکان", - "keyboard_shortcuts.federated": "بۆ کردنەوەی نووسراوەکانی هەمووشوێن", - "keyboard_shortcuts.heading": "قه‌دبڕەکانی تەختەکلیل", - "keyboard_shortcuts.home": "بۆ کردنەوەی هێڵی کاتی ماڵەوە", - "keyboard_shortcuts.hotkey": "هۆتکەی", - "keyboard_shortcuts.legend": "بۆ نیشاندانی ئەم نیشانە", - "keyboard_shortcuts.local": "بۆ کردنەوەی نووسراوەکانی خۆماڵی", - "keyboard_shortcuts.mention": "نۆ ناوبردن لە نووسەر", - "keyboard_shortcuts.muted": "بۆ کردنەوەی پێرستی بەکارهێنەرانی بێدەنگ", - "keyboard_shortcuts.my_profile": "بۆ کردنەوەی پرۆفایڵ", - "keyboard_shortcuts.notifications": "بۆ کردنەوەی ستوونی ئاگانامەکان", - "keyboard_shortcuts.open_media": "بۆ کردنەوەی میدیا", - "keyboard_shortcuts.pinned": "بۆ کردنەوەی لیستی توتەکانی چەسپێنراو", - "keyboard_shortcuts.profile": "بۆ کردنەوەی پرۆفایڵی نووسەر", - "keyboard_shortcuts.reply": "بۆ وەڵامدانەوە", - "keyboard_shortcuts.requests": "بۆ کردنەوەی لیستی داواکاریەکانی بەدوادا", - "keyboard_shortcuts.search": "بۆ جەختکردن لەسەر گەڕان", - "keyboard_shortcuts.spoilers": "بۆ پیشاندان/شاردنەوەی خانەی CW", - "keyboard_shortcuts.start": "بۆ کردنەوەی ستوونی \"دەست پێبکە\"", - "keyboard_shortcuts.toggle_hidden": "بۆ پیشاندان/شاردنەوەی دەق لە پشت CW", - "keyboard_shortcuts.toggle_sensitivity": "بۆ پیشاندان/شاردنەوەی میدیا", - "keyboard_shortcuts.toot": "بۆ دەست کردن بە براندێکی تازە", - "keyboard_shortcuts.unfocus": "بۆ دروستکردنی ناوچەی دەق/گەڕان", - "keyboard_shortcuts.up": "بۆ ئەوەی لە لیستەکەدا بڕۆیت", - "lightbox.close": "دابخە", - "lightbox.compress": "سندوقی نیشاندانی وێنە بپەستێنە", - "lightbox.expand": "فراوانکردنی سندوقی بینینی وێنە", - "lightbox.next": "داهاتوو", - "lightbox.previous": "پێشوو", - "lists.account.add": "زیادکردن بۆ لیست", - "lists.account.remove": "لابردن لە لیست", - "lists.delete": "سڕینەوەی لیست", - "lists.edit": "دەستکاری لیست", - "lists.edit.submit": "گۆڕینی ناونیشان", - "lists.new.create": "زیادکردنی لیست", - "lists.new.title_placeholder": "ناونیشانی لیستی نوێ", - "lists.replies_policy.followed": "Any followed user", - "lists.replies_policy.list": "Members of the list", - "lists.replies_policy.none": "No one", - "lists.replies_policy.title": "پیشاندانی وەڵامەکان بۆ:", - "lists.search": "بگەڕێ لەناو ئەو کەسانەی کە شوێنیان کەوتویت", - "lists.subheading": "لیستەکانت", - "load_pending": "{count, plural, one {# new item} other {# new items}}", - "loading_indicator.label": "بارکردن...", - "media_gallery.toggle_visible": "شاردنەوەی {number, plural, one {image} other {images}}", - "missing_indicator.label": "نەدۆزرایەوە", - "missing_indicator.sublabel": "ئەو سەرچاوەیە نادۆزرێتەوە", - "mute_modal.duration": "ماوە", - "mute_modal.hide_notifications": "شاردنەوەی ئاگانامەکان لەم بەکارهێنەرە؟ ", - "mute_modal.indefinite": "نادیار", - "navigation_bar.apps": "بەرنامەی مۆبایل", - "navigation_bar.blocks": "بەکارهێنەرە بلۆککراوەکان", - "navigation_bar.bookmarks": "نیشانکراوەکان", - "navigation_bar.community_timeline": "دەمنامەی ناوخۆیی", - "navigation_bar.compose": "نووسینی توتی نوێ", - "navigation_bar.direct": "نامە ڕاستەوخۆکان", - "navigation_bar.discover": "دۆزینەوە", - "navigation_bar.domain_blocks": "دۆمەینە بلۆک کراوەکان", - "navigation_bar.edit_profile": "دەستکاری پرۆفایل بکە", - "navigation_bar.favourites": "دڵخوازەکان", - "navigation_bar.filters": "وشە کپەکان", - "navigation_bar.follow_requests": "بەدواداچوی داواکاریەکان بکە", - "navigation_bar.follows_and_followers": "شوێنکەوتوو و شوێنکەوتوان", - "navigation_bar.info": "دەربارەی ئەم ڕاژە", - "navigation_bar.keyboard_shortcuts": "هۆتکەی", - "navigation_bar.lists": "لیستەکان", - "navigation_bar.logout": "دەرچوون", - "navigation_bar.mutes": "کپکردنی بەکارهێنەران", - "navigation_bar.personal": "کەسی", - "navigation_bar.pins": "توتی چەسپاو", - "navigation_bar.preferences": "پەسەندەکان", - "navigation_bar.public_timeline": "نووسراوەکانی هەمووشوێنێک", - "navigation_bar.security": "ئاسایش", - "notification.favourite": "{name} نووسراوەکەتی پەسەند کرد", - "notification.follow": "{name} دوای تۆ کەوت", - "notification.follow_request": "{name} داوای کردووە کە شوێنت بکەوێت", - "notification.mention": "{name} باسی ئێوەی کرد", - "notification.own_poll": "ڕاپرسیەکەت کۆتایی هات", - "notification.poll": "ڕاپرسییەک کە دەنگی پێداویت کۆتایی هات", - "notification.reblog": "{name} نووسراوەکەتی دووبارە توتاند", - "notification.status": "{name} تازە بڵاوکرایەوە", - "notification.update": "{name} edited a post", - "notifications.clear": "ئاگانامەکان بسڕیەوە", - "notifications.clear_confirmation": "ئایا دڵنیایت لەوەی دەتەوێت بە هەمیشەیی هەموو ئاگانامەکانت بسڕیتەوە?", - "notifications.column_settings.alert": "ئاگانامەکانی پیشانگەرر ڕومێزی", - "notifications.column_settings.favourite": "دڵخوازترین:", - "notifications.column_settings.filter_bar.advanced": "هەموو پۆلەکان پیشان بدە", - "notifications.column_settings.filter_bar.category": "شریتی پاڵێوەری خێرا", - "notifications.column_settings.filter_bar.show_bar": "Show filter bar", - "notifications.column_settings.follow": "شوێنکەوتوانی نوێ:", - "notifications.column_settings.follow_request": "شوینکەوتنی داواکاری نوێ:", - "notifications.column_settings.mention": "ئاماژەکان:", - "notifications.column_settings.poll": "ئەنجامەکانی ڕاپرسی:", - "notifications.column_settings.push": "ئاگانامەکان پاڵ بنێ", - "notifications.column_settings.reblog": "دووبارەتوتەکان:", - "notifications.column_settings.show": "لە ستووندا پیشان بدە", - "notifications.column_settings.sound": "لێدانی دەنگ", - "notifications.column_settings.status": "توتەکانی نوێ:", - "notifications.column_settings.unread_notifications.category": "Unread notifications", - "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", - "notifications.column_settings.update": "Edits:", - "notifications.filter.all": "هەموو", - "notifications.filter.boosts": "دووبارەتوتەکان", - "notifications.filter.favourites": "دڵخوازەکان", - "notifications.filter.follows": "شوێنکەوتن", - "notifications.filter.mentions": "ئاماژەکان", - "notifications.filter.polls": "ئەنجامەکانی ڕاپرسی", - "notifications.filter.statuses": "نوێکردنەوەکان ئەو کەسانەی کە پەیڕەوی دەکەیت", - "notifications.grant_permission": "Grant permission.", - "notifications.group": "{count} ئاگانامە", - "notifications.mark_as_read": "هەموو ئاگانامەکان وەک خوێندراوەتەوە نیشان بکە", - "notifications.permission_denied": "ناتوانرێت ئاگانامەکانی دێسکتۆپ چالاک بکرێت وەک ڕێپێدان ڕەتکرایەوە.", - "notifications.permission_denied_alert": "ناتوانرێت ئاگانامەکانی دێسکتۆپ چالاک بکرێت، چونکە پێشتر مۆڵەتی وێبگەڕ ڕەتکرایەوە", - "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.", - "notifications_permission_banner.enable": "چالاککردنی ئاگانامەکانی دێسکتۆپ", - "notifications_permission_banner.how_to_control": "بۆ وەرگرتنی ئاگانامەکان کاتێک ماستۆدۆن نەکراوەیە، ئاگانامەکانی دێسکتۆپ چالاک بکە. دەتوانیت بە وردی کۆنترۆڵی جۆری کارلێکەکان بکەیت کە ئاگانامەکانی دێسکتۆپ دروست دەکەن لە ڕێگەی دوگمەی {icon} لەسەرەوە کاتێک چالاک دەکرێن.", - "notifications_permission_banner.title": "هەرگیز شتێک لە دەست مەدە", - "picture_in_picture.restore": "بیگەڕێنەوە", - "poll.closed": "دابخە", - "poll.refresh": "نوێکردنەوە", - "poll.total_people": "{count, plural, one {# خەڵک} other {# خەڵک}}", - "poll.total_votes": "{count, plural, one {# دەنگ} other {# دەنگ}}\n", - "poll.vote": "دەنگ", - "poll.voted": "تۆ دەنگت بەو وەڵامە دا", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", - "poll_button.add_poll": "ڕاپرسییەک زیاد بکە", - "poll_button.remove_poll": "ده‌نگدان بسڕه‌وه‌‌", - "privacy.change": "ڕێکخستنی تایبەتمەندی توت", - "privacy.direct.long": "تەنیا بۆ بەکارهێنەرانی ناوبراو", - "privacy.direct.short": "ڕاستەوخۆ", - "privacy.private.long": "بینراو تەنها بۆ شوێنکەوتوان", - "privacy.private.short": "تەنها بۆ شوێنکەوتوان", - "privacy.public.long": "بۆ هەمووان دیاربێت، لە هێڵی کاتی گشتی دا نیشان دەدرێت", - "privacy.public.short": "گشتی", - "privacy.unlisted.long": "بۆ هەمووان دیارە، بەڵام لە هێڵی کاتی گشتیدا نا", - "privacy.unlisted.short": "لە لیست نەکراو", - "refresh": "نوێکردنەوە", - "regeneration_indicator.label": "بارکردن…", - "regeneration_indicator.sublabel": "ڕاگەیەنەری ماڵەوەت ئامادە دەکرێت!", - "relative_time.days": "{number}ڕۆژ", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", - "relative_time.hours": "{number}کات", - "relative_time.just_now": "ئێستا", - "relative_time.minutes": "{number}کات", - "relative_time.seconds": "{number}کات", - "relative_time.today": "ئیمڕۆ", - "reply_indicator.cancel": "هەڵوەشاندنەوه", - "report.categories.other": "Other", - "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", - "report.forward": "ناردن بۆ {target}", - "report.forward_hint": "هەژمارەکە لە ڕاژەیەکی ترە. ڕونووسێکی نەناسراو بنێرە بۆ گوزارشت لەوێ?", - "report.hint": "گوزارشتەکە دەنێردرێت بۆ بەرپرسانی ڕاژەکەت. دەتوانیت ڕوونکردنەوەیەک پێشکەش بکەیت کە بۆچی ئەم هەژمارە لە خوارەوە گوزارش دەکەیت:", - "report.placeholder": "سەرنجەکانی زیاتر", - "report.submit": "ناردن", - "report.target": "گوزارشتکردنی{target}", - "search.placeholder": "گەڕان", - "search_popout.search_format": "شێوەی گەڕانی پێشکەوتوو", - "search_popout.tips.full_text": "گەڕانێکی دەقی سادە دەتوانێت توتەکانی ئێوە کە، نووسیوتانە،پەسەنتان کردووە، دووبارەتانکردووە، یان ئەو توتانە کە باسی ئێوەی تێدا کراوە پەیدا دەکا. هەروەها ناوی بەکارهێنەران، ناوی پیشاندراو و هەشتەگەکانیش لە خۆ دەگرێت.", - "search_popout.tips.hashtag": "هەشتاگ", - "search_popout.tips.status": "توت", - "search_popout.tips.text": "دەقی سادە هەڵدەسێ بە گەڕاندنەوەی هاوتایی ناوی پیشاندان، ناوی بەکارهێنەر و هاشتاگەکان", - "search_popout.tips.user": "بەکارهێنەر", - "search_results.accounts": "خەڵک", - "search_results.hashtags": "هەشتاگ", - "search_results.statuses": "توتەکان", - "search_results.statuses_fts_disabled": "گەڕانی توتەکان بە ناوەڕۆکیان لەسەر ئەم ڕاژەی ماستۆدۆن چالاک نەکراوە.", - "search_results.total": "{count, number} {count, plural, one {دەرئەنجام} other {دەرئەنجام}}", - "status.admin_account": "کردنەوەی میانڕەوی بەڕێوەبەر بۆ @{name}", - "status.admin_status": "ئەم توتە بکەوە لە ناو ڕووکاری بەڕیوەبەر", - "status.block": "بلۆکی @{name}", - "status.bookmark": "نیشانه", - "status.cancel_reblog_private": "بێبەهێزکردن", - "status.cannot_reblog": "ئەم بابەتە ناتوانرێت بەرزبکرێتەوە", - "status.copy": "ڕوونووسی بەستەر بۆ توت", - "status.delete": "سڕینەوە", - "status.detailed_status": "ڕوانگەی گفتوگۆ بە وردەکاری", - "status.direct": "پەیامی ڕاستەوخۆ @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", - "status.embed": "نیشتەجێ بکە", - "status.favourite": "دڵخواز", - "status.filtered": "پاڵاوتن", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", - "status.load_more": "بارکردنی زیاتر", - "status.media_hidden": "میدیای شاراوە", - "status.mention": "ناوبنێ @{name}", - "status.more": "زیاتر", - "status.mute": "بێدەنگکردن @{name}", - "status.mute_conversation": "گفتوگۆی بێدەنگ", - "status.open": "ئەم توتە فراوان بکە", - "status.pin": "لکاندن لەسەر پرۆفایل", - "status.pinned": "توتی چەسپکراو", - "status.read_more": "زیاتر بخوێنەوە", - "status.reblog": "بەهێزکردن", - "status.reblog_private": "بەهێزکردن بۆ بینەرانی سەرەتایی", - "status.reblogged_by": "{name} توتی کردەوە", - "status.reblogs.empty": "کەس ئەم توتەی دووبارە نەتوتاندوە ،کاتێک کەسێک وا بکات، لێرە دەرئەکەون.", - "status.redraft": "سڕینەوەی و دووبارە ڕەشنووس", - "status.remove_bookmark": "لابردنی نیشانه", - "status.reply": "وەڵام", - "status.replyAll": "بە نووسراوە وەڵام بدەوە", - "status.report": "گوزارشت @{name}", - "status.sensitive_warning": "ناوەڕۆکی هەستیار", - "status.share": "هاوبەش کردن", - "status.show_less": "کەمتر نیشان بدە", - "status.show_less_all": "کەمتر نیشان بدە بۆ هەمووی", - "status.show_more": "زیاتر پیشان بدە", - "status.show_more_all": "زیاتر نیشان بدە بۆ هەمووی", - "status.show_thread": "نیشاندانی گفتوگۆ", - "status.uncached_media_warning": "بەردەست نیە", - "status.unmute_conversation": "گفتوگۆی بێدەنگ", - "status.unpin": "لابردن لە پرۆفایل", - "suggestions.dismiss": "ڕەتکردنەوەی پێشنیار", - "suggestions.header": "لەوانەیە حەزت لەمەش بێت…", - "tabs_bar.federated_timeline": "گشتی", - "tabs_bar.home": "سەرەتا", - "tabs_bar.local_timeline": "ناوخۆیی", - "tabs_bar.notifications": "ئاگادارییەکان", - "tabs_bar.search": "گەڕان", - "time_remaining.days": "{number, plural, one {# ڕۆژ} other {# ڕۆژ}} ماوە", - "time_remaining.hours": "{number, plural, one {# کات} other {# کات}} ماوە", - "time_remaining.minutes": "{number, plural, one {# خۆلەک} other {# خولەک}} ماوە", - "time_remaining.moments": "ئەو ساتانەی ماونەتەوە", - "time_remaining.seconds": "{number, plural, one {# چرکە} other {# چرکە}} ماوە", - "timeline_hint.remote_resource_not_displayed": "{resource} لە ڕاژەکانی ترەوە پیشان نادرێت.", - "timeline_hint.resources.followers": "شوێنکەوتووان", - "timeline_hint.resources.follows": "شوێنکەوتن", - "timeline_hint.resources.statuses": "توتی کۆن", - "trends.counter_by_accounts": "{count, plural, one {{counter} کەس} other {{counter} کەس}} گفتوگۆ دەکا", - "trends.trending_now": "گۆگران", - "ui.beforeunload": "ڕەشنووسەکەت لە دەست دەچێت ئەگەر لە ماستۆدۆن بڕۆیت.", - "units.short.billion": "{count}ملیار", - "units.short.million": "{count}ملیۆن", - "units.short.thousand": "{count}هەزار", - "upload_area.title": "ڕاکێشان & دانان بۆ بارکردن", - "upload_button.label": "زیادکردنی وێنەکان، ڤیدیۆیەک یان فایلێکی دەنگی", - "upload_error.limit": "سنووری بارکردنی فایل تێپەڕیوە.", - "upload_error.poll": "پەڕگەکە ڕێی پێنەدراوە بە ڕاپرسی باربکرێت.", - "upload_form.audio_description": "بۆ ئەو کەسانەی کە گوێ بیستیان هەیە وەسف دەکات", - "upload_form.description": "وەسف بکە بۆ کەمبینایان", - "upload_form.edit": "دەستکاری", - "upload_form.thumbnail": "گۆڕانی وینۆچکە", - "upload_form.undo": "سڕینەوە", - "upload_form.video_description": "بۆ کەم بینایان و کەم بیستان وەسفی بکە", - "upload_modal.analyzing_picture": "شیکردنەوەی وێنە…", - "upload_modal.apply": "جێبەجێ کردن", - "upload_modal.applying": "Applying…", - "upload_modal.choose_image": "وێنە هەڵبژێرە", - "upload_modal.description_placeholder": "بە دڵ کەین با بە نەشئەی مەی غوباری میحنەتی دونیا", - "upload_modal.detect_text": "دەقی وێنەکە بدۆزیەوە", - "upload_modal.edit_media": "دەستکاریکردنی میدیا", - "upload_modal.hint": "گەر وێنە چکۆلە یان بڕاوەبێت، خاڵی ناوەندی دیار دەکەوێت. خاڵی ناوەندی وێنە بە کرتە یان جێبەجیکردنی رێکبخەن.", - "upload_modal.preparing_ocr": "ئامادەکردنی OCR…", - "upload_modal.preview_label": "پێشبینی ({ratio})", - "upload_progress.label": "بارکردن...", - "video.close": "داخستنی ڤیدیۆ", - "video.download": "داگرتنی فایل", - "video.exit_fullscreen": "دەرچوون لە پڕ شاشە", - "video.expand": "ڤیدیۆفراوان بکە", - "video.fullscreen": "پڕپیشانگەر", - "video.hide": "شاردنەوەی ڤیدیۆ", - "video.mute": "دەنگی کپ", - "video.pause": "وەستان", - "video.play": "پەخشکردن", - "video.unmute": "دەنگ لابدە" + "compose_form.save_changes": "Guhertinan tomar bike", + "compose_form.sensitive.hide": "{count, plural, one {Medya wekî hestiyar nîşan bide} other {Medya wekî hestiyar nîşan bide}}", + "compose_form.sensitive.marked": "{count, plural, one {Medya wekî hestiyar hate nîşan} other {Medya wekî hestiyar nîşan}}", + "compose_form.sensitive.unmarked": "{count, plural, one {Medya wekî hestiyar nehatiye nîşan} other {Medya wekî hestiyar nehatiye nîşan}}", + "compose_form.spoiler.marked": "Hişyariya naverokê rake", + "compose_form.spoiler.unmarked": "Hişyariya naverokê tevlî bike", + "compose_form.spoiler_placeholder": "Li vir hişyariya xwe binivîse", + "confirmation_modal.cancel": "Dev jê berde", + "confirmations.block.block_and_report": "Asteng bike & ragihîne", + "confirmations.block.confirm": "Asteng bike", + "confirmations.block.message": "Ma tu dixwazî ku {name} asteng bikî?", + "confirmations.delete.confirm": "Jê bibe", + "confirmations.delete.message": "Ma tu dixwazî vê şandiyê jê bibî?", + "confirmations.delete_list.confirm": "Jê bibe", + "confirmations.delete_list.message": "Ma tu dixwazî bi awayekî herdemî vê rêzokê jê bibî?", + "confirmations.discard_edit_media.confirm": "Biavêje", + "confirmations.discard_edit_media.message": "Guhertinên neqedandî di danasîna an pêşdîtina medyayê de hene, wan bi her awayî bavêje?", + "confirmations.domain_block.confirm": "Hemî navperê asteng bike", + "confirmations.domain_block.message": "Tu ji xwe bawerî, bi rastî tu dixwazî hemû {domain} asteng bikî? Di gelek rewşan de asteng kirin an jî bêdeng kirin têrê dike û tê tercîh kirin. Tu nikarî naveroka vê navperê di demnameyê an jî agahdariyên xwe de bibînî. Şopînerên te yê di vê navperê were jêbirin.", + "confirmations.logout.confirm": "Derkeve", + "confirmations.logout.message": "Ma tu dixwazî ku derkevî?", + "confirmations.mute.confirm": "Bêdeng bike", + "confirmations.mute.explanation": "Ev ê şandinên ji wan tê û şandinên ku behsa wan dike veşêre, lê hê jî maf dide ku ew şandinên te bibînin û te bişopînin.", + "confirmations.mute.message": "Bi rastî tu dixwazî {name} bêdeng bikî?", + "confirmations.redraft.confirm": "Jê bibe & ji nû ve serrast bike", + "confirmations.redraft.message": "Bi rastî tu dixwazî şandî ye jê bibî û nûve reşnivîsek çê bikî? Bijarte û şandî wê wenda bibin û bersivên ji bo şandiyê resen wê sêwî bimînin.", + "confirmations.reply.confirm": "Bersivê bide", + "confirmations.reply.message": "Bersiva niha li ser peyama ku tu niha berhev dikî dê binivsîne. Ma pê bawer î ku tu dixwazî bidomînî?", + "confirmations.unfollow.confirm": "Neşopîne", + "confirmations.unfollow.message": "Ma tu dixwazî ku dev ji şopa {name} berdî?", + "conversation.delete": "Axaftinê jê bibe", + "conversation.mark_as_read": "Wekî xwendî nîşan bide", + "conversation.open": "Axaftinê nîşan bide", + "conversation.with": "Bi {names} re", + "directory.federated": "Ji fediversên naskirî", + "directory.local": "Tenê ji {domain}", + "directory.new_arrivals": "Kesên ku nû hatine", + "directory.recently_active": "Di demên dawî de çalak", + "embed.instructions": "Bi jêgirtina koda jêrîn vê şandiyê li ser malpera xwe bicîh bikin.", + "embed.preview": "Wa ye wê wusa xuya bike:", + "emoji_button.activity": "Çalakî", + "emoji_button.custom": "Kesanekirî", + "emoji_button.flags": "Nîşankirî", + "emoji_button.food": "Xwarin û vexwarin", + "emoji_button.label": "Emoji têxe", + "emoji_button.nature": "Sirûştî", + "emoji_button.not_found": "Hestokên lihevhatî nehate dîtin", + "emoji_button.objects": "Tişt", + "emoji_button.people": "Mirov", + "emoji_button.recent": "Pir caran tê bikaranîn", + "emoji_button.search": "Bigere...", + "emoji_button.search_results": "Encamên lêgerînê", + "emoji_button.symbols": "Sembol", + "emoji_button.travel": "Geşt û şûn", + "empty_column.account_suspended": "Ajimêr hatiye rawestandin", + "empty_column.account_timeline": "Li vir şandî tune!", + "empty_column.account_unavailable": "Profîl nayê peydakirin", + "empty_column.blocks": "Te tu bikarhêner asteng nekiriye.", + "empty_column.bookmarked_statuses": "Hîn tu peyamên şûnpelkirî tuneye. Gava ku hûn yek şûnpel bikin, ew ê li vir xûya bike.", + "empty_column.community": "Demnameya herêmî vala ye. Tiştek ji raya giştî re binivsînin da ku rûpel biherike!", + "empty_column.conversations": "Dema tu şandiyekê bişîninî an jî bistînî ku tenê ji kesên qalkirî re xuyabar in, ew ê li vir xuya bibe.", + "empty_column.domain_blocks": "Hê jî navperên hatine asteng kirin tune ne.", + "empty_column.explore_statuses": "Tiştek niha di rojevê de tune. Paşê vegere!", + "empty_column.favourited_statuses": "Hîn tu peyamên te yên bijare tunene. Gava ku te yekî bijart, ew ê li vir xûya bike.", + "empty_column.favourites": "Hîn tu kes vê peyamê nebijartiye. Gava ku hin kes bijartin, ew ê li vir xûya bikin.", + "empty_column.follow_recommendations": "Wusa dixuye ku ji bo we tu pêşniyar nehatine çêkirin. Hûn dikarin lêgerînê bikarbînin da ku li kesên ku hûn nas dikin bigerin an hashtagên trendî bigerin.", + "empty_column.follow_requests": "Hê jî daxwaza şopandinê tunne ye. Dema daxwazek hat, yê li vir were nîşan kirin.", + "empty_column.hashtag": "Di vê hashtagê de hêj tiştekî tune.", + "empty_column.home": "Demnameya mala we vala ye! Ji bona tijîkirinê bêtir mirovan bişopînin. {suggestions}", + "empty_column.home.suggestions": "Hinek pêşniyaran bibîne", + "empty_column.list": "Di vê rêzokê de hîn tiştek tune ye. Gava ku endamên vê rêzokê peyamên nû biweşînin, ew ê li vir xuya bibin.", + "empty_column.lists": "Hêj qet rêzokê te tunne ye. Dema yek peyda bû, yê li vir were nîşan kirin.", + "empty_column.mutes": "Te tu bikarhêner bêdeng nekiriye.", + "empty_column.notifications": "Hêj hişyariyên te tunene. Dema ku mirovên din bi we re têkilî danîn, hûn ê wê li vir bibînin.", + "empty_column.public": "Li vir tiştekî tuneye! Ji raya giştî re tiştekî binivîsîne, an ji bo tijîkirinê ji rajekerên din bikarhêneran bi destan bişopînin", + "error.unexpected_crash.explanation": "Ji ber xeletîyeke di koda me da an jî ji ber mijara lihevhatina gerokan, ev rûpel rast nehat nîşandan.", + "error.unexpected_crash.explanation_addons": "Ev rûpel bi awayekî rast nehat nîşandan. Ev çewtî mimkûn e ji ber lêzêdekirina gerokan an jî amûrên wergera xweberî pêk tê.", + "error.unexpected_crash.next_steps": "Nûkirina rûpelê biceribîne. Heke ev bi kêr neyê, dibe ku te hîn jî bi rêya gerokeke cuda an jî sepana xwecîhê Mastodonê bi kar bîne.", + "error.unexpected_crash.next_steps_addons": "Ne çalak kirin û nûkirina rûpelê biceribîne. Heke ev bi kêr neyê, dibe ku te hîn jî bi rêya gerokeke cuda an jî sepana xwecîhê Mastodonê bi kar bîne.", + "errors.unexpected_crash.copy_stacktrace": "Şopa gemara (stacktrace) tûrikê ra jê bigire", + "errors.unexpected_crash.report_issue": "Pirsgirêkekê ragihîne", + "explore.search_results": "Encamên lêgerînê", + "explore.suggested_follows": "Ji bo te", + "explore.title": "Vekole", + "explore.trending_links": "Nûçe", + "explore.trending_statuses": "Şandî", + "explore.trending_tags": "Hashtag", + "follow_recommendations.done": "Qediya", + "follow_recommendations.heading": "Mirovên ku tu dixwazî ji wan peyaman bibînî bişopîne! Hin pêşnîyar li vir in.", + "follow_recommendations.lead": "Li gorî rêza kronolojîkî peyamên mirovên ku tu dişopînî dê demnameya te de xûya bike. Ji xeletiyan netirse, bi awayekî hêsan her wextî tu dikarî dev ji şopandinê berdî!", + "follow_request.authorize": "Mafê bide", + "follow_request.reject": "Nepejirîne", + "follow_requests.unlocked_explanation": "Tevlî ku ajimêra te ne kilît kiriye, karmendên {domain} digotin qey tu dixwazî ku pêşdîtina daxwazên şopandinê bi destan bike.", + "generic.saved": "Tomarkirî", + "getting_started.developers": "Pêşdebir", + "getting_started.directory": "Rêgeha profîlê", + "getting_started.documentation": "Pelbend", + "getting_started.heading": "Destpêkirin", + "getting_started.invite": "Mirovan Vexwîne", + "getting_started.open_source_notice": "Mastodon nermalava çavkaniya vekirî ye. Tu dikarî pirsgirêkan li ser GitHub-ê ragihînî di {github} de an jî dikarî tevkariyê bikî.", + "getting_started.security": "Sazkariyên ajimêr", + "getting_started.terms": "Mercên karûberan", + "hashtag.column_header.tag_mode.all": "û {additional}", + "hashtag.column_header.tag_mode.any": "an {additional}", + "hashtag.column_header.tag_mode.none": "bêyî {additional}", + "hashtag.column_settings.select.no_options_message": "Ti pêşniyar nehatin dîtin", + "hashtag.column_settings.select.placeholder": "Têkeve hashtagê…", + "hashtag.column_settings.tag_mode.all": "Van hemûyan", + "hashtag.column_settings.tag_mode.any": "Yek ji van", + "hashtag.column_settings.tag_mode.none": "Ne yek ji van", + "hashtag.column_settings.tag_toggle": "Ji bo vê stûnê hin pêvekan tevlî bike", + "home.column_settings.basic": "Bingehîn", + "home.column_settings.show_reblogs": "Bilindkirinan nîşan bike", + "home.column_settings.show_replies": "Bersivan nîşan bide", + "home.hide_announcements": "Reklaman veşêre", + "home.show_announcements": "Reklaman nîşan bide", + "intervals.full.days": "{number, plural, one {# roj} other {# roj}}", + "intervals.full.hours": "{number, plural, one {# demjimêr} other {# demjimêr}}\n \n", + "intervals.full.minutes": "{number, plural, one {# xulek} other {# xulek}}", + "keyboard_shortcuts.back": "Vegere paşê", + "keyboard_shortcuts.blocked": "Rêzoka bikarhênerên astengkirî veke", + "keyboard_shortcuts.boost": "Şandiyê bilind bike", + "keyboard_shortcuts.column": "Stûna balkişandinê", + "keyboard_shortcuts.compose": "Bal bikşîne cîhê nivîsê/textarea", + "keyboard_shortcuts.conversations": "ji bo vekirina stûna axaftinan", + "keyboard_shortcuts.description": "Danasîn", + "keyboard_shortcuts.down": "Di rêzokê de dakêşe jêr", + "keyboard_shortcuts.enter": "Şandiyê veke", + "keyboard_shortcuts.favourite": "Şandiya bijarte", + "keyboard_shortcuts.favourites": "Rêzokên bijarte veke", + "keyboard_shortcuts.federated": "Demnameyê federalîkirî veke", + "keyboard_shortcuts.heading": "Kurterêyên klavyeyê", + "keyboard_shortcuts.home": "Demnameyê veke", + "keyboard_shortcuts.hotkey": "Bişkoka kurterê", + "keyboard_shortcuts.legend": "Vê çîrokê nîşan bike", + "keyboard_shortcuts.local": "Demnameya herêmî veke", + "keyboard_shortcuts.mention": "Qala nivîskarî/ê bike", + "keyboard_shortcuts.muted": "Rêzoka bikarhênerên bêdeng kirî veke", + "keyboard_shortcuts.my_profile": "Profîla xwe veke", + "keyboard_shortcuts.notifications": "Stûnê agahdariyan veke", + "keyboard_shortcuts.open_media": "Medya veke", + "keyboard_shortcuts.pinned": "Şandiyên derzîkirî veke", + "keyboard_shortcuts.profile": "Profîla nivîskaran veke", + "keyboard_shortcuts.reply": "Bersivê bide şandiyê", + "keyboard_shortcuts.requests": "Rêzoka daxwazên şopandinê veke", + "keyboard_shortcuts.search": "Bal bide şivika lêgerînê", + "keyboard_shortcuts.spoilers": "Zeviya hişyariya naverokê nîşan bide/veşêre", + "keyboard_shortcuts.start": "Stûna \"destpêkê\" veke", + "keyboard_shortcuts.toggle_hidden": "Nivîsa paş hişyariya naverokê nîşan bide/veşêre", + "keyboard_shortcuts.toggle_sensitivity": "Medyayê nîşan bide/veşêre", + "keyboard_shortcuts.toot": "Dest bi şandiyeke nû bike", + "keyboard_shortcuts.unfocus": "Bal nede cîhê nivîsê /lêgerînê", + "keyboard_shortcuts.up": "Di rêzokê de rake jor", + "lightbox.close": "Bigire", + "lightbox.compress": "Qutîya wêneya nîşan dike bitepisîne", + "lightbox.expand": "Qutîya wêneya nîşan dike fireh bike", + "lightbox.next": "Pêş", + "lightbox.previous": "Paş", + "lists.account.add": "Tevlî rêzokê bike", + "lists.account.remove": "Ji rêzokê rake", + "lists.delete": "Rêzokê jê bibe", + "lists.edit": "Rêzokê serrast bike", + "lists.edit.submit": "Sernavê biguherîne", + "lists.new.create": "Rêzokê tevlî bike", + "lists.new.title_placeholder": "Sernavê rêzoka nû", + "lists.replies_policy.followed": "Bikarhênereke şopandî", + "lists.replies_policy.list": "Endamên rêzokê", + "lists.replies_policy.none": "Ne yek", + "lists.replies_policy.title": "Bersivan nîşan bide:", + "lists.search": "Di navbera kesên ku te dişopînin bigere", + "lists.subheading": "Rêzokên te", + "load_pending": "{count, plural, one {# hêmaneke nû} other {#hêmaneke nû}}", + "loading_indicator.label": "Tê barkirin...", + "media_gallery.toggle_visible": "{number, plural, one {Wêneyê veşêre} other {Wêneyan veşêre}}", + "missing_indicator.label": "Nehate dîtin", + "missing_indicator.sublabel": "Ev çavkanî nehat dîtin", + "mute_modal.duration": "Dem", + "mute_modal.hide_notifications": "Agahdariyan ji ev bikarhêner veşêre?", + "mute_modal.indefinite": "Nediyar", + "navigation_bar.apps": "Sepana mobîl", + "navigation_bar.blocks": "Bikarhênerên astengkirî", + "navigation_bar.bookmarks": "Şûnpel", + "navigation_bar.community_timeline": "Demnameya herêmî", + "navigation_bar.compose": "Şandiyeke nû binivsîne", + "navigation_bar.discover": "Vekolê", + "navigation_bar.domain_blocks": "Navparên astengkirî", + "navigation_bar.edit_profile": "Profîl serrast bike", + "navigation_bar.explore": "Vekole", + "navigation_bar.favourites": "Bijarte", + "navigation_bar.filters": "Peyvên bêdengkirî", + "navigation_bar.follow_requests": "Daxwazên şopandinê", + "navigation_bar.follows_and_followers": "Şopandin û şopîner", + "navigation_bar.info": "Derbarê vî rajekarî", + "navigation_bar.keyboard_shortcuts": "Bişkoka kurterê", + "navigation_bar.lists": "Rêzok", + "navigation_bar.logout": "Derkeve", + "navigation_bar.mutes": "Bikarhênerên bêdengkirî", + "navigation_bar.personal": "Kesanî", + "navigation_bar.pins": "Şandiya derzîkirî", + "navigation_bar.preferences": "Sazkarî", + "navigation_bar.public_timeline": "Demnameyê federalîkirî", + "navigation_bar.security": "Ewlehî", + "notification.admin.sign_up": "{name} tomar bû", + "notification.favourite": "{name} şandiya te hez kir", + "notification.follow": "{name} te şopand", + "notification.follow_request": "{name} dixwazê te bişopîne", + "notification.mention": "{name} qale te kir", + "notification.own_poll": "Rapirsîya te qediya", + "notification.poll": "Rapirsiyeke ku te deng daye qediya", + "notification.reblog": "{name} şandiya te bilind kir", + "notification.status": "{name} niha şand", + "notification.update": "{name} şandiyek serrast kir", + "notifications.clear": "Agahdariyan pak bike", + "notifications.clear_confirmation": "Bi rastî tu dixwazî bi awayekî dawî hemû agahdariyên xwe pak bikî?", + "notifications.column_settings.admin.sign_up": "Tomarkirinên nû:", + "notifications.column_settings.alert": "Agahdariyên sermaseyê", + "notifications.column_settings.favourite": "Bijarte:", + "notifications.column_settings.filter_bar.advanced": "Hemû beşan nîşan bide", + "notifications.column_settings.filter_bar.category": "Şivika parzûna bilêz", + "notifications.column_settings.filter_bar.show_bar": "Darika parzûnê nîşan bide", + "notifications.column_settings.follow": "Şopînerên nû:", + "notifications.column_settings.follow_request": "Daxwazên şopandinê nû:", + "notifications.column_settings.mention": "Qalkirin:", + "notifications.column_settings.poll": "Encamên rapirsiyê:", + "notifications.column_settings.push": "Agahdarîyên yekser", + "notifications.column_settings.reblog": "Bilindkirî:", + "notifications.column_settings.show": "Di nav stûnê de nîşan bike", + "notifications.column_settings.sound": "Deng lêxe", + "notifications.column_settings.status": "Şandiyên nû:", + "notifications.column_settings.unread_notifications.category": "Agahdariyên nexwendî", + "notifications.column_settings.unread_notifications.highlight": "Agahiyên nexwendî nîşan bike", + "notifications.column_settings.update": "Serrastkirin:", + "notifications.filter.all": "Hemû", + "notifications.filter.boosts": "Bilindkirî", + "notifications.filter.favourites": "Bijarte", + "notifications.filter.follows": "Dişopîne", + "notifications.filter.mentions": "Qalkirin", + "notifications.filter.polls": "Encamên rapirsiyê", + "notifications.filter.statuses": "Ji kesên tu dişopînî re rojanekirin", + "notifications.grant_permission": "Destûrê bide.", + "notifications.group": "{count} agahdarî", + "notifications.mark_as_read": "Hemî agahdarîya wek xwendî nîşan bike", + "notifications.permission_denied": "Agahdarîyên sermaseyê naxebite ji ber ku berê de daxwazî ya destûr dayîna gerokê hati bû red kirin", + "notifications.permission_denied_alert": "Agahdarîyên sermaseyê nay çalak kirin, ji ber ku destûr kirina gerokê pêşî de hati bû red kirin", + "notifications.permission_required": "Agahdarîyên sermaseyê naxebite çunkî mafê pêwîst dike nehatiye dayîn.", + "notifications_permission_banner.enable": "Agahdarîyên sermaseyê çalak bike", + "notifications_permission_banner.how_to_control": "Da ku agahdariyên mastodon bistînî gava ne vekirî be. Agahdariyên sermaseyê çalak bike\n Tu dikarî agahdariyên sermaseyê bi rê ve bibî ku bi hemû cureyên çalakiyên ên ku agahdariyan rû didin ku bi riya tikandînê li ser bişkoka {icon} çalak dibe.", + "notifications_permission_banner.title": "Tu tiştî bîr neke", + "picture_in_picture.restore": "Vegerîne paş", + "poll.closed": "Girtî", + "poll.refresh": "Nû bike", + "poll.total_people": "{count, plural, one {# kes} other {# kes}}", + "poll.total_votes": "{count, plural, one {# deng} other {# deng}}", + "poll.vote": "Deng bide", + "poll.voted": "Te dengê xwe da vê bersivê", + "poll.votes": "{votes, plural, one {# deng} other {# deng}}", + "poll_button.add_poll": "Rapirsîyek zêde bike", + "poll_button.remove_poll": "Rapirsî yê rake", + "privacy.change": "Nepênîtiya şandiyan biguherîne", + "privacy.direct.long": "Tenê ji bo bikarhênerên qalkirî tê dîtin", + "privacy.direct.short": "Tenê mirovên ku min qalkirî", + "privacy.private.long": "Tenê bo şopîneran xuyabar e", + "privacy.private.short": "Tenê şopîneran", + "privacy.public.long": "Ji bo hemûyan xuyabar e", + "privacy.public.short": "Gelemperî", + "privacy.unlisted.long": "Ji bo hemûyan xuyabar e, lê ji taybetmendiyên vekolînê veqetiya ye", + "privacy.unlisted.short": "Nerêzok", + "refresh": "Nû bike", + "regeneration_indicator.label": "Tê barkirin…", + "regeneration_indicator.sublabel": "Mala te da tê amedekirin!", + "relative_time.days": "{number}r", + "relative_time.full.days": "{number, plural, one {# roj} other {# roj}} berê", + "relative_time.full.hours": "{number, plural, one {# demjimêr} other {# demjimêr}} berê", + "relative_time.full.just_now": "hema niha", + "relative_time.full.minutes": "{number, plural, one {# xulek} other {# xulek}} berê", + "relative_time.full.seconds": "{number, plural, one {# çirke} other {# çirke}} berê", + "relative_time.hours": "{number}d", + "relative_time.just_now": "niha", + "relative_time.minutes": "{number}x", + "relative_time.seconds": "{number}ç", + "relative_time.today": "îro", + "reply_indicator.cancel": "Dev jê berde", + "report.block": "Asteng bike", + "report.block_explanation": "Tu yê şandiyên wan nebînî. Ew ê nikaribin şandiyên te bibînin an jî te bişopînin. Ew ê bizanibin ku ew hatine astengkirin.", + "report.categories.other": "Yên din", + "report.categories.spam": "Nexwestî (Spam)", + "report.categories.violation": "Naverok yek an çend rêbazên rajekar binpê dike", + "report.category.subtitle": "Baştirîn lihevhatin hilbijêre", + "report.category.title": "Ji me re bêje ka çi diqewime bi vê {type} re", + "report.category.title_account": "profîl", + "report.category.title_status": "şandî", + "report.close": "Qediya", + "report.comment.title": "Tiştek din heye ku tu difikirî ku divê em zanibin?", + "report.forward": "Biçe bo {target}", + "report.forward_hint": "Ajimêr ji rajekarek din da ne. Tu kopîyeka anonîm ya raporê bişînî li wur?", + "report.mute": "Bêdeng bike", + "report.mute_explanation": "Tê yê şandiyên wan nebînî. Ew hin jî dikarin te bişopînin û şandiyên te bibînin û wê nizanibin ku ew hatine bêdengkirin.", + "report.next": "Pêş", + "report.placeholder": "Şiroveyên zêde", + "report.reasons.dislike": "Ez jê hez nakim", + "report.reasons.dislike_description": "Ew ne tiştek e ku tu dixwazî bibînî", + "report.reasons.other": "Tiştekî din e", + "report.reasons.other_description": "Pirsgirêk di kategoriyên din de cih nagire", + "report.reasons.spam": "Ew spam e", + "report.reasons.spam_description": "Girêdanên xerab, tevlêbûna sexte, an jî bersivên dubarekirî", + "report.reasons.violation": "Ew rêzikên rajekar binpê dike", + "report.reasons.violation_description": "Tu dizanî ku ew rêzikên taybetiyê binpê dike", + "report.rules.subtitle": "Hemûyên ku têne sepandin hibijêre", + "report.rules.title": "Kîjan rêzik têne binpêkirin?", + "report.statuses.subtitle": "Hemûyên ku têne sepandin hibijêre", + "report.statuses.title": "Tu şandiyên ku vê ragihandinê piştgirî dikin hene?", + "report.submit": "Bişîne", + "report.target": "Ragihandin {target}", + "report.thanks.take_action": "Li vir vebijêrkên te hene ji bo kontrolkirina tiştê ku tu li se Mastodon dibînî:", + "report.thanks.take_action_actionable": "Dema ku em vê yekê dinirxînin, tu dikarî li dijî @{name} tedbîran bigirî:", + "report.thanks.title": "Tu naxwazî vê bibînî?", + "report.thanks.title_actionable": "Spas ji bo ragihandina te, em ê binirxînin.", + "report.unfollow": "@{name} neşopîne", + "report.unfollow_explanation": "Tê vê ajimêrê dişopînî. Ji bo ku êdî şandiyên wan di rojeva xwe de nebînî, wan neşopîne.", + "search.placeholder": "Bigere", + "search_popout.search_format": "Dirûva lêgerîna pêşketî", + "search_popout.tips.full_text": "Nivîsên hêsan, şandiyên ku te nivîsandiye, bijare kiriye, bilind kiriye an jî yên behsa te kirine û her wiha navê bikarhêneran, navên xûya dike û hashtagan vedigerîne.", + "search_popout.tips.hashtag": "hashtag", + "search_popout.tips.status": "şandî", + "search_popout.tips.text": "Nivîsên hêsan, navên xûya ên ku li hev hatî, bikarhêner û hashtagan vedigerîne", + "search_popout.tips.user": "bikarhêner", + "search_results.accounts": "Mirov", + "search_results.all": "Hemû", + "search_results.hashtags": "Hashtag", + "search_results.nothing_found": "Ji bo van peyvên lêgerînê tiştek nehate dîtin", + "search_results.statuses": "Şandî", + "search_results.statuses_fts_disabled": "Di vê rajekara Mastodonê da lêgerîna şandîyên li gorî naveroka wan ne çalak e.", + "search_results.total": "{count, number} {count, plural, one {encam} other {encam}}", + "status.admin_account": "Ji bo @{name} navrûya venihêrtinê veke", + "status.admin_status": "Vê şandîyê di navrûya venihêrtinê de veke", + "status.block": "@{name} asteng bike", + "status.bookmark": "Şûnpel", + "status.cancel_reblog_private": "Bilind neke", + "status.cannot_reblog": "Ev şandî nayê bilindkirin", + "status.copy": "Girêdanê jê bigire bo weşankirinê", + "status.delete": "Jê bibe", + "status.detailed_status": "Dîtina axaftina berfireh", + "status.direct": "Peyama rasterast @{name}", + "status.edit": "Serrast bike", + "status.edited": "Di {date} de hate serrastkirin", + "status.edited_x_times": "{count, plural, one {{count} car} other {{count} car}} hate serrastkirin", + "status.embed": "Hedimandî", + "status.favourite": "Bijarte", + "status.filtered": "Parzûnkirî", + "status.history.created": "{name} {date} afirand", + "status.history.edited": "{name} {date} serrast kir", + "status.load_more": "Bêtir bar bike", + "status.media_hidden": "Medya veşartî ye", + "status.mention": "Qal @{name} bike", + "status.more": "Bêtir", + "status.mute": "@{name} Bêdeng bike", + "status.mute_conversation": "Axaftinê bêdeng bike", + "status.open": "Vê şandiyê berferh bike", + "status.pin": "Li ser profîlê derzî bike", + "status.pinned": "Şandiya derzîkirî", + "status.read_more": "Bêtir bixwîne", + "status.reblog": "Bilind bike", + "status.reblog_private": "Bi dîtina resen bilind bike", + "status.reblogged_by": "{name} bilind kir", + "status.reblogs.empty": "Kesekî hin ev şandî bilind nekiriye. Gava kesek bilind bike, ew ên li vir werin xuyakirin.", + "status.redraft": "Jê bibe & ji nû ve reşnivîs bike", + "status.remove_bookmark": "Şûnpêlê jê rake", + "status.reply": "Bersivê bide", + "status.replyAll": "Mijarê bibersivîne", + "status.report": "{name} gilî bike", + "status.sensitive_warning": "Naveroka hestiyarî", + "status.share": "Parve bike", + "status.show_less": "Kêmtir nîşan bide", + "status.show_less_all": "Ji bo hemîyan kêmtir nîşan bide", + "status.show_more": "Hêj zehftir nîşan bide", + "status.show_more_all": "Bêtir nîşan bide bo hemûyan", + "status.show_thread": "Mijarê nîşan bide", + "status.uncached_media_warning": "Tune ye", + "status.unmute_conversation": "Axaftinê bêdeng neke", + "status.unpin": "Şandiya derzîkirî ji profîlê rake", + "suggestions.dismiss": "Pêşniyarê paşguh bike", + "suggestions.header": "Dibe ku bala te bikşîne…", + "tabs_bar.federated_timeline": "Giştî", + "tabs_bar.home": "Serrûpel", + "tabs_bar.local_timeline": "Herêmî", + "tabs_bar.notifications": "Agahdarî", + "tabs_bar.search": "Bigere", + "time_remaining.days": "{number, plural, one {# roj} other {# roj}} maye", + "time_remaining.hours": "{number, plural, one {# demjimêr} other {# demjimêr}} maye", + "time_remaining.minutes": "{number, plural, one {# xulek} other {# xulek}} maye", + "time_remaining.moments": "Demên mayî", + "time_remaining.seconds": "{number, plural, one {# çirke} other {# çirke}} maye", + "timeline_hint.remote_resource_not_displayed": "{resource} Ji rajekerên din nayê dîtin.", + "timeline_hint.resources.followers": "Şopîner", + "timeline_hint.resources.follows": "Dişopîne", + "timeline_hint.resources.statuses": "Şandiyên kevn", + "trends.counter_by_accounts": "{count, plural, one {{counter} kes} other {{counter} kes}} diaxivin", + "trends.trending_now": "Rojev", + "ui.beforeunload": "Ger ji Mastodonê veketi wê reşnivîsa te jî winda bibe.", + "units.short.billion": "{count}B", + "units.short.million": "{count}M", + "units.short.thousand": "{count}H", + "upload_area.title": "Ji bo barkirinê kaş bike û deyne", + "upload_button.label": "Wêne, vîdeoyek an jî pelê dengî tevlî bike", + "upload_error.limit": "Sînora barkirina pelan derbas bû.", + "upload_error.poll": "Di rapirsîyan de mafê barkirina pelan nayê dayîn.", + "upload_form.audio_description": "Ji bona kesên kêm dibihîsin re pênase bike", + "upload_form.description": "Ji bona astengdarên dîtinê re vebêje", + "upload_form.description_missing": "Ti danasîn nehatiye tevlîkirin", + "upload_form.edit": "Serrast bike", + "upload_form.thumbnail": "Wêneyê biçûk biguherîne", + "upload_form.undo": "Jê bibe", + "upload_form.video_description": "Ji bo kesên kerr û lalan pênase bike", + "upload_modal.analyzing_picture": "Wêne tê analîzkirin…", + "upload_modal.apply": "Bisepîne", + "upload_modal.applying": "Tê sepandin…", + "upload_modal.choose_image": "Wêneyê hilbijêre", + "upload_modal.description_placeholder": "Rovîyek qehweyî û bilez li ser kûçikê tîral banz dide", + "upload_modal.detect_text": "Ji nivîsa wêneyê re serwext be", + "upload_modal.edit_media": "Medyayê sererast bike", + "upload_modal.hint": "Ji bo hilbijartina xala navendê her tim dîmenê piçûk de pêşdîtina çerxê bitikîne an jî kaş bike.", + "upload_modal.preparing_ocr": "OCR dihê amadekirin…", + "upload_modal.preview_label": "Pêşdîtin ({ratio})", + "upload_progress.label": "Tê barkirin...", + "video.close": "Vîdyoyê bigire", + "video.download": "Pelê daxe", + "video.exit_fullscreen": "Ji dîmendera tijî derkeve", + "video.expand": "Vîdyoyê berferh bike", + "video.fullscreen": "Dimendera tijî", + "video.hide": "Vîdyo veşêre", + "video.mute": "Dengê qut bike", + "video.pause": "Rawestîne", + "video.play": "Vêxe", + "video.unmute": "Dengê qut neke" } diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index 9a8c9685a..7aa686a7a 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -18,12 +18,12 @@ "account.followers": "Holyoryon", "account.followers.empty": "Ny wra nagonan holya'n devnydhyer ma hwath.", "account.followers_counter": "{count, plural, one {{counter} Holyer} other {{counter} Holyer}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {Ow holya {counter}} other {Ow holya {counter}}}", "account.follows.empty": "Ny wra'n devnydhyer ma holya nagonan hwath.", "account.follows_you": "Y'th hol", "account.hide_reblogs": "Kudha kenerthow a @{name}", "account.joined": "Joined {date}", - "account.last_status": "Bew diwettha", "account.link_verified_on": "Perghenogeth an kolm ma a veu checkys dhe {date}", "account.locked_info": "Studh privetter an akont ma yw alhwedhys. An perghen a wra dasweles dre leuv piw a yll aga holya.", "account.media": "Myski", @@ -32,7 +32,6 @@ "account.mute": "Tawhe @{name}", "account.mute_notifications": "Tawhe gwarnyansow a @{name}", "account.muted": "Tawhes", - "account.never_active": "Nevra", "account.posts": "Postow", "account.posts_with_replies": "Postow ha gorthebow", "account.report": "Reportya @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Tout} other {{counter} Tout}}", "account.unblock": "Anlettya @{name}", "account.unblock_domain": "Anlettya gorfarth {domain}", + "account.unblock_short": "Unblock", "account.unendorse": "Na wra diskwedhes yn profil", "account.unfollow": "Anholya", "account.unmute": "Antawhe @{name}", "account.unmute_notifications": "Antawhe gwarnyansow a @{name}", + "account.unmute_short": "Unmute", "account_note.placeholder": "Klyckya dhe geworra noten", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "Devnydhyoryon lettys", "column.bookmarks": "Folennosow", "column.community": "Amserlin leel", - "column.direct": "Messajys didro", + "column.conversations": "Conversations", "column.directory": "Peuri profilys", "column.domain_blocks": "Gorfarthow lettys", "column.favourites": "Re drudh", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Leel hepken", "community.column_settings.media_only": "Myski hepken", "community.column_settings.remote_only": "A-bell hepken", - "compose_form.direct_message_warning": "An post ma a vydh danvenys dhe'n dhevnydhyoryon menegys hepken.", "compose_form.direct_message_warning_learn_more": "Dyski moy", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Ny vydh an post ma diskwedhys yn-dann vòlnos vyth awos y vos mes a rol. Ny yllir hwilas saw poblow postek dre vòlnos.", "compose_form.lock_disclaimer": "Nyns yw agas akont {locked}. Piwpynag a yll agas holya dhe weles agas postow holyoryon-hepken.", "compose_form.lock_disclaimer.lock": "Alhwedhys", @@ -165,8 +166,9 @@ "empty_column.blocks": "Ny wrussowgh lettya devnydhyoryon vyth hwath.", "empty_column.bookmarked_statuses": "Nyns eus dhywgh postow gans folennos hwath. Pan wrewgh gorra onan, ev a wra omdhiskwedhes omma.", "empty_column.community": "An amserlin leel yw gwag. Skrifewgh neppytn yn poblek dh'y lonchya!", - "empty_column.direct": "Nyns eus dhywgh messajys didro hwath. Pan wrewgh dannvon po degemeres onan, ev a wra omdhiskwedhes omma.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Nyns eus gorfarthow lettys hwath.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Nyns eus dhywgh postow drudh hwath. Pan wrewgh merkya onan vel drudh, ev a wra omdhiskwedhes omma.", "empty_column.favourites": "Ny wrug nagonan merkya'n post ma vel drudh hwath. Pan wra, hynn a wra omdhiskwedhes omma.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Assayewgh aga disweythresa ha daskarga'n folen. Mar ny'gas gweres, martesen hwi a yll hwath usya Mastodon dre beurell aral po app teythyek.", "errors.unexpected_crash.copy_stacktrace": "Dasskrifa daslergh dhe'n astel glypp", "errors.unexpected_crash.report_issue": "Reportya kudyn", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Gwrys", "follow_recommendations.heading": "Holyewgh tus a vynnowgh gweles postow anedha! Ottomma nebes profyansow.", "follow_recommendations.lead": "Postow a dus a holyewgh a wra omdhiskwedhes omma yn aray termynel yn agas lin dre. Na borthewgh own a gammwul, hwi a yll p'eurpynag anholya tus mar es poran!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "Kenertha post", "keyboard_shortcuts.column": "Fogella koloven", "keyboard_shortcuts.compose": "Fogella tekstva gomposya", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Deskrifans", - "keyboard_shortcuts.direct": "Ygeri koloven messajys didro", "keyboard_shortcuts.down": "Movya war-nans y'n rol", "keyboard_shortcuts.enter": "Ygeri post", "keyboard_shortcuts.favourite": "Merkya post vel drudh", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Folennosow", "navigation_bar.community_timeline": "Amserlin leel", "navigation_bar.compose": "Komposya post nowydh", - "navigation_bar.direct": "Messajys didro", "navigation_bar.discover": "Diskudha", "navigation_bar.domain_blocks": "Gorfarthow lettys", "navigation_bar.edit_profile": "Golegi profil", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Re drudh", "navigation_bar.filters": "Geryow tawhes", "navigation_bar.follow_requests": "Govynnow holya", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Erviransow", "navigation_bar.public_timeline": "Amserlin geffrysys", "navigation_bar.security": "Diogeledh", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} a wrug merkya agas post vel drudh", "notification.follow": "{name} a wrug agas holya", "notification.follow_request": "{name} a bysis agas holya", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Dilea gwarnyansow", "notifications.clear_confirmation": "Owgh hwi sur a vynnes dilea agas gwarnyansow oll yn fast?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Gwarnyansow pennskrin", "notifications.column_settings.favourite": "Re drudh:", "notifications.column_settings.filter_bar.advanced": "Displetya rummow oll", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Dilea sondyans", "privacy.change": "Chanjya privetter an post", "privacy.direct.long": "Gweladow dhe'n dhevnydhyoryon menegys hepken", - "privacy.direct.short": "Didro", + "privacy.direct.short": "Direct", "privacy.private.long": "Gweladow dhe holyoryon hepken", - "privacy.private.short": "Holyoryon-hepken", - "privacy.public.long": "Gweladow dhe beub, diskwedhys yn amserlinyow poblek", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Poblek", - "privacy.unlisted.long": "Gweladow dhe beub, a-der yn amserlinyow poblek", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Anrelys", "refresh": "Daskarga", "regeneration_indicator.label": "Ow karga…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}e", "relative_time.today": "hedhyw", "reply_indicator.cancel": "Hedhi", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Dasvovya dhe {target}", "report.forward_hint": "Yma'n akont ma a leuren aral. Dannvon dasskrif dihanow an derivas ena ynwedh?", - "report.hint": "An derivas a vydh danvenys dhe goswydhyon agas leuren. Hwi a yll profya displegyans a prag ytho owgh hwi ow reportya'n akont ma a-wòles:", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", "report.placeholder": "Kampòllow ynwedhek", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Dannvon", "report.target": "Ow reportya {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Hwilas", "search_popout.search_format": "Furvas hwilas avonsys", "search_popout.tips.full_text": "Tekst sempel a wra daskor postow a wrussowgh aga skrifa, merkya vel drudh, po bos menegys ynna, keffrys ha henwyn devnydhyoryon ha displetyans, ha bòlnosow a dhesedh.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Tekst sempel a wra daskor henwyn displegya ha devnydhyoryon, ha bòlnosow", "search_popout.tips.user": "devnydhyer", "search_results.accounts": "Tus", + "search_results.all": "All", "search_results.hashtags": "Bòlnosow", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Postow", "search_results.statuses_fts_disabled": "Nyns yw hwilas postow der aga dalgh gweythresys y'n leuren Mastodon ma.", "search_results.total": "{count, number} {count, plural, one {sewyans} other {sewyans}}", @@ -474,6 +514,7 @@ "upload_error.poll": "Nyns yw gesys ughkarga restrennow gans sondyansow.", "upload_form.audio_description": "Deskrifewgh rag tus vodharek", "upload_form.description": "Deskrifewgh rag tus dhallek", + "upload_form.description_missing": "No description added", "upload_form.edit": "Golegi", "upload_form.thumbnail": "Chanjya avenik", "upload_form.undo": "Dilea", diff --git a/app/javascript/mastodon/locales/locale-data/sa.js b/app/javascript/mastodon/locales/locale-data/sa.js new file mode 100644 index 000000000..946dfde0f --- /dev/null +++ b/app/javascript/mastodon/locales/locale-data/sa.js @@ -0,0 +1,97 @@ +/*eslint eqeqeq: "off"*/ +/*eslint no-nested-ternary: "off"*/ +/*eslint quotes: "off"*/ +/*eslint comma-dangle: "off"*/ +/*eslint semi: "off"*/ + +export default [ + { + locale: "sa", + fields: { + year: { + displayName: "year", + relative: { + 0: "this year", + 1: "next year", + "-1": "last year" + }, + relativeTime: { + future: { + other: "+{0} y" + }, + past: { + other: "-{0} y" + } + } + }, + month: { + displayName: "month", + relative: { + 0: "this month", + 1: "next month", + "-1": "last month" + }, + relativeTime: { + future: { + other: "+{0} m" + }, + past: { + other: "-{0} m" + } + } + }, + day: { + displayName: "day", + relative: { + 0: "अद्य", + 1: "श्वः", + "-1": "गतदिनम्" + }, + relativeTime: { + future: { + other: "+{0} d" + }, + past: { + other: "-{0} d" + } + } + }, + hour: { + displayName: "hour", + relativeTime: { + future: { + other: "+{0} h" + }, + past: { + other: "-{0} h" + } + } + }, + minute: { + displayName: "minute", + relativeTime: { + future: { + other: "+{0} min" + }, + past: { + other: "-{0} min" + } + } + }, + second: { + displayName: "second", + relative: { + 0: "now" + }, + relativeTime: { + future: { + other: "+{0} s" + }, + past: { + other: "-{0} s" + } + } + } + } + } +] diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index c9f8f32d2..ade4933f9 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -18,12 +18,12 @@ "account.followers": "Followers", "account.followers.empty": "No one follows this user yet.", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", - "account.last_status": "Last active", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", @@ -32,7 +32,6 @@ "account.mute": "Mute @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Užtildytas", - "account.never_active": "Niekada", "account.posts": "Toots", "account.posts_with_replies": "Toots and replies", "account.report": "Report @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "Unblock @{name}", "account.unblock_domain": "Unhide {domain}", + "account.unblock_short": "Unblock", "account.unendorse": "Don't feature on profile", "account.unfollow": "Nebesekti", "account.unmute": "Unmute @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", + "account.unmute_short": "Unmute", "account_note.placeholder": "Click to add a note", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.conversations": "Conversations", "column.directory": "Browse profiles", "column.domain_blocks": "Hidden domains", "column.favourites": "Mėgstamiausi", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Remote only", - "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.", "compose_form.direct_message_warning_learn_more": "Learn more", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "locked", @@ -165,8 +166,9 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "There are no hidden domains yet.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", "errors.unexpected_crash.report_issue": "Report issue", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Favourites", "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", "notification.follow_request": "{name} has requested to follow you", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.filter_bar.advanced": "Display all categories", @@ -359,9 +369,9 @@ "privacy.direct.short": "Direct", "privacy.private.long": "Post to followers only", "privacy.private.short": "Followers-only", - "privacy.public.long": "Post to public timelines", + "privacy.public.long": "Visible for all", "privacy.public.short": "Public", - "privacy.unlisted.long": "Do not show in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "Cancel", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", - "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", - "report.placeholder": "Additional comments", - "report.submit": "Submit", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", + "report.placeholder": "Type or paste additional comments", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", + "report.submit": "Submit report", "report.target": "Report {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Search", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", "search_popout.tips.user": "user", "search_results.accounts": "People", + "search_results.all": "All", "search_results.hashtags": "Hashtags", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", @@ -474,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Delete", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 955d2afa3..3bfb7532a 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -18,12 +18,12 @@ "account.followers": "Sekotāji", "account.followers.empty": "Šim lietotājam patreiz nav sekotāju.", "account.followers_counter": "{count, plural, one {{counter} Sekotājs} other {{counter} Sekotāji}}", + "account.following": "Seko", "account.following_counter": "{count, plural, one {{counter} Sekojošs} other {{counter} Sekojoši}}", "account.follows.empty": "Šis lietotājs pagaidām nevienam neseko.", "account.follows_you": "Seko tev", "account.hide_reblogs": "Paslēpt paceltos ierakstus no lietotāja @{name}", "account.joined": "Pievienojās {date}", - "account.last_status": "Pēdējā aktivitāte", "account.link_verified_on": "Šīs saites piederība ir pārbaudīta {date}", "account.locked_info": "Šī konta privātuma statuss ir slēgts. Īpašnieks izskatīs, kurš viņam drīkst sekot.", "account.media": "Mediji", @@ -32,7 +32,6 @@ "account.mute": "Apklusināt @{name}", "account.mute_notifications": "Nerādīt paziņojumus no @{name}", "account.muted": "Apklusināts", - "account.never_active": "Nekad", "account.posts": "Ziņas", "account.posts_with_replies": "Ziņas un atbildes", "account.report": "Ziņot par lietotāju @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} ziņa} other {{counter} ziņas}}", "account.unblock": "Atbloķēt lietotāju @{name}", "account.unblock_domain": "Atbloķēt domēnu {domain}", + "account.unblock_short": "Atbloķēt", "account.unendorse": "Neattēlot profilā", "account.unfollow": "Pārstāt sekot", "account.unmute": "Noņemt apklusinājumu @{name}", "account.unmute_notifications": "Rādīt paziņojumus no lietotāja @{name}", + "account.unmute_short": "Ieslēgt skaņu", "account_note.placeholder": "Noklikšķiniet, lai pievienotu piezīmi", "admin.dashboard.daily_retention": "Lietotāju saglabāšanas rādītājs dienā pēc reģistrēšanās", "admin.dashboard.monthly_retention": "Lietotāju saglabāšanas rādītājs mēnesī pēc reģistrēšanās", @@ -69,7 +70,7 @@ "column.blocks": "Bloķētie lietotāji", "column.bookmarks": "Grāmatzīmes", "column.community": "Vietējā ziņu līnija", - "column.direct": "Privātās ziņas", + "column.conversations": "Sarunas", "column.directory": "Pārlūkot profilus", "column.domain_blocks": "Bloķētie domēni", "column.favourites": "Izlase", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Tikai vietējie", "community.column_settings.media_only": "Tikai mediji", "community.column_settings.remote_only": "Tikai attālinātie", - "compose_form.direct_message_warning": "Šis ziņojums tiks nosūtīts tikai pieminētajiem lietotājiem.", "compose_form.direct_message_warning_learn_more": "Uzzināt vairāk", + "compose_form.encryption_warning": "Ziņas vietnē Mastodon nav pilnībā šifrētas. Nedalies ar bīstamu informāciju caur Mastodon.", "compose_form.hashtag_warning": "Ziņojumu nebūs iespējams atrast zem haštagiem jo tas nav publisks. Tikai publiskos ziņojumus ir iespējams meklēt pēc tiem.", "compose_form.lock_disclaimer": "Tavs konts nav {locked}. Ikviens var Tev sekot lai apskatītu tikai sekotājiem paredzētos ziņojumus.", "compose_form.lock_disclaimer.lock": "slēgts", @@ -165,8 +166,9 @@ "empty_column.blocks": "Patreiz tu neesi nevienu bloķējis.", "empty_column.bookmarked_statuses": "Patreiz tev nav neviena grāmatzīmēm pievienota ieraksta. Kad tādu pievienosi, tas parādīsies šeit.", "empty_column.community": "Vietējā ziņu lenta ir tukša. Uzraksti kaut ko publiski, lai viss notiktu!", - "empty_column.direct": "Patrez tev nav privātu ziņu. Tiklīdz tādu nosūtīsi vai saņemsi, tās parādīsies šeit.", + "empty_column.conversations": "Kad nosūtīsi vai saņemsi ziņu, kas ir redzama tikai tajā minētajām personām, tā tiks parādīta šeit.", "empty_column.domain_blocks": "Vēl nav neviena bloķēta domēna.", + "empty_column.explore_statuses": "Pašlaik nekas nav tendēts. Pārbaudiet vēlāk!", "empty_column.favourited_statuses": "Patreiz tev nav neviena izceltā ieraksta. Kad kādu izcelsi, tas parādīsies šeit.", "empty_column.favourites": "Neviens šo ziņojumu vel nav izcēlis. Kad būs, tie parādīsies šeit.", "empty_column.follow_recommendations": "Šķiet, ka tev nevarēja ģenerēt ieteikumus. Vari mēģināt izmantot meklēšanu, lai meklētu cilvēkus, kurus tu varētu pazīt, vai izpētīt populārākās atsauces.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Mēģini tos atspējot un atsvaidzināt lapu. Ja tas nepalīdz, iespējams, varēsi lietot Mastodon, izmantojot citu pārlūkprogrammu vai vietējo lietotni.", "errors.unexpected_crash.copy_stacktrace": "Iekopēt starpliktuvē", "errors.unexpected_crash.report_issue": "Ziņot par problēmu", + "explore.search_results": "Meklēšanas rezultāti", + "explore.suggested_follows": "Tev", + "explore.title": "Pārlūkot", + "explore.trending_links": "Jaunumi", + "explore.trending_statuses": "Ziņas", + "explore.trending_tags": "Tēmturi", "follow_recommendations.done": "Izpildīts", "follow_recommendations.heading": "Seko cilvēkiem, no kuriem vēlies redzēt ziņas! Šeit ir daži ieteikumi.", "follow_recommendations.lead": "Ziņas no cilvēkiem, kuriem seko, mājas plūsmā tiks parādītas hronoloģiskā secībā. Nebaidies kļūdīties, tu tikpat viegli vari pārtraukt sekot cilvēkiem jebkurā laikā!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "Palielināt ziņu", "keyboard_shortcuts.column": "Fokusēt kolonnu", "keyboard_shortcuts.compose": "Fokusēt veidojamā teksta lauku", + "keyboard_shortcuts.conversations": "lai atvērtu sarunu kolonnu", "keyboard_shortcuts.description": "Apraksts", - "keyboard_shortcuts.direct": "Atvērt privāto ziņojumu kolonnu", "keyboard_shortcuts.down": "Pārvietot sarakstā uz leju", "keyboard_shortcuts.enter": "Atvērt ziņu", "keyboard_shortcuts.favourite": "Pievienot izlasei", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Grāmatzīmes", "navigation_bar.community_timeline": "Vietējā ziņu lenta", "navigation_bar.compose": "Veidot jaunu ziņu", - "navigation_bar.direct": "Privātās ziņas", "navigation_bar.discover": "Atklāt", "navigation_bar.domain_blocks": "Bloķētie domēni", "navigation_bar.edit_profile": "Rediģēt profilu", + "navigation_bar.explore": "Pārlūkot", "navigation_bar.favourites": "Izlases", "navigation_bar.filters": "Klusināti vārdi", "navigation_bar.follow_requests": "Sekošanas pieprasījumi", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Iestatījumi", "navigation_bar.public_timeline": "Apvienotā ziņu lenta", "navigation_bar.security": "Drošība", + "notification.admin.sign_up": "{name} ir pierakstījies", "notification.favourite": "{name} izcēla tavu ziņu", "notification.follow": "{name} uzsāka tev sekot", "notification.follow_request": "{name} vēlas tev sekot", @@ -311,6 +320,7 @@ "notification.update": "{name} ir rediģējis rakstu", "notifications.clear": "Notīrīt paziņojumus", "notifications.clear_confirmation": "Vai tiešām vēlies neatgriezeniski notīrīt visus savus paziņojumus?", + "notifications.column_settings.admin.sign_up": "Jaunas pierakstīšanās:", "notifications.column_settings.alert": "Darbvirsmas paziņojumi", "notifications.column_settings.favourite": "Izlases:", "notifications.column_settings.filter_bar.advanced": "Rādīt visas kategorijas", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Noņemt aptauju", "privacy.change": "Mainīt ziņas privātumu", "privacy.direct.long": "Redzams tikai pieminētajiem lietotājiem", - "privacy.direct.short": "Tiešs", + "privacy.direct.short": "Tikai cilvēki, kurus es pieminu", "privacy.private.long": "Redzams tikai sekotājiem", "privacy.private.short": "Tikai sekotājiem", - "privacy.public.long": "Redzams visiem, rāda publiskajās ziņu lentās", + "privacy.public.long": "Redzama visiem", "privacy.public.short": "Publisks", - "privacy.unlisted.long": "Redzams visiem, bet ne publiskajās ziņu lentās", + "privacy.unlisted.long": "Redzama visiem, bet atteicās no atklāšanas funkcijām", "privacy.unlisted.short": "Neminētie", "refresh": "Atsvaidzināt", "regeneration_indicator.label": "Ielādē…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "šodien", "reply_indicator.cancel": "Atcelt", + "report.block": "Bloķēt", + "report.block_explanation": "Tu neredzēsi viņu ziņas. Viņi nevarēs redzēt tavas ziņas vai sekot tev. Viņi varēs pateikt, ka ir bloķēti.", "report.categories.other": "Citi", "report.categories.spam": "Spams", "report.categories.violation": "Saturs pārkāpj vienu vai vairākus servera noteikumus", + "report.category.subtitle": "Izvēlieties labāko atbilstību", + "report.category.title": "Pastāsti mums, kas notiek ar šo {type}", + "report.category.title_account": "profils", + "report.category.title_status": "ziņa", + "report.close": "Izpildīts", + "report.comment.title": "Vai ir vēl kas, tavuprāt, mums būtu jāzina?", "report.forward": "Pārsūtīt {target}", "report.forward_hint": "Konts ir no cita servera. Vai nosūtīt anonimizētu ziņojuma kopiju arī tam?", - "report.hint": "Pārskats tiks nosūtīts tava servera moderatoriem. Tu vari pievienot paskaidrojumu, kādēļ tu ziņo par kontu:", + "report.mute": "Apklusināt", + "report.mute_explanation": "Tu neredzēsi viņu ziņas. Viņi joprojām var tev sekot un redzēt tavas ziņas un nezinās, ka viņiem ir izslēgta skaņa.", + "report.next": "Nākamais", "report.placeholder": "Papildu komentāri", + "report.reasons.dislike": "Man tas nepatīk", + "report.reasons.dislike_description": "Tas nav kaut kas, ko tu vēlies redzēt", + "report.reasons.other": "Tas ir kaut kas cits", + "report.reasons.other_description": "Šis jautājums neietilpst citās kategorijās", + "report.reasons.spam": "Tas ir spams", + "report.reasons.spam_description": "Ļaunprātīgas saites, viltus iesaistīšana vai atkārtotas atbildes", + "report.reasons.violation": "Tas pārkāpj servera noteikumus", + "report.reasons.violation_description": "Tu zini, ka tas pārkāpj īpašus noteikumus", + "report.rules.subtitle": "Atlasi visus atbilstošos", + "report.rules.title": "Kuri noteikumi tiek pārkāpti?", + "report.statuses.subtitle": "Atlasi visus atbilstošos", + "report.statuses.title": "Vai ir kādas ziņas, kas atbalsta šo ziņojumu?", "report.submit": "Iesniegt", "report.target": "Ziņošana par: {target}", + "report.thanks.take_action": "Tālāk ir norādītas iespējas, kā kontrolēt Mastodon redzamo saturu:", + "report.thanks.take_action_actionable": "Kamēr mēs to izskatām, tu vari veikt darbības pret @{name}:", + "report.thanks.title": "Vai nevēlies to redzēt?", + "report.thanks.title_actionable": "Paldies, ka ziņoji, mēs to izskatīsim.", + "report.unfollow": "Pārtraukt sekošanu @{name}", + "report.unfollow_explanation": "Tu seko šim kontam. Lai vairs neredzētu viņu ziņas savā ziņu plūsmā, pārtrauc viņiem sekot.", "search.placeholder": "Meklēšana", "search_popout.search_format": "Paplašināts meklēšanas formāts", "search_popout.tips.full_text": "Vienkāršs teksts atgriež ziņas, kuras esi rakstījis, iecienījis, paaugstinājis vai pieminējis, kā arī atbilstošie lietotājvārdi, parādāmie vārdi un tēmturi.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Vienkāršs teksts atgriež atbilstošus parādāmos vārdus, lietotājvārdus un mirkļbirkas", "search_popout.tips.user": "lietotājs", "search_results.accounts": "Cilvēki", + "search_results.all": "Visi", "search_results.hashtags": "Tēmturi", + "search_results.nothing_found": "Nevarēja atrast neko šiem meklēšanas vienumiem", "search_results.statuses": "Ziņas", "search_results.statuses_fts_disabled": "Šajā Mastodon serverī nav iespējota ziņu meklēšana pēc to satura.", "search_results.total": "{count, number} {count, plural, one {rezultāts} other {rezultāti}}", @@ -474,6 +514,7 @@ "upload_error.poll": "Datņu augšupielādes aptaujās nav atļautas.", "upload_form.audio_description": "Aprakstiet cilvēkiem ar dzirdes zudumu", "upload_form.description": "Aprakstiet vājredzīgajiem", + "upload_form.description_missing": "Apraksts nav pievienots", "upload_form.edit": "Rediģēt", "upload_form.thumbnail": "Nomainīt sīktēlu", "upload_form.undo": "Dzēst", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index 609232e7a..72bb52adf 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -18,12 +18,12 @@ "account.followers": "Следбеници", "account.followers.empty": "Никој не го следи овој корисник сеуште.", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "Корисникот не следи никој сеуште.", "account.follows_you": "Те следи тебе", "account.hide_reblogs": "Сокриј буст од @{name}", "account.joined": "Joined {date}", - "account.last_status": "Последно активен", "account.link_verified_on": "Сопстевноста на овај линк беше проверен на {date}", "account.locked_info": "Статусот на приватност на овај корисник е сетиран како заклучен. Корисникот одлучува кој можи да го следи него.", "account.media": "Медија", @@ -32,7 +32,6 @@ "account.mute": "Зачути го @{name}", "account.mute_notifications": "Исклучи известувања од @{name}", "account.muted": "Зачутено", - "account.never_active": "Никогаш", "account.posts": "Тутови", "account.posts_with_replies": "Тутови и реплики", "account.report": "Пријави @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "Одблокирај @{name}", "account.unblock_domain": "Прикажи {domain}", + "account.unblock_short": "Unblock", "account.unendorse": "Не прикажувај на профил", "account.unfollow": "Одследи", "account.unmute": "Зачути го @{name}", "account.unmute_notifications": "Исклучи известувања од @{name}", + "account.unmute_short": "Unmute", "account_note.placeholder": "Click to add a note", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "Блокирани корисници", "column.bookmarks": "Bookmarks", "column.community": "Локална временска зона", - "column.direct": "Директна порака", + "column.conversations": "Conversations", "column.directory": "Види профили", "column.domain_blocks": "Скриени домеини", "column.favourites": "Омилени", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Само медиа", "community.column_settings.remote_only": "Remote only", - "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.", "compose_form.direct_message_warning_learn_more": "Научи повеќе", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "заклучен", @@ -165,8 +166,9 @@ "empty_column.blocks": "Немате сеуште блокирано корисници.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "Локалниот времеплов е празен. Објавете нешто јавно за да може да почне шоуто!", - "empty_column.direct": "Немате директни пораки. Кога ќе пратите или примите, ќе се појават тука.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Немате сокриени домеини уште.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", "errors.unexpected_crash.report_issue": "Пријавете проблем", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Уреди профил", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Омилени", "navigation_bar.filters": "Замолќени зборови", "navigation_bar.follow_requests": "Следи покани", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Федеративен времеплов", "navigation_bar.security": "Безбедност", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", "notification.follow_request": "{name} has requested to follow you", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.filter_bar.advanced": "Display all categories", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Избришете анкета", "privacy.change": "Штеловај статус на приватност", "privacy.direct.long": "Објави само на спомнати корисници", - "privacy.direct.short": "Директно", + "privacy.direct.short": "Direct", "privacy.private.long": "Објави само на следбеници", - "privacy.private.short": "Само следбеници", - "privacy.public.long": "Објави во јавни времплови", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Јавно", - "privacy.unlisted.long": "Не објавувај на јавни времеплови", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Необјавено", "refresh": "Освежи", "regeneration_indicator.label": "Вчитување…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}с", "relative_time.today": "today", "reply_indicator.cancel": "Откажи", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Проследи до {target}", "report.forward_hint": "Оваа сметка е од друг сервер. Испрати анонимна копија од пријавата и таму?", - "report.hint": "Пријавата ќе биде испратена до вашиот серверски модератор. Подолу можете да ставите опис зошто ја пријавувате сметката:", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", "report.placeholder": "Додатни коментари", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Испрати", "report.target": "Пријавување {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Барај", "search_popout.search_format": "Напреден формат за барање", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Прост текст враќа совпаднати имиња, корисници и хештагови", "search_popout.tips.user": "user", "search_results.accounts": "People", + "search_results.all": "All", "search_results.hashtags": "Hashtags", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", @@ -474,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Delete", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index e85a5ff75..a1db3f5a5 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -18,12 +18,12 @@ "account.followers": "പിന്തുടരുന്നവർ", "account.followers.empty": "ഈ ഉപയോക്താവിനെ ആരും ഇതുവരെ പിന്തുടരുന്നില്ല.", "account.followers_counter": "{count, plural, one {{counter} പിന്തുടരുന്നവർ} other {{counter} പിന്തുടരുന്നവർ}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} പിന്തുടരുന്നു} other {{counter} പിന്തുടരുന്നു}}", "account.follows.empty": "ഈ ഉപയോക്താവ് ആരേയും ഇതുവരെ പിന്തുടരുന്നില്ല.", "account.follows_you": "നിങ്ങളെ പിന്തുടരുന്നു", "account.hide_reblogs": "@{name} ബൂസ്റ്റ് ചെയ്തവ മറയ്കുക", "account.joined": "{date} ൽ ചേർന്നു", - "account.last_status": "അവസാനം കണ്ടത്", "account.link_verified_on": "ഈ ലിങ്കിന്റെ ഉടമസ്തത {date} ഇൽ ഉറപ്പാക്കിയതാണ്", "account.locked_info": "ഈ അംഗത്വത്തിന്റെ സ്വകാര്യതാ നിലപാട് അനുസരിച്ച് പിന്തുടരുന്നവരെ തിരഞ്ഞെടുക്കാനുള്ള വിവേചനാധികാരം ഉടമസ്ഥനിൽ നിഷിപ്തമായിരിക്കുന്നു.", "account.media": "മീഡിയ", @@ -32,7 +32,6 @@ "account.mute": "@{name}-നെ(യെ) നിശ്ശബ്ദമാക്കൂ", "account.mute_notifications": "@{name} യിൽ നിന്നുള്ള അറിയിപ്പുകൾ നിശബ്ദമാക്കുക", "account.muted": "നിശ്ശബ്ദമാക്കിയിരിക്കുന്നു", - "account.never_active": "ഒരിക്കലും ഇല്ല", "account.posts": "പോസ്റ്റുകൾ", "account.posts_with_replies": "പോസ്റ്റുകളും മറുപടികളും", "account.report": "റിപ്പോർട്ട് ചെയ്യുക @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} ടൂട്ട്} other {{counter} ടൂട്ടുകൾ}}", "account.unblock": "@{name} തടഞ്ഞത് മാറ്റുക", "account.unblock_domain": "{domain} എന്ന മേഖല വെളിപ്പെടുത്തുക", + "account.unblock_short": "Unblock", "account.unendorse": "പ്രൊഫൈലിൽ പ്രകടമാക്കരുത്", "account.unfollow": "പിന്തുടരുന്നത് നിര്‍ത്തുക", "account.unmute": "നിശ്ശബ്ദമാക്കുന്നത് നിർത്തുക @{name}", "account.unmute_notifications": "@{name} യിൽ നിന്നുള്ള അറിയിപ്പുകൾ പ്രസിദ്ധപ്പെടുത്തുക", + "account.unmute_short": "Unmute", "account_note.placeholder": "കുറിപ്പ് ചേർക്കാൻ ക്ലിക്കുചെയ്യുക", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "തടയപ്പെട്ട ഉപയോക്താക്കൾ", "column.bookmarks": "ബുക്ക്മാർക്കുകൾ", "column.community": "പ്രാദേശികമായ സമയരേഖ", - "column.direct": "നേരിട്ടുള്ള സന്ദേശങ്ങൾ", + "column.conversations": "Conversations", "column.directory": "പ്രൊഫൈലുകൾ മറിച്ചുനോക്കുക", "column.domain_blocks": "മറയ്ക്കപ്പെട്ട മേഖലകൾ", "column.favourites": "പ്രിയപ്പെട്ടവ", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "പ്രാദേശികം മാത്രം", "community.column_settings.media_only": "മാധ്യമങ്ങൾ മാത്രം", "community.column_settings.remote_only": "Remote only", - "compose_form.direct_message_warning": "പരാമർശിക്കപ്പെട്ടിരിക്കുന്ന ഉപയോഗ്താക്കൾക്കെ ഈ ടൂട്ട് അയക്കപ്പെടുകയുള്ളു.", "compose_form.direct_message_warning_learn_more": "കൂടുതൽ പഠിക്കുക", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "ഈ ടൂട്ട് പട്ടികയിൽ ഇല്ലാത്തതിനാൽ ഒരു ചർച്ചാവിഷയത്തിന്റെ പട്ടികയിലും പെടുകയില്ല. പരസ്യമായ ടൂട്ടുകൾ മാത്രമേ ചർച്ചാവിഷയം അടിസ്ഥാനമാക്കി തിരയുവാൻ സാധിക്കുകയുള്ളു.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "ലോക്കുചെയ്തു", @@ -165,8 +166,9 @@ "empty_column.blocks": "നിങ്ങൾ ഇതുവരെ ഒരു ഉപയോക്താക്കളെയും തടഞ്ഞിട്ടില്ല.", "empty_column.bookmarked_statuses": "നിങ്ങൾക് ഇതുവരെ അടയാളപ്പെടുത്തിയ ടൂട്ടുകൾ ഇല്ല. അടയാളപ്പെടുത്തിയാൽ അത് ഇവിടെ വരും.", "empty_column.community": "പ്രാദേശികമായ സമയരേഖ ശൂന്യമാണ്. എന്തെങ്കിലും പരസ്യമായി എഴുതി തുടക്കം കുറിക്കു!", - "empty_column.direct": "നിങ്ങൾക്ക് ഇതുവരെ നേരിട്ടുള്ള സന്ദേശങ്ങൾ ഒന്നുമില്ല. നിങ്ങൾ അങ്ങനെ ഒന്ന് അയക്കുകയോ, നിങ്ങൾക്ക് ലഭിക്കുകയോ ചെയ്യുന്നപക്ഷം അതിവിടെ കാണപ്പെടുന്നതാണ്.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "മറയ്ക്കപ്പെട്ടിരിക്കുന്ന മേഖലകൾ ഇതുവരെ ഇല്ല.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "നിങ്ങൾക്ക് ഇത് വരെ ഒരു പ്രിയപ്പെട്ട ടൂട്ടും ഇല്ല. നിങ്ങൾ അങ്ങനെ ഒന്ന് പ്രിയപ്പെടുന്ന പക്ഷം അതിവിടെ കാണപ്പെടുന്നതാണ്.", "empty_column.favourites": "ഇതുവരെ ആരും ഈ ടൂട്ട് പ്രിയപ്പെട്ടതായി അടയാളപ്പെടുത്തിയിട്ടില്ല. ആരെങ്കിലും അങ്ങനെ ചെയ്യുന്നപക്ഷം അതിവിടെ കാണപ്പെടുന്നതാണ്.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", "errors.unexpected_crash.report_issue": "പ്രശ്നം അറിയിക്കുക", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "പൂര്‍ത്തിയായീ", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "ബൂസ്റ്റ് ചെയ്യുക", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "വിവരണം", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "ടൂട്ട് എടുക്കാൻ", "keyboard_shortcuts.favourite": "to favourite", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "ബുക്ക്മാർക്കുകൾ", "navigation_bar.community_timeline": "പ്രാദേശിക സമയരേഖ", "navigation_bar.compose": "പുതിയ ടൂട്ട് എഴുതുക", - "navigation_bar.direct": "നേരിട്ടുള്ള സന്ദേശങ്ങൾ", "navigation_bar.discover": "കണ്ടെത്തുക", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "പ്രൊഫൈൽ തിരുത്തുക", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "പ്രിയപ്പെട്ടവ", "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "പിന്തുടരാനുള്ള അഭ്യർത്ഥനകൾ", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "ക്രമീകരണങ്ങൾ", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "സുരക്ഷ", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} നിങ്ങളെ പിന്തുടർന്നു", "notification.follow_request": "{name} നിങ്ങളെ പിന്തുടരാൻ അഭ്യർത്ഥിച്ചു", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "അറിയിപ്പ് മായ്ക്കുക", "notifications.clear_confirmation": "നിങ്ങളുടെ എല്ലാ അറിയിപ്പുകളും ശാശ്വതമായി മായ്‌ക്കണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "ഡെസ്ക്ടോപ്പ് അറിയിപ്പുകൾ", "notifications.column_settings.favourite": "പ്രിയപ്പെട്ടവ:", "notifications.column_settings.filter_bar.advanced": "എല്ലാ വിഭാഗങ്ങളും പ്രദർശിപ്പിക്കുക", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "പോൾ നീക്കംചെയ്യുക", "privacy.change": "ടൂട്ട് സ്വകാര്യത ക്രമീകരിക്കുക", "privacy.direct.long": "Post to mentioned users only", - "privacy.direct.short": "നേരിട്ട്", + "privacy.direct.short": "Direct", "privacy.private.long": "Post to followers only", - "privacy.private.short": "പിന്തുടരുന്നവർക്ക് മാത്രം", - "privacy.public.long": "Post to public timelines", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "എല്ലാവര്‍ക്കും", - "privacy.unlisted.long": "Do not show in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "പുതുക്കുക", "regeneration_indicator.label": "ലഭ്യമാക്കുന്നു…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "ഇന്ന്", "reply_indicator.cancel": "റദ്ദാക്കുക", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Forward to {target}", "report.forward_hint": "ഈ അക്കൗണ്ട് മറ്റൊരു സെർവറിൽ നിന്നാണ്. റിപ്പോർട്ടിന്റെ അജ്ഞാത പകർപ്പ് അവിടെ അയയ്ക്കണോ?", - "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", "report.placeholder": "കൂടുതൽ അഭിപ്രായങ്ങൾ", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "സമർപ്പിക്കുക", "report.target": "Report {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "തിരയുക", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", "search_popout.tips.user": "ഉപയോക്താവ്", "search_results.accounts": "ആളുകൾ", + "search_results.all": "All", "search_results.hashtags": "ഹാഷ്ടാഗുകൾ", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "ടൂട്ടുകൾ", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", @@ -474,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "കേൾവിശക്തി ഇല്ലാത്തവർക്ക് വേണ്ടി വിവരണം നൽകൂ", "upload_form.description": "കാഴ്ചശക്തി ഇല്ലാത്തവർക്ക് വേണ്ടി വിവരണം നൽകൂ", + "upload_form.description_missing": "No description added", "upload_form.edit": "തിരുത്തുക", "upload_form.thumbnail": "ലഘുചിത്രം മാറ്റുക", "upload_form.undo": "ഇല്ലാതാക്കുക", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index ee3e21bf8..9c3500443 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -18,12 +18,12 @@ "account.followers": "अनुयायी", "account.followers.empty": "ह्या वापरकर्त्याचा आतापर्यंत कोणी अनुयायी नाही.", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "हा वापरकर्ता अजूनपर्यंत कोणाचा अनुयायी नाही.", "account.follows_you": "तुमचा अनुयायी आहे", "account.hide_reblogs": "@{name} पासून सर्व बूस्ट लपवा", "account.joined": "Joined {date}", - "account.last_status": "शेवटचे सक्रिय", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "दृक्‌‌श्राव्य मजकूर", @@ -32,7 +32,6 @@ "account.mute": "@{name} ला मूक कारा", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", - "account.never_active": "Never", "account.posts": "Toots", "account.posts_with_replies": "Toots and replies", "account.report": "Report @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "@{name} ला ब्लॉक करा", "account.unblock_domain": "उघड करा {domain}", + "account.unblock_short": "Unblock", "account.unendorse": "Don't feature on profile", "account.unfollow": "अनुयायी असणे थांबवा", "account.unmute": "Unmute @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", + "account.unmute_short": "Unmute", "account_note.placeholder": "Click to add a note", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "ब्लॉक केलेले खातेधारक", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.direct": "थेट संदेश", + "column.conversations": "Conversations", "column.directory": "Browse profiles", "column.domain_blocks": "गुप्त डोमेन्स", "column.favourites": "आवडते", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "केवळ मीडिया", "community.column_settings.remote_only": "Remote only", - "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.", "compose_form.direct_message_warning_learn_more": "अधिक जाणून घ्या", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "locked", @@ -165,8 +166,9 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "There are no hidden domains yet.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", "errors.unexpected_crash.report_issue": "Report issue", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Favourites", "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", "notification.follow_request": "{name} has requested to follow you", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.filter_bar.advanced": "Display all categories", @@ -359,9 +369,9 @@ "privacy.direct.short": "Direct", "privacy.private.long": "Post to followers only", "privacy.private.short": "Followers-only", - "privacy.public.long": "Post to public timelines", + "privacy.public.long": "Visible for all", "privacy.public.short": "Public", - "privacy.unlisted.long": "Do not show in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "Cancel", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", - "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", - "report.placeholder": "Additional comments", - "report.submit": "Submit", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", + "report.placeholder": "Type or paste additional comments", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", + "report.submit": "Submit report", "report.target": "Report {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Search", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", "search_popout.tips.user": "user", "search_results.accounts": "People", + "search_results.all": "All", "search_results.hashtags": "Hashtags", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", @@ -474,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Delete", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index c50e442c1..0c6996463 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -18,12 +18,12 @@ "account.followers": "Pengikut", "account.followers.empty": "Belum ada yang mengikuti pengguna ini.", "account.followers_counter": "{count, plural, one {{counter} Pengikut} other {{counter} Pengikut}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} Diikuti} other {{counter} Diikuti}}", "account.follows.empty": "Pengguna ini belum mengikuti sesiapa.", "account.follows_you": "Mengikuti anda", "account.hide_reblogs": "Sembunyikan galakan daripada @{name}", "account.joined": "Sertai pada {date}", - "account.last_status": "Terakhir aktif", "account.link_verified_on": "Pemilikan pautan ini telah disemak pada {date}", "account.locked_info": "Status privasi akaun ini dikunci. Pemiliknya menyaring sendiri siapa yang boleh mengikutinya.", "account.media": "Media", @@ -32,7 +32,6 @@ "account.mute": "Bisukan @{name}", "account.mute_notifications": "Bisukan pemberitahuan daripada @{name}", "account.muted": "Dibisukan", - "account.never_active": "Jangan sesekali", "account.posts": "Hantaran", "account.posts_with_replies": "Hantaran dan balasan", "account.report": "Laporkan @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Hantaran} other {{counter} Hantaran}}", "account.unblock": "Nyahsekat @{name}", "account.unblock_domain": "Nyahsekat domain {domain}", + "account.unblock_short": "Unblock", "account.unendorse": "Jangan tampilkan di profil", "account.unfollow": "Nyahikut", "account.unmute": "Nyahbisukan @{name}", "account.unmute_notifications": "Nyahbisukan pemberitahuan daripada @{name}", + "account.unmute_short": "Unmute", "account_note.placeholder": "Klik untuk tambah catatan", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "Pengguna yang disekat", "column.bookmarks": "Tanda buku", "column.community": "Garis masa tempatan", - "column.direct": "Mesej terus", + "column.conversations": "Conversations", "column.directory": "Layari profil", "column.domain_blocks": "Domain disekat", "column.favourites": "Kegemaran", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Tempatan sahaja", "community.column_settings.media_only": "Media sahaja", "community.column_settings.remote_only": "Jauh sahaja", - "compose_form.direct_message_warning": "Hantaran ini hanya akan dihantar kepada pengguna yang disebut.", "compose_form.direct_message_warning_learn_more": "Ketahui lebih lanjut", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Hantaran ini tidak akan disenaraikan di bawah mana-mana tanda pagar kerana ia tidak tersenarai. Hanya hantaran awam sahaja boleh dicari menggunakan tanda pagar.", "compose_form.lock_disclaimer": "Akaun anda tidak {locked}. Sesiapa pun boleh mengikuti anda untuk melihat hantaran pengikut-sahaja anda.", "compose_form.lock_disclaimer.lock": "dikunci", @@ -165,8 +166,9 @@ "empty_column.blocks": "Anda belum menyekat sesiapa.", "empty_column.bookmarked_statuses": "Anda belum ada hantaran yang ditanda buku. Apabila anda menanda buku sesuatu, ia akan muncul di sini.", "empty_column.community": "Garis masa tempatan kosong. Tulislah secara awam untuk memulakan sesuatu!", - "empty_column.direct": "Anda tidak mempunyai mesej terus. Apabila anda menghantar atau menerimanya, ia akan muncul di sini.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Belum ada domain yang disekat.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Anda belum ada hantaran yang digemari. Apabila anda menggemari sesuatu, ia akan muncul di sini.", "empty_column.favourites": "Tiada sesiapa yang menggemari hantaran ini. Apabila ada yang menggemari, ia akan muncul di sini.", "empty_column.follow_recommendations": "Nampaknya tiada cadangan yang boleh dijana untuk anda. Anda boleh cuba gunakan gelintar untuk mencari orang yang anda mungkin kenal atau jelajahi tanda pagar sohor kini.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Cuba nyahdaya pemalam dan segarkan semula halaman. Jika itu tidak membantu, anda masih boleh menggunakan Mastodon dengan pelayar yang berlainan atau aplikasi natif.", "errors.unexpected_crash.copy_stacktrace": "Salin surih tindanan ke papan keratan", "errors.unexpected_crash.report_issue": "Laporkan masalah", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Selesai", "follow_recommendations.heading": "Ikuti orang yang anda ingin lihat hantarannya! Di sini ada beberapa cadangan.", "follow_recommendations.lead": "Hantaran daripada orang yang anda ikuti akan muncul dalam susunan kronologi di suapan rumah anda. Jangan takut melakukan kesilapan, anda boleh nyahikuti orang dengan mudah pada bila-bila masa!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "Tumpu pada lajur", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Keterangan", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "Buka hantaran", "keyboard_shortcuts.favourite": "to favourite", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Tanda buku", "navigation_bar.community_timeline": "Garis masa tempatan", "navigation_bar.compose": "Karang hantaran baharu", - "navigation_bar.direct": "Mesej terus", "navigation_bar.discover": "Teroka", "navigation_bar.domain_blocks": "Domain disekat", "navigation_bar.edit_profile": "Sunting profil", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Kegemaran", "navigation_bar.filters": "Perkataan yang dibisukan", "navigation_bar.follow_requests": "Permintaan ikutan", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Keutamaan", "navigation_bar.public_timeline": "Garis masa bersekutu", "navigation_bar.security": "Keselamatan", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} menggemari hantaran anda", "notification.follow": "{name} mengikuti anda", "notification.follow_request": "{name} meminta untuk mengikuti anda", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Buang pemberitahuan", "notifications.clear_confirmation": "Adakah anda pasti anda ingin membuang semua pemberitahuan anda secara kekal?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Pemberitahuan atas meja", "notifications.column_settings.favourite": "Kegemaran:", "notifications.column_settings.filter_bar.advanced": "Papar semua kategori", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Buang undian", "privacy.change": "Ubah privasi hantaran", "privacy.direct.long": "Hanya boleh dilihat oleh pengguna disebut", - "privacy.direct.short": "Terus", + "privacy.direct.short": "Direct", "privacy.private.long": "Hanya boleh dilihat oleh pengikut", - "privacy.private.short": "Pengikut sahaja", - "privacy.public.long": "Boleh dilihat oleh semua orang, ditunjukkan di garis masa awam", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Awam", - "privacy.unlisted.long": "Boleh dilihat oleh semua orang, tapi jangan tunjukkan di garis masa awam", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Tidak tersenarai", "refresh": "Muat semula", "regeneration_indicator.label": "Memuatkan…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "hari ini", "reply_indicator.cancel": "Batal", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Panjangkan ke {target}", "report.forward_hint": "Akaun ini daripada pelayan lain. Hantar salinan laporan yang ditanpanamakan ke sana juga?", - "report.hint": "Laporan akan dihantar ke penyederhana pelayan anda. Anda boleh sertakan penerangan kenapa anda laporkan akaun ini di bawah:", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", "report.placeholder": "Ulasan tambahan", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Serah", "report.target": "Melaporkan {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Cari", "search_popout.search_format": "Format gelintar lanjutan", "search_popout.tips.full_text": "Teks ringkas mengembalikan hantaran yang anda telah tulis, menggemari, menggalak, atau telah disebutkan, dan juga nama pengguna, nama paparan, dan tanda pagar yang dipadankan.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Teks ringkas mengembalikan nama paparan, nama pengguna dan tanda pagar yang sepadan", "search_popout.tips.user": "pengguna", "search_results.accounts": "Orang", + "search_results.all": "All", "search_results.hashtags": "Tanda pagar", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Hantaran", "search_results.statuses_fts_disabled": "Menggelintar hantaran menggunakan kandungannya tidak didayakan di pelayan Mastodon ini.", "search_results.total": "{count, number} {count, plural, other {hasil}}", @@ -474,6 +514,7 @@ "upload_error.poll": "Tidak boleh memuat naik fail bersama undian.", "upload_form.audio_description": "Jelaskan untuk orang yang ada masalah pendengaran", "upload_form.description": "Jelaskan untuk orang yang ada masalah penglihatan", + "upload_form.description_missing": "No description added", "upload_form.edit": "Sunting", "upload_form.thumbnail": "Ubah gambar kecil", "upload_form.undo": "Padam", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 956313c24..5e40dacb8 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -9,43 +9,44 @@ "account.browse_more_on_origin_server": "Meer op het originele profiel bekijken", "account.cancel_follow_request": "Volgverzoek annuleren", "account.direct": "@{name} een direct bericht sturen", - "account.disable_notifications": "Geef geen melding meer wanneer @{name} toot", + "account.disable_notifications": "Geef geen melding meer wanneer @{name} een bericht plaatst", "account.domain_blocked": "Domein geblokkeerd", "account.edit_profile": "Profiel bewerken", - "account.enable_notifications": "Geef een melding wanneer @{name} toot", + "account.enable_notifications": "Geef een melding wanneer @{name} een bericht plaatst", "account.endorse": "Op profiel weergeven", "account.follow": "Volgen", "account.followers": "Volgers", "account.followers.empty": "Niemand volgt nog deze gebruiker.", "account.followers_counter": "{count, plural, one {{counter} volger} other {{counter} volgers}}", + "account.following": "Volgend", "account.following_counter": "{count, plural, one {{counter} volgend} other {{counter} volgend}}", "account.follows.empty": "Deze gebruiker volgt nog niemand.", "account.follows_you": "Volgt jou", "account.hide_reblogs": "Boosts van @{name} verbergen", "account.joined": "Geregistreerd in {date}", - "account.last_status": "Laatst actief", "account.link_verified_on": "Eigendom van deze link is gecontroleerd op {date}", - "account.locked_info": "De privacystatus van dit account is op besloten gezet. De eigenaar bepaalt handmatig wie hen kan volgen.", + "account.locked_info": "De privacystatus van dit account is op besloten gezet. De eigenaar bepaalt handmatig wie diegene kan volgen.", "account.media": "Media", "account.mention": "@{name} vermelden", "account.moved_to": "{name} is verhuisd naar:", "account.mute": "@{name} negeren", "account.mute_notifications": "Meldingen van @{name} negeren", "account.muted": "Genegeerd", - "account.never_active": "Nooit", - "account.posts": "Toots", - "account.posts_with_replies": "Toots en reacties", + "account.posts": "Berichten", + "account.posts_with_replies": "Berichten en reacties", "account.report": "@{name} rapporteren", "account.requested": "Wacht op goedkeuring. Klik om het volgverzoek te annuleren", "account.share": "Profiel van @{name} delen", "account.show_reblogs": "Boosts van @{name} tonen", - "account.statuses_counter": "{count, plural, one {{counter} toot} other {{counter} toots}}", + "account.statuses_counter": "{count, plural, one {{counter} bericht} other {{counter} berichten}}", "account.unblock": "@{name} deblokkeren", "account.unblock_domain": "{domain} niet langer verbergen", + "account.unblock_short": "Deblokkeren", "account.unendorse": "Niet op profiel weergeven", "account.unfollow": "Ontvolgen", "account.unmute": "@{name} niet langer negeren", "account.unmute_notifications": "Meldingen van @{name} niet langer negeren", + "account.unmute_short": "Niet langer negeren", "account_note.placeholder": "Klik om een opmerking toe te voegen", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "Geblokkeerde gebruikers", "column.bookmarks": "Bladwijzers", "column.community": "Lokale tijdlijn", - "column.direct": "Directe berichten", + "column.conversations": "Gesprekken", "column.directory": "Gebruikersgids", "column.domain_blocks": "Geblokkeerde domeinen", "column.favourites": "Favorieten", @@ -78,7 +79,7 @@ "column.lists": "Lijsten", "column.mutes": "Genegeerde gebruikers", "column.notifications": "Meldingen", - "column.pins": "Vastgezette toots", + "column.pins": "Vastgezette berichten", "column.public": "Globale tijdlijn", "column_back_button.label": "Terug", "column_header.hide_settings": "Instellingen verbergen", @@ -91,10 +92,10 @@ "community.column_settings.local_only": "Alleen lokaal", "community.column_settings.media_only": "Alleen media", "community.column_settings.remote_only": "Alleen andere servers", - "compose_form.direct_message_warning": "Deze toot wordt alleen naar vermelde gebruikers verstuurd.", "compose_form.direct_message_warning_learn_more": "Meer leren", - "compose_form.hashtag_warning": "Deze toot valt niet onder een hashtag te bekijken, omdat deze niet op openbare tijdlijnen wordt getoond. Alleen openbare toots kunnen via hashtags gevonden worden.", - "compose_form.lock_disclaimer": "Jouw account is niet {locked}. Iedereen kan jou volgen en kan de toots zien die je alleen aan jouw volgers hebt gericht.", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.hashtag_warning": "Dit bericht valt niet onder een hashtag te bekijken, omdat deze niet op openbare tijdlijnen wordt getoond. Alleen openbare berichten kunnen via hashtags gevonden worden.", + "compose_form.lock_disclaimer": "Jouw account is niet {locked}. Iedereen kan jou volgen en kan de berichten zien die je alleen aan jouw volgers hebt gericht.", "compose_form.lock_disclaimer.lock": "besloten", "compose_form.placeholder": "Wat wil je kwijt?", "compose_form.poll.add_option": "Keuze toevoegen", @@ -105,7 +106,7 @@ "compose_form.poll.switch_to_single": "Poll wijzigen om een enkele keuze toe te staan", "compose_form.publish": "Toot", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Wijzigingen opslaan", "compose_form.sensitive.hide": "{count, plural, one {Media als gevoelig markeren} other {Media als gevoelig markeren}}", "compose_form.sensitive.marked": "{count, plural, one {Media is als gevoelig gemarkeerd} other {Media is als gevoelig gemarkeerd}}", "compose_form.sensitive.unmarked": "{count, plural, one {Media is niet als gevoelig gemarkeerd} other {Media is niet als gevoelig gemarkeerd}}", @@ -117,22 +118,22 @@ "confirmations.block.confirm": "Blokkeren", "confirmations.block.message": "Weet je het zeker dat je {name} wilt blokkeren?", "confirmations.delete.confirm": "Verwijderen", - "confirmations.delete.message": "Weet je het zeker dat je deze toot wilt verwijderen?", + "confirmations.delete.message": "Weet je het zeker dat je dit bericht wilt verwijderen?", "confirmations.delete_list.confirm": "Verwijderen", "confirmations.delete_list.message": "Weet je zeker dat je deze lijst definitief wilt verwijderen?", "confirmations.discard_edit_media.confirm": "Weggooien", "confirmations.discard_edit_media.message": "Je hebt niet-opgeslagen wijzigingen in de mediabeschrijving of voorvertonning, wil je deze toch weggooien?", "confirmations.domain_block.confirm": "Verberg alles van deze server", - "confirmations.domain_block.message": "Weet je het echt heel erg zeker dat je alles van {domain} wilt negeren? In de meeste gevallen is het blokkeren of negeren van een paar specifieke personen voldoende en beter. Je zult geen toots van deze server op openbare tijdlijnen zien of in jouw meldingen. Jouw volgers van deze server worden verwijderd.", + "confirmations.domain_block.message": "Weet je het echt heel erg zeker dat je alles van {domain} wilt negeren? In de meeste gevallen is het blokkeren of negeren van een paar specifieke personen voldoende en beter. Je zult geen berichten van deze server op openbare tijdlijnen zien of in jouw meldingen. Jouw volgers van deze server worden verwijderd.", "confirmations.logout.confirm": "Uitloggen", "confirmations.logout.message": "Weet je zeker dat je wilt uitloggen?", "confirmations.mute.confirm": "Negeren", - "confirmations.mute.explanation": "Dit verbergt toots van hen en toots waar hen in wordt vermeld, maar hen kan nog steeds jouw toots bekijken en jou volgen.", + "confirmations.mute.explanation": "Dit verbergt diens berichten en berichten waar diegene in wordt vermeld, maar diegene kan nog steeds jouw berichten bekijken en jou volgen.", "confirmations.mute.message": "Weet je het zeker dat je {name} wilt negeren?", "confirmations.redraft.confirm": "Verwijderen en herschrijven", - "confirmations.redraft.message": "Weet je zeker dat je deze toot wilt verwijderen en herschrijven? Je verliest wel de boosts en favorieten, en de reacties op de originele toot zitten niet meer aan de nieuwe toot vast.", + "confirmations.redraft.message": "Weet je zeker dat je dit bericht wilt verwijderen en herschrijven? Je verliest wel de boosts en favorieten, en de reacties op het originele bericht raak je kwijt.", "confirmations.reply.confirm": "Reageren", - "confirmations.reply.message": "Door nu te reageren overschrijf je de toot die je op dit moment aan het schrijven bent. Weet je zeker dat je verder wil gaan?", + "confirmations.reply.message": "Door nu te reageren overschrijf je het bericht dat je op dit moment aan het schrijven bent. Weet je zeker dat je verder wil gaan?", "confirmations.unfollow.confirm": "Ontvolgen", "confirmations.unfollow.message": "Weet je het zeker dat je {name} wilt ontvolgen?", "conversation.delete": "Gesprek verwijderen", @@ -143,7 +144,7 @@ "directory.local": "Alleen {domain}", "directory.new_arrivals": "Nieuwe accounts", "directory.recently_active": "Onlangs actief", - "embed.instructions": "Embed deze toot op jouw website, door de onderstaande code te kopiëren.", + "embed.instructions": "Embed dit bericht op jouw website door de onderstaande code te kopiëren.", "embed.preview": "Zo komt het eruit te zien:", "emoji_button.activity": "Activiteiten", "emoji_button.custom": "Lokale emoji’s", @@ -160,34 +161,41 @@ "emoji_button.symbols": "Symbolen", "emoji_button.travel": "Reizen en locaties", "empty_column.account_suspended": "Account opgeschort", - "empty_column.account_timeline": "Hier zijn geen toots!", + "empty_column.account_timeline": "Hier zijn geen berichten!", "empty_column.account_unavailable": "Profiel is niet beschikbaar", "empty_column.blocks": "Jij hebt nog geen enkele gebruiker geblokkeerd.", - "empty_column.bookmarked_statuses": "Jij hebt nog geen toots aan je bladwijzers toegevoegd. Wanneer je er een aan jouw bladwijzers toevoegt, valt deze hier te zien.", - "empty_column.community": "De lokale tijdlijn is nog leeg. Toot iets in het openbaar om de spits af te bijten!", - "empty_column.direct": "Je hebt nog geen directe berichten. Wanneer je er een verzend of ontvangt, zijn deze hier te zien.", + "empty_column.bookmarked_statuses": "Jij hebt nog geen berichten aan je bladwijzers toegevoegd. Wanneer je er een aan jouw bladwijzers toevoegt, valt deze hier te zien.", + "empty_column.community": "De lokale tijdlijn is nog leeg. Plaats een openbaar bericht om de spits af te bijten!", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Er zijn nog geen geblokkeerde domeinen.", - "empty_column.favourited_statuses": "Jij hebt nog geen favoriete toots. Wanneer je er een aan jouw favorieten toevoegt, valt deze hier te zien.", - "empty_column.favourites": "Niemand heeft deze toot nog aan hun favorieten toegevoegd. Wanneer iemand dit doet, valt dat hier te zien.", + "empty_column.explore_statuses": "Momenteel zijn er geen trends. Kom later terug!", + "empty_column.favourited_statuses": "Jij hebt nog geen favoriete berichten. Wanneer je er een aan jouw favorieten toevoegt, valt deze hier te zien.", + "empty_column.favourites": "Niemand heeft dit bericht nog aan diens favorieten toegevoegd. Wanneer iemand dit doet, valt dat hier te zien.", "empty_column.follow_recommendations": "Het lijkt er op dat er geen aanbevelingen voor jou aangemaakt kunnen worden. Je kunt proberen te zoeken naar mensen die je wellicht kent, zoeken op hashtags, de lokale en globale tijdlijnen bekijken of de gebruikersgids doorbladeren.", "empty_column.follow_requests": "Jij hebt nog enkel volgverzoek ontvangen. Wanneer je er eentje ontvangt, valt dat hier te zien.", "empty_column.hashtag": "Er is nog niks te vinden onder deze hashtag.", "empty_column.home": "Deze tijdlijn is leeg! Volg meer mensen om het te vullen. {suggestions}", "empty_column.home.suggestions": "Enkele aanbevelingen bekijken", - "empty_column.list": "Er is nog niks te zien in deze lijst. Wanneer lijstleden nieuwe toots publiceren, zijn deze hier te zien.", + "empty_column.list": "Er is nog niks te zien in deze lijst. Wanneer lijstleden nieuwe berichten plaatsen, zijn deze hier te zien.", "empty_column.lists": "Jij hebt nog geen enkele lijst. Wanneer je er eentje hebt aangemaakt, valt deze hier te zien.", "empty_column.mutes": "Jij hebt nog geen gebruikers genegeerd.", "empty_column.notifications": "Je hebt nog geen meldingen. Begin met iemand een gesprek.", - "empty_column.public": "Er is hier helemaal niks! Toot iets in het openbaar of volg mensen van andere servers om het te vullen", + "empty_column.public": "Er is hier helemaal niks! Plaatst een openbaar bericht of volg mensen van andere servers om het te vullen", "error.unexpected_crash.explanation": "Als gevolg van een bug in onze broncode of als gevolg van een compatibiliteitsprobleem met jouw webbrowser, kan deze pagina niet goed worden weergegeven.", "error.unexpected_crash.explanation_addons": "Deze pagina kon niet correct geladen worden. Deze fout wordt waarschijnlijk door een browser-add-on of een automatische vertalingshulpmiddel veroorzaakt.", "error.unexpected_crash.next_steps": "Probeer deze pagina te vernieuwen. Wanneer dit niet helpt is het nog steeds mogelijk om Mastodon in een andere webbrowser of mobiele app te gebruiken.", "error.unexpected_crash.next_steps_addons": "Probeer deze uit te schakelen en de pagina te verversen. Wanneer dat niet helpt, kun je Mastodon nog altijd met een andere webbrowser of mobiele app gebruiken.", "errors.unexpected_crash.copy_stacktrace": "Stacktrace naar klembord kopiëren", "errors.unexpected_crash.report_issue": "Technisch probleem melden", + "explore.search_results": "Zoekresultaten", + "explore.suggested_follows": "Voor jou", + "explore.title": "Verkennen", + "explore.trending_links": "Nieuws", + "explore.trending_statuses": "Berichten", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Klaar", - "follow_recommendations.heading": "Volg mensen waarvan je graag toots wil zien! Hier zijn enkele aanbevelingen.", - "follow_recommendations.lead": "Toots van mensen die je volgt zullen in chronologische volgorde onder start verschijnen. Wees niet bang om hierin fouten te maken, want je kunt mensen op elk moment net zo eenvoudig ontvolgen!", + "follow_recommendations.heading": "Volg mensen waarvan je graag berichten wil zien! Hier zijn enkele aanbevelingen.", + "follow_recommendations.lead": "Berichten van mensen die je volgt zullen in chronologische volgorde onder start verschijnen. Wees niet bang om hierin fouten te maken, want je kunt mensen op elk moment net zo eenvoudig ontvolgen!", "follow_request.authorize": "Goedkeuren", "follow_request.reject": "Afkeuren", "follow_requests.unlocked_explanation": "Ook al is jouw account niet besloten, de medewerkers van {domain} denken dat jij misschien de volgende volgverzoeken handmatig wil controleren.", @@ -219,13 +227,13 @@ "intervals.full.minutes": "{number, plural, one {# minuut} other {# minuten}}", "keyboard_shortcuts.back": "Ga terug", "keyboard_shortcuts.blocked": "Geblokkeerde gebruikers tonen", - "keyboard_shortcuts.boost": "Toot boosten", + "keyboard_shortcuts.boost": "Bericht boosten", "keyboard_shortcuts.column": "Op één van de kolommen focussen", - "keyboard_shortcuts.compose": "Tekstveld voor toots focussen", + "keyboard_shortcuts.compose": "Tekstveld om een bericht te schrijven focussen", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Omschrijving", - "keyboard_shortcuts.direct": "Jouw directe berichten tonen", "keyboard_shortcuts.down": "Naar beneden in de lijst bewegen", - "keyboard_shortcuts.enter": "Toot volledig tonen", + "keyboard_shortcuts.enter": "Volledig bericht tonen", "keyboard_shortcuts.favourite": "Aan jouw favorieten toevoegen", "keyboard_shortcuts.favourites": "Favorieten tonen", "keyboard_shortcuts.federated": "Globale tijdlijn tonen", @@ -239,7 +247,7 @@ "keyboard_shortcuts.my_profile": "Jouw profiel tonen", "keyboard_shortcuts.notifications": "Meldingen tonen", "keyboard_shortcuts.open_media": "Media openen", - "keyboard_shortcuts.pinned": "Jouw vastgezette toots tonen", + "keyboard_shortcuts.pinned": "Jouw vastgemaakte berichten tonen", "keyboard_shortcuts.profile": "Gebruikersprofiel auteur openen", "keyboard_shortcuts.reply": "Reageren", "keyboard_shortcuts.requests": "Jouw volgverzoeken tonen", @@ -248,7 +256,7 @@ "keyboard_shortcuts.start": "\"Aan de slag\" tonen", "keyboard_shortcuts.toggle_hidden": "Inhoudswaarschuwing tonen/verbergen", "keyboard_shortcuts.toggle_sensitivity": "Media tonen/verbergen", - "keyboard_shortcuts.toot": "Nieuwe toot schrijven", + "keyboard_shortcuts.toot": "Nieuw bericht schrijven", "keyboard_shortcuts.unfocus": "Tekst- en zoekveld ontfocussen", "keyboard_shortcuts.up": "Naar boven in de lijst bewegen", "lightbox.close": "Sluiten", @@ -281,11 +289,11 @@ "navigation_bar.blocks": "Geblokkeerde gebruikers", "navigation_bar.bookmarks": "Bladwijzers", "navigation_bar.community_timeline": "Lokale tijdlijn", - "navigation_bar.compose": "Nieuw toot schrijven", - "navigation_bar.direct": "Directe berichten", + "navigation_bar.compose": "Nieuw bericht schrijven", "navigation_bar.discover": "Ontdekken", "navigation_bar.domain_blocks": "Geblokkeerde domeinen", "navigation_bar.edit_profile": "Profiel bewerken", + "navigation_bar.explore": "Verkennen", "navigation_bar.favourites": "Favorieten", "navigation_bar.filters": "Filters", "navigation_bar.follow_requests": "Volgverzoeken", @@ -296,21 +304,23 @@ "navigation_bar.logout": "Uitloggen", "navigation_bar.mutes": "Genegeerde gebruikers", "navigation_bar.personal": "Persoonlijk", - "navigation_bar.pins": "Vastgezette toots", + "navigation_bar.pins": "Vastgemaakte berichten", "navigation_bar.preferences": "Instellingen", "navigation_bar.public_timeline": "Globale tijdlijn", "navigation_bar.security": "Beveiliging", - "notification.favourite": "{name} voegde jouw toot als favoriet toe", + "notification.admin.sign_up": "{name} heeft zich aangemeld", + "notification.favourite": "{name} voegde jouw bericht als favoriet toe", "notification.follow": "{name} volgt jou nu", "notification.follow_request": "{name} wil jou graag volgen", "notification.mention": "{name} vermeldde jou", "notification.own_poll": "Jouw poll is beëindigd", "notification.poll": "Een poll waaraan jij hebt meegedaan is beëindigd", - "notification.reblog": "{name} boostte jouw toot", - "notification.status": "{name} heeft zojuist een toot geplaatst", - "notification.update": "{name} edited a post", + "notification.reblog": "{name} boostte jouw bericht", + "notification.status": "{name} heeft zojuist een bericht geplaatst", + "notification.update": "{name} heeft een bericht bewerkt", "notifications.clear": "Meldingen verwijderen", "notifications.clear_confirmation": "Weet je het zeker dat je al jouw meldingen wilt verwijderen?", + "notifications.column_settings.admin.sign_up": "Nieuwe aanmeldingen:", "notifications.column_settings.alert": "Desktopmeldingen", "notifications.column_settings.favourite": "Favorieten:", "notifications.column_settings.filter_bar.advanced": "Alle categorieën tonen", @@ -324,10 +334,10 @@ "notifications.column_settings.reblog": "Boosts:", "notifications.column_settings.show": "In kolom tonen", "notifications.column_settings.sound": "Geluid afspelen", - "notifications.column_settings.status": "Nieuwe toots:", + "notifications.column_settings.status": "Nieuwe berichten:", "notifications.column_settings.unread_notifications.category": "Ongelezen meldingen", "notifications.column_settings.unread_notifications.highlight": "Ongelezen meldingen markeren", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.update": "Bewerkingen:", "notifications.filter.all": "Alles", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favorieten", @@ -354,83 +364,113 @@ "poll.votes": "{votes, plural, one {# stem} other {# stemmen}}", "poll_button.add_poll": "Poll toevoegen", "poll_button.remove_poll": "Poll verwijderen", - "privacy.change": "Zichtbaarheid van toot aanpassen", + "privacy.change": "Zichtbaarheid van bericht aanpassen", "privacy.direct.long": "Alleen aan vermelde gebruikers tonen", - "privacy.direct.short": "Direct", + "privacy.direct.short": "Alleen gebruikers die ik noem", "privacy.private.long": "Alleen aan volgers tonen", "privacy.private.short": "Alleen volgers", - "privacy.public.long": "Voor iedereen zichtbaar en op openbare tijdlijnen tonen", + "privacy.public.long": "Voor iedereen zichtbaar", "privacy.public.short": "Openbaar", - "privacy.unlisted.long": "Voor iedereen zichtbaar, maar niet op openbare tijdlijnen tonen", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Minder openbaar", "refresh": "Vernieuwen", "regeneration_indicator.label": "Aan het laden…", "regeneration_indicator.sublabel": "Jouw tijdlijn wordt aangemaakt!", "relative_time.days": "{number}d", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{number, plural, one {# dag} other {# dagen}} geleden", + "relative_time.full.hours": "{number, plural, one {# uur} other {# uur}} geleden", + "relative_time.full.just_now": "zojuist", + "relative_time.full.minutes": "{number, plural, one {# minuut} other {# minuten}} geleden", + "relative_time.full.seconds": "{number, plural, one {# seconde} other {# seconden}} geleden", "relative_time.hours": "{number}u", "relative_time.just_now": "nu", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "vandaag", "reply_indicator.cancel": "Annuleren", - "report.categories.other": "Other", + "report.block": "Blokkeren", + "report.block_explanation": "Je kunt diens berichten niet zien. Je kunt door diegene niet gevolgd worden en jouw berichten zijn onzichtbaar. Diegene kan zien dat die door jou is geblokkeerd.", + "report.categories.other": "Overig", "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.violation": "De inhoud overtreedt een of meerdere serverregels", + "report.category.subtitle": "Kies wat het meeste overeenkomt", + "report.category.title": "Vertel ons wat er met dit {type} aan de hand is", + "report.category.title_account": "profiel", + "report.category.title_status": "bericht", + "report.close": "Klaar", + "report.comment.title": "Zijn er nog andere dingen waarvan je denkt dat wij dat moeten weten?", "report.forward": "Naar {target} doorsturen", "report.forward_hint": "Het account bevindt zich op een andere server. Wil je daar eveneens een geanonimiseerde kopie van deze rapportage naar toe sturen?", - "report.hint": "De rapportage wordt naar de moderator(en) van jouw server gestuurd. Je kunt hieronder een uitleg geven waarom je dit account rapporteert:", + "report.mute": "Negeren", + "report.mute_explanation": "Je kunt diens berichten niet zien. Je kunt nog wel gevolgd worden en jouw berichten zijn nog zichtbaar, maar diegene kan niet zien dat die wordt genegeerd.", + "report.next": "Volgende", "report.placeholder": "Extra opmerkingen", + "report.reasons.dislike": "Ik vind het niet leuk", + "report.reasons.dislike_description": "Het is iets wat je niet wilt zien", + "report.reasons.other": "Het is iets anders", + "report.reasons.other_description": "Het probleem past niet in een andere categorie", + "report.reasons.spam": "Het is spam", + "report.reasons.spam_description": "Schadelijke links, reclame, misleiding of herhalende antwoorden", + "report.reasons.violation": "Het schendt de serverregels", + "report.reasons.violation_description": "Je weet dat het specifieke regels schendt", + "report.rules.subtitle": "Selecteer wat van toepassing is", + "report.rules.title": "Welke regels worden geschonden?", + "report.statuses.subtitle": "Selecteer wat van toepassing is", + "report.statuses.title": "Zijn er berichten die deze rapportage ondersteunen?", "report.submit": "Verzenden", "report.target": "{target} rapporteren", + "report.thanks.take_action": "Hier zijn jouw opties waarmee je kunt bepalen wat je in Mastodon wilt zien:", + "report.thanks.take_action_actionable": "Terwijl wij jouw rapportage beroordelen, kun je deze acties ondernemen tegen @{name}:", + "report.thanks.title": "Wil je dit niet zien?", + "report.thanks.title_actionable": "Dank je voor het rapporteren. Wij gaan er naar kijken.", + "report.unfollow": "@{name} ontvolgen", + "report.unfollow_explanation": "Je volgt dit account. Om diens berichten niet meer op jouw starttijdlijn te zien, kun je diegene ontvolgen.", "search.placeholder": "Zoeken", "search_popout.search_format": "Geavanceerd zoeken", - "search_popout.tips.full_text": "Gebruik gewone tekst om te zoeken in jouw toots, gebooste toots, favorieten en in toots waarin je bent vermeldt, en tevens naar gebruikersnamen, weergavenamen en hashtags.", + "search_popout.tips.full_text": "Gebruik gewone tekst om te zoeken in jouw berichten, gebooste berichten, favorieten en in berichten waarin je bent vermeldt, en tevens naar gebruikersnamen, weergavenamen en hashtags.", "search_popout.tips.hashtag": "hashtag", - "search_popout.tips.status": "toot", + "search_popout.tips.status": "bericht", "search_popout.tips.text": "Gebruik gewone tekst om te zoeken op weergavenamen, gebruikersnamen en hashtags", "search_popout.tips.user": "gebruiker", "search_results.accounts": "Gebruikers", + "search_results.all": "Alles", "search_results.hashtags": "Hashtags", - "search_results.statuses": "Toots", - "search_results.statuses_fts_disabled": "Het zoeken in toots is op deze Mastodon-server niet ingeschakeld.", + "search_results.nothing_found": "Deze zoektermen leveren geen resultaat op", + "search_results.statuses": "Berichten", + "search_results.statuses_fts_disabled": "Het zoeken in berichten is op deze Mastodon-server niet ingeschakeld.", "search_results.total": "{count, number} {count, plural, one {resultaat} other {resultaten}}", "status.admin_account": "Moderatie-omgeving van @{name} openen", - "status.admin_status": "Deze toot in de moderatie-omgeving openen", + "status.admin_status": "Dit bericht in de moderatie-omgeving openen", "status.block": "@{name} blokkeren", "status.bookmark": "Bladwijzer toevoegen", "status.cancel_reblog_private": "Niet langer boosten", - "status.cannot_reblog": "Deze toot kan niet geboost worden", - "status.copy": "Link naar toot kopiëren", + "status.cannot_reblog": "Dit bericht kan niet geboost worden", + "status.copy": "Link naar bericht kopiëren", "status.delete": "Verwijderen", "status.detailed_status": "Uitgebreide gespreksweergave", "status.direct": "@{name} een direct bericht sturen", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Bewerken", + "status.edited": "Bewerkt op {date}", + "status.edited_x_times": "{count, plural, one {{count} keer} other {{count} keer}} bewerkt", "status.embed": "Insluiten", "status.favourite": "Favoriet", "status.filtered": "Gefilterd", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} plaatste dit {date}", + "status.history.edited": "{name} bewerkte dit {date}", "status.load_more": "Meer laden", "status.media_hidden": "Media verborgen", "status.mention": "@{name} vermelden", "status.more": "Meer", "status.mute": "@{name} negeren", "status.mute_conversation": "Negeer gesprek", - "status.open": "Volledige toot tonen", + "status.open": "Volledig bericht tonen", "status.pin": "Aan profielpagina vastmaken", - "status.pinned": "Vastgemaakte toot", + "status.pinned": "Vastgemaakt bericht", "status.read_more": "Meer lezen", "status.reblog": "Boosten", "status.reblog_private": "Boost naar oorspronkelijke ontvangers", "status.reblogged_by": "{name} boostte", - "status.reblogs.empty": "Niemand heeft deze toot nog geboost. Wanneer iemand dit doet, valt dat hier te zien.", + "status.reblogs.empty": "Niemand heeft dit bericht nog geboost. Wanneer iemand dit doet, valt dat hier te zien.", "status.redraft": "Verwijderen en herschrijven", "status.remove_bookmark": "Bladwijzer verwijderen", "status.reply": "Reageren", @@ -461,7 +501,7 @@ "timeline_hint.remote_resource_not_displayed": "{resource} van andere servers worden niet getoond.", "timeline_hint.resources.followers": "Volgers", "timeline_hint.resources.follows": "Volgend", - "timeline_hint.resources.statuses": "Oudere toots", + "timeline_hint.resources.statuses": "Oudere berichten", "trends.counter_by_accounts": "{count, plural, one {{counter} persoon} other {{counter} personen}} zijn aan het praten", "trends.trending_now": "Huidige trends", "ui.beforeunload": "Je concept gaat verloren wanneer je Mastodon verlaat.", @@ -474,6 +514,7 @@ "upload_error.poll": "Het uploaden van bestanden is in polls niet toegestaan.", "upload_form.audio_description": "Omschrijf dit voor mensen met een auditieve beperking", "upload_form.description": "Omschrijf dit voor mensen met een visuele beperking", + "upload_form.description_missing": "Geen omschrijving toegevoegd", "upload_form.edit": "Bewerken", "upload_form.thumbnail": "Miniatuurafbeelding wijzigen", "upload_form.undo": "Verwijderen", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index d85cb3e20..521403c51 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -18,12 +18,12 @@ "account.followers": "Fylgjarar", "account.followers.empty": "Ingen fylgjer denne brukaren enno.", "account.followers_counter": "{count, plural, one {{counter} fylgjar} other {{counter} fylgjarar}}", + "account.following": "Følger", "account.following_counter": "{count, plural, one {{counter} fylgjar} other {{counter} fylgjar}}", "account.follows.empty": "Denne brukaren fylgjer ikkje nokon enno.", "account.follows_you": "Fylgjer deg", "account.hide_reblogs": "Gøym fremhevingar frå @{name}", "account.joined": "Vart med {date}", - "account.last_status": "Sist aktiv", "account.link_verified_on": "Eigarskap for denne lenkja vart sist sjekka {date}", "account.locked_info": "Denne kontoen er privat. Eigaren kan sjølv velja kven som kan fylgja han.", "account.media": "Media", @@ -32,7 +32,6 @@ "account.mute": "Målbind @{name}", "account.mute_notifications": "Målbind varsel frå @{name}", "account.muted": "Målbunden", - "account.never_active": "Aldri", "account.posts": "Tut", "account.posts_with_replies": "Tut og svar", "account.report": "Rapporter @{name}", @@ -42,14 +41,16 @@ "account.statuses_counter": "{count, plural, one {{counter} tut} other {{counter} tut}}", "account.unblock": "Slutt å blokera @{name}", "account.unblock_domain": "Vis {domain}", + "account.unblock_short": "Opphev blokkering", "account.unendorse": "Ikkje framhev på profil", "account.unfollow": "Slutt å fylgja", "account.unmute": "Av-demp @{name}", "account.unmute_notifications": "Vis varsel frå @{name}", + "account.unmute_short": "Opphev demping", "account_note.placeholder": "Klikk for å leggja til merknad", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", - "admin.dashboard.retention.average": "Average", + "admin.dashboard.retention.average": "Gjennomsnitt", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "Nye brukere", "alert.rate_limited.message": "Ver venleg å prøva igjen etter {retry_time, time, medium}.", @@ -69,7 +70,7 @@ "column.blocks": "Blokkerte brukarar", "column.bookmarks": "Bokmerke", "column.community": "Lokal tidsline", - "column.direct": "Meldingar", + "column.conversations": "Conversations", "column.directory": "Sjå gjennom profilar", "column.domain_blocks": "Gøymde domene", "column.favourites": "Favorittar", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Berre lokalt", "community.column_settings.media_only": "Berre media", "community.column_settings.remote_only": "Berre eksternt", - "compose_form.direct_message_warning": "Dette tutet vert berre synleg for nemnde brukarar.", "compose_form.direct_message_warning_learn_more": "Lær meir", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Dette tutet vert ikkje oppført under nokon emneknagg sidan det ikkje er oppført. Berre offentlege tut kan verta søkt etter med emneknagg.", "compose_form.lock_disclaimer": "Kontoen din er ikkje {locked}. Kven som helst kan fylgja deg for å sjå innlegga dine som berre visast til fylgjarar.", "compose_form.lock_disclaimer.lock": "låst", @@ -165,8 +166,9 @@ "empty_column.blocks": "Du har ikkje blokkert nokon brukarar enno.", "empty_column.bookmarked_statuses": "Du har ikkje nokon bokmerkte tut enno. Når du bokmerkjer eit, dukkar det opp her.", "empty_column.community": "Den lokale samtiden er tom. Skriv noko offentleg å få ballen til å rulle!", - "empty_column.direct": "Du har ingen direktemeldingar ennå. Når du sender eller får ein vil den dukke opp her.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Det er ingen gøymde domene ennå.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Du har ingen favoritt-tut ennå. Når du merkjer ein som favoritt, så dukkar det opp her.", "empty_column.favourites": "Ingen har merkt dette tutet som favoritt enno. Når nokon gjer det, så dukkar det opp her.", "empty_column.follow_recommendations": "Ser ut som at det ikke finnes noen forslag for deg. Du kan prøve å bruke søk for å se etter folk du kan vite eller utforske trendende hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Prøv å deaktivere dem og laste siden på nytt. Hvis det ikke hjelper, kan du fremdeles bruke Mastodon via en annen nettleser eller en annen app.", "errors.unexpected_crash.copy_stacktrace": "Kopier stacktrace til utklippstavla", "errors.unexpected_crash.report_issue": "Rapporter problem", + "explore.search_results": "Søkeresultater", + "explore.suggested_follows": "For deg", + "explore.title": "Utforsk", + "explore.trending_links": "Nyheter", + "explore.trending_statuses": "Innlegg", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Ferdig", "follow_recommendations.heading": "Følg folk du ønsker å se innlegg fra! Her er noen forslag.", "follow_recommendations.lead": "Innlegg fra mennesker du følger vil vises i kronologisk rekkefølge på hjemmefeed. Ikke vær redd for å gjøre feil, du kan slutte å følge folk like enkelt som alt!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "for å framheva", "keyboard_shortcuts.column": "for å fokusera på ein status i ei av kolonnane", "keyboard_shortcuts.compose": "for å fokusera tekstfeltet for skriving", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Skildring", - "keyboard_shortcuts.direct": "for å opna direktemeldingskolonna", "keyboard_shortcuts.down": "for å flytta seg opp og ned i lista", "keyboard_shortcuts.enter": "for å opna status", "keyboard_shortcuts.favourite": "for å merkja som favoritt", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Bokmerke", "navigation_bar.community_timeline": "Lokal tidsline", "navigation_bar.compose": "Lag eit nytt tut", - "navigation_bar.direct": "Direktemeldingar", "navigation_bar.discover": "Oppdag", "navigation_bar.domain_blocks": "Skjulte domene", "navigation_bar.edit_profile": "Rediger profil", + "navigation_bar.explore": "Utforsk", "navigation_bar.favourites": "Favorittar", "navigation_bar.filters": "Målbundne ord", "navigation_bar.follow_requests": "Fylgjeførespurnader", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Innstillingar", "navigation_bar.public_timeline": "Føderert tidsline", "navigation_bar.security": "Tryggleik", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} merkte statusen din som favoritt", "notification.follow": "{name} fylgde deg", "notification.follow_request": "{name} har bedt om å fylgja deg", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Tøm varsel", "notifications.clear_confirmation": "Er du sikker på at du vil fjerna alle varsla dine for alltid?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Skrivebordsvarsel", "notifications.column_settings.favourite": "Favorittar:", "notifications.column_settings.filter_bar.advanced": "Vis alle kategoriar", @@ -327,7 +337,7 @@ "notifications.column_settings.status": "Nye tuter:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.update": "Redigeringer:", "notifications.filter.all": "Alle", "notifications.filter.boosts": "Framhevingar", "notifications.filter.favourites": "Favorittar", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Fjern røyst", "privacy.change": "Juster status-synlegheit", "privacy.direct.long": "Legg berre ut for nemnde brukarar", - "privacy.direct.short": "Direkte", + "privacy.direct.short": "Direct", "privacy.private.long": "Post kun til følgjarar", - "privacy.private.short": "Kun følgjarar", - "privacy.public.long": "Post til offentlege tidslinjer", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Offentleg", - "privacy.unlisted.long": "Ikkje post til offentlege tidslinjer", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Uoppført", "refresh": "Oppdater", "regeneration_indicator.label": "Lastar…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}sek", "relative_time.today": "i dag", "reply_indicator.cancel": "Avbryt", + "report.block": "Blokker", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", - "report.categories.spam": "Spam", + "report.categories.spam": "Søppelpost", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profil", + "report.category.title_status": "innlegg", + "report.close": "Utført", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Vidaresend til {target}", "report.forward_hint": "Kontoen er frå ein annan tenar. Vil du senda ein anonymisert kopi av rapporten dit òg?", - "report.hint": "Rapporten vil verte sendt til dine tenarmoderatorar. Du kan oppgje ei forklaring på kvifor du rapporterer denne kontoen, under:", + "report.mute": "Demp", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Neste", "report.placeholder": "Tilleggskommentarar", + "report.reasons.dislike": "Jeg liker det ikke", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "Det er spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Send inn", "report.target": "Rapporterer {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Søk", "search_popout.search_format": "Avansert søkeformat", "search_popout.tips.full_text": "Enkel tekst returnerer statusar du har skrive, likt, framheva eller vorte nemnd i, i tillegg til samsvarande brukarnamn, visningsnamn og emneknaggar.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Enkel tekst returnerer samsvarande visningsnamn, brukarnamn og emneknaggar", "search_popout.tips.user": "brukar", "search_results.accounts": "Folk", + "search_results.all": "All", "search_results.hashtags": "Emneknaggar", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Tut", "search_results.statuses_fts_disabled": "På denne Matsodon-tenaren kan du ikkje søkja på tut etter innhaldet deira.", "search_results.total": "{count, number} {count, plural, one {treff} other {treff}}", @@ -474,6 +514,7 @@ "upload_error.poll": "Filopplasting ikkje tillate med meiningsmålingar.", "upload_form.audio_description": "Grei ut for folk med nedsett høyrsel", "upload_form.description": "Skildr for synshemja", + "upload_form.description_missing": "Ingen beskrivelse lagt til", "upload_form.edit": "Rediger", "upload_form.thumbnail": "Bytt miniatyrbilete", "upload_form.undo": "Slett", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 2948a0586..707564404 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -18,12 +18,12 @@ "account.followers": "Følgere", "account.followers.empty": "Ingen følger denne brukeren ennå.", "account.followers_counter": "{count, plural, one {{counter} følger} other {{counter} følgere}}", + "account.following": "Følger", "account.following_counter": "{count, plural, one {{counter} som følges} other {{counter} som følges}}", "account.follows.empty": "Denne brukeren følger ikke noen enda.", "account.follows_you": "Følger deg", "account.hide_reblogs": "Skjul fremhevinger fra @{name}", "account.joined": "Ble med den {date}", - "account.last_status": "Sist aktiv", "account.link_verified_on": "Eierskap av denne lenken ble sjekket {date}", "account.locked_info": "Denne kontoens personvernstatus er satt til låst. Eieren vurderer manuelt hvem som kan følge dem.", "account.media": "Media", @@ -32,7 +32,6 @@ "account.mute": "Demp @{name}", "account.mute_notifications": "Ignorer varsler fra @{name}", "account.muted": "Dempet", - "account.never_active": "Aldri", "account.posts": "Innlegg", "account.posts_with_replies": "Toots with replies", "account.report": "Rapportér @{name}", @@ -42,14 +41,16 @@ "account.statuses_counter": "{count, plural, one {{counter} tut} other {{counter} tuter}}", "account.unblock": "Avblokker @{name}", "account.unblock_domain": "Vis {domain}", + "account.unblock_short": "Opphev blokkering", "account.unendorse": "Ikke vis frem på profilen", "account.unfollow": "Avfølg", "account.unmute": "Avdemp @{name}", "account.unmute_notifications": "Vis varsler fra @{name}", + "account.unmute_short": "Opphev demping", "account_note.placeholder": "Klikk for å legge til et notat", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", - "admin.dashboard.retention.average": "Average", + "admin.dashboard.retention.average": "Gjennomsnitt", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "Nye brukere", "alert.rate_limited.message": "Vennligst prøv igjen etter kl. {retry_time, time, medium}.", @@ -69,7 +70,7 @@ "column.blocks": "Blokkerte brukere", "column.bookmarks": "Bokmerker", "column.community": "Lokal tidslinje", - "column.direct": "Direktemeldinger", + "column.conversations": "Conversations", "column.directory": "Bla gjennom profiler", "column.domain_blocks": "Skjulte domener", "column.favourites": "Likt", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Kun lokalt", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Kun eksternt", - "compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.", "compose_form.direct_message_warning_learn_more": "Lær mer", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Denne tuten blir ikke listet under noen emneknagger da den er ulistet. Kun offentlige tuter kan søktes etter med emneknagg.", "compose_form.lock_disclaimer": "Din konto er ikke {locked}. Hvem som helst kan følge deg og se dine private poster.", "compose_form.lock_disclaimer.lock": "låst", @@ -165,8 +166,9 @@ "empty_column.blocks": "Du har ikke blokkert noen brukere enda.", "empty_column.bookmarked_statuses": "Du har ikke bokmerket noen tuter enda. Når du bokmerker en, vil den dukke opp her.", "empty_column.community": "Den lokale tidslinjen er tom. Skriv noe offentlig for å få snøballen til å rulle!", - "empty_column.direct": "Du har ingen direktemeldinger enda. Når du mottar eller sender en, vil den dukke opp her.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Det er ingen skjulte domener enda.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Du har ikke likt noen tuter enda. Når du liker en, vil den dukke opp her.", "empty_column.favourites": "Ingen har likt denne tuten enda. Når noen gjør det, vil de dukke opp her.", "empty_column.follow_recommendations": "Ser ut som at det ikke finnes noen forslag for deg. Du kan prøve å bruke søk for å se etter folk du kan vite eller utforske trendende hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Prøv å deaktivere dem og laste siden på nytt. Hvis det ikke hjelper, kan du fremdeles bruke Mastodon via en annen nettleser eller en annen app.", "errors.unexpected_crash.copy_stacktrace": "Kopier stacktrace-en til utklippstavlen", "errors.unexpected_crash.report_issue": "Rapporter en feil", + "explore.search_results": "Søkeresultater", + "explore.suggested_follows": "For deg", + "explore.title": "Utforsk", + "explore.trending_links": "Nyheter", + "explore.trending_statuses": "Innlegg", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Utført", "follow_recommendations.heading": "Følg folk du ønsker å se innlegg fra! Her er noen forslag.", "follow_recommendations.lead": "Innlegg fra mennesker du følger vil vises i kronologisk rekkefølge på hjemmefeed. Ikke vær redd for å gjøre feil, du kan slutte å følge folk like enkelt som alt!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "å fremheve", "keyboard_shortcuts.column": "å fokusere en status i en av kolonnene", "keyboard_shortcuts.compose": "å fokusere komponeringsfeltet", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Beskrivelse", - "keyboard_shortcuts.direct": "åpne direktemeldingskolonnen", "keyboard_shortcuts.down": "for å flytte ned i listen", "keyboard_shortcuts.enter": "å åpne status", "keyboard_shortcuts.favourite": "for å favorittmarkere", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Bokmerker", "navigation_bar.community_timeline": "Lokal tidslinje", "navigation_bar.compose": "Skriv en ny tut", - "navigation_bar.direct": "Direktemeldinger", "navigation_bar.discover": "Oppdag", "navigation_bar.domain_blocks": "Skjulte domener", "navigation_bar.edit_profile": "Rediger profil", + "navigation_bar.explore": "Utforsk", "navigation_bar.favourites": "Favoritter", "navigation_bar.filters": "Stilnede ord", "navigation_bar.follow_requests": "Følgeforespørsler", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Innstillinger", "navigation_bar.public_timeline": "Felles tidslinje", "navigation_bar.security": "Sikkerhet", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} likte din status", "notification.follow": "{name} fulgte deg", "notification.follow_request": "{name} har bedt om å få følge deg", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Fjern varsler", "notifications.clear_confirmation": "Er du sikker på at du vil fjerne alle dine varsler permanent?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Skrivebordsvarslinger", "notifications.column_settings.favourite": "Likt:", "notifications.column_settings.filter_bar.advanced": "Vis alle kategorier", @@ -327,7 +337,7 @@ "notifications.column_settings.status": "Nye tuter:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.update": "Redigeringer:", "notifications.filter.all": "Alle", "notifications.filter.boosts": "Fremhevinger", "notifications.filter.favourites": "Favoritter", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Fjern avstemningen", "privacy.change": "Justér synlighet", "privacy.direct.long": "Post kun til nevnte brukere", - "privacy.direct.short": "Direkte", + "privacy.direct.short": "Direct", "privacy.private.long": "Post kun til følgere", - "privacy.private.short": "Privat", - "privacy.public.long": "Post kun til offentlige tidslinjer", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Offentlig", - "privacy.unlisted.long": "Ikke vis i offentlige tidslinjer", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Uoppført", "refresh": "Oppfrisk", "regeneration_indicator.label": "Laster…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "i dag", "reply_indicator.cancel": "Avbryt", + "report.block": "Blokker", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", - "report.categories.spam": "Spam", + "report.categories.spam": "Søppelpost", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profil", + "report.category.title_status": "innlegg", + "report.close": "Utført", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Videresend til {target}", "report.forward_hint": "Denne kontoen er fra en annen tjener. Vil du sende en anonymisert kopi av rapporten dit også?", - "report.hint": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:", + "report.mute": "Demp", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Neste", "report.placeholder": "Tilleggskommentarer", + "report.reasons.dislike": "Jeg liker det ikke", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "Det er spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Send inn", "report.target": "Rapporterer", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Søk", "search_popout.search_format": "Avansert søkeformat", "search_popout.tips.full_text": "Enkel tekst gir resultater for statuser du har skrevet, likt, fremhevet, eller har blitt nevnt i, i tillegg til samsvarende brukernavn, visningsnavn og emneknagger.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Enkel tekst returnerer matchende visningsnavn, brukernavn og emneknagger", "search_popout.tips.user": "bruker", "search_results.accounts": "Folk", + "search_results.all": "All", "search_results.hashtags": "Emneknagger", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Tuter", "search_results.statuses_fts_disabled": "Å søke i tuter etter innhold er ikke skrudd på i denne Mastodon-tjeneren.", "search_results.total": "{count, number} {count, plural, one {resultat} other {resultater}}", @@ -474,6 +514,7 @@ "upload_error.poll": "Filopplasting inni avstemninger er ikke tillatt.", "upload_form.audio_description": "Beskriv det for folk med hørselstap", "upload_form.description": "Beskriv for synshemmede", + "upload_form.description_missing": "Ingen beskrivelse lagt til", "upload_form.edit": "Rediger", "upload_form.thumbnail": "Endre miniatyrbilde", "upload_form.undo": "Angre", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 65ba8aeb6..e13c68c3f 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -18,12 +18,12 @@ "account.followers": "Seguidors", "account.followers.empty": "Degun sèc pas aqueste utilizaire pel moment.", "account.followers_counter": "{count, plural, one {{counter} Seguidor} other {{counter} Seguidors}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} Abonaments} other {{counter} Abonaments}}", "account.follows.empty": "Aqueste utilizaire sèc pas degun pel moment.", "account.follows_you": "Vos sèc", "account.hide_reblogs": "Rescondre los partatges de @{name}", "account.joined": "Arribèt en {date}", - "account.last_status": "Darrièra activitat", "account.link_verified_on": "La proprietat d’aqueste ligam foguèt verificada lo {date}", "account.locked_info": "L’estatut de privacitat del compte es configurat sus clavat. Lo proprietari causís qual pòt sègre son compte.", "account.media": "Mèdias", @@ -32,7 +32,6 @@ "account.mute": "Rescondre @{name}", "account.mute_notifications": "Rescondre las notificacions de @{name}", "account.muted": "Mes en silenci", - "account.never_active": "Jamai", "account.posts": "Tuts", "account.posts_with_replies": "Tuts e responsas", "account.report": "Senhalar @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Tut} other {{counter} Tuts}}", "account.unblock": "Desblocar @{name}", "account.unblock_domain": "Desblocar {domain}", + "account.unblock_short": "Unblock", "account.unendorse": "Mostrar pas pel perfil", "account.unfollow": "Quitar de sègre", "account.unmute": "Quitar de rescondre @{name}", "account.unmute_notifications": "Mostrar las notificacions de @{name}", + "account.unmute_short": "Unmute", "account_note.placeholder": "Clicar per ajustar una nòta", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "Personas blocadas", "column.bookmarks": "Marcadors", "column.community": "Flux public local", - "column.direct": "Messatges dirèctes", + "column.conversations": "Conversations", "column.directory": "Percórrer los perfils", "column.domain_blocks": "Domenis resconduts", "column.favourites": "Favorits", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Sonque local", "community.column_settings.media_only": "Solament los mèdias", "community.column_settings.remote_only": "Sonque alonhat", - "compose_form.direct_message_warning": "Sols los mencionats poiràn veire aqueste tut.", "compose_form.direct_message_warning_learn_more": "Ne saber mai", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Aqueste tut serà pas ligat a cap d’etiqueta estant qu’es pas listat. Òm pòt pas cercar que los tuts publics per etiqueta.", "compose_form.lock_disclaimer": "Vòstre compte es pas {locked}. Tot lo mond pòt vos sègre e veire los estatuts reservats als seguidors.", "compose_form.lock_disclaimer.lock": "clavat", @@ -105,7 +106,7 @@ "compose_form.poll.switch_to_single": "Cambiar lo sondatge per permetre una sola causida", "compose_form.publish": "Tut", "compose_form.publish_loud": "{publish} !", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Salvar los cambiaments", "compose_form.sensitive.hide": "Marcar coma sensible", "compose_form.sensitive.marked": "Lo mèdia es marcat coma sensible", "compose_form.sensitive.unmarked": "Lo mèdia es pas marcat coma sensible", @@ -165,8 +166,9 @@ "empty_column.blocks": "Avètz pas blocat degun pel moment.", "empty_column.bookmarked_statuses": "Avètz pas cap de tuts marcats pel moment. Quand ne marquetz un, serà mostrat aquí.", "empty_column.community": "Lo flux public local es void. Escrivètz quicòm per lo garnir !", - "empty_column.direct": "Avètz pas encara cap de messatges. Quand ne mandatz un o que ne recebètz un, serà mostrat aquí.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "I a pas encara cap de domeni amagat.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Avètz pas encara cap de tut favorit. Quand n’auretz un, apareisserà aquí.", "empty_column.favourites": "Degun a pas encara mes en favorit aqueste tut. Quand qualqu’un o farà, apareisserà aquí.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Ensajatz de los desactivar o actualizatz la pagina. Se aquò ajuda pas, podètz ensajar d’utilizar Mastodon via un autre navigador o una aplicacion nativa.", "errors.unexpected_crash.copy_stacktrace": "Copiar las traças al quichapapièrs", "errors.unexpected_crash.report_issue": "Senhalar un problèma", + "explore.search_results": "Resultats de recèrca", + "explore.suggested_follows": "For you", + "explore.title": "Explorar", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Acabat", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "partejar", "keyboard_shortcuts.column": "centrar un estatut a una colomna", "keyboard_shortcuts.compose": "anar al camp tèxte", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "descripcion", - "keyboard_shortcuts.direct": "dobrir la colomna de messatges dirèctes", "keyboard_shortcuts.down": "far davalar dins la lista", "keyboard_shortcuts.enter": "dobrir los estatuts", "keyboard_shortcuts.favourite": "apondre als favorits", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Marcadors", "navigation_bar.community_timeline": "Flux public local", "navigation_bar.compose": "Escriure un nòu tut", - "navigation_bar.direct": "Messatges dirèctes", "navigation_bar.discover": "Trobar", "navigation_bar.domain_blocks": "Domenis resconduts", "navigation_bar.edit_profile": "Modificar lo perfil", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Favorits", "navigation_bar.filters": "Mots ignorats", "navigation_bar.follow_requests": "Demandas d’abonament", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Preferéncias", "navigation_bar.public_timeline": "Flux public global", "navigation_bar.security": "Seguretat", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} a ajustat a sos favorits", "notification.follow": "{name} vos sèc", "notification.follow_request": "{name} a demandat a vos sègre", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Escafar", "notifications.clear_confirmation": "Volètz vertadièrament escafar totas vòstras las notificacions ?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Notificacions localas", "notifications.column_settings.favourite": "Favorits :", "notifications.column_settings.filter_bar.advanced": "Mostrar totas las categorias", @@ -351,42 +361,70 @@ "poll.total_votes": "{count, plural, one {# vòte} other {# vòtes}}", "poll.vote": "Votar", "poll.voted": "Avètz votat per aquesta responsa", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# vòte} other {# vòtes}}", "poll_button.add_poll": "Ajustar un sondatge", "poll_button.remove_poll": "Levar lo sondatge", "privacy.change": "Ajustar la confidencialitat del messatge", "privacy.direct.long": "Mostrar pas qu’a las personas mencionadas", - "privacy.direct.short": "Dirècte", + "privacy.direct.short": "Direct", "privacy.private.long": "Mostrar pas qu’a vòstres seguidors", - "privacy.private.short": "Privat", - "privacy.public.long": "Mostrar dins los fluxes publics", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Public", - "privacy.unlisted.long": "Mostrar pas dins los fluxes publics", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Pas-listat", "refresh": "Actualizar", "regeneration_indicator.label": "Cargament…", "regeneration_indicator.sublabel": "Sèm a preparar vòstre flux d’acuèlh !", "relative_time.days": "fa {number}d", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{number, plural, one {# jorn} other {# jorns}} ago", + "relative_time.full.hours": "fa {number, plural, one {# ora} other {# oras}}", + "relative_time.full.just_now": "ara", + "relative_time.full.minutes": "fa {number, plural, one {# minuta} other {# minutas}}", + "relative_time.full.seconds": "fa {number, plural, one {# segonda} other {# segondas}}", "relative_time.hours": "fa {number}h", "relative_time.just_now": "ara", "relative_time.minutes": "fa {number} min", "relative_time.seconds": "fa {number}s", "relative_time.today": "uèi", "reply_indicator.cancel": "Anullar", + "report.block": "Blocar", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "perfil", + "report.category.title_status": "publicacion", + "report.close": "Acabat", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Far sègre a {target}", "report.forward_hint": "Lo compte ven d’un autre servidor. Volètz mandar una còpia anonima del rapòrt enlai tanben ?", - "report.hint": "Lo moderator del servidor aurà lo rapòrt. Podètz fornir una explicacion de vòstre senhalament aquí dejós  :", + "report.mute": "Amudir", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Seguent", "report.placeholder": "Comentaris addicionals", + "report.reasons.dislike": "M’agrada pas", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Mandar", "report.target": "Senhalar {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Recercar", "search_popout.search_format": "Format recèrca avançada", "search_popout.tips.full_text": "Un tèxte simple que tòrna los estatuts qu’avètz escriches, mes en favorits, partejats, o ont sètz mencionat, e tanben los noms d’utilizaires, escais-noms e etiquetas que correspondonas.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Lo tèxte brut tòrna escais, noms d’utilizaire e etiquetas correspondents", "search_popout.tips.user": "utilizaire", "search_results.accounts": "Gents", + "search_results.all": "All", "search_results.hashtags": "Etiquetas", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Tuts", "search_results.statuses_fts_disabled": "La recèrca de tuts per lor contengut es pas activada sus aqueste servidor Mastodon.", "search_results.total": "{count, number} {count, plural, one {resultat} other {resultats}}", @@ -409,7 +449,7 @@ "status.delete": "Escafar", "status.detailed_status": "Vista detalhada de la convèrsa", "status.direct": "Messatge per @{name}", - "status.edit": "Edit", + "status.edit": "Modificar", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embarcar", @@ -474,6 +514,7 @@ "upload_error.poll": "Lo mandadís de fichièr es pas autorizat pels sondatges.", "upload_form.audio_description": "Descriure per las personas amb pèrdas auditivas", "upload_form.description": "Descripcion pels mal vesents", + "upload_form.description_missing": "No description added", "upload_form.edit": "Modificar", "upload_form.thumbnail": "Cambiar la vinheta", "upload_form.undo": "Suprimir", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index 5456eb88e..09d473ef4 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -18,12 +18,12 @@ "account.followers": "Followers", "account.followers.empty": "No one follows this user yet.", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", - "account.last_status": "Last active", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", @@ -32,7 +32,6 @@ "account.mute": "Mute @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", - "account.never_active": "Never", "account.posts": "Toots", "account.posts_with_replies": "Toots and replies", "account.report": "Report @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "Unblock @{name}", "account.unblock_domain": "Unblock domain {domain}", + "account.unblock_short": "Unblock", "account.unendorse": "Don't feature on profile", "account.unfollow": "Unfollow", "account.unmute": "Unmute @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", + "account.unmute_short": "Unmute", "account_note.placeholder": "Click to add a note", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.conversations": "Conversations", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Remote only", - "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.", "compose_form.direct_message_warning_learn_more": "Learn more", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "locked", @@ -165,8 +166,9 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "There are no blocked domains yet.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", "errors.unexpected_crash.report_issue": "Report issue", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Favourites", "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", "notification.follow_request": "{name} has requested to follow you", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.filter_bar.advanced": "Display all categories", @@ -359,9 +369,9 @@ "privacy.direct.short": "Direct", "privacy.private.long": "Visible for followers only", "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all, shown in public timelines", + "privacy.public.long": "Visible for all", "privacy.public.short": "Public", - "privacy.unlisted.long": "Visible for all, but not in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "Cancel", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", - "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", - "report.placeholder": "Additional comments", - "report.submit": "Submit", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", + "report.placeholder": "Type or paste additional comments", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", + "report.submit": "Submit report", "report.target": "Report {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Search", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", "search_popout.tips.user": "user", "search_results.accounts": "People", + "search_results.all": "All", "search_results.hashtags": "Hashtags", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", @@ -474,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Delete", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 74fa1e52a..1f4f4ae3d 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -18,12 +18,12 @@ "account.followers": "Śledzący", "account.followers.empty": "Nikt jeszcze nie śledzi tego użytkownika.", "account.followers_counter": "{count, plural, one {{counter} śledzący} few {{counter} śledzących} many {{counter} śledzących} other {{counter} śledzących}}", + "account.following": "Śledzenie", "account.following_counter": "{count, plural, one {{counter} śledzony} few {{counter} śledzonych} many {{counter} śledzonych} other {{counter} śledzonych}}", "account.follows.empty": "Ten użytkownik nie śledzi jeszcze nikogo.", "account.follows_you": "Śledzi Cię", "account.hide_reblogs": "Ukryj podbicia od @{name}", "account.joined": "Dołączył(a) {date}", - "account.last_status": "Ostatnia aktywność", "account.link_verified_on": "Własność tego odnośnika została potwierdzona {date}", "account.locked_info": "To konto jest prywatne. Właściciel ręcznie wybiera kto może go śledzić.", "account.media": "Zawartość multimedialna", @@ -32,7 +32,6 @@ "account.mute": "Wycisz @{name}", "account.mute_notifications": "Wycisz powiadomienia o @{name}", "account.muted": "Wyciszony", - "account.never_active": "Nigdy", "account.posts": "Wpisy", "account.posts_with_replies": "Wpisy i odpowiedzi", "account.report": "Zgłoś @{name}", @@ -42,13 +41,15 @@ "account.statuses_counter": "{count, plural, one {{counter} wpis} few {{counter} wpisy} many {{counter} wpisów} other {{counter} wpisów}}", "account.unblock": "Odblokuj @{name}", "account.unblock_domain": "Odblokuj domenę {domain}", + "account.unblock_short": "Odblokuj", "account.unendorse": "Przestań polecać", "account.unfollow": "Przestań śledzić", "account.unmute": "Cofnij wyciszenie @{name}", "account.unmute_notifications": "Cofnij wyciszenie powiadomień od @{name}", + "account.unmute_short": "Włącz dźwięki", "account_note.placeholder": "Naciśnij aby dodać notatkę", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Wskaźnik utrzymania użytkowników po dniach od rejestracji", + "admin.dashboard.monthly_retention": "Wskaźnik utrzymania użytkowników po miesiącach od rejestracji", "admin.dashboard.retention.average": "Średnia", "admin.dashboard.retention.cohort": "Miesiąc rejestracji", "admin.dashboard.retention.cohort_size": "Nowi użytkownicy", @@ -69,7 +70,7 @@ "column.blocks": "Zablokowani użytkownicy", "column.bookmarks": "Zakładki", "column.community": "Lokalna oś czasu", - "column.direct": "Wiadomości bezpośrednie", + "column.conversations": "Konwersacje", "column.directory": "Przeglądaj profile", "column.domain_blocks": "Ukryte domeny", "column.favourites": "Ulubione", @@ -91,9 +92,9 @@ "community.column_settings.local_only": "Tylko Lokalne", "community.column_settings.media_only": "Tylko zawartość multimedialna", "community.column_settings.remote_only": "Tylko Zdalne", - "compose_form.direct_message_warning": "Ten wpis będzie widoczny tylko dla wszystkich wspomnianych użytkowników.", "compose_form.direct_message_warning_learn_more": "Dowiedz się więcej", - "compose_form.hashtag_warning": "Ten wpis nie będzie widoczny pod podanymi hashtagami, ponieważ jest oznaczony jako niewidoczny. Tylko publiczne wpisy mogą zostać znalezione z użyciem hashtagów.", + "compose_form.encryption_warning": "Posty na Mastodon nie są szyfrowane end-to-end. Nie udostępniaj żadnych wrażliwych informacji przez Mastodon.", + "compose_form.hashtag_warning": "Ten wpis nie będzie widoczny pod podanymi hasztagami, ponieważ jest oznaczony jako niewidoczny. Tylko publiczne wpisy mogą zostać znalezione z użyciem hasztagów.", "compose_form.lock_disclaimer": "Twoje konto nie jest {locked}. Każdy, kto Cię śledzi, może wyświetlać Twoje wpisy przeznaczone tylko dla śledzących.", "compose_form.lock_disclaimer.lock": "zablokowane", "compose_form.placeholder": "Co Ci chodzi po głowie?", @@ -165,13 +166,14 @@ "empty_column.blocks": "Nie zablokowałeś(-aś) jeszcze żadnego użytkownika.", "empty_column.bookmarked_statuses": "Nie dodałeś(-aś) żadnego wpisu do zakładek. Kiedy to zrobisz, pojawi się on tutaj.", "empty_column.community": "Lokalna oś czasu jest pusta. Napisz coś publicznie, aby zagaić!", - "empty_column.direct": "Nie masz żadnych wiadomości bezpośrednich. Kiedy dostaniesz lub wyślesz jakąś, pojawi się ona tutaj.", + "empty_column.conversations": "Gdy wyślesz lub otrzymasz wpis, który jest widoczny tylko dla osób w nim wymienionych, pojawi się on tutaj.", "empty_column.domain_blocks": "Brak ukrytych domen.", + "empty_column.explore_statuses": "Nic nie jest w tej chwili popularne. Sprawdź później!", "empty_column.favourited_statuses": "Nie dodałeś(-aś) żadnego wpisu do ulubionych. Kiedy to zrobisz, pojawi się on tutaj.", "empty_column.favourites": "Nikt nie dodał tego wpisu do ulubionych. Gdy ktoś to zrobi, pojawi się tutaj.", - "empty_column.follow_recommendations": "Wygląda na to, że nie można wygenerować dla Ciebie żadnych sugestii. Możesz spróbować wyszukać osoby, które znasz, lub przeglądać popularne hashtagi.", + "empty_column.follow_recommendations": "Wygląda na to, że nie można wygenerować dla Ciebie żadnych sugestii. Możesz spróbować wyszukać osoby, które znasz, lub przeglądać popularne hasztagi.", "empty_column.follow_requests": "Nie masz żadnych próśb o możliwość śledzenia. Kiedy ktoś utworzy ją, pojawi się tutaj.", - "empty_column.hashtag": "Nie ma wpisów oznaczonych tym hashtagiem. Możesz napisać pierwszy(-a)!", + "empty_column.hashtag": "Nie ma wpisów oznaczonych tym hasztagiem. Możesz napisać pierwszy(-a).", "empty_column.home": "Nie śledzisz nikogo. Odwiedź globalną oś czasu lub użyj wyszukiwarki, aby znaleźć interesujące Cię profile.", "empty_column.home.suggestions": "Zobacz kilka sugestii", "empty_column.list": "Nie ma nic na tej liście. Kiedy członkowie listy dodadzą nowe wpisy, pojawia się one tutaj.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Spróbuj je wyłączyć lub odświeżyć stronę. Jeśli to nie pomoże, możesz wciąż korzystać z Mastodona w innej przeglądarce lub natywnej aplikacji.", "errors.unexpected_crash.copy_stacktrace": "Skopiuj ślad stosu do schowka", "errors.unexpected_crash.report_issue": "Zgłoś problem", + "explore.search_results": "Wyniki wyszukiwania", + "explore.suggested_follows": "Dla ciebie", + "explore.title": "Odkrywaj", + "explore.trending_links": "Aktualności", + "explore.trending_statuses": "Posty", + "explore.trending_tags": "Hasztagi", "follow_recommendations.done": "Gotowe", "follow_recommendations.heading": "Śledź ludzi, których wpisy chcesz czytać. Oto kilka propozycji.", "follow_recommendations.lead": "Wpisy osób, które śledzisz będą pojawiać się w porządku chronologicznym na stronie głównej. Nie bój się popełniać błędów, możesz bez problemu przestać śledzić każdego w każdej chwili!", @@ -204,7 +212,7 @@ "hashtag.column_header.tag_mode.any": "lub {additional}", "hashtag.column_header.tag_mode.none": "bez {additional}", "hashtag.column_settings.select.no_options_message": "Nie odnaleziono sugestii", - "hashtag.column_settings.select.placeholder": "Wprowadź hashtagi…", + "hashtag.column_settings.select.placeholder": "Wprowadź hasztagi…", "hashtag.column_settings.tag_mode.all": "Wszystkie", "hashtag.column_settings.tag_mode.any": "Dowolne", "hashtag.column_settings.tag_mode.none": "Żadne", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "aby podbić wpis", "keyboard_shortcuts.column": "aby przejść do wpisu z jednej z kolumn", "keyboard_shortcuts.compose": "aby przejść do pola tworzenia wpisu", + "keyboard_shortcuts.conversations": "aby otworzyć kolumnę konwersacji", "keyboard_shortcuts.description": "Opis", - "keyboard_shortcuts.direct": "aby otworzyć kolumnę wiadomości bezpośrednich", "keyboard_shortcuts.down": "aby przejść na dół listy", "keyboard_shortcuts.enter": "aby otworzyć wpis", "keyboard_shortcuts.favourite": "aby dodać do ulubionych", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Zakładki", "navigation_bar.community_timeline": "Lokalna oś czasu", "navigation_bar.compose": "Utwórz nowy wpis", - "navigation_bar.direct": "Wiadomości bezpośrednie", "navigation_bar.discover": "Odkrywaj", "navigation_bar.domain_blocks": "Ukryte domeny", "navigation_bar.edit_profile": "Edytuj profil", + "navigation_bar.explore": "Odkrywaj", "navigation_bar.favourites": "Ulubione", "navigation_bar.filters": "Wyciszone słowa", "navigation_bar.follow_requests": "Prośby o śledzenie", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Preferencje", "navigation_bar.public_timeline": "Globalna oś czasu", "navigation_bar.security": "Bezpieczeństwo", + "notification.admin.sign_up": "Użytkownik {name} zarejestrował się", "notification.favourite": "{name} dodał(a) Twój wpis do ulubionych", "notification.follow": "{name} zaczął(-ęła) Cię śledzić", "notification.follow_request": "{name} poprosił(a) o możliwość śledzenia Cię", @@ -311,6 +320,7 @@ "notification.update": "{name} edytował post", "notifications.clear": "Wyczyść powiadomienia", "notifications.clear_confirmation": "Czy na pewno chcesz bezpowrotnie usunąć wszystkie powiadomienia?", + "notifications.column_settings.admin.sign_up": "Nowe rejestracje:", "notifications.column_settings.alert": "Powiadomienia na pulpicie", "notifications.column_settings.favourite": "Dodanie do ulubionych:", "notifications.column_settings.filter_bar.advanced": "Wyświetl wszystkie kategorie", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Usuń głosowanie", "privacy.change": "Dostosuj widoczność wpisów", "privacy.direct.long": "Widoczny tylko dla wspomnianych", - "privacy.direct.short": "Bezpośrednio", + "privacy.direct.short": "Tylko wspominane osoby", "privacy.private.long": "Widoczny tylko dla osób, które Cię śledzą", - "privacy.private.short": "Tylko dla śledzących", - "privacy.public.long": "Widoczny na publicznych osiach czasu", + "privacy.private.short": "Tylko śledzący", + "privacy.public.long": "Widoczne dla każdego", "privacy.public.short": "Publiczny", - "privacy.unlisted.long": "Niewidoczny na publicznych osiach czasu", + "privacy.unlisted.long": "Widoczne dla każdego, z wyłączeniem funkcji odkrywania", "privacy.unlisted.short": "Niewidoczny", "refresh": "Odśwież", "regeneration_indicator.label": "Ładuję…", @@ -378,24 +388,54 @@ "relative_time.seconds": "{number} s.", "relative_time.today": "dzisiaj", "reply_indicator.cancel": "Anuluj", + "report.block": "Zablokuj", + "report.block_explanation": "Nie zobaczysz ich postów. Nie będą mogli zobaczyć Twoich postów ani cię śledzić. Będą mogli domyślić się, że są zablokowani.", "report.categories.other": "Inne", "report.categories.spam": "Spam", "report.categories.violation": "Zawartość narusza co najmniej jedną zasadę serwera", + "report.category.subtitle": "Wybierz najbardziej pasującą opcję", + "report.category.title": "Powiedz, co się dzieje z tym {type}", + "report.category.title_account": "profil", + "report.category.title_status": "post", + "report.close": "Gotowe", + "report.comment.title": "Czy jest jeszcze coś, co uważasz, że powinniśmy wiedzieć?", "report.forward": "Przekaż na {target}", "report.forward_hint": "To konto znajduje się na innej instancji. Czy chcesz wysłać anonimową kopię zgłoszenia rnież na nią?", - "report.hint": "Zgłoszenie zostanie wysłane moderatorom Twojego serwera. Poniżej możesz też umieścić wyjaśnienie dlaczego zgłaszasz to konto:", + "report.mute": "Wycisz", + "report.mute_explanation": "Nie zobaczysz ich wpisów. Mimo to będą mogli wciąż śledzić cię i widzieć twoje wpisy, ale nie będą widzieli, że są wyciszeni.", + "report.next": "Dalej", "report.placeholder": "Dodatkowe komentarze", + "report.reasons.dislike": "Nie podoba mi się to", + "report.reasons.dislike_description": "Nie jest to coś, co chciałoby się zobaczyć", + "report.reasons.other": "Coś innego", + "report.reasons.other_description": "Zgłoszenie nie pasuje do żadnej z pozostałych kategorii", + "report.reasons.spam": "To spam", + "report.reasons.spam_description": "Niebezpieczne linki, fałszywe zaangażowanie lub powtarzające się odpowiedzi", + "report.reasons.violation": "Narusza to zasady serwera", + "report.reasons.violation_description": "Zdajesz sobie sprawę, że narusza to szczególne zasady", + "report.rules.subtitle": "Wybierz wszystkie pasujące", + "report.rules.title": "Które zasady zostały złamane?", + "report.statuses.subtitle": "Wybierz wszystkie pasujące", + "report.statuses.title": "Czy są jakieś wpisy, które obrazują opisany w zgłoszeniu problem?", "report.submit": "Wyślij", "report.target": "Zgłaszanie {target}", + "report.thanks.take_action": "Oto opcje, dzięki którym możesz kontrolować, co widzisz na Mastodon:", + "report.thanks.take_action_actionable": "W trakcie jak będziemy się przyglądać tej sprawie, możesz podjąć akcje przeciwko @{name}:", + "report.thanks.title": "Nie chcesz tego widzieć?", + "report.thanks.title_actionable": "Dziękujemy za zgłoszenie. Przyjrzymy się tej sprawie.", + "report.unfollow": "Przestań śledzić @{name}", + "report.unfollow_explanation": "Śledzisz to konto. Jeśli nie chcesz już widzieć postów z tego konta w swojej głównej osi czasu, przestań je śledzić.", "search.placeholder": "Szukaj", "search_popout.search_format": "Zaawansowane wyszukiwanie", "search_popout.tips.full_text": "Pozwala na wyszukiwanie wpisów które napisałeś(-aś), dodałeś(-aś) do ulubionych lub podbiłeś(-aś), w których o Tobie wspomniano, oraz pasujące nazwy użytkowników, pełne nazwy i hashtagi.", "search_popout.tips.hashtag": "hasztag", "search_popout.tips.status": "wpis", - "search_popout.tips.text": "Proste wyszukiwanie pasujących pseudonimów, nazw użytkowników i hashtagów", + "search_popout.tips.text": "Proste wyszukiwanie pasujących pseudonimów, nazw użytkowników i hasztagów", "search_popout.tips.user": "użytkownik", "search_results.accounts": "Ludzie", - "search_results.hashtags": "Hashtagi", + "search_results.all": "Wszystkie", + "search_results.hashtags": "Hasztagi", + "search_results.nothing_found": "Nie znaleziono innych wyników dla tego wyszukania", "search_results.statuses": "Wpisy", "search_results.statuses_fts_disabled": "Szukanie wpisów przy pomocy ich zawartości nie jest włączone na tym serwerze Mastodona.", "search_results.total": "{count, number} {count, plural, one {wynik} few {wyniki} many {wyników} more {wyników}}", @@ -411,12 +451,12 @@ "status.direct": "Wyślij wiadomość bezpośrednią do @{name}", "status.edit": "Edytuj", "status.edited": "Edytowano {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edited_x_times": "Edytowano {count, plural, one {{count} raz} other {{count} razy}}", "status.embed": "Osadź", "status.favourite": "Dodaj do ulubionych", "status.filtered": "Filtrowany(-a)", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} utworzył(a) {date}", + "status.history.edited": "{name} edytował(a) {date}", "status.load_more": "Załaduj więcej", "status.media_hidden": "Zawartość multimedialna ukryta", "status.mention": "Wspomnij o @{name}", @@ -474,6 +514,7 @@ "upload_error.poll": "Dołączanie plików nie dozwolone z głosowaniami.", "upload_form.audio_description": "Opisz dla osób niesłyszących i niedosłyszących", "upload_form.description": "Wprowadź opis dla niewidomych i niedowidzących", + "upload_form.description_missing": "Nie dodano opisu", "upload_form.edit": "Edytuj", "upload_form.thumbnail": "Zmień miniaturę", "upload_form.undo": "Usuń", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 7230c5f39..67725b3ee 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -18,12 +18,12 @@ "account.followers": "Seguidores", "account.followers.empty": "Nada aqui.", "account.followers_counter": "{count, plural, one {{counter} seguidor} other {{counter} seguidores}}", + "account.following": "Seguindo", "account.following_counter": "{count, plural, one {segue {counter}} other {segue {counter}}}", "account.follows.empty": "Nada aqui.", "account.follows_you": "te segue", "account.hide_reblogs": "Ocultar boosts de @{name}", "account.joined": "Entrou em {date}", - "account.last_status": "Ativo pela última vez", "account.link_verified_on": "link verificado em {date}", "account.locked_info": "Trancado. Seguir requer aprovação manual do perfil.", "account.media": "Mídia", @@ -32,7 +32,6 @@ "account.mute": "Silenciar @{name}", "account.mute_notifications": "Ocultar notificações de @{name}", "account.muted": "Silenciado", - "account.never_active": "Nunca", "account.posts": "Toots", "account.posts_with_replies": "Com respostas", "account.report": "Denunciar @{name}", @@ -42,13 +41,15 @@ "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "Desbloquear @{name}", "account.unblock_domain": "Desbloquear domínio {domain}", + "account.unblock_short": "Desbloquear", "account.unendorse": "Remover", "account.unfollow": "Deixar de seguir", "account.unmute": "Dessilenciar @{name}", "account.unmute_notifications": "Mostrar notificações de @{name}", + "account.unmute_short": "Reativar", "account_note.placeholder": "Nota pessoal sobre este perfil aqui", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Taxa de retenção de usuários por dia, após a inscrição", + "admin.dashboard.monthly_retention": "Taxa de retenção de usuários por mês, após a inscrição", "admin.dashboard.retention.average": "Média", "admin.dashboard.retention.cohort": "Mês de inscrição", "admin.dashboard.retention.cohort_size": "Novos usuários", @@ -69,7 +70,7 @@ "column.blocks": "Usuários bloqueados", "column.bookmarks": "Salvos", "column.community": "Linha local", - "column.direct": "Toots Diretos", + "column.conversations": "Conversations", "column.directory": "Explorar perfis", "column.domain_blocks": "Domínios bloqueados", "column.favourites": "Favoritos", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Somente local", "community.column_settings.media_only": "Somente mídia", "community.column_settings.remote_only": "Somente global", - "compose_form.direct_message_warning": "Este toot só será enviado aos usuários mencionados.", "compose_form.direct_message_warning_learn_more": "Saiba mais", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Este toot não aparecerá em nenhuma hashtag porque está como não-listado. Somente toots públicos podem ser pesquisados por hashtag.", "compose_form.lock_disclaimer": "Seu perfil não está {locked}. Qualquer um pode te seguir e ver os toots privados.", "compose_form.lock_disclaimer.lock": "trancado", @@ -105,7 +106,7 @@ "compose_form.poll.switch_to_single": "Opção única", "compose_form.publish": "TOOT", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Salvar alterações", "compose_form.sensitive.hide": "{count, plural, one {Marcar mídia como sensível} other {Marcar mídias como sensível}}", "compose_form.sensitive.marked": "{count, plural, one {Mídia marcada como sensível} other {Mídias marcadas como sensível}}", "compose_form.sensitive.unmarked": "{count, plural, one {Mídia não está marcada como sensível} other {Mídias não estão marcadas como sensível}}", @@ -165,8 +166,9 @@ "empty_column.blocks": "Nada aqui.", "empty_column.bookmarked_statuses": "Nada aqui. Quando você salvar um toot, ele aparecerá aqui.", "empty_column.community": "A linha local está vazia. Publique algo para começar!", - "empty_column.direct": "Nada aqui. Quando você enviar ou receber toots diretos, eles aparecerão aqui.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Nada aqui.", + "empty_column.explore_statuses": "Nada está em alta no momento. Volte mais tarde!", "empty_column.favourited_statuses": "Nada aqui. Quando você favoritar um toot, ele aparecerá aqui.", "empty_column.favourites": "Nada aqui. Quando alguém favoritar, o autor aparecerá aqui.", "empty_column.follow_recommendations": "Parece que não há sugestões para você. Tente usar a pesquisa para encontrar pessoas que você possa conhecer ou explorar hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Tente desativá-los e atualizar a página. Se isso não ajudar, você ainda poderá usar o Mastodon por meio de um navegador diferente ou de um aplicativo nativo.", "errors.unexpected_crash.copy_stacktrace": "Copiar dados do erro para área de transferência", "errors.unexpected_crash.report_issue": "Reportar problema", + "explore.search_results": "Resultado da pesquisa", + "explore.suggested_follows": "Para você", + "explore.title": "Explorar", + "explore.trending_links": "Notícias", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Salvar", "follow_recommendations.heading": "Siga pessoas que você gostaria de acompanhar! Aqui estão algumas sugestões.", "follow_recommendations.lead": "Toots de pessoas que você segue aparecerão em ordem cronológica na página inicial. Não tenha medo de cometer erros, você pode facilmente deixar de seguir a qualquer momento!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "dar boost", "keyboard_shortcuts.column": "focar na coluna", "keyboard_shortcuts.compose": "focar no compositor", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Descrição", - "keyboard_shortcuts.direct": "abrir toots diretos", "keyboard_shortcuts.down": "mover para baixo", "keyboard_shortcuts.enter": "abrir toot", "keyboard_shortcuts.favourite": "favoritar toot", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Salvos", "navigation_bar.community_timeline": "Linha do tempo local", "navigation_bar.compose": "Compor novo toot", - "navigation_bar.direct": "Toots diretos", "navigation_bar.discover": "Descobrir", "navigation_bar.domain_blocks": "Domínios bloqueados", "navigation_bar.edit_profile": "Editar perfil", + "navigation_bar.explore": "Explorar", "navigation_bar.favourites": "Favoritos", "navigation_bar.filters": "Palavras filtradas", "navigation_bar.follow_requests": "Seguidores pendentes", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Preferências", "navigation_bar.public_timeline": "Linha global", "navigation_bar.security": "Segurança", + "notification.admin.sign_up": "{name} se inscreveu", "notification.favourite": "{name} favoritou teu toot", "notification.follow": "{name} te seguiu", "notification.follow_request": "{name} quer te seguir", @@ -308,9 +317,10 @@ "notification.poll": "Uma enquete que você votou terminou", "notification.reblog": "{name} deu boost no teu toot", "notification.status": "{name} acabou de tootar", - "notification.update": "{name} edited a post", + "notification.update": "{name} editou uma publicação", "notifications.clear": "Limpar notificações", "notifications.clear_confirmation": "Você tem certeza de que deseja limpar todas as suas notificações?", + "notifications.column_settings.admin.sign_up": "Novas inscrições:", "notifications.column_settings.alert": "Notificações no computador", "notifications.column_settings.favourite": "Favoritos:", "notifications.column_settings.filter_bar.advanced": "Mostrar todas as categorias", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Remover enquete", "privacy.change": "Alterar privacidade do toot", "privacy.direct.long": "Postar só para usuários mencionados", - "privacy.direct.short": "Direto", + "privacy.direct.short": "Direct", "privacy.private.long": "Postar só para seguidores", - "privacy.private.short": "Privado", - "privacy.public.long": "Postar em linhas públicas", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Público", - "privacy.unlisted.long": "Não postar em linhas públicas", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Não-listado", "refresh": "Atualizar", "regeneration_indicator.label": "Carregando…", @@ -369,7 +379,7 @@ "relative_time.days": "{number}d", "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", + "relative_time.full.just_now": "agora mesmo", "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}h", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "hoje", "reply_indicator.cancel": "Cancelar", - "report.categories.other": "Other", + "report.block": "Bloquear", + "report.block_explanation": "Você não verá suas postagens. Eles não poderão ver suas postagens ou segui-lo. Eles serão capazes de perceber que estão bloqueados.", + "report.categories.other": "Outro", "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.violation": "O conteúdo viola uma ou mais regras do servidor", + "report.category.subtitle": "Escolha a alternativa de melhor correspondência", + "report.category.title": "Conte-nos o que está acontecendo com esse {type}", + "report.category.title_account": "perfil", + "report.category.title_status": "publicação", + "report.close": "Concluído", + "report.comment.title": "Há algo mais que você acredita que devemos saber?", "report.forward": "Encaminhar para {target}", "report.forward_hint": "A conta está em outra instância. Enviar uma cópia anônima da denúncia para lá?", - "report.hint": "A denúncia será enviada aos moderadores da instância. Explique por que denunciou a conta:", + "report.mute": "Silenciar", + "report.mute_explanation": "Você não verá suas postagens. Eles ainda podem seguir você e ver suas postagens e não saberão que estão silenciados.", + "report.next": "Próximo", "report.placeholder": "Comentários adicionais aqui", + "report.reasons.dislike": "Eu não gosto disso", + "report.reasons.dislike_description": "Não é algo que você quer ver", + "report.reasons.other": "É outra coisa", + "report.reasons.other_description": "O problema não se encaixa em outras categorias", + "report.reasons.spam": "É spam", + "report.reasons.spam_description": "Links maliciosos, envolvimento falso ou respostas repetitivas", + "report.reasons.violation": "Viola as regras do servidor", + "report.reasons.violation_description": "Você está ciente de que isso quebra regras específicas", + "report.rules.subtitle": "Selecione tudo que se aplica", + "report.rules.title": "Que regras estão sendo violadas?", + "report.statuses.subtitle": "Selecione tudo que se aplica", + "report.statuses.title": "Existem postagens que respaldam esse relatório?", "report.submit": "Enviar", "report.target": "Denunciando {target}", + "report.thanks.take_action": "Aqui estão suas opções para controlar o que você vê no Mastodon:", + "report.thanks.take_action_actionable": "Enquanto revisamos isso, você pode tomar medidas contra @{name}:", + "report.thanks.title": "Não quer ver isto?", + "report.thanks.title_actionable": "Obrigado por reportar. Vamos analisar.", + "report.unfollow": "Deixar de seguir @{name}", + "report.unfollow_explanation": "Você está seguindo esta conta. Para não mais ver os posts dele em sua página inicial, deixe de segui-lo.", "search.placeholder": "Pesquisar", "search_popout.search_format": "Formato de pesquisa avançada", "search_popout.tips.full_text": "Texto simples retorna toots que você escreveu, favoritou, deu boost, ou em que foi mencionado, assim como nomes de usuário e de exibição, e hashtags correspondentes.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Texto simples retorna nomes de exibição e de usuário, e hashtags correspondentes", "search_popout.tips.user": "usuário", "search_results.accounts": "Pessoas", + "search_results.all": "Tudo", "search_results.hashtags": "Hashtags", + "search_results.nothing_found": "Não foi possível encontrar nada para estes termos de busca", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Pesquisar toots por seu conteúdo não está ativado nesta instância Mastodon.", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", @@ -409,14 +449,14 @@ "status.delete": "Excluir", "status.detailed_status": "Visão detalhada da conversa", "status.direct": "Enviar toot direto para @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", + "status.edit": "Editar", + "status.edited": "Editado em {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Incorporar", "status.favourite": "Favoritar", "status.filtered": "Filtrado", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} criou {date}", + "status.history.edited": "{name} editou {date}", "status.load_more": "Ver mais", "status.media_hidden": "Mídia sensível", "status.mention": "Mencionar @{name}", @@ -474,6 +514,7 @@ "upload_error.poll": "Mídias não podem ser anexadas em toots com enquetes.", "upload_form.audio_description": "Descrever para deficientes auditivos", "upload_form.description": "Descrever para deficientes visuais", + "upload_form.description_missing": "Nenhuma descrição adicionada", "upload_form.edit": "Editar", "upload_form.thumbnail": "Alterar miniatura", "upload_form.undo": "Excluir", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 531265706..12860d7ab 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -18,12 +18,12 @@ "account.followers": "Seguidores", "account.followers.empty": "Ainda ninguém segue este utilizador.", "account.followers_counter": "{count, plural, one {{counter} Seguidor} other {{counter} Seguidores}}", + "account.following": "A seguir", "account.following_counter": "{count, plural, other {A seguir {counter}}}", "account.follows.empty": "Este utilizador ainda não segue ninguém.", "account.follows_you": "Segue-te", "account.hide_reblogs": "Esconder partilhas de @{name}", "account.joined": "Ingressou em {date}", - "account.last_status": "Última atividade", "account.link_verified_on": "A posse deste link foi verificada em {date}", "account.locked_info": "Esta conta é privada. O proprietário revê manualmente quem a pode seguir.", "account.media": "Média", @@ -32,7 +32,6 @@ "account.mute": "Silenciar @{name}", "account.mute_notifications": "Silenciar notificações de @{name}", "account.muted": "Silenciada", - "account.never_active": "Nunca", "account.posts": "Toots", "account.posts_with_replies": "Publicações e respostas", "account.report": "Denunciar @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "Desbloquear @{name}", "account.unblock_domain": "Mostrar {domain}", + "account.unblock_short": "Desbloquear", "account.unendorse": "Não mostrar no perfil", "account.unfollow": "Deixar de seguir", "account.unmute": "Não silenciar @{name}", "account.unmute_notifications": "Deixar de silenciar @{name}", + "account.unmute_short": "Deixar de silenciar", "account_note.placeholder": "Clique para adicionar nota", "admin.dashboard.daily_retention": "Taxa de retenção de utilizadores por dia após a inscrição", "admin.dashboard.monthly_retention": "Taxa de retenção de utilizadores por mês após a inscrição", @@ -69,7 +70,7 @@ "column.blocks": "Utilizadores Bloqueados", "column.bookmarks": "Itens salvos", "column.community": "Cronologia local", - "column.direct": "Mensagens diretas", + "column.conversations": "Conversations", "column.directory": "Procurar perfis", "column.domain_blocks": "Domínios escondidos", "column.favourites": "Favoritos", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Local apenas", "community.column_settings.media_only": "Somente media", "community.column_settings.remote_only": "Remoto apenas", - "compose_form.direct_message_warning": "Esta publicação será enviada apenas para os utilizadores mencionados.", "compose_form.direct_message_warning_learn_more": "Conhecer mais", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Este toot não será listado em nenhuma hashtag por ser não listado. Apenas toots públics podem ser pesquisados por hashtag.", "compose_form.lock_disclaimer": "A sua conta não é {locked}. Qualquer pessoa pode segui-lo e ver as publicações direcionadas apenas a seguidores.", "compose_form.lock_disclaimer.lock": "bloqueado", @@ -165,8 +166,9 @@ "empty_column.blocks": "Ainda não bloqueaste qualquer utilizador.", "empty_column.bookmarked_statuses": "Ainda não adicionou nenhum toot aos Itens salvos. Quando adicionar, eles serão exibidos aqui.", "empty_column.community": "A timeline local está vazia. Escreve algo publicamente para começar!", - "empty_column.direct": "Ainda não tem qualquer mensagem direta. Quando enviar ou receber alguma, ela irá aparecer aqui.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Ainda não há qualquer domínio escondido.", + "empty_column.explore_statuses": "Nada em destaque por agora. Volte mais tarde!", "empty_column.favourited_statuses": "Ainda não tens quaisquer toots favoritos. Quando tiveres algum, ele irá aparecer aqui.", "empty_column.favourites": "Ainda ninguém marcou este toot como favorito. Quando alguém o fizer, ele irá aparecer aqui.", "empty_column.follow_recommendations": "Parece que não foi possível gerar nenhuma sugestão para si. Pode tentar utilizar a pesquisa para procurar pessoas que conheça ou explorar as hashtags em destaque.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Tente desabilitá-los e atualizar a página. Se isso não ajudar, você ainda poderá usar o Mastodon por meio de um navegador diferente ou de um aplicativo nativo.", "errors.unexpected_crash.copy_stacktrace": "Copiar a stacktrace para o clipboard", "errors.unexpected_crash.report_issue": "Reportar problema", + "explore.search_results": "Resultados da pesquisa", + "explore.suggested_follows": "Para si", + "explore.title": "Explorar", + "explore.trending_links": "Notícias", + "explore.trending_statuses": "Publicações", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Concluído", "follow_recommendations.heading": "Siga pessoas das quais gostaria de ver publicações! Aqui estão algumas sugestões.", "follow_recommendations.lead": "As publicações das pessoas que segue serão exibidos em ordem cronológica na sua página inicial. Não tenha medo de cometer erros, você pode deixar de seguir as pessoas tão facilmente a qualquer momento!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "para partilhar", "keyboard_shortcuts.column": "para focar uma publicação numa das colunas", "keyboard_shortcuts.compose": "para focar na área de publicação", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Descrição", - "keyboard_shortcuts.direct": "para abrir a coluna das mensagens diretas", "keyboard_shortcuts.down": "para mover para baixo na lista", "keyboard_shortcuts.enter": "para expandir uma publicação", "keyboard_shortcuts.favourite": "para adicionar aos favoritos", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Itens salvos", "navigation_bar.community_timeline": "Cronologia local", "navigation_bar.compose": "Escrever novo toot", - "navigation_bar.direct": "Mensagens diretas", "navigation_bar.discover": "Descobrir", "navigation_bar.domain_blocks": "Domínios escondidos", "navigation_bar.edit_profile": "Editar perfil", + "navigation_bar.explore": "Explorar", "navigation_bar.favourites": "Favoritos", "navigation_bar.filters": "Palavras silenciadas", "navigation_bar.follow_requests": "Seguidores pendentes", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Preferências", "navigation_bar.public_timeline": "Cronologia federada", "navigation_bar.security": "Segurança", + "notification.admin.sign_up": "{name} inscreveu-se", "notification.favourite": "{name} adicionou a tua publicação aos favoritos", "notification.follow": "{name} começou a seguir-te", "notification.follow_request": "{name} pediu para segui-lo", @@ -311,6 +320,7 @@ "notification.update": "{name} editou uma publicação", "notifications.clear": "Limpar notificações", "notifications.clear_confirmation": "Queres mesmo limpar todas as notificações?", + "notifications.column_settings.admin.sign_up": "Novas inscrições:", "notifications.column_settings.alert": "Notificações no ambiente de trabalho", "notifications.column_settings.favourite": "Favoritos:", "notifications.column_settings.filter_bar.advanced": "Mostrar todas as categorias", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Remover votação", "privacy.change": "Ajustar a privacidade da publicação", "privacy.direct.long": "Apenas para utilizadores mencionados", - "privacy.direct.short": "Directo", + "privacy.direct.short": "Direct", "privacy.private.long": "Apenas para os seguidores", - "privacy.private.short": "Privado", - "privacy.public.long": "Publicar em todos os feeds", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Público", - "privacy.unlisted.long": "Não publicar nos feeds públicos", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Não listar", "refresh": "Actualizar", "regeneration_indicator.label": "A carregar…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "hoje", "reply_indicator.cancel": "Cancelar", + "report.block": "Bloquear", + "report.block_explanation": "Não verá as publicações deles. Eles não serão capazes de ver suas publicações ou de o seguir. Eles vão conseguir saber que estão bloqueados.", "report.categories.other": "Outro", "report.categories.spam": "Spam", "report.categories.violation": "O conteúdo viola uma ou mais regras do servidor", + "report.category.subtitle": "Escolha a melhor correspondência", + "report.category.title": "Diga-nos o que se passa com esse {type}", + "report.category.title_account": "perfil", + "report.category.title_status": "publicação", + "report.close": "Concluído", + "report.comment.title": "Há algo mais que pensa que devemos saber?", "report.forward": "Reenviar para {target}", "report.forward_hint": "A conta é de outro servidor. Enviar uma cópia anónima da denúncia para lá também?", - "report.hint": "A denúncia será enviada para os moderadores do seu servidor. Pode fornecer, em baixo, uma explicação do motivo pelo qual está a denunciar esta conta:", + "report.mute": "Silenciar", + "report.mute_explanation": "Não verá as publicações deles. Eles ainda poderão segui-lo e ver as suas publicações e não saberão que estão silenciados.", + "report.next": "Seguinte", "report.placeholder": "Comentários adicionais", + "report.reasons.dislike": "Não gosto disso", + "report.reasons.dislike_description": "Não é algo que deseje ver", + "report.reasons.other": "É outra coisa", + "report.reasons.other_description": "O problema não se encaixa nas outras categorias", + "report.reasons.spam": "É spam", + "report.reasons.spam_description": "Links maliciosos, contactos falsos, ou respostas repetitivas", + "report.reasons.violation": "Viola as regras do servidor", + "report.reasons.violation_description": "Está ciente de que infringe regras específicas", + "report.rules.subtitle": "Selecione tudo o que se aplicar", + "report.rules.title": "Que regras estão a ser violadas?", + "report.statuses.subtitle": "Selecione tudo o que se aplicar", + "report.statuses.title": "Existe alguma publicação que suporte esta denúncia?", "report.submit": "Enviar", "report.target": "A denunciar {target}", + "report.thanks.take_action": "Aqui estão as suas opções para controlar o que vê no Mastodon:", + "report.thanks.take_action_actionable": "Enquanto revemos a sua denúncia, pode tomar medidas contra @{name}:", + "report.thanks.title": "Não quer ver isto?", + "report.thanks.title_actionable": "Obrigado por reportar, vamos analisar.", + "report.unfollow": "Deixar de seguir @{name}", + "report.unfollow_explanation": "Está a seguir esta conta. Para não ver mais as publicações desta conta na sua página inicial, deixe de segui-la.", "search.placeholder": "Pesquisar", "search_popout.search_format": "Formato avançado de pesquisa", "search_popout.tips.full_text": "Texto simples devolve publicações que escreveu, marcou como favorita, partilhou ou em que foi mencionado, tal como nomes de utilizador, alcunhas e hashtags.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "O texto simples retorna a correspondência de nomes, utilizadores e hashtags", "search_popout.tips.user": "utilizador", "search_results.accounts": "Pessoas", + "search_results.all": "Tudo", "search_results.hashtags": "Hashtags", + "search_results.nothing_found": "Não foi possível encontrar resultados para as expressões pesquisadas", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "A pesquisa de toots pelo seu conteúdo não está disponível nesta instância Mastodon.", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", @@ -474,6 +514,7 @@ "upload_error.poll": "Carregamento de ficheiros não é permitido em votações.", "upload_form.audio_description": "Descreva para pessoas com diminuição da acuidade auditiva", "upload_form.description": "Descrição da imagem para pessoas com dificuldades visuais", + "upload_form.description_missing": "Nenhuma descrição adicionada", "upload_form.edit": "Editar", "upload_form.thumbnail": "Alterar miniatura", "upload_form.undo": "Eliminar", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index 1a6e19713..5a0932f5b 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -18,12 +18,12 @@ "account.followers": "Abonați", "account.followers.empty": "Acest utilizator încă nu are abonați.", "account.followers_counter": "{count, plural, one {{counter} Abonat} few {{counter} Abonați} other {{counter} Abonați}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} Abonament} few {{counter} Abonamente} other {{counter} Abonamente}}", "account.follows.empty": "Momentan acest utilizator nu are niciun abonament.", "account.follows_you": "Este abonat la tine", "account.hide_reblogs": "Ascunde distribuirile de la @{name}", "account.joined": "S-a înscris în {date}", - "account.last_status": "Ultima activitate", "account.link_verified_on": "Proprietatea acestui link a fost verificată pe {date}", "account.locked_info": "Acest profil este privat. Această persoană aprobă manual conturile care se abonează la ea.", "account.media": "Media", @@ -32,7 +32,6 @@ "account.mute": "Ignoră pe @{name}", "account.mute_notifications": "Ignoră notificările de la @{name}", "account.muted": "Ignorat", - "account.never_active": "Niciodată", "account.posts": "Postări", "account.posts_with_replies": "Postări și răspunsuri", "account.report": "Raportează pe @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "Deblochează pe @{name}", "account.unblock_domain": "Deblochează domeniul {domain}", + "account.unblock_short": "Unblock", "account.unendorse": "Nu promova pe profil", "account.unfollow": "Nu mai urmări", "account.unmute": "Nu mai ignora pe @{name}", "account.unmute_notifications": "Activează notificările de la @{name}", + "account.unmute_short": "Unmute", "account_note.placeholder": "Click to add a note", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "Utilizatori blocați", "column.bookmarks": "Marcaje", "column.community": "Cronologie locală", - "column.direct": "Mesaje directe", + "column.conversations": "Conversations", "column.directory": "Explorează profiluri", "column.domain_blocks": "Domenii blocate", "column.favourites": "Favorite", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Doar local", "community.column_settings.media_only": "Doar media", "community.column_settings.remote_only": "Doar la distanţă", - "compose_form.direct_message_warning": "Această postare va fi trimisă doar utilizatorilor menționați.", "compose_form.direct_message_warning_learn_more": "Află mai multe", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Această postare nu va fi listată sub niciun hashtag deoarece este nelistată. Doar postările publice pot fi căutate cu un hashtag.", "compose_form.lock_disclaimer": "Contul tău nu este {locked}. Oricine se poate abona la tine pentru a îți vedea postările numai pentru abonați.", "compose_form.lock_disclaimer.lock": "privat", @@ -165,8 +166,9 @@ "empty_column.blocks": "Momentan nu ai blocat niciun utilizator.", "empty_column.bookmarked_statuses": "Momentan nu ai nicio postare marcată. Când vei marca una, va apărea aici.", "empty_column.community": "Nu există nimic în cronologia locală. Postează ceva public pentru a sparge gheața!", - "empty_column.direct": "Momentan nu ai niciun mesaj direct. Când trimiți sau primești un mesaj, va apărea aici.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Momentan nu există domenii blocate.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Momentan nu ai nicio postare favorită. Când vei adăuga una, va apărea aici.", "empty_column.favourites": "Momentan nimeni nu a adăugat această postare la favorite. Când cineva o va face, va apărea aici.", "empty_column.follow_recommendations": "Se pare că nu am putut genera nicio sugestie pentru tine. Poți încerca funcția de căutare pentru a căuta persoane pe care le cunoști, sau poți explora tendințele.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Încearcă să le dezactivezi și să reîmprospătezi pagina. Dacă tot nu funcționează, poți accesa Mastodon dintr-un alt navigator sau dintr-o aplicație nativă.", "errors.unexpected_crash.copy_stacktrace": "Copiere stacktrace în clipboard", "errors.unexpected_crash.report_issue": "Raportează o problemă", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Terminat", "follow_recommendations.heading": "Urmărește persoanele ale căror postări te-ar interesa! Iată câteva sugestii.", "follow_recommendations.lead": "Postările de la persoanele la care te-ai abonat vor apărea în ordine cronologică în cronologia principală. Nu-ți fie teamă să faci greșeli, poți să te dezabonezi oricând de la ei la fel de ușor!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "Distribuie postarea", "keyboard_shortcuts.column": "Focalizează pe coloană", "keyboard_shortcuts.compose": "Focalizează pe zona de text", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Descriere", - "keyboard_shortcuts.direct": "Deschide coloana de mesaje directe", "keyboard_shortcuts.down": "Coboară în listă", "keyboard_shortcuts.enter": "Deschide postarea", "keyboard_shortcuts.favourite": "Adaugă postarea la favorite", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Marcaje", "navigation_bar.community_timeline": "Cronologie locală", "navigation_bar.compose": "Compune o nouă postare", - "navigation_bar.direct": "Mesaje directe", "navigation_bar.discover": "Descoperă", "navigation_bar.domain_blocks": "Domenii blocate", "navigation_bar.edit_profile": "Modifică profilul", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Favorite", "navigation_bar.filters": "Cuvinte ignorate", "navigation_bar.follow_requests": "Cereri de abonare", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Preferințe", "navigation_bar.public_timeline": "Cronologie globală", "navigation_bar.security": "Securitate", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} a adăugat postarea ta la favorite", "notification.follow": "{name} s-a abonat la tine", "notification.follow_request": "{name} a trimis o cerere de abonare", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Șterge notificările", "notifications.clear_confirmation": "Ești sigur că vrei să ștergi permanent toate notificările?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Notificări pe desktop", "notifications.column_settings.favourite": "Favorite:", "notifications.column_settings.filter_bar.advanced": "Afișează toate categoriile", @@ -358,10 +368,10 @@ "privacy.direct.long": "Vizibil doar pentru utilizatorii menționați", "privacy.direct.short": "Direct", "privacy.private.long": "Vizibil doar pentru abonați", - "privacy.private.short": "Doar abonați", - "privacy.public.long": "Vizibil pentru toți, afișat în cronologiile publice", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Public", - "privacy.unlisted.long": "Vizibil pentru toți, dar nu și în cronologiile publice", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Nelistat", "refresh": "Reîncarcă", "regeneration_indicator.label": "Se încarcă…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "astăzi", "reply_indicator.cancel": "Anulează", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Redirecționează către {target}", "report.forward_hint": "Acest cont este de pe un alt server. Trimitem o copie anonimă a raportului și acolo?", - "report.hint": "Sesizarea va fi trimisă către moderatorii acestei instanțe. Poți oferi o explicație pentru această sesizare mai jos:", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", "report.placeholder": "Comentarii adiționale", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Trimite", "report.target": "Raportează {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Caută", "search_popout.search_format": "Formate pentru căutare avansată", "search_popout.tips.full_text": "Textele simple returnează postări pe care le-ai scris, favorizat, impulsionat, sau în care sunt menționate, deasemenea și utilizatorii sau hashtag-urile care se potrivesc.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Textele simple returnează nume, nume de utilizatori și hashtag-urile care se potrivesc", "search_popout.tips.user": "utilizator", "search_results.accounts": "Persoane", + "search_results.all": "All", "search_results.hashtags": "Hashtag-uri", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Postări", "search_results.statuses_fts_disabled": "Căutarea de postări după conținutul lor nu este activată pe acest server.", "search_results.total": "{count, number} {count, plural, one {rezultat} other {rezultate}}", @@ -474,6 +514,7 @@ "upload_error.poll": "Încărcarea fișierului nu este permisă cu sondaje.", "upload_form.audio_description": "Descrie pentru persoanele cu deficiență a auzului", "upload_form.description": "Adaugă o descriere pentru persoanele cu deficiențe de vedere", + "upload_form.description_missing": "No description added", "upload_form.edit": "Modifică", "upload_form.thumbnail": "Schimbă miniatura", "upload_form.undo": "Șterge", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 82e57821b..dfc37e8d1 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -18,12 +18,12 @@ "account.followers": "Подписчики", "account.followers.empty": "На этого пользователя пока никто не подписан.", "account.followers_counter": "{count, plural, one {{counter} подписчик} many {{counter} подписчиков} other {{counter} подписчика}}", + "account.following": "Подписки", "account.following_counter": "{count, plural, one {{counter} подписка} many {{counter} подписок} other {{counter} подписки}}", "account.follows.empty": "Этот пользователь пока ни на кого не подписался.", "account.follows_you": "Подписан(а) на вас", "account.hide_reblogs": "Скрыть продвижения от @{name}", "account.joined": "Зарегистрирован(а) с {date}", - "account.last_status": "Последняя активность", "account.link_verified_on": "Владение этой ссылкой было проверено {date}", "account.locked_info": "Это закрытый аккаунт. Его владелец вручную одобряет подписчиков.", "account.media": "Медиа", @@ -32,7 +32,6 @@ "account.mute": "Игнорировать @{name}", "account.mute_notifications": "Скрыть уведомления от @{name}", "account.muted": "Игнорируется", - "account.never_active": "Никогда", "account.posts": "Посты", "account.posts_with_replies": "Посты и ответы", "account.report": "Пожаловаться на @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} пост} many {{counter} постов} other {{counter} поста}}", "account.unblock": "Разблокировать @{name}", "account.unblock_domain": "Разблокировать {domain}", + "account.unblock_short": "Разблокировать", "account.unendorse": "Не рекомендовать в профиле", "account.unfollow": "Отписаться", - "account.unmute": "Убрать {name} из игнорируемых", + "account.unmute": "Не игнорировать @{name}", "account.unmute_notifications": "Показывать уведомления от @{name}", + "account.unmute_short": "Не игнорировать", "account_note.placeholder": "Текст заметки", "admin.dashboard.daily_retention": "Уровень удержания пользователей после регистрации, в днях", "admin.dashboard.monthly_retention": "Уровень удержания пользователей после регистрации, в месяцах", @@ -53,7 +54,7 @@ "admin.dashboard.retention.cohort": "Месяц регистрации", "admin.dashboard.retention.cohort_size": "Новые пользователи", "alert.rate_limited.message": "Пожалуйста, повторите после {retry_time, time, medium}.", - "alert.rate_limited.title": "Вы выполняете действие слишком часто", + "alert.rate_limited.title": "Ограничение количества запросов", "alert.unexpected.message": "Произошла непредвиденная ошибка.", "alert.unexpected.title": "Упс!", "announcement.announcement": "Объявление", @@ -69,7 +70,7 @@ "column.blocks": "Заблокированные пользователи", "column.bookmarks": "Закладки", "column.community": "Локальная лента", - "column.direct": "Личные сообщения", + "column.conversations": "Диалоги", "column.directory": "Просмотр профилей", "column.domain_blocks": "Заблокированные домены", "column.favourites": "Избранное", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Только локальные", "community.column_settings.media_only": "Только с медиафайлами", "community.column_settings.remote_only": "Только удалённые", - "compose_form.direct_message_warning": "Адресованные посты отправляются и видны только упомянутым в них пользователям.", "compose_form.direct_message_warning_learn_more": "Подробнее", + "compose_form.encryption_warning": "Посты в Mastodon не защищены сквозным шифрованием. Не делитесь потенциально опасной информацией.", "compose_form.hashtag_warning": "Так как этот пост не публичный, он не отобразится в поиске по хэштегам.", "compose_form.lock_disclaimer": "Ваша учётная запись {locked}. Любой пользователь сможет подписаться на вас и просматривать посты для подписчиков.", "compose_form.lock_disclaimer.lock": "не закрыта", @@ -165,8 +166,9 @@ "empty_column.blocks": "Вы ещё никого не заблокировали.", "empty_column.bookmarked_statuses": "У вас пока нет постов в закладках. Как добавите один, он отобразится здесь.", "empty_column.community": "Локальная лента пуста. Напишите что-нибудь, чтобы разогреть народ!", - "empty_column.direct": "У вас пока нет личных сообщений. Как только вы отправите или получите одно, оно появится здесь.", + "empty_column.conversations": "Здесь отображаются адресованные посты. Как только вы отправите или получите один, он отобразится здесь.", "empty_column.domain_blocks": "Скрытых доменов пока нет.", + "empty_column.explore_statuses": "Нет актуального. Проверьте позже!", "empty_column.favourited_statuses": "Вы не добавили ни один пост в «Избранное». Как только вы это сделаете, он появится здесь.", "empty_column.favourites": "Никто ещё не добавил этот пост в «Избранное». Как только кто-то это сделает, это отобразится здесь.", "empty_column.follow_recommendations": "Похоже, у нас нет предложений для вас. Вы можете попробовать поискать людей, которых уже знаете, или изучить актуальные хэштеги.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Попробуйте их отключить и перезагрузить страницу. Если это не поможет, вы по-прежнему сможете войти в Mastodon через другой браузер или приложение.", "errors.unexpected_crash.copy_stacktrace": "Скопировать диагностическую информацию", "errors.unexpected_crash.report_issue": "Сообщить о проблеме", + "explore.search_results": "Результаты поиска", + "explore.suggested_follows": "Для вас", + "explore.title": "Обзор", + "explore.trending_links": "Новости", + "explore.trending_statuses": "Посты", + "explore.trending_tags": "Хэштеги", "follow_recommendations.done": "Готово", "follow_recommendations.heading": "Подпишитесь на людей, чьи посты вы бы хотели видеть. Вот несколько предложений.", "follow_recommendations.lead": "Посты от людей, на которых вы подписаны, будут отображаться в вашей домашней ленте в хронологическом порядке. Не бойтесь ошибиться — вы так же легко сможете отписаться от них в любое время!", @@ -195,10 +203,10 @@ "getting_started.developers": "Разработчикам", "getting_started.directory": "Каталог профилей", "getting_started.documentation": "Документация", - "getting_started.heading": "Добро пожаловать", + "getting_started.heading": "Начать", "getting_started.invite": "Пригласить людей", "getting_started.open_source_notice": "Mastodon — сервис с открытым исходным кодом. Вы можете внести вклад или сообщить о проблемах на GitHub: {github}.", - "getting_started.security": "Безопасность", + "getting_started.security": "Настройки учётной записи", "getting_started.terms": "Условия использования", "hashtag.column_header.tag_mode.all": "и {additional}", "hashtag.column_header.tag_mode.any": "или {additional}", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "продвинуть пост", "keyboard_shortcuts.column": "фокус на одном из столбцов", "keyboard_shortcuts.compose": "фокус на поле ввода", + "keyboard_shortcuts.conversations": "открыть колонку диалогов", "keyboard_shortcuts.description": "Описание", - "keyboard_shortcuts.direct": "чтобы показать колонку личных сообщений", "keyboard_shortcuts.down": "вниз по списку", "keyboard_shortcuts.enter": "открыть пост", "keyboard_shortcuts.favourite": "в избранное", @@ -245,9 +253,9 @@ "keyboard_shortcuts.requests": "перейти к запросам на подписку", "keyboard_shortcuts.search": "перейти к поиску", "keyboard_shortcuts.spoilers": "показать/скрыть поле предупреждения о содержании", - "keyboard_shortcuts.start": "перейти к разделу \"добро пожаловать\"", + "keyboard_shortcuts.start": "Перейти к разделу \"Начать\"", "keyboard_shortcuts.toggle_hidden": "показать/скрыть текст за предупреждением", - "keyboard_shortcuts.toggle_sensitivity": "показать/скрыть медиафайлы", + "keyboard_shortcuts.toggle_sensitivity": "Показать/скрыть медиафайлы", "keyboard_shortcuts.toot": "начать писать новый пост", "keyboard_shortcuts.unfocus": "убрать фокус с поля ввода/поиска", "keyboard_shortcuts.up": "вверх по списку", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Закладки", "navigation_bar.community_timeline": "Локальная лента", "navigation_bar.compose": "Создать новый пост", - "navigation_bar.direct": "Личные сообщения", "navigation_bar.discover": "Изучайте", "navigation_bar.domain_blocks": "Скрытые домены", "navigation_bar.edit_profile": "Изменить профиль", + "navigation_bar.explore": "Обзор", "navigation_bar.favourites": "Избранное", "navigation_bar.filters": "Игнорируемые слова", "navigation_bar.follow_requests": "Запросы на подписку", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Настройки", "navigation_bar.public_timeline": "Глобальная лента", "navigation_bar.security": "Безопасность", + "notification.admin.sign_up": "{name} зарегистрирован", "notification.favourite": "{name} добавил(а) ваш пост в избранное", "notification.follow": "{name} подписался (-лась) на вас", "notification.follow_request": "{name} отправил запрос на подписку", @@ -308,9 +317,10 @@ "notification.poll": "Опрос, в котором вы приняли участие, завершился", "notification.reblog": "{name} продвинул(а) ваш пост", "notification.status": "{name} только что запостил", - "notification.update": "{name} edited a post", + "notification.update": "{name} изменил(а) пост", "notifications.clear": "Очистить уведомления", "notifications.clear_confirmation": "Вы уверены, что хотите очистить все уведомления?", + "notifications.column_settings.admin.sign_up": "Новые регистрации:", "notifications.column_settings.alert": "Уведомления на рабочем столе", "notifications.column_settings.favourite": "Ваш пост добавили в «избранное»:", "notifications.column_settings.filter_bar.advanced": "Отображать все категории", @@ -327,7 +337,7 @@ "notifications.column_settings.status": "Новые посты:", "notifications.column_settings.unread_notifications.category": "Непрочитанные уведомления", "notifications.column_settings.unread_notifications.highlight": "Выделять непрочитанные уведомления", - "notifications.column_settings.update": "Изменения:", + "notifications.column_settings.update": "Правки:", "notifications.filter.all": "Все", "notifications.filter.boosts": "Продвижения", "notifications.filter.favourites": "Отметки «избранного»", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Удалить опрос", "privacy.change": "Изменить видимость поста", "privacy.direct.long": "Показать только упомянутым", - "privacy.direct.short": "Адресованный", + "privacy.direct.short": "Для упомянутых", "privacy.private.long": "Показать только подписчикам", - "privacy.private.short": "Приватный", - "privacy.public.long": "Показать в публичных лентах", + "privacy.private.short": "Для подписчиков", + "privacy.public.long": "Виден всем", "privacy.public.short": "Публичный", - "privacy.unlisted.long": "Не показывать в публичных лентах", + "privacy.unlisted.long": "Виден всем, но не через функции обзора", "privacy.unlisted.short": "Скрытый", "refresh": "Обновить", "regeneration_indicator.label": "Загрузка…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number} с", "relative_time.today": "сегодня", "reply_indicator.cancel": "Отмена", + "report.block": "Заблокировать", + "report.block_explanation": "В перестаните видеть посты этого пользователя, а он(а) больше не сможет подписаться на вас и читать ваши посты. Он(а) сможет понять что вы заблокировали его/её.", "report.categories.other": "Другое", "report.categories.spam": "Спам", "report.categories.violation": "Содержимое нарушает одно или несколько правил узла", - "report.forward": "Переслать в {target}", + "report.category.subtitle": "Выберите наиболее подходящее", + "report.category.title": "Расскажите нам, что не так с {type}", + "report.category.title_account": "этим профилем", + "report.category.title_status": "этим постом", + "report.close": "Готово", + "report.comment.title": "Есть ли что-нибудь ещё, что нам стоит знать?", + "report.forward": "Переслать на {target}", "report.forward_hint": "Эта учётная запись расположена на другом узле. Отправить туда анонимную копию вашей жалобы?", - "report.hint": "Жалоба будет отправлена модераторам вашего узла. Вы также можете указать подробную причину жалобы ниже:", - "report.placeholder": "Комментарий", + "report.mute": "Игнорировать", + "report.mute_explanation": "Вы не будете видеть их посты. Они по-прежнему могут подписываться на вас и видеть ваши посты, но не будут знать, что они в списке игнорируемых.", + "report.next": "Далее", + "report.placeholder": "Дополнительные комментарии", + "report.reasons.dislike": "Мне не нравится", + "report.reasons.dislike_description": "Не хотел(а) бы видеть такой контент", + "report.reasons.other": "Другое", + "report.reasons.other_description": "Проблема не попадает ни под одну из категорий", + "report.reasons.spam": "Это спам", + "report.reasons.spam_description": "Вредоносные ссылки, фальшивое взаимодействие или повторяющиеся ответы", + "report.reasons.violation": "Нарушаются правила сервера", + "report.reasons.violation_description": "Вы знаете, что подобное нарушает определенные правила", + "report.rules.subtitle": "Выберите все подходящие варианты", + "report.rules.title": "Какие правила нарушены?", + "report.statuses.subtitle": "Выберите все подходящие варианты", + "report.statuses.title": "Выберите посты, которые относятся к вашей жалобе.", "report.submit": "Отправить", "report.target": "Жалоба на {target}", + "report.thanks.take_action": "Вот несколько опций управления тем, что вы видите в Mastodon:", + "report.thanks.take_action_actionable": "Пока мы рассматриваем его, вот действия, которые вы можете предпринять лично против @{name}:", + "report.thanks.title": "Не хотите видеть это?", + "report.thanks.title_actionable": "Спасибо за обращение, мы его рассмотрим.", + "report.unfollow": "Отписаться от @{name}", + "report.unfollow_explanation": "Вы подписаны на этого пользователя. Чтобы не видеть его/её посты в своей домашней ленте, отпишитесь от него/неё.", "search.placeholder": "Поиск", "search_popout.search_format": "Продвинутый формат поиска", "search_popout.tips.full_text": "Поиск по простому тексту отобразит посты, которые вы написали, добавили в избранное, продвинули или в которых были упомянуты, а также подходящие имена пользователей и хэштеги.", @@ -395,9 +433,11 @@ "search_popout.tips.text": "Простой ввод текста покажет совпадающие имена пользователей, отображаемые имена и хэштеги", "search_popout.tips.user": "пользователь", "search_results.accounts": "Люди", + "search_results.all": "Все", "search_results.hashtags": "Хэштеги", + "search_results.nothing_found": "Ничего не найдено по этому запросу", "search_results.statuses": "Посты", - "search_results.statuses_fts_disabled": "Поиск постов по их содержанию не поддерживается данным узлом Mastodon.", + "search_results.statuses_fts_disabled": "Поиск постов по их содержанию не поддерживается данным сервером Mastodon.", "search_results.total": "{count, number} {count, plural, one {результат} few {результата} many {результатов} other {результатов}}", "status.admin_account": "Открыть интерфейс модератора для @{name}", "status.admin_status": "Открыть этот пост в интерфейсе модератора", @@ -474,6 +514,7 @@ "upload_error.poll": "К опросам нельзя прикреплять файлы.", "upload_form.audio_description": "Опишите аудиофайл для людей с нарушением слуха", "upload_form.description": "Добавьте описание для людей с нарушениями зрения:", + "upload_form.description_missing": "Описание не добавлено", "upload_form.edit": "Изменить", "upload_form.thumbnail": "Изменить обложку", "upload_form.undo": "Отменить", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index 357a69187..ed5dc9ebd 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -18,12 +18,12 @@ "account.followers": "अनुसर्तारः", "account.followers.empty": "नाऽनुसर्तारो वर्तन्ते", "account.followers_counter": "{count, plural, one {{counter} अनुसर्ता} two {{counter} अनुसर्तारौ} other {{counter} अनुसर्तारः}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} अनुसृतः} two {{counter} अनुसृतौ} other {{counter} अनुसृताः}}", "account.follows.empty": "न कोऽप्यनुसृतो वर्तते", "account.follows_you": "त्वामनुसरति", "account.hide_reblogs": "@{name} मित्रस्य प्रकाशनानि छिद्यन्ताम्", "account.joined": "Joined {date}", - "account.last_status": "गतसक्रियता", "account.link_verified_on": "अन्तर्जालस्थानस्यास्य स्वामित्वं परीक्षितमासीत् {date} दिने", "account.locked_info": "एतस्या लेखायाः गुह्यता \"निषिद्ध\"इति वर्तते । स्वामी स्वयञ्चिनोति कोऽनुसर्ता भवितुमर्हतीति ।", "account.media": "सामग्री", @@ -32,7 +32,6 @@ "account.mute": "निःशब्दम् @{name}", "account.mute_notifications": "@{name} सूचनाः निष्क्रियन्ताम्", "account.muted": "निःशब्दम्", - "account.never_active": "नैव कदापि", "account.posts": "दौत्यानि", "account.posts_with_replies": "दौत्यानि प्रत्युत्तराणि च", "account.report": "आविद्यताम् @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} दौत्यम्} two {{counter} दौत्ये} other {{counter} दौत्यानि}}", "account.unblock": "निषेधता नश्यताम् @{name}", "account.unblock_domain": "प्रदेशनिषेधता नश्यताम् {domain}", + "account.unblock_short": "Unblock", "account.unendorse": "व्यक्तिगतविवरणे मा प्रकाश्यताम्", "account.unfollow": "नश्यतामनुसरणम्", "account.unmute": "सशब्दम् @{name}", "account.unmute_notifications": "@{name} सूचनाः सक्रियन्ताम्", + "account.unmute_short": "Unmute", "account_note.placeholder": "टीकायोजनार्थं नुद्यताम्", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "निषिद्धभोक्तारः", "column.bookmarks": "पुटचिह्नानि", "column.community": "स्थानीयसमयतालिका", - "column.direct": "प्रत्यक्षसन्देशाः", + "column.conversations": "Conversations", "column.directory": "व्यक्तित्वानि दृश्यन्ताम्", "column.domain_blocks": "निषिद्धप्रदेशाः", "column.favourites": "प्रियाः", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "केवलं स्थानीयम्", "community.column_settings.media_only": "सामग्री केवलम्", "community.column_settings.remote_only": "दर्गमः केवलम्", - "compose_form.direct_message_warning": "दौत्यमेतत्केवलमुल्लेखितजनानां कृते वर्तते", "compose_form.direct_message_warning_learn_more": "अधिकं ज्ञायताम्", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "न कस्मिन्नपि प्रचलितवस्तुषु सूचितमिदं दौत्यम् । केवलं सार्वजनिकदौत्यानि प्रचलितवस्तुचिह्नेन अन्वेषयितुं शक्यते ।", "compose_form.lock_disclaimer": "तव लेखा न प्रवेष्टुमशक्या {locked} । कोऽप्यनुसर्ता ते केवलमनुसर्तृृणां कृते स्थितानि दौत्यानि द्रष्टुं शक्नोति ।", "compose_form.lock_disclaimer.lock": "अवरुद्धः", @@ -165,8 +166,9 @@ "empty_column.blocks": "नैकोऽप्युपभोक्ता निषिद्धो वर्तते", "empty_column.bookmarked_statuses": "नैकमपि पुटचिह्नयुक्तदौत्यानि सन्ति । यदा भविष्यति तदत्र दृश्यते ।", "empty_column.community": "स्थानीयसमयतालिका रिक्ता । सार्वजनिकत्वेनाऽत्र किमपि लिख्यताम् ।", - "empty_column.direct": "नैकोऽपि प्रत्यक्षसन्देशो वर्तते । यदा प्रेष्यते वा प्राप्यतेऽत्र दृश्यते", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "न निषिद्धप्रदेशाः सन्ति ।", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "न प्रियदौत्यानि सन्ति । यदा प्रीतिरित्यङ्क्यतेऽत्र दृश्यते ।", "empty_column.favourites": "नैतद्दौत्यं प्रियमस्ति कस्मै अपि । यदा कस्मै प्रियं भवति तदाऽत्र दृश्यते ।", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", "errors.unexpected_crash.report_issue": "Report issue", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Favourites", "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", "notification.follow_request": "{name} has requested to follow you", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.filter_bar.advanced": "Display all categories", @@ -359,9 +369,9 @@ "privacy.direct.short": "Direct", "privacy.private.long": "Visible for followers only", "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all, shown in public timelines", + "privacy.public.long": "Visible for all", "privacy.public.short": "Public", - "privacy.unlisted.long": "Visible for all, but not in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "Cancel", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", - "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", - "report.placeholder": "Additional comments", - "report.submit": "Submit", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", + "report.placeholder": "Type or paste additional comments", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", + "report.submit": "Submit report", "report.target": "Report {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Search", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", "search_popout.tips.user": "user", "search_results.accounts": "People", + "search_results.all": "All", "search_results.hashtags": "Hashtags", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", @@ -474,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Delete", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 467857136..fe6dd22cf 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -18,12 +18,12 @@ "account.followers": "Sighiduras", "account.followers.empty": "Nemos sighit ancora custa persone.", "account.followers_counter": "{count, plural, one {{counter} sighidura} other {{counter} sighiduras}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {Sighende a {counter}} other {Sighende a {counter}}}", "account.follows.empty": "Custa persone non sighit ancora a nemos.", "account.follows_you": "Ti sighit", "account.hide_reblogs": "Cua is cumpartziduras de @{name}", "account.joined": "At aderidu su {date}", - "account.last_status": "Ùrtima atividade", "account.link_verified_on": "Sa propiedade de custu ligòngiu est istada controllada su {date}", "account.locked_info": "S'istadu de riservadesa de custu contu est istadu cunfiguradu comente blocadu. Sa persone chi tenet sa propiedade revisionat a manu chie dda podet sighire.", "account.media": "Cuntenutu multimediale", @@ -32,7 +32,6 @@ "account.mute": "Pone a @{name} a sa muda", "account.mute_notifications": "Disativa is notìficas de @{name}", "account.muted": "A sa muda", - "account.never_active": "Mai", "account.posts": "Publicatziones", "account.posts_with_replies": "Publicatziones e rispostas", "account.report": "Signala @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} publicatzione} other {{counter} publicatziones}}", "account.unblock": "Isbloca a @{name}", "account.unblock_domain": "Isbloca su domìniu {domain}", + "account.unblock_short": "Unblock", "account.unendorse": "Non cussiges in su profilu", "account.unfollow": "Non sigas prus", "account.unmute": "Torra a ativare a @{name}", "account.unmute_notifications": "Ativa notìficas pro @{name}", + "account.unmute_short": "Unmute", "account_note.placeholder": "Incarca pro agiùnghere una nota", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "Persones blocadas", "column.bookmarks": "Sinnalibros", "column.community": "Lìnia de tempus locale", - "column.direct": "Messàgios diretos", + "column.conversations": "Conversations", "column.directory": "Nàviga in is profilos", "column.domain_blocks": "Domìnios blocados", "column.favourites": "Preferidos", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Isceti locale", "community.column_settings.media_only": "Isceti multimediale", "community.column_settings.remote_only": "Isceti remotu", - "compose_form.direct_message_warning": "Custa publicatzione at a èssere imbiada isceti a is persones mentovadas.", "compose_form.direct_message_warning_learn_more": "Àteras informatziones", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Custa publicatzione no at a èssere ammustrada in peruna eticheta, dae chi no est listada. Isceti is publicatziones pùblicas podent èssere chircadas cun etichetas.", "compose_form.lock_disclaimer": "Su contu tuo no est {locked}. Cale si siat persone ti podet sighire pro bìdere is messàgios tuos chi imbies a sa gente chi ti sighit.", "compose_form.lock_disclaimer.lock": "blocadu", @@ -165,8 +166,9 @@ "empty_column.blocks": "No as blocadu ancora nemos.", "empty_column.bookmarked_statuses": "Non tenes ancora peruna publicatzione in is marcadores. Cando nd'as a agiùnghere una, at a èssere ammustrada inoghe.", "empty_column.community": "Sa lìnia de tempus locale est bòida. Iscrie inoghe pro cumintzare sa festa!", - "empty_column.direct": "Non tenes ancora perunu messàgiu deretu. Cando nd'as a imbiare o nd'as a retzire unu, at a èssere ammustradu inoghe.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Non tenes ancora perunu domìniu blocadu.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Non tenes ancora peruna publicatzione in is preferidos. Cando nd'as a agiùnghere una, at a èssere ammustrada inoghe.", "empty_column.favourites": "Nemos at marcadu ancora custa publicatzione comente preferida. Cando calicunu dd'at a fàghere, at a èssere ammustrada inoghe.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Proa a ddos disabilitare e torra a carrigare sa pàgina. Si custu no acontzat su problema, podes chircare de impreare Mastodon in unu navigadore diferente o in un'aplicatzione nativa.", "errors.unexpected_crash.copy_stacktrace": "Còpia stacktrace in punta de billete", "errors.unexpected_crash.report_issue": "Sinnala unu problema", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Fatu", "follow_recommendations.heading": "Sighi gente de chie boles bìdere is publicatziones! Càstia custos cussìgios.", "follow_recommendations.lead": "Is messàgios de gente a sa chi ses sighende ant a èssere ammustrados in òrdine cronològicu in sa lìnia de tempus printzipale tua. Non timas de fàghere errores, acabbare de sighire gente est fàtzile in cale si siat momentu!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "pro cumpartzire", "keyboard_shortcuts.column": "pro atzentrare una publicatzione in una de is colunnas", "keyboard_shortcuts.compose": "pro atzentrare in s'àrea de cumpositzione de testu", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Descritzione", - "keyboard_shortcuts.direct": "pro abèrrere sa colunna de messàgios diretos", "keyboard_shortcuts.down": "pro mòere in bàsciu in sa lista", "keyboard_shortcuts.enter": "pro abèrrere una publicatzione", "keyboard_shortcuts.favourite": "pro marcare comente a preferidu", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Sinnalibros", "navigation_bar.community_timeline": "Lìnia de tempus locale", "navigation_bar.compose": "Cumpone una publicatzione noa", - "navigation_bar.direct": "Messàgios diretos", "navigation_bar.discover": "Iscoberi", "navigation_bar.domain_blocks": "Domìnios blocados", "navigation_bar.edit_profile": "Modìfica profilu", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Preferidos", "navigation_bar.filters": "Faeddos a sa muda", "navigation_bar.follow_requests": "Rechestas de sighidura", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Preferèntzias", "navigation_bar.public_timeline": "Lìnia de tempus federada", "navigation_bar.security": "Seguresa", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} at marcadu sa publicatzione tua comente a preferida", "notification.follow": "{name} ti sighit", "notification.follow_request": "{name} at dimandadu de ti sighire", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Lìmpia notìficas", "notifications.clear_confirmation": "Seguru chi boles isboidare in manera permanente totu is notìficas tuas?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Notìficas de iscrivania", "notifications.column_settings.favourite": "Preferidos:", "notifications.column_settings.filter_bar.advanced": "Ammustra totu is categorias", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Cantzella su sondàgiu", "privacy.change": "Modìfica s'istadu de riservadesa", "privacy.direct.long": "Visìbile isceti pro is persones mentovadas", - "privacy.direct.short": "Deretu", + "privacy.direct.short": "Direct", "privacy.private.long": "Visìbile isceti pro chie ti sighit", - "privacy.private.short": "Isceti pro chie ti sighit", - "privacy.public.long": "Visìbile pro chie si siat, ammustra in lìnias de tempus pùblicas", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Pùblicu", - "privacy.unlisted.long": "Visìbile pro chie si siat, però no ammustres in lìnias de tempus pùblicas", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Esclùidu de sa lista", "refresh": "Atualiza", "regeneration_indicator.label": "Carrighende…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number} segundos a immoe", "relative_time.today": "oe", "reply_indicator.cancel": "Annulla", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Torra a imbiare a {target}", "report.forward_hint": "Custu contu est de un'àteru serbidore. Ddi boles imbiare puru una còpia anònima de custu informe?", - "report.hint": "S'informe at a èssere imbiadu a sa moderatzione de su serbidore. Podes frunire un'ispiegatzione de sa signalatzione tua de custu contu:", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", "report.placeholder": "Cummentos additzionales", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Imbia", "report.target": "Informende de {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Chirca", "search_popout.search_format": "Formadu de chirca avantzada", "search_popout.tips.full_text": "Testu sèmplitze pro agatare publicatziones chi as iscritu, marcadu comente a preferidas, cumpartzidu o chi t'ant mentovadu, e fintzas nòmines, nòmines de utente e etichetas.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Testu sèmplitze pro agatare nòmines visualizados, nòmines de utente e etichetas", "search_popout.tips.user": "utente", "search_results.accounts": "Gente", + "search_results.all": "All", "search_results.hashtags": "Etichetas", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Publicatziones", "search_results.statuses_fts_disabled": "Sa chirca de publicatziones pro su cuntenutu issoro no est abilitada in custu serbidore de Mastodon.", "search_results.total": "{count, number} {count, plural, one {resurtadu} other {resurtados}}", @@ -474,6 +514,7 @@ "upload_error.poll": "Non si permitit s'imbiu de archìvios in is sondàgios.", "upload_form.audio_description": "Descritzione pro persones cun pèrdida auditiva", "upload_form.description": "Descritzione pro persones cun problemas visuales", + "upload_form.description_missing": "No description added", "upload_form.edit": "Modìfica", "upload_form.thumbnail": "Càmbia sa miniadura", "upload_form.undo": "Cantzella", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index c90c785fb..1190bbe00 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -18,12 +18,12 @@ "account.followers": "Followers", "account.followers.empty": "No one follows this user yet.", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "{date} එක් වී ඇත", - "account.last_status": "අවසන් වරට සක්‍රීය", "account.link_verified_on": "මෙම සබැඳියේ හිමිකාරිත්වය {date} දින පරීක්ෂා කරන ලදි", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "මාධ්‍යය", @@ -32,7 +32,6 @@ "account.mute": "@{name} නිහඬ කරන්න", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", - "account.never_active": "Never", "account.posts": "Toots", "account.posts_with_replies": "Toots and replies", "account.report": "@{name} වාර්තා කරන්න", @@ -42,16 +41,18 @@ "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "@{name} අනවහිර කරන්න", "account.unblock_domain": "{domain} වසම අනවහිර කරන්න", + "account.unblock_short": "Unblock", "account.unendorse": "පැතිකඩෙහි විශේෂාංග නොකරන්න", "account.unfollow": "Unfollow", "account.unmute": "Unmute @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", + "account.unmute_short": "Unmute", "account_note.placeholder": "සටහන එකතු කිරීමට ක්ලික් කරන්න", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.retention.cohort_size": "නව පරිශීලකයින්", "alert.rate_limited.message": "කරුණාකර {retry_time, time, medium} ට පසු නැවත උත්සාහ කරන්න.", "alert.rate_limited.title": "Rate limited", "alert.unexpected.message": "An unexpected error occurred.", @@ -69,7 +70,7 @@ "column.blocks": "අවහිර කළ පරිශීලකයින්", "column.bookmarks": "පොත් යොමු", "column.community": "Local timeline", - "column.direct": "සෘජු පණිවිඩ", + "column.conversations": "Conversations", "column.directory": "පැතිකඩයන් පිරික්සන්න", "column.domain_blocks": "අවහිර කළ වසම්", "column.favourites": "ප්‍රියතමයන්", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "ස්ථානීයව පමණයි", "community.column_settings.media_only": "මාධ්‍ය පමණයි", "community.column_settings.remote_only": "දුරස්ථව පමණයි", - "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.", "compose_form.direct_message_warning_learn_more": "තව දැනගන්න", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "අගුළු දමා ඇත", @@ -120,7 +121,7 @@ "confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete_list.confirm": "Delete", "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", - "confirmations.discard_edit_media.confirm": "Discard", + "confirmations.discard_edit_media.confirm": "ඉවත ලන්න", "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "confirmations.domain_block.confirm": "සම්පූර්ණ වසම අවහිර කරන්න", "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", @@ -165,8 +166,9 @@ "empty_column.blocks": "ඔබ තවමත් කිසිදු පරිශීලකයෙකු අවහිර කර නැත.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "අවහිර කළ වසම් නොමැත.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", "errors.unexpected_crash.report_issue": "Report issue", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "සවිස්තරය", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "පොත් යොමු", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "සෘජු පණිවිඩ", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "පැතිකඩ සංස්කරණය", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "ප්‍රියතමයන්", "navigation_bar.filters": "නිහඬ කළ වචන", "navigation_bar.follow_requests": "Follow requests", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "ආරක්ෂාව", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", "notification.follow_request": "{name} has requested to follow you", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "දැනුම්දීම් හිස්කරන්න", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "ප්‍රියතමයන්:", "notifications.column_settings.filter_bar.advanced": "Display all categories", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Remove poll", "privacy.change": "Adjust status privacy", "privacy.direct.long": "Visible for mentioned users only", - "privacy.direct.short": "සෘජු", + "privacy.direct.short": "Direct", "privacy.private.long": "Visible for followers only", "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all, shown in public timelines", + "privacy.public.long": "Visible for all", "privacy.public.short": "ප්‍රසිද්ධ", - "privacy.unlisted.long": "Visible for all, but not in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "නැවුම් කරන්න", "regeneration_indicator.label": "පූරණය වෙමින්…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "අද", "reply_indicator.cancel": "අවලංගු කරන්න", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", - "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", "report.placeholder": "අමතර අදහස්", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "යොමන්න", "report.target": "Report {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "සොයන්න", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", "search_popout.tips.user": "පරිශීලක", "search_results.accounts": "මිනිසුන්", + "search_results.all": "All", "search_results.hashtags": "Hashtags", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", @@ -474,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "සංස්කරණය", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Delete", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index f0833ff70..aee720837 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -18,12 +18,12 @@ "account.followers": "Sledujúci", "account.followers.empty": "Tohto používateľa ešte nikto nenásleduje.", "account.followers_counter": "{count, plural, one {{counter} Sledujúci} few {{counter} Sledujúci} many {{counter} Sledujúci} other {{counter} Sledujúci}}", + "account.following": "Nasledujem", "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "Tento používateľ ešte nikoho nenasleduje.", "account.follows_you": "Nasleduje ťa", "account.hide_reblogs": "Skry vyzdvihnutia od @{name}", "account.joined": "Pridal/a sa v {date}", - "account.last_status": "Naposledy aktívny", "account.link_verified_on": "Vlastníctvo tohto odkazu bolo skontrolované {date}", "account.locked_info": "Stav súkromia pre tento účet je nastavený na zamknutý. Jeho vlastník sám prehodnocuje, kto ho môže sledovať.", "account.media": "Médiá", @@ -31,8 +31,7 @@ "account.moved_to": "{name} sa presunul/a na:", "account.mute": "Nevšímaj si @{name}", "account.mute_notifications": "Stĺm oboznámenia od @{name}", - "account.muted": "Utíšený/á", - "account.never_active": "Nikdy", + "account.muted": "Nevšímaný/á", "account.posts": "Príspevky", "account.posts_with_replies": "Príspevky, aj s odpoveďami", "account.report": "Nahlás @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "Odblokuj @{name}", "account.unblock_domain": "Prestaň skrývať {domain}", + "account.unblock_short": "Odblokuj", "account.unendorse": "Nezobrazuj na profile", "account.unfollow": "Prestaň následovať", "account.unmute": "Prestaň ignorovať @{name}", - "account.unmute_notifications": "Zruš stĺmenie oboznámení od @{name}", + "account.unmute_notifications": "Zruš nevšímanie si oznámení od @{name}", + "account.unmute_short": "Zruš nevšímanie", "account_note.placeholder": "Klikni pre vloženie poznámky", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,14 +70,14 @@ "column.blocks": "Blokovaní užívatelia", "column.bookmarks": "Záložky", "column.community": "Miestna časová os", - "column.direct": "Priame správy", + "column.conversations": "Conversations", "column.directory": "Prehľadávaj profily", "column.domain_blocks": "Skryté domény", "column.favourites": "Obľúbené", "column.follow_requests": "Žiadosti o sledovanie", "column.home": "Domov", "column.lists": "Zoznamy", - "column.mutes": "Ignorovaní užívatelia", + "column.mutes": "Nevšímaní užívatelia", "column.notifications": "Oboznámenia", "column.pins": "Pripnuté príspevky", "column.public": "Federovaná časová os", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Iba miestna", "community.column_settings.media_only": "Iba médiá", "community.column_settings.remote_only": "Iba odľahlé", - "compose_form.direct_message_warning": "Tento príspevok bude boslaný iba spomenutým užívateľom.", "compose_form.direct_message_warning_learn_more": "Zisti viac", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Tento toot nebude zobrazený pod žiadným haštagom lebo nieje listovaný. Iba verejné tooty môžu byť nájdené podľa haštagu.", "compose_form.lock_disclaimer": "Tvoj účet nie je {locked}. Ktokoľvek ťa môže nasledovať a vidieť tvoje správy pre sledujúcich.", "compose_form.lock_disclaimer.lock": "zamknutý", @@ -105,7 +106,7 @@ "compose_form.poll.switch_to_single": "Zmeň anketu na takú s jedinou voľbou", "compose_form.publish": "Pošli", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Ulož zmeny", "compose_form.sensitive.hide": "Označ médiá ako chúlostivé", "compose_form.sensitive.marked": "Médiálny obsah je označený ako chúlostivý", "compose_form.sensitive.unmarked": "Médiálny obsah nieje označený ako chúlostivý", @@ -126,9 +127,9 @@ "confirmations.domain_block.message": "Si si naozaj istý/á, že chceš blokovať celú doménu {domain}? Vo väčšine prípadov stačí blokovať alebo ignorovať pár konkrétnych užívateľov, čo sa doporučuje. Neuvidíš obsah z tejto domény v žiadnej verejnej časovej osi, ani v oznámeniach. Tvoji následovníci pochádzajúci z tejto domény budú odstránení.", "confirmations.logout.confirm": "Odhlás sa", "confirmations.logout.message": "Si si istý/á, že sa chceš odhlásiť?", - "confirmations.mute.confirm": "Ignoruj", + "confirmations.mute.confirm": "Nevšímaj si", "confirmations.mute.explanation": "Toto nastavenie pred tebou skryje ich príspevky, alebo príspevky od iných v ktorých sú spomenutí, ale umožní im vidieť tvoje príspevky, aj ťa následovať.", - "confirmations.mute.message": "Naozaj chceš ignorovať {name}?", + "confirmations.mute.message": "Naozaj si chceš nevšímať {name}?", "confirmations.redraft.confirm": "Vyčisti a prepíš", "confirmations.redraft.message": "Si si istý/á, že chceš premazať a prepísať tento príspevok? Jeho nadobudnuté vyzdvihnutia a obľúbenia, ale i odpovede na pôvodný príspevok budú odlúčené.", "confirmations.reply.confirm": "Odpovedz", @@ -165,8 +166,9 @@ "empty_column.blocks": "Ešte si nikoho nezablokoval/a.", "empty_column.bookmarked_statuses": "Ešte nemáš žiadné záložky. Keď si pridáš príspevok k záložkám, zobrazí sa tu.", "empty_column.community": "Lokálna časová os je prázdna. Napíšte niečo, aby sa to tu začalo hýbať!", - "empty_column.direct": "Ešte nemáš žiadne priame správy. Keď nejakú pošleš, alebo dostaneš, ukáže sa tu.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Žiadne domény ešte niesú skryté.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Nemáš obľúbené ešte žiadne príspevky. Keď si nejaký obľúbiš, bude zobrazený práve tu.", "empty_column.favourites": "Tento toot si ešte nikto neobľúbil. Ten kto si ho obľúbi, bude zobrazený tu.", "empty_column.follow_recommendations": "Zdá sa že pre Vás nemohli byť vygenerované žiadne návrhy. Môžete skúsiť použiť vyhľadávanie aby ste našli ľudi ktorých poznáte, alebo preskúmať trendujúce heštegy.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Skús ich vypnúť, a obnoviť túto stránku. Ak to nepomôže, pravdepodobne budeš stále môcť Mastodon používať cez iný prehliadač, alebo natívnu aplikáciu.", "errors.unexpected_crash.copy_stacktrace": "Skopíruj stacktrace do schránky", "errors.unexpected_crash.report_issue": "Nahlás problém", + "explore.search_results": "Výsledky hľadania", + "explore.suggested_follows": "Pre teba", + "explore.title": "Objavuj", + "explore.trending_links": "Novinky", + "explore.trending_statuses": "Príspevky", + "explore.trending_tags": "Haštagy", "follow_recommendations.done": "Hotovo", "follow_recommendations.heading": "Následuj ľudí od ktorých by si chcel/a vidieť príspevky! Tu sú nejaké návrhy.", "follow_recommendations.lead": "Príspevky od ľudi ktorých sledujete sa zobrazia v chronologickom poradí na Vašej nástenke. Nebojte sa spraviť chyby, vždy môžete zrušiť sledovanie konkrétnych ľudí!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "Vyzdvihni príspevok", "keyboard_shortcuts.column": "zameraj sa na príspevok v jednom zo stĺpcov", "keyboard_shortcuts.compose": "zameraj sa na písaciu plochu", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Popis", - "keyboard_shortcuts.direct": "pre otvorenie panelu priamých správ", "keyboard_shortcuts.down": "posunúť sa dole v zozname", "keyboard_shortcuts.enter": "Otvor príspevok", "keyboard_shortcuts.favourite": "pridaj do obľúbených", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Záložky", "navigation_bar.community_timeline": "Miestna časová os", "navigation_bar.compose": "Napíš nový príspevok", - "navigation_bar.direct": "Priame správy", "navigation_bar.discover": "Objavuj", "navigation_bar.domain_blocks": "Skryté domény", "navigation_bar.edit_profile": "Uprav profil", + "navigation_bar.explore": "Objavuj", "navigation_bar.favourites": "Obľúbené", "navigation_bar.filters": "Filtrované slová", "navigation_bar.follow_requests": "Žiadosti o sledovanie", @@ -294,12 +302,13 @@ "navigation_bar.keyboard_shortcuts": "Klávesové skratky", "navigation_bar.lists": "Zoznamy", "navigation_bar.logout": "Odhlás sa", - "navigation_bar.mutes": "Ignorovaní užívatelia", + "navigation_bar.mutes": "Stíšení užívatelia", "navigation_bar.personal": "Osobné", "navigation_bar.pins": "Pripnuté príspevky", "navigation_bar.preferences": "Nastavenia", "navigation_bar.public_timeline": "Federovaná časová os", "navigation_bar.security": "Zabezbečenie", + "notification.admin.sign_up": "{name} sa zaregistroval/a", "notification.favourite": "{name} si obľúbil/a tvoj príspevok", "notification.follow": "{name} ťa začal/a následovať", "notification.follow_request": "{name} žiada ťa následovať", @@ -308,9 +317,10 @@ "notification.poll": "Anketa v ktorej si hlasoval/a sa skončila", "notification.reblog": "{name} zdieľal/a tvoj príspevok", "notification.status": "{name} práve uverejnil/a", - "notification.update": "{name} edited a post", + "notification.update": "{name} upravil/a príspevok", "notifications.clear": "Vyčisti oboznámenia", "notifications.clear_confirmation": "Naozaj chceš nenávratne prečistiť všetky tvoje oboznámenia?", + "notifications.column_settings.admin.sign_up": "Nové registrácie:", "notifications.column_settings.alert": "Oboznámenia na ploche", "notifications.column_settings.favourite": "Obľúbené:", "notifications.column_settings.filter_bar.advanced": "Zobraz všetky kategórie", @@ -327,7 +337,7 @@ "notifications.column_settings.status": "Nové príspevky:", "notifications.column_settings.unread_notifications.category": "Neprečítané oboznámenia", "notifications.column_settings.unread_notifications.highlight": "Zdôrazni neprečítané oboznámenia", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.update": "Úpravy:", "notifications.filter.all": "Všetky", "notifications.filter.boosts": "Vyzdvihnutia", "notifications.filter.favourites": "Obľúbené", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Odstráň anketu", "privacy.change": "Uprav súkromie príspevku", "privacy.direct.long": "Pošli iba spomenutým užívateľom", - "privacy.direct.short": "Súkromne", + "privacy.direct.short": "Direct", "privacy.private.long": "Pošli iba následovateľom", - "privacy.private.short": "Iba pre sledujúcich", - "privacy.public.long": "Pošli všetkým verejne", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Verejné", - "privacy.unlisted.long": "Neposielaj do verejných časových osí", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Verejne, ale nezobraziť v osi", "refresh": "Obnoviť", "regeneration_indicator.label": "Načítava sa…", @@ -369,7 +379,7 @@ "relative_time.days": "{number}dní", "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", + "relative_time.full.just_now": "práve teraz", "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}hod", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}sek", "relative_time.today": "dnes", "reply_indicator.cancel": "Zrušiť", + "report.block": "Blokuj", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profilom", + "report.category.title_status": "príspevkom", + "report.close": "Hotovo", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Posuň ku {target}", "report.forward_hint": "Tento účet je z iného serveru. Chceš poslať anonymnú kópiu hlásenia aj tam?", - "report.hint": "Toto nahlásenie bude zaslané správcom tvojho servera. Môžeš napísať odvôvodnenie, prečo nahlasuješ tento účet:", + "report.mute": "Nevšímaj si", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Ďalej", "report.placeholder": "Ďalšie komentáre", + "report.reasons.dislike": "Nepáči sa mi", + "report.reasons.dislike_description": "Nieje to niečo, čo chceš vidieť", + "report.reasons.other": "Je to niečo iné", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "Je to spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "Porušuje pravidlá servera", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Odošli", "report.target": "Nahlás {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Nechceš to vidieť?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Nesleduj @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Hľadaj", "search_popout.search_format": "Pokročilé vyhľadávanie", "search_popout.tips.full_text": "Vráti jednoduchý textový výpis príspevkov ktoré si napísal/a, ktoré si obľúbil/a, povýšil/a, alebo aj tých, v ktorých si bol/a spomenutý/á, a potom všetky zadaniu odpovedajúce prezývky, mená a haštagy.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Vráti jednoduchý textový výpis zhodujúcich sa mien, prezývok a haštagov", "search_popout.tips.user": "užívateľ", "search_results.accounts": "Ľudia", + "search_results.all": "Všetky", "search_results.hashtags": "Haštagy", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Príspevky", "search_results.statuses_fts_disabled": "Vyhľadávanie v obsahu príspevkov nieje na tomto Mastodon serveri povolené.", "search_results.total": "{count, number} {count, plural, one {výsledok} many {výsledkov} other {výsledky}}", @@ -409,8 +449,8 @@ "status.delete": "Zmazať", "status.detailed_status": "Podrobný náhľad celej konverzácie", "status.direct": "Priama správa pre @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", + "status.edit": "Uprav", + "status.edited": "Upravené {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Vložiť", "status.favourite": "Páči sa mi", @@ -421,8 +461,8 @@ "status.media_hidden": "Skryté médiá", "status.mention": "Spomeň @{name}", "status.more": "Viac", - "status.mute": "Utíš @{name}", - "status.mute_conversation": "Ignoruj konverzáciu", + "status.mute": "Nevšímaj si @{name}", + "status.mute_conversation": "Nevšímaj si konverzáciu", "status.open": "Otvor tento príspevok", "status.pin": "Pripni na profil", "status.pinned": "Pripnutý príspevok", @@ -444,7 +484,7 @@ "status.show_more_all": "Všetkým ukáž viac", "status.show_thread": "Ukáž diskusné vlákno", "status.uncached_media_warning": "Nedostupný/é", - "status.unmute_conversation": "Prestaň ignorovať konverzáciu", + "status.unmute_conversation": "Prestaň si nevšímať konverzáciu", "status.unpin": "Odopni z profilu", "suggestions.dismiss": "Zavrhni návrh", "suggestions.header": "Mohlo by ťa zaujímať…", @@ -474,6 +514,7 @@ "upload_error.poll": "Nahrávanie súborov pri anketách nieje možné.", "upload_form.audio_description": "Popíš, pre ľudí so stratou sluchu", "upload_form.description": "Opis pre slabo vidiacich", + "upload_form.description_missing": "No description added", "upload_form.edit": "Uprav", "upload_form.thumbnail": "Zmeniť miniatúru", "upload_form.undo": "Vymaž", @@ -495,7 +536,7 @@ "video.expand": "Zväčši video", "video.fullscreen": "Zobraz na celú obrazovku", "video.hide": "Skry video", - "video.mute": "Vypni zvuk", + "video.mute": "Stlm zvuk", "video.pause": "Pauza", "video.play": "Prehraj", "video.unmute": "Zapni zvuk" diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index f69d986fb..23061d152 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -18,12 +18,12 @@ "account.followers": "Sledilci", "account.followers.empty": "Nihče ne sledi temu uporabniku.", "account.followers_counter": "{count, plural, one {ima {count} sledilca} two {ima {count} sledilca} few {ima {count} sledilcev} other {ima {count} sledilce}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {sledi {count} osebi} two {sledi {count} osebama} few {sledi {count} osebam} other {sledi {count} osebam}}", "account.follows.empty": "Ta uporabnik še ne sledi nikomur.", "account.follows_you": "Vam sledi", "account.hide_reblogs": "Skrij spodbude od @{name}", "account.joined": "Pridružen/a {date}", - "account.last_status": "Zadnja dejavnost", "account.link_verified_on": "Lastništvo te povezave je bilo preverjeno {date}", "account.locked_info": "Stanje zasebnosti računa je nastavljeno na zaklenjeno. Lastnik ročno pregleda, kdo ga lahko spremlja.", "account.media": "Mediji", @@ -32,7 +32,6 @@ "account.mute": "Utišaj @{name}", "account.mute_notifications": "Utišaj obvestila od @{name}", "account.muted": "Utišan", - "account.never_active": "Nikoli", "account.posts": "Tuti", "account.posts_with_replies": "Tuti in odgovori", "account.report": "Prijavi @{name}", @@ -42,13 +41,15 @@ "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "Odblokiraj @{name}", "account.unblock_domain": "Razkrij {domain}", + "account.unblock_short": "Odblokiraj", "account.unendorse": "Ne vključi v profil", "account.unfollow": "Prenehaj slediti", "account.unmute": "Odtišaj @{name}", "account.unmute_notifications": "Vklopi obvestila od @{name}", + "account.unmute_short": "Odtišaj", "account_note.placeholder": "Click to add a note", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Mera ohranjanja uporabnikov po dnevih od registracije", + "admin.dashboard.monthly_retention": "Mera ohranjanja uporabnikov po mesecih od registracije", "admin.dashboard.retention.average": "Povprečje", "admin.dashboard.retention.cohort": "Mesec prijave", "admin.dashboard.retention.cohort_size": "Novi uporabniki", @@ -69,7 +70,7 @@ "column.blocks": "Blokirani uporabniki", "column.bookmarks": "Zaznamki", "column.community": "Lokalna časovnica", - "column.direct": "Neposredna sporočila", + "column.conversations": "Conversations", "column.directory": "Prebrskaj profile", "column.domain_blocks": "Skrite domene", "column.favourites": "Priljubljene", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Samo krajevno", "community.column_settings.media_only": "Samo mediji", "community.column_settings.remote_only": "Samo oddaljeno", - "compose_form.direct_message_warning": "Ta tut bo viden le vsem omenjenim uporabnikom.", "compose_form.direct_message_warning_learn_more": "Nauči se več", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Ta tut ne bo naveden pod nobenim ključnikom, ker ni javen. Samo javne tute lahko iščete s ključniki.", "compose_form.lock_disclaimer": "Vaš račun ni {locked}. Vsakdo vam lahko sledi in si ogleda objave, ki so namenjene samo sledilcem.", "compose_form.lock_disclaimer.lock": "zaklenjen", @@ -165,8 +166,9 @@ "empty_column.blocks": "Niste še blokirali nobenega uporabnika.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "Lokalna časovnica je prazna. Napišite nekaj javnega, da se bo žoga zakotalila!", - "empty_column.direct": "Nimate še nobenih neposrednih sporočil. Ko ga boste poslali ali prejeli, se bo prikazal tukaj.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Še vedno ni skritih domen.", + "empty_column.explore_statuses": "Trenutno ni nič v trendu. Preverite znova kasneje!", "empty_column.favourited_statuses": "Nimate priljubljenih tutov. Ko boste vzljubili kakšnega, se bo prikazal tukaj.", "empty_column.favourites": "Nihče še ni vzljubil tega tuta. Ko ga bo nekdo, se bo pojavil tukaj.", "empty_column.follow_recommendations": "Kaže, da za vas ni mogoče pripraviti nobenih predlogov. Poskusite uporabiti iskanje, da poiščete osebe, ki jih poznate, ali raziščete ključnike, ki so v trendu.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Poskusite jih onemogočiti in osvežiti stran. Če to ne pomaga, boste morda še vedno lahko uporabljali Mastodon prek drugega brskalnika ali z domorodno aplikacijo.", "errors.unexpected_crash.copy_stacktrace": "Kopiraj sledenje sklada na odložišče", "errors.unexpected_crash.report_issue": "Prijavi težavo", + "explore.search_results": "Rezultati iskanja", + "explore.suggested_follows": "Za vas", + "explore.title": "Razišči", + "explore.trending_links": "Novice", + "explore.trending_statuses": "Objave", + "explore.trending_tags": "Ključniki", "follow_recommendations.done": "Opravljeno", "follow_recommendations.heading": "Sledite osebam, katerih objave želite videti! Tukaj je nekaj predlogov.", "follow_recommendations.lead": "Objave oseb, ki jim sledite, se bodo prikazale v kronološkem zaporedju v vašem domačem viru. Ne bojte se storiti napake, osebam enako enostavno nehate slediti kadar koli!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "spodbudi", "keyboard_shortcuts.column": "fokusiraj na status v enemu od stolpcev", "keyboard_shortcuts.compose": "fokusiraj na območje za sestavljanje besedila", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Opis", - "keyboard_shortcuts.direct": "odpri stolpec za neposredna sporočila", "keyboard_shortcuts.down": "premakni se navzdol po seznamu", "keyboard_shortcuts.enter": "odpri status", "keyboard_shortcuts.favourite": "vzljubi", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Zaznamki", "navigation_bar.community_timeline": "Lokalna časovnica", "navigation_bar.compose": "Sestavi nov tut", - "navigation_bar.direct": "Neposredna sporočila", "navigation_bar.discover": "Odkrijte", "navigation_bar.domain_blocks": "Skrite domene", "navigation_bar.edit_profile": "Uredi profil", + "navigation_bar.explore": "Razišči", "navigation_bar.favourites": "Priljubljeni", "navigation_bar.filters": "Utišane besede", "navigation_bar.follow_requests": "Prošnje za sledenje", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Nastavitve", "navigation_bar.public_timeline": "Združena časovnica", "navigation_bar.security": "Varnost", + "notification.admin.sign_up": "{name} se je vpisal/a", "notification.favourite": "{name} je vzljubil/a vaš status", "notification.follow": "{name} vam sledi", "notification.follow_request": "{name} vam želi slediti", @@ -308,9 +317,10 @@ "notification.poll": "Glasovanje, v katerem ste sodelovali, se je končalo", "notification.reblog": "{name} je spodbudil/a vaš status", "notification.status": "{name} je pravkar objavil/a", - "notification.update": "{name} edited a post", + "notification.update": "{name} je uredil(a) objavo", "notifications.clear": "Počisti obvestila", "notifications.clear_confirmation": "Ali ste prepričani, da želite trajno izbrisati vsa vaša obvestila?", + "notifications.column_settings.admin.sign_up": "Novi vpisi:", "notifications.column_settings.alert": "Namizna obvestila", "notifications.column_settings.favourite": "Priljubljeni:", "notifications.column_settings.filter_bar.advanced": "Prikaži vse kategorije", @@ -327,7 +337,7 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Neprebrana obvestila", "notifications.column_settings.unread_notifications.highlight": "Poudari neprebrana obvestila", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.update": "Urejanja:", "notifications.filter.all": "Vse", "notifications.filter.boosts": "Spodbude", "notifications.filter.favourites": "Priljubljeni", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Odstrani anketo", "privacy.change": "Prilagodi zasebnost statusa", "privacy.direct.long": "Objavi samo omenjenim uporabnikom", - "privacy.direct.short": "Neposredno", + "privacy.direct.short": "Direct", "privacy.private.long": "Objavi samo sledilcem", - "privacy.private.short": "Samo sledilci", - "privacy.public.long": "Objavi na javne časovnice", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Javno", - "privacy.unlisted.long": "Ne objavi na javne časovnice", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Ni prikazano", "refresh": "Osveži", "regeneration_indicator.label": "Nalaganje…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "danes", "reply_indicator.cancel": "Prekliči", + "report.block": "Blokiraj", + "report.block_explanation": "Njihovih objav ne boste videli. Oni ne bodo videli vaših objav, niti vam ne morejo slediti. Lahko bodo ugotovili, da so blokirani.", "report.categories.other": "Drugo", "report.categories.spam": "Neželeno", "report.categories.violation": "Vsebina krši eno ali več pravil strežnika", + "report.category.subtitle": "Izberite najboljši zadetek", + "report.category.title": "Povejte nam, kaj se dogaja s to/tem {type}", + "report.category.title_account": "profil", + "report.category.title_status": "objava", + "report.close": "Opravljeno", + "report.comment.title": "Je še kaj, za kar menite, da bi morali vedeti?", "report.forward": "Posreduj do {target}", "report.forward_hint": "Račun je iz drugega strežnika. Pošljem anonimno kopijo poročila tudi na drugi strežnik?", - "report.hint": "Poročilo bo poslano moderatorjem vašega vozlišča. Spodaj lahko navedete, zakaj prijavljate ta račun:", + "report.mute": "Utišaj", + "report.mute_explanation": "Njihovih objav ne boste videli. Še vedno vam lahko sledijo in vidijo vaše objave, ne bodo vedeli, da so utišani.", + "report.next": "Naprej", "report.placeholder": "Dodatni komentarji", + "report.reasons.dislike": "Ni mi všeč", + "report.reasons.dislike_description": "To ni tisto, kar želim videti", + "report.reasons.other": "Gre za nekaj drugega", + "report.reasons.other_description": "Težava ne sodi v druge kategorije", + "report.reasons.spam": "To je neželena vsebina", + "report.reasons.spam_description": "Škodljive povezave, lažno prizadevanje ali ponavljajoči se odgovori", + "report.reasons.violation": "Krši strežniška pravila", + "report.reasons.violation_description": "Zavedate se, da krši določena pravila", + "report.rules.subtitle": "Izberite vse, kar ustreza", + "report.rules.title": "Katera pravila so kršena?", + "report.statuses.subtitle": "Izberite vse, kar ustreza", + "report.statuses.title": "Ali so kakšne objave, ki dokazujejo trditve iz tega poročila?", "report.submit": "Pošlji", "report.target": "Prijavi {target}", + "report.thanks.take_action": "Tukaj so vaše možnosti za nadzor tistega, kar vidite na Mastodonu:", + "report.thanks.take_action_actionable": "Medtem, ko to pregledujemo, lahko proti @{name} ukrepate:", + "report.thanks.title": "Ali si želite to pogledati?", + "report.thanks.title_actionable": "Hvala za poročilo, bomo preverili.", + "report.unfollow": "Ne sledi več @{name}", + "report.unfollow_explanation": "Temu računu sledite. Da ne boste več videli njegovih objav v svojem domačem viru, mu prenehajte slediti.", "search.placeholder": "Iskanje", "search_popout.search_format": "Napredna oblika iskanja", "search_popout.tips.full_text": "Enostavno besedilo vrne statuse, ki ste jih napisali, vzljubili, spodbudili ali ste bili v njih omenjeni, kot tudi ujemajoča se uporabniška imena, prikazna imena in ključnike.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Enostavno besedilo vrne ujemajoča se prikazna imena, uporabniška imena in ključnike", "search_popout.tips.user": "uporabnik", "search_results.accounts": "Ljudje", + "search_results.all": "Vse", "search_results.hashtags": "Ključniki", + "search_results.nothing_found": "Za ta iskalni niz ni zadetkov", "search_results.statuses": "Tuti", "search_results.statuses_fts_disabled": "Iskanje tutov po njihovi vsebini ni omogočeno na tem strežniku Mastodon.", "search_results.total": "{count, number} {count, plural, one {rezultat} other {rezultatov}}", @@ -474,6 +514,7 @@ "upload_error.poll": "Prenos datoteke z anketami ni dovoljen.", "upload_form.audio_description": "Opiši za osebe z okvaro sluha", "upload_form.description": "Opišite za slabovidne", + "upload_form.description_missing": "No description added", "upload_form.edit": "Uredi", "upload_form.thumbnail": "Spremeni sličico", "upload_form.undo": "Izbriši", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index fb6bbac75..3535d4ea2 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -18,12 +18,12 @@ "account.followers": "Ndjekës", "account.followers.empty": "Këtë përdorues ende s’e ndjek kush.", "account.followers_counter": "{count, plural, one {{counter} Ndjekës} other {{counter} Ndjekës}}", + "account.following": "Ndjekje", "account.following_counter": "{count, plural, one {{counter} i Ndjekur} other {{counter} të Ndjekur}}", "account.follows.empty": "Ky përdorues ende s’ndjek kënd.", "account.follows_you": "Ju ndjek", "account.hide_reblogs": "Fshih përforcime nga @{name}", "account.joined": "U bë pjesë më {date}", - "account.last_status": "Aktiv së fundi më", "account.link_verified_on": "Pronësia e kësaj lidhjeje qe kontrolluar më {date}", "account.locked_info": "Gjendja e privatësisë së kësaj llogarie është caktuar si e kyçur. I zoti merr dorazi në shqyrtim cilët mund ta ndjekin.", "account.media": "Media", @@ -32,7 +32,6 @@ "account.mute": "Heshtoni @{name}", "account.mute_notifications": "Heshtoji njoftimet prej @{name}", "account.muted": "Heshtuar", - "account.never_active": "Kurrë", "account.posts": "Mesazhe", "account.posts_with_replies": "Mesazhe dhe përgjigje", "account.report": "Raportojeni @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Mesazh} other {{counter} Mesazhe}}", "account.unblock": "Zhbllokoje @{name}", "account.unblock_domain": "Zhblloko përkatësinë {domain}", + "account.unblock_short": "Zhbllokoje", "account.unendorse": "Mos e përfshi në profil", "account.unfollow": "Resht së ndjekuri", "account.unmute": "Ktheji zërin @{name}", "account.unmute_notifications": "Hiqua ndalimin e shfaqjes njoftimeve nga @{name}", + "account.unmute_short": "Çheshtoje", "account_note.placeholder": "Klikoni për të shtuar shënim", "admin.dashboard.daily_retention": "Shkallë mbajtjeje përdoruesi, në ditë, pas regjistrimit", "admin.dashboard.monthly_retention": "Shkallë mbajtjeje përdoruesi, në muaj, pas regjistrimit", @@ -69,7 +70,7 @@ "column.blocks": "Përdorues të bllokuar", "column.bookmarks": "Faqerojtës", "column.community": "Rrjedhë kohore vendore", - "column.direct": "Mesazhe të drejtpërdrejtë", + "column.conversations": "Biseda", "column.directory": "Shfletoni profile", "column.domain_blocks": "Përkatësi të bllokuara", "column.favourites": "Të parapëlqyer", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Vetëm vendore", "community.column_settings.media_only": "Vetëm Media", "community.column_settings.remote_only": "Vetëm të largëta", - "compose_form.direct_message_warning": "Ky mesazh do t’u dërgohet përdoruesve të përmendur.", "compose_form.direct_message_warning_learn_more": "Mësoni më tepër", + "compose_form.encryption_warning": "Postimet në Mastodon nuk fshehtëzohen skaj-më-skaj. Mos ndani me të tjerë gjëra me spec në Mastodon.", "compose_form.hashtag_warning": "Ky mesazh s’do të paraqitet nën ndonjë hashtag, ngaqë s’i është caktuar ndonjë. Vetëm mesazhet publike mund të kërkohen sipas hashtagësh.", "compose_form.lock_disclaimer": "Llogaria juaj s’është {locked}. Mund ta ndjekë cilido, për të parë postimet tuaja vetëm për ndjekësit.", "compose_form.lock_disclaimer.lock": "e kyçur", @@ -165,8 +166,9 @@ "empty_column.blocks": "S’keni bllokuar ende ndonjë përdorues.", "empty_column.bookmarked_statuses": "S’keni faqeruajtur ende ndonjë mesazh. Kur faqeruani një të tillë, ai do të shfaqet këtu.", "empty_column.community": "Rrjedha kohore vendore është e zbrazët. Shkruani diçka publikisht që t’i hyhet valles!", - "empty_column.direct": "S’keni ende ndonjë mesazh të drejtpërdrejt. Kur dërgoni ose merrni një të tillë, ai do të shfaqet këtu.", + "empty_column.conversations": "Pasi të dërgoni ose merrni një postim që është i dukshëm vetëm për personat e përmendur në të, do të shfaqet këtu.", "empty_column.domain_blocks": "Ende s’ka përkatësi të fshehura.", + "empty_column.explore_statuses": "Asgjë në modë tani. Kontrolloni më vonë!", "empty_column.favourited_statuses": "S’keni ende ndonjë mesazh të parapëlqyer. Kur parapëlqeni një të tillë, ai do të shfaqet këtu.", "empty_column.favourites": "Askush s’e ka parapëlqyer ende këtë mesazh. Kur e bën dikush, ai do të shfaqet këtu.", "empty_column.follow_recommendations": "Duket se s’u prodhuan dot sugjerime për ju. Mund të provoni të kërkoni për persona që mund të njihni, ose të eksploroni hashtag-ë që janë në modë.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Provoni t’i çaktivizoni dhe të rifreskoni faqen. Nëse kjo s’bën punë, mundeni prapë të jeni në gjendje të përdorni Mastodon-in përmes një shfletuesi tjetër, apo një aplikacioni prej Mastodon-it.", "errors.unexpected_crash.copy_stacktrace": "Kopjo stacktrace-in në të papastër", "errors.unexpected_crash.report_issue": "Raportoni problemin", + "explore.search_results": "Përfundime kërkimi", + "explore.suggested_follows": "Për ju", + "explore.title": "Eksploroni", + "explore.trending_links": "Lajme", + "explore.trending_statuses": "Postime", + "explore.trending_tags": "Hashtagë", "follow_recommendations.done": "U bë", "follow_recommendations.heading": "Ndiqni persona prej të cilëve doni të shihni postime! Ja ca sugjerime.", "follow_recommendations.lead": "Postimet prej personash që ndiqni do të shfaqen në rend kohor te prurja juaj kryesore. Mos kini frikë të bëni gabime, mund të ndalni po aq kollaj ndjekjen e dikujt, në çfarëdo kohe!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "për përforcim", "keyboard_shortcuts.column": "për kalim fokusi mbi një gjendje te një nga shtyllat", "keyboard_shortcuts.compose": "për kalim fokusi te fusha e hartimit të mesazheve", + "keyboard_shortcuts.conversations": "për të hapur shtyllë bisedash", "keyboard_shortcuts.description": "Përshkrim", - "keyboard_shortcuts.direct": "për hapje shtylle mesazhesh të drejtpërdrejtë", "keyboard_shortcuts.down": "për zbritje poshtë nëpër listë", "keyboard_shortcuts.enter": "për hapje gjendjeje", "keyboard_shortcuts.favourite": "për t’i vënë shenjë si të parapëlqyer", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Faqerojtës", "navigation_bar.community_timeline": "Rrjedhë kohore vendore", "navigation_bar.compose": "Hartoni mesazh të ri", - "navigation_bar.direct": "Mesazhe të drejtpërdrejtë", "navigation_bar.discover": "Zbuloni", "navigation_bar.domain_blocks": "Përkatësi të bllokuara", "navigation_bar.edit_profile": "Përpunoni profilin", + "navigation_bar.explore": "Eksploroni", "navigation_bar.favourites": "Të parapëlqyer", "navigation_bar.filters": "Fjalë të heshtuara", "navigation_bar.follow_requests": "Kërkesa për ndjekje", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Parapëlqime", "navigation_bar.public_timeline": "Rrjedhë kohore të federuarish", "navigation_bar.security": "Siguri", + "notification.admin.sign_up": "{name} u regjistrua", "notification.favourite": "{name} pëlqeu mesazhin tuaj", "notification.follow": "{name} zuri t’ju ndjekë", "notification.follow_request": "{name} ka kërkuar t’ju ndjekë", @@ -311,6 +320,7 @@ "notification.update": "{name} përpunoi një postim", "notifications.clear": "Spastroji njoftimet", "notifications.clear_confirmation": "Jeni i sigurt se doni të spastrohen përgjithmonë krejt njoftimet tuaja?", + "notifications.column_settings.admin.sign_up": "Regjistrime të reja:", "notifications.column_settings.alert": "Njoftime desktopi", "notifications.column_settings.favourite": "Të parapëlqyer:", "notifications.column_settings.filter_bar.advanced": "Shfaq krejt kategoritë", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Hiqe pyetësorin", "privacy.change": "Rregulloni privatësi mesazhesh", "privacy.direct.long": "I dukshëm vetëm për përdorues të përmendur", - "privacy.direct.short": "I drejtpërdrejtë", + "privacy.direct.short": "Vetëm persona që përmend", "privacy.private.long": "I dukshëm vetëm për ndjekës", - "privacy.private.short": "Vetëm ndjekësve", - "privacy.public.long": "I dukshëm për të tërë, shfaqur në rrjedha kohore publike", + "privacy.private.short": "Vetëm ndjekës", + "privacy.public.long": "I dukshëm për të tërë", "privacy.public.short": "Publik", - "privacy.unlisted.long": "I dukshëm për të tërë, por jo në rrjedha kohore publike", + "privacy.unlisted.long": "I dukshëm për të tërë, por lënë jashtë nga veçoritë e zbulimit", "privacy.unlisted.short": "Jo në lista", "refresh": "Rifreskoje", "regeneration_indicator.label": "Po ngarkohet…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "sot", "reply_indicator.cancel": "Anuloje", + "report.block": "Bllokoje", + "report.block_explanation": "S’do të shihni postime prej tyre. S’do të jenë në gjendje të shohin postimet tuaja, apo t’ju ndjekin. Do të jenë në gjendje të shohin se janë bllokuar.", "report.categories.other": "Tjetër", "report.categories.spam": "I padëshiruar", "report.categories.violation": "Lënda shkel një ose disa rregulla shërbyesi", + "report.category.subtitle": "Zgjidhni përputhjen më të mirë", + "report.category.title": "Tregonani se ç’po ndodh me këtë {type}", + "report.category.title_account": "profil", + "report.category.title_status": "postim", + "report.close": "U bë", + "report.comment.title": "Ka ndonjë gjë tjetër që do të duhej ta dinim?", "report.forward": "Përcillja {target}", "report.forward_hint": "Llogaria është nga një shërbyes tjetër. Të dërgohet edhe një kopje e anonimizuar e raportimit?", - "report.hint": "Raportimi do t’u dërgohet moderatorëve të shërbyesit tuaj. Më poshtë mund të jepni një shpjegim se pse po e raportoni këtë llogari:", + "report.mute": "Heshtoje", + "report.mute_explanation": "S’do të shihni postimet e tyre. Ende mund t’ju ndjekin dhe të shohin postimet tuaja dhe s’do ta dinë që janë heshtuar.", + "report.next": "Pasuesi", "report.placeholder": "Komente shtesë", + "report.reasons.dislike": "S’më pëlqen", + "report.reasons.dislike_description": "S’është gjë që do të doja ta shihja", + "report.reasons.other": "Është tjetër gjë", + "report.reasons.other_description": "Problemi nuk hyn te kategoritë e tjera", + "report.reasons.spam": "Është mesazh i padëshiruar", + "report.reasons.spam_description": "Lidhje dashakeqe, angazhim i rremë, ose përgjigje të përsëritura", + "report.reasons.violation": "Cenon rregulla shërbyesi", + "report.reasons.violation_description": "Jeni i ndërgjegjshëm që cenon rregulla specifike", + "report.rules.subtitle": "Përzgjidhni gjithçka që ka vend", + "report.rules.title": "Cilat rregulla po cenohen?", + "report.statuses.subtitle": "Përzgjidhni gjithçka që ka vend", + "report.statuses.title": "A ka postime që dëshmojnë problemet e këtij raporti?", "report.submit": "Parashtroje", "report.target": "Raportim i {target}", + "report.thanks.take_action": "Ja mundësitë tuaja për të kontrolluar ç’shihni në Mastodon:", + "report.thanks.take_action_actionable": "Teksa e shqyrtojmë, mund të ndërmerrni veprim kundër @{name}:", + "report.thanks.title": "S’doni të shihni këtë?", + "report.thanks.title_actionable": "Faleminderit për raportimin, do ta shohim.", + "report.unfollow": "Mos e ndiq më @{name}", + "report.unfollow_explanation": "Po e ndiqni këtë llogari. Për të mos parë më postimet e tyre te prurja juaj e kreut, ndalni ndjekjen e tyre.", "search.placeholder": "Kërkoni", "search_popout.search_format": "Format kërkimi të mëtejshëm", "search_popout.tips.full_text": "Kërkimi për tekst të thjeshtë përgjigjet me mesazhe që keni shkruar, parapëlqyer, përforcuar, ose ku jeni përmendur, si dhe emra përdoruesish, emra ekrani dhe hashtag-ë që kanë përputhje me termin e kërkimit.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Kërkim për tekst të thjeshtë përgjigjet me emra, emra përdoruesish dhe hashtag-ë që kanë përputhje me termin e kërkimit", "search_popout.tips.user": "përdorues", "search_results.accounts": "Persona", + "search_results.all": "Krejt", "search_results.hashtags": "Hashtag-ë", + "search_results.nothing_found": "S’u gjet gjë për këto terma kërkimi", "search_results.statuses": "Mesazhe", "search_results.statuses_fts_disabled": "Kërkimi i mesazheve sipas lëndës së tyre s’është i aktivizuar në këtë shërbyes Mastodon.", "search_results.total": "{count, number} {count, plural, one {përfundim} other {përfundime}}", @@ -474,6 +514,7 @@ "upload_error.poll": "Me pyetësorët s’lejohet ngarkim kartelash.", "upload_form.audio_description": "Përshkruajeni për persona me dëgjim të kufizuar", "upload_form.description": "Përshkruajeni për persona me probleme shikimi", + "upload_form.description_missing": "S’u shtua përshkrim", "upload_form.edit": "Përpunoni", "upload_form.thumbnail": "Ndryshoni miniaturën", "upload_form.undo": "Fshije", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 37fbd7666..e732873c4 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -18,12 +18,12 @@ "account.followers": "Pratioca", "account.followers.empty": "No one follows this user yet.", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Prati Vas", "account.hide_reblogs": "Sakrij podrške koje daje korisnika @{name}", "account.joined": "Joined {date}", - "account.last_status": "Last active", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Mediji", @@ -32,7 +32,6 @@ "account.mute": "Ućutkaj korisnika @{name}", "account.mute_notifications": "Isključi obaveštenja od korisnika @{name}", "account.muted": "Muted", - "account.never_active": "Never", "account.posts": "Statusa", "account.posts_with_replies": "Toots with replies", "account.report": "Prijavi @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "Odblokiraj korisnika @{name}", "account.unblock_domain": "Odblokiraj domen {domain}", + "account.unblock_short": "Unblock", "account.unendorse": "Don't feature on profile", "account.unfollow": "Otprati", "account.unmute": "Ukloni ućutkavanje korisniku @{name}", "account.unmute_notifications": "Uključi nazad obaveštenja od korisnika @{name}", + "account.unmute_short": "Unmute", "account_note.placeholder": "Click to add a note", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "Blokirani korisnici", "column.bookmarks": "Bookmarks", "column.community": "Lokalna lajna", - "column.direct": "Direct messages", + "column.conversations": "Conversations", "column.directory": "Browse profiles", "column.domain_blocks": "Hidden domains", "column.favourites": "Omiljeni", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Remote only", - "compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.", "compose_form.direct_message_warning_learn_more": "Learn more", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Vaš nalog nije {locked}. Svako može da Vas zaprati i da vidi objave namenjene samo Vašim pratiocima.", "compose_form.lock_disclaimer.lock": "zaključan", @@ -165,8 +166,9 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "Lokalna lajna je prazna. Napišite nešto javno da lajna produva!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "There are no hidden domains yet.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", "errors.unexpected_crash.report_issue": "Report issue", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "da podržite", "keyboard_shortcuts.column": "da se prebacite na status u jednoj od kolona", "keyboard_shortcuts.compose": "da se prebacite na pisanje novog tuta", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Opis", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "da se pomerite na dole u listi", "keyboard_shortcuts.enter": "da otvorite status", "keyboard_shortcuts.favourite": "da označite kao omiljeno", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Lokalna lajna", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Izmeni profil", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Omiljeni", "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Zahtevi za praćenje", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Podešavanja", "navigation_bar.public_timeline": "Federisana lajna", "navigation_bar.security": "Security", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} je stavio Vaš status kao omiljeni", "notification.follow": "{name} Vas je zapratio", "notification.follow_request": "{name} has requested to follow you", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Očisti obaveštenja", "notifications.clear_confirmation": "Da li ste sigurno da trajno želite da očistite Vaša obaveštenja?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Obaveštenja na radnoj površini", "notifications.column_settings.favourite": "Omiljeni:", "notifications.column_settings.filter_bar.advanced": "Display all categories", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Remove poll", "privacy.change": "Podesi status privatnosti", "privacy.direct.long": "Objavi samo korisnicima koji su pomenuti", - "privacy.direct.short": "Direktno", + "privacy.direct.short": "Direct", "privacy.private.long": "Objavi samo pratiocima", - "privacy.private.short": "Samo za pratioce", - "privacy.public.long": "Objavi na javnoj lajni", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Javno", - "privacy.unlisted.long": "Ne objavljuj na javnim lajnama", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Neizlistano", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "Poništi", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", - "report.hint": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", "report.placeholder": "Dodatni komentari", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Pošalji", "report.target": "Prijavljujem {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Pretraga", "search_popout.search_format": "Napredni format pretrage", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Traženjem običnog teksta ćete dobiti sva pronađena imena, sva korisnička imena i sve nađene heštegove", "search_popout.tips.user": "korisnik", "search_results.accounts": "People", + "search_results.all": "All", "search_results.hashtags": "Hashtags", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.total": "{count, number} {count, plural, one {rezultat} few {rezultata} other {rezultata}}", @@ -474,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Opiši za slabovide osobe", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Opozovi", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 429d4c697..15f8640c6 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -18,12 +18,12 @@ "account.followers": "Пратиоци", "account.followers.empty": "Тренутно нико не прати овог корисника.", "account.followers_counter": "{count, plural, one {{counter} пратилац} few {{counter} пратиоца} other {{counter} пратилаца}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} прати} few {{counter} прати} other {{counter} прати}}", "account.follows.empty": "Корисник тренутно не прати никога.", "account.follows_you": "Прати Вас", "account.hide_reblogs": "Сакриј подршке које даје корисника @{name}", "account.joined": "Придружио/ла се {date}", - "account.last_status": "Последњи пут активан/на", "account.link_verified_on": "Власништво над овом везом је проверено {date}", "account.locked_info": "Статус приватности овог налога је подешен на закључано. Власник ручно прегледа ко га може пратити.", "account.media": "Медији", @@ -32,7 +32,6 @@ "account.mute": "Ућуткај корисника @{name}", "account.mute_notifications": "Искључи обавештења од корисника @{name}", "account.muted": "Ућуткан", - "account.never_active": "Никада", "account.posts": "Трубе", "account.posts_with_replies": "Трубе и одговори", "account.report": "Пријави @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} објава} few {{counter} објаве} other {{counter} објава}}", "account.unblock": "Одблокирај корисника @{name}", "account.unblock_domain": "Одблокирај домен {domain}", + "account.unblock_short": "Unblock", "account.unendorse": "Не истичи на налогу", "account.unfollow": "Отпрати", "account.unmute": "Уклони ућуткавање кориснику @{name}", "account.unmute_notifications": "Укључи назад обавештења од корисника @{name}", + "account.unmute_short": "Unmute", "account_note.placeholder": "Click to add a note", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "Блокирани корисници", "column.bookmarks": "Обележивачи", "column.community": "Локална временска линија", - "column.direct": "Директне поруке", + "column.conversations": "Conversations", "column.directory": "Претражи налоге", "column.domain_blocks": "Скривени домени", "column.favourites": "Омиљене", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Само локално", "community.column_settings.media_only": "Само Медији", "community.column_settings.remote_only": "Само удаљено", - "compose_form.direct_message_warning": "Ова труба ће бити послата споменутим корисницима.", "compose_form.direct_message_warning_learn_more": "Сазнајте више", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Ова труба неће бити излистана под било којом тарабом јер је сакривена. Само јавне трубе могу бити претражене тарабом.", "compose_form.lock_disclaimer": "Ваш налог није {locked}. Свако може да Вас запрати и да види објаве намењене само Вашим пратиоцима.", "compose_form.lock_disclaimer.lock": "закључан", @@ -165,8 +166,9 @@ "empty_column.blocks": "Још увек немате блокираних корисника.", "empty_column.bookmarked_statuses": "Још увек немате обележене трубе. Када их обележите, појавиће се овде.", "empty_column.community": "Локална временска линија је празна. Напишите нешто јавно да започнете!", - "empty_column.direct": "Још увек немате директних порука. Када пошаљете или примите једну, појавиће се овде.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Још увек нема сакривених домена.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Још увек немате труба које су вам се свиделе. Када вам се једна свиди, појавиће се овде.", "empty_column.favourites": "Још увек се никоме није свидела ова труба. Када се некоме свиди, појавиће се овде.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Покушајте да их онемогућите и освежите страницу. Ако то не помогне, можда ћете и даље моћи да користите Mastodon преко другог прегледача или матичне апликације.", "errors.unexpected_crash.copy_stacktrace": "Копирај \"stacktrace\" у клипборд", "errors.unexpected_crash.report_issue": "Пријави проблем", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "да подржите", "keyboard_shortcuts.column": "да се пребаците на статус у једној од колона", "keyboard_shortcuts.compose": "да се пребаците на писање новог тута", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Опис", - "keyboard_shortcuts.direct": "да отворите колону за директне поруке", "keyboard_shortcuts.down": "да се померите на доле у листи", "keyboard_shortcuts.enter": "да отворите статус", "keyboard_shortcuts.favourite": "да означите као омиљено", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Маркери", "navigation_bar.community_timeline": "Локална временска линија", "navigation_bar.compose": "Саставите нову трубу", - "navigation_bar.direct": "Директне поруке", "navigation_bar.discover": "Откриј", "navigation_bar.domain_blocks": "Сакривени домени", "navigation_bar.edit_profile": "Измени налог", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Омиљене", "navigation_bar.filters": "Пригушене речи", "navigation_bar.follow_requests": "Захтеви за праћење", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Подешавања", "navigation_bar.public_timeline": "Здружена временска линија", "navigation_bar.security": "Безбедност", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} је ставио/ла Ваш статус као омиљени", "notification.follow": "{name} Вас је запратио/ла", "notification.follow_request": "{name} је затражио да Вас запрати", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Очисти обавештења", "notifications.clear_confirmation": "Да ли сте сигурно да трајно желите да очистите Ваша обавештења?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Обавештења на радној површини", "notifications.column_settings.favourite": "Омиљени:", "notifications.column_settings.filter_bar.advanced": "Прикажи све категорије", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Уклони анкету", "privacy.change": "Подеси статус приватности", "privacy.direct.long": "Објави само корисницима који су поменути", - "privacy.direct.short": "Директно", + "privacy.direct.short": "Direct", "privacy.private.long": "Објави само пратиоцима", - "privacy.private.short": "Само за пратиоце", - "privacy.public.long": "Објави на јавној лајни", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Јавно", - "privacy.unlisted.long": "Не објављуј на јавним временским линијама", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Неизлистано", "refresh": "Освежи", "regeneration_indicator.label": "Учитавање…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}с", "relative_time.today": "данас", "reply_indicator.cancel": "Поништи", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Проследити {target}", "report.forward_hint": "Налог је са другог сервера. Послати анонимну копију пријаве и тамо?", - "report.hint": "Пријава ће бити послата модераторима ваше инстанце. Можете додати објашњење зашто пријављујете овај налог у наставку:", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", "report.placeholder": "Додатни коментари", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Пошаљи", "report.target": "Пријављујем {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Претрага", "search_popout.search_format": "Напредни формат претраге", "search_popout.tips.full_text": "Једноставан текст враћа статусе које сте написали, фаворизовали, подржали или били поменути, као и подударање корисничких имена, приказаних имена, и тараба.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Тражењем обичног текста ћете добити сва пронађена имена, сва корисничка имена и све нађене хештегове", "search_popout.tips.user": "корисник", "search_results.accounts": "Људи", + "search_results.all": "All", "search_results.hashtags": "Тарабе", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Трубе", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.total": "{count, number} {count, plural, one {резултат} few {резултата} other {резултата}}", @@ -474,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Опишите за особе са оштећеним видом", + "upload_form.description_missing": "No description added", "upload_form.edit": "Уреди", "upload_form.thumbnail": "Промени приказ слика", "upload_form.undo": "Обриши", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 798d1f8e4..da2a4588c 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -18,12 +18,12 @@ "account.followers": "Följare", "account.followers.empty": "Ingen följer denna användare än.", "account.followers_counter": "{count, plural, one {{counter} Följare} other {{counter} Följare}}", + "account.following": "Följer", "account.following_counter": "{count, plural, one {{counter} Följer} other {{counter} Följer}}", "account.follows.empty": "Denna användare följer inte någon än.", "account.follows_you": "Följer dig", "account.hide_reblogs": "Dölj knuffar från @{name}", "account.joined": "Gick med {date}", - "account.last_status": "Senast aktiv", "account.link_verified_on": "Ägarskap för detta konto kontrollerades den {date}", "account.locked_info": "Detta konto har låst integritetsstatus. Ägaren väljer manuellt vem som kan följa.", "account.media": "Media", @@ -32,7 +32,6 @@ "account.mute": "Tysta @{name}", "account.mute_notifications": "Stäng av notifieringar från @{name}", "account.muted": "Tystad", - "account.never_active": "Aldrig", "account.posts": "Tutningar", "account.posts_with_replies": "Tutningar och svar", "account.report": "Rapportera @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural,one {{counter} Tuta} other {{counter} Tutor}}", "account.unblock": "Avblockera @{name}", "account.unblock_domain": "Sluta dölja {domain}", + "account.unblock_short": "Avblockera", "account.unendorse": "Visa inte på profil", "account.unfollow": "Sluta följ", "account.unmute": "Sluta tysta @{name}", "account.unmute_notifications": "Återaktivera aviseringar från @{name}", + "account.unmute_short": "Unmute", "account_note.placeholder": "Klicka för att lägga till anteckning", "admin.dashboard.daily_retention": "Användarlojalitet per dag efter registrering", "admin.dashboard.monthly_retention": "Användarlojalitet per månad efter registrering", @@ -69,7 +70,7 @@ "column.blocks": "Blockerade användare", "column.bookmarks": "Bokmärken", "column.community": "Lokal tidslinje", - "column.direct": "Direktmeddelanden", + "column.conversations": "Konversationer", "column.directory": "Bläddra bland profiler", "column.domain_blocks": "Dolda domäner", "column.favourites": "Favoriter", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Endast lokalt", "community.column_settings.media_only": "Endast media", "community.column_settings.remote_only": "Endast fjärr", - "compose_form.direct_message_warning": "Denna tutning kommer endast skickas till de nämnda användarna.", "compose_form.direct_message_warning_learn_more": "Lär dig mer", + "compose_form.encryption_warning": "Inlägg på Mastodon är inte end-to-end-krypterade. Dela inte någon känslig information över Mastodon.", "compose_form.hashtag_warning": "Denna toot kommer inte att visas under någon hashtag eftersom den är onoterad. Endast offentliga toots kan sökas med hashtag.", "compose_form.lock_disclaimer": "Ditt konto är inte {locked}. Vem som helst kan följa dig för att se dina inlägg som endast är för följare.", "compose_form.lock_disclaimer.lock": "låst", @@ -165,8 +166,9 @@ "empty_column.blocks": "Du har ännu ej blockerat några användare.", "empty_column.bookmarked_statuses": "Du har inte bokmärkt några tutar än. När du gör ett bokmärke kommer det synas här.", "empty_column.community": "Den lokala tidslinjen är tom. Skriv något offentligt för att sätta bollen i rullning!", - "empty_column.direct": "Du har inga direktmeddelanden än. När du skickar eller tar emot ett kommer det att visas här.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Det finns ännu inga dolda domäner.", + "empty_column.explore_statuses": "Ingenting är trendigt just nu. Kom tillbaka senare!", "empty_column.favourited_statuses": "Du har inga favoritmarkerade toots än. När du favoritmarkerar en kommer den visas här.", "empty_column.favourites": "Ingen har favoritmarkerat den här tooten än. När någon gör det kommer den visas här.", "empty_column.follow_recommendations": "Det ser ut som om inga förslag kan genereras till dig. Du kan prova att använda sök för att leta efter personer som du kanske känner eller utforska trendande hash-taggar.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Prova att avaktivera dem och uppdatera sidan. Om detta inte hjälper kan du försöka använda Mastodon med en annan webbläsare eller en app.", "errors.unexpected_crash.copy_stacktrace": "Kopiera stacktrace till urklipp", "errors.unexpected_crash.report_issue": "Rapportera problem", + "explore.search_results": "Sökresultat", + "explore.suggested_follows": "För dig", + "explore.title": "Utforska", + "explore.trending_links": "Nyheter", + "explore.trending_statuses": "Inlägg", + "explore.trending_tags": "Hashtaggar", "follow_recommendations.done": "Klar", "follow_recommendations.heading": "Följ personer som du skulle vilja se inlägg från! Här finns det några förslag.", "follow_recommendations.lead": "Inlägg från personer du följer kommer att dyka upp i kronologisk ordning i ditt hem-flöde. Var inte rädd för att göra misstag, du kan sluta följa människor lika enkelt när som helst!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "för att knuffa", "keyboard_shortcuts.column": "för att fokusera en status i en av kolumnerna", "keyboard_shortcuts.compose": "för att fokusera skrivfältet", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Beskrivning", - "keyboard_shortcuts.direct": "för att öppna Direktmeddelanden", "keyboard_shortcuts.down": "för att flytta nedåt i listan", "keyboard_shortcuts.enter": "för att öppna en status", "keyboard_shortcuts.favourite": "för att sätta som favorit", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Bokmärken", "navigation_bar.community_timeline": "Lokal tidslinje", "navigation_bar.compose": "Författa ny toot", - "navigation_bar.direct": "Direktmeddelanden", "navigation_bar.discover": "Upptäck", "navigation_bar.domain_blocks": "Dolda domäner", "navigation_bar.edit_profile": "Redigera profil", + "navigation_bar.explore": "Utforska", "navigation_bar.favourites": "Favoriter", "navigation_bar.filters": "Tystade ord", "navigation_bar.follow_requests": "Följförfrågningar", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Inställningar", "navigation_bar.public_timeline": "Förenad tidslinje", "navigation_bar.security": "Säkerhet", + "notification.admin.sign_up": "{name} registrerade sig", "notification.favourite": "{name} favoriserade din status", "notification.follow": "{name} följer dig", "notification.follow_request": "{name} har begärt att följa dig", @@ -311,6 +320,7 @@ "notification.update": "{name} redigerade ett inlägg", "notifications.clear": "Rensa aviseringar", "notifications.clear_confirmation": "Är du säker på att du vill rensa alla dina aviseringar permanent?", + "notifications.column_settings.admin.sign_up": "Nya registreringar:", "notifications.column_settings.alert": "Skrivbordsaviseringar", "notifications.column_settings.favourite": "Favoriter:", "notifications.column_settings.filter_bar.advanced": "Visa alla kategorier", @@ -327,7 +337,7 @@ "notifications.column_settings.status": "Nya tutor:", "notifications.column_settings.unread_notifications.category": "O-lästa aviseringar", "notifications.column_settings.unread_notifications.highlight": "Markera o-lästa aviseringar", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.update": "Redigeringar:", "notifications.filter.all": "Alla", "notifications.filter.boosts": "Knuffar", "notifications.filter.favourites": "Favoriter", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Ta bort omröstning", "privacy.change": "Justera sekretess", "privacy.direct.long": "Skicka endast till nämnda användare", - "privacy.direct.short": "Direkt", + "privacy.direct.short": "Bara personer jag nämner", "privacy.private.long": "Endast synligt för följare", "privacy.private.short": "Endast följare", - "privacy.public.long": "Skicka till publik tidslinje", + "privacy.public.long": "Synlig för alla", "privacy.public.short": "Publik", - "privacy.unlisted.long": "Skicka inte till publik tidslinje", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Olistad", "refresh": "Läs om", "regeneration_indicator.label": "Laddar…", @@ -369,7 +379,7 @@ "relative_time.days": "{number}d", "relative_time.full.days": "{number, plural, one {# dag} other {# dagar}} sedan", "relative_time.full.hours": "{number, plural, one {# timme} other {# timmar}} sedan", - "relative_time.full.just_now": "just now", + "relative_time.full.just_now": "just nu", "relative_time.full.minutes": "{number, plural, one {# minut} other {# minuter}} sedan", "relative_time.full.seconds": "{number, plural, one {# sekund} other {# sekunder}} sedan", "relative_time.hours": "{number}tim", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}sek", "relative_time.today": "idag", "reply_indicator.cancel": "Ångra", + "report.block": "Blockera", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Övrigt", "report.categories.spam": "Skräppost", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.violation": "Innehåll bryter mot en eller flera serverregler", + "report.category.subtitle": "Välj den bästa träffen", + "report.category.title": "Berätta för oss vad som händer med den här {type}", + "report.category.title_account": "profil", + "report.category.title_status": "inlägg", + "report.close": "Färdig", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Vidarebefordra till {target}", "report.forward_hint": "Kontot är från en annan server. Skicka även en anonymiserad kopia av anmälan dit?", - "report.hint": "Anmälan skickas till din instans moderatorer. Du kan ge en förklaring till varför du har anmält detta konto nedan:", + "report.mute": "Tysta", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Nästa", "report.placeholder": "Ytterligare kommentarer", + "report.reasons.dislike": "Jag tycker inte om det", + "report.reasons.dislike_description": "Det är inget som du vill se", + "report.reasons.other": "Det är något annat", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "Det är skräppost", + "report.reasons.spam_description": "Skadliga länkar, bedrägligt beteende eller repetitiva svar", + "report.reasons.violation": "Det bryter mot serverns regler", + "report.reasons.violation_description": "Du är medveten om att det bryter mot specifika regler", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Skicka", "report.target": "Rapporterar {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Vill du inte se det här?", + "report.thanks.title_actionable": "Tack för att du rapporterar, vi kommer att titta på detta.", + "report.unfollow": "Sluta följ @{username}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Sök", "search_popout.search_format": "Avancerat sökformat", "search_popout.tips.full_text": "Enkel text returnerar statusar där du har skrivit, favoriserat, knuffat eller nämnts samt med matchande användarnamn, visningsnamn och hashtags.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Enkel text returnerar matchande visningsnamn, användarnamn och hashtags", "search_popout.tips.user": "användare", "search_results.accounts": "Människor", + "search_results.all": "Alla", "search_results.hashtags": "Hashtaggar", + "search_results.nothing_found": "Kunde inte hitta något för dessa sökord", "search_results.statuses": "Tutor", "search_results.statuses_fts_disabled": "Att söka toots med deras innehåll är inte möjligt på denna Mastodon-server.", "search_results.total": "{count, number} {count, plural, ett {result} andra {results}}", @@ -410,13 +450,13 @@ "status.detailed_status": "Detaljerad samtalsvy", "status.direct": "Direktmeddela @{name}", "status.edit": "Redigera", - "status.edited": "Edited {date}", + "status.edited": "Ändrad {date}", "status.edited_x_times": "Redigerad {count, plural, one {{count} gång} other {{count} gånger}}", "status.embed": "Bädda in", "status.favourite": "Favorit", "status.filtered": "Filtrerat", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} skapade {date}", + "status.history.edited": "{name} redigerade {date}", "status.load_more": "Ladda fler", "status.media_hidden": "Media dold", "status.mention": "Omnämn @{name}", @@ -474,6 +514,7 @@ "upload_error.poll": "Filuppladdning tillåts inte med omröstningar.", "upload_form.audio_description": "Beskriv för personer med hörselnedsättning", "upload_form.description": "Beskriv för synskadade", + "upload_form.description_missing": "Beskrivning saknas", "upload_form.edit": "Redigera", "upload_form.thumbnail": "Ändra miniatyr", "upload_form.undo": "Radera", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index 5456eb88e..09d473ef4 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -18,12 +18,12 @@ "account.followers": "Followers", "account.followers.empty": "No one follows this user yet.", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", - "account.last_status": "Last active", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", @@ -32,7 +32,6 @@ "account.mute": "Mute @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", - "account.never_active": "Never", "account.posts": "Toots", "account.posts_with_replies": "Toots and replies", "account.report": "Report @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "Unblock @{name}", "account.unblock_domain": "Unblock domain {domain}", + "account.unblock_short": "Unblock", "account.unendorse": "Don't feature on profile", "account.unfollow": "Unfollow", "account.unmute": "Unmute @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", + "account.unmute_short": "Unmute", "account_note.placeholder": "Click to add a note", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.conversations": "Conversations", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Remote only", - "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.", "compose_form.direct_message_warning_learn_more": "Learn more", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "locked", @@ -165,8 +166,9 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "There are no blocked domains yet.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", "errors.unexpected_crash.report_issue": "Report issue", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Favourites", "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", "notification.follow_request": "{name} has requested to follow you", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.filter_bar.advanced": "Display all categories", @@ -359,9 +369,9 @@ "privacy.direct.short": "Direct", "privacy.private.long": "Visible for followers only", "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all, shown in public timelines", + "privacy.public.long": "Visible for all", "privacy.public.short": "Public", - "privacy.unlisted.long": "Visible for all, but not in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "Cancel", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", - "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", - "report.placeholder": "Additional comments", - "report.submit": "Submit", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", + "report.placeholder": "Type or paste additional comments", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", + "report.submit": "Submit report", "report.target": "Report {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Search", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", "search_popout.tips.user": "user", "search_results.accounts": "People", + "search_results.all": "All", "search_results.hashtags": "Hashtags", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", @@ -474,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Delete", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index d624df36a..e8c9757ad 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -18,12 +18,12 @@ "account.followers": "பின்தொடர்பவர்கள்", "account.followers.empty": "இதுவரை யாரும் இந்த பயனரைப் பின்தொடரவில்லை.", "account.followers_counter": "{count, plural, one {{counter} வாசகர்} other {{counter} வாசகர்கள்}}", + "account.following": "Following", "account.following_counter": "{count, plural,one {{counter} சந்தா} other {{counter} சந்தாக்கள்}}", "account.follows.empty": "இந்த பயனர் இதுவரை யாரையும் பின்தொடரவில்லை.", "account.follows_you": "உங்களைப் பின்தொடர்கிறார்", "account.hide_reblogs": "இருந்து ஊக்கியாக மறை @{name}", "account.joined": "Joined {date}", - "account.last_status": "கடைசி செயல்பாடு", "account.link_verified_on": "இந்த இணைப்பை உரிமையாளர் சரிபார்க்கப்பட்டது {date}", "account.locked_info": "இந்தக் கணக்கு தனியுரிமை நிலை பூட்டப்பட்டுள்ளது. அவர்களைப் பின்தொடர்பவர் யார் என்பதை உரிமையாளர் கைமுறையாக மதிப்பாய்வு செய்கிறார்.", "account.media": "ஊடகங்கள்", @@ -32,7 +32,6 @@ "account.mute": "ஊமையான @{name}", "account.mute_notifications": "அறிவிப்புகளை முடக்கு @{name}", "account.muted": "முடக்கியது", - "account.never_active": "எப்போதுமில்லை", "account.posts": "டூட்டுகள்", "account.posts_with_replies": "Toots மற்றும் பதில்கள்", "account.report": "@{name} -ஐப் புகாரளி", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} டூட்} other {{counter} டூட்டுகள்}}", "account.unblock": "@{name} மீது தடை நீக்குக", "account.unblock_domain": "{domain} ஐ காண்பி", + "account.unblock_short": "Unblock", "account.unendorse": "சுயவிவரத்தில் இடம்பெற வேண்டாம்", "account.unfollow": "பின்தொடர்வதை நிறுத்துக", "account.unmute": "@{name} இன் மீது மௌனத் தடையை நீக்குக", "account.unmute_notifications": "@{name} இலிருந்து அறிவிப்புகளின் மீது மௌனத் தடையை நீக்குக", + "account.unmute_short": "Unmute", "account_note.placeholder": "குறிப்பு ஒன்றை சேர்க்க சொடுக்கவும்", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "தடுக்கப்பட்ட பயனர்கள்", "column.bookmarks": "அடையாளக்குறிகள்", "column.community": "சுய நிகழ்வு காலவரிசை", - "column.direct": "நேர் சேதிகள்", + "column.conversations": "Conversations", "column.directory": "சுயவிவரங்களை உலாவு", "column.domain_blocks": "மறைந்திருக்கும் திரளங்கள்", "column.favourites": "பிடித்தவைகள்", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "அருகிலிருந்து மட்டுமே", "community.column_settings.media_only": "படங்கள் மட்டுமே", "community.column_settings.remote_only": "தொலைவிலிருந்து மட்டுமே", - "compose_form.direct_message_warning": "இந்த டூட் இதில் குறிப்பிடப்பட்டுள்ள பயனர்களுக்கு மட்டுமே அனுப்பப்படும்.", "compose_form.direct_message_warning_learn_more": "மேலும் அறிய", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "இது ஒரு பட்டியலிடப்படாத டூட் என்பதால் எந்த ஹேஷ்டேகின் கீழும் வராது. ஹேஷ்டேகின் மூலம் பொதுவில் உள்ள டூட்டுகளை மட்டுமே தேட முடியும்.", "compose_form.lock_disclaimer": "உங்கள் கணக்கு {locked} செய்யப்படவில்லை. உங்கள் பதிவுகளை யார் வேண்டுமானாலும் பின்தொடர்ந்து காணலாம்.", "compose_form.lock_disclaimer.lock": "பூட்டப்பட்டது", @@ -165,8 +166,9 @@ "empty_column.blocks": "நீங்கள் இதுவரை எந்தப் பயனர்களையும் முடக்கியிருக்கவில்லை.", "empty_column.bookmarked_statuses": "உங்களிடம் அடையாளக்குறியிட்ட டூட்டுகள் எவையும் இல்லை. அடையாளக்குறியிட்ட பிறகு அவை இங்கே காட்டப்படும்.", "empty_column.community": "உங்கள் மாஸ்டடான் முச்சந்தியில் யாரும் இல்லை. எதையேனும் எழுதி ஆட்டத்தைத் துவக்குங்கள்!", - "empty_column.direct": "உங்கள் தனிப்பெட்டியில் செய்திகள் ஏதும் இல்லை. செய்தியை நீங்கள் அனுப்பும்போதோ அல்லது பெறும்போதோ, அது இங்கே காண்பிக்கப்படும்.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "தடுக்கப்பட்டக் களங்கள் இதுவரை இல்லை.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "உங்களுக்குப் பிடித்த டூட்டுகள் இதுவரை இல்லை. ஒரு டூட்டில் நீங்கள் விருப்பக்குறி இட்டால், அது இங்கே காண்பிக்கப்படும்.", "empty_column.favourites": "இந்த டூட்டில் இதுவரை யாரும் விருப்பக்குறி இடவில்லை. யாரேனும் விரும்பினால், அது இங்கே காண்பிக்கப்படும்.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Stacktrace-ஐ clipboard-ல் நகலெடு", "errors.unexpected_crash.report_issue": "புகாரளி", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "பகிர", "keyboard_shortcuts.column": "ஏதேனும் ஒரு நெடுவரிசையில் உள்ள டூட்டுல் கவனம் செலுத்த", "keyboard_shortcuts.compose": "பதிவு எழுதும் பெட்டியில் கவனம் செலுத்த", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "விவரம்", - "keyboard_shortcuts.direct": "தனிப்பெட்டியைத் திறக்க", "keyboard_shortcuts.down": "பட்டியலின் கீழே செல்ல", "keyboard_shortcuts.enter": "டூட்டைத் திறக்க", "keyboard_shortcuts.favourite": "விருப்பக்குறி இட", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "அடையாளக்குறிகள்", "navigation_bar.community_timeline": "உள்ளூர் காலக்கெடு", "navigation_bar.compose": "புதியவற்றை எழுதுக toot", - "navigation_bar.direct": "நேரடி செய்திகள்", "navigation_bar.discover": "கண்டு பிடி", "navigation_bar.domain_blocks": "மறைந்த களங்கள்", "navigation_bar.edit_profile": "சுயவிவரத்தைத் திருத்தவும்", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "விருப்பத்துக்குகந்த", "navigation_bar.filters": "முடக்கப்பட்ட வார்த்தைகள்", "navigation_bar.follow_requests": "கோரிக்கைகளை பின்பற்றவும்", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "விருப்பங்கள்", "navigation_bar.public_timeline": "கூட்டாட்சி காலக்கெடு", "navigation_bar.security": "பத்திரம்", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} ஆர்வம் கொண்டவர், உங்கள் நிலை", "notification.follow": "{name} உங்களைப் பின்தொடர்கிறார்", "notification.follow_request": "{name} உங்களைப் பின்தொடரக் கோருகிறார்", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "அறிவிப்புகளை அழிக்கவும்", "notifications.clear_confirmation": "உங்கள் எல்லா அறிவிப்புகளையும் நிரந்தரமாக அழிக்க விரும்புகிறீர்களா?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "டெஸ்க்டாப் அறிவிப்புகள்", "notifications.column_settings.favourite": "பிடித்தவை:", "notifications.column_settings.filter_bar.advanced": "எல்லா வகைகளையும் காட்டு", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "வாக்கெடுப்பை அகற்று", "privacy.change": "நிலை தனியுரிமை", "privacy.direct.long": "குறிப்பிடப்பட்ட பயனர்களுக்கு மட்டுமே இடுகையிடவும்", - "privacy.direct.short": "நடத்து", + "privacy.direct.short": "Direct", "privacy.private.long": "பின்தொடர்பவர்களுக்கு மட்டுமே இடுகை", - "privacy.private.short": "பின்பற்றுபவர்கள் மட்டும்", - "privacy.public.long": "பொது நேரங்களுக்கான இடுகை", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "பொது", - "privacy.unlisted.long": "Do not show in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "பட்டியலிடப்படாத", "refresh": "புதுப்பி", "regeneration_indicator.label": "சுமையேற்றம்…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}வி", "relative_time.today": "இன்று", "reply_indicator.cancel": "எதிராணை", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "முன்னோக்கி {target}", "report.forward_hint": "கணக்கு மற்றொரு சேவையகத்திலிருந்து வருகிறது. அறிக்கையின் அநாமதேய பிரதி ஒன்றை அனுப்பவும்.?", - "report.hint": "அறிக்கை உங்கள் மாதிரியாக மாற்றியமைக்கப்படும். கீழே உள்ள கணக்கை நீங்கள் ஏன் புகாரளிக்கிறீர்கள் என்பதற்கான விளக்கத்தை வழங்கலாம்:", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", "report.placeholder": "கூடுதல் கருத்துரைகள்", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "சமர்ப்பி", "report.target": "Report {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "தேடு", "search_popout.search_format": "மேம்பட்ட தேடல் வடிவம்", "search_popout.tips.full_text": "எளிமையான உரை நீங்கள் எழுதப்பட்ட, புகழ், அதிகரித்தது, அல்லது குறிப்பிட்டுள்ள, அதே போல் பயனர் பெயர்கள், காட்சி பெயர்கள், மற்றும் ஹேஸ்டேகைகளை கொண்டுள்ளது என்று நிலைகளை கொடுக்கிறது.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "எளிய உரை காட்சி பெயர்கள், பயனர்பெயர்கள் மற்றும் ஹாஷ்டேட்களுடன் பொருந்துகிறது", "search_popout.tips.user": "பயனர்", "search_results.accounts": "மக்கள்", + "search_results.all": "All", "search_results.hashtags": "ஹாஷ்டேக்குகளைச்", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "டூட்டுகள்", "search_results.statuses_fts_disabled": "டூட்டுகளின் வார்த்தைகளைக்கொண்டு தேடுவது இந்த மச்டோடன் வழங்கியில் இயல்விக்கப்படவில்லை.", "search_results.total": "{count, number} {count, plural, one {result} மற்ற {results}}", @@ -474,6 +514,7 @@ "upload_error.poll": "கோப்பு பதிவேற்றம் அனுமதிக்கப்படவில்லை.", "upload_form.audio_description": "செவித்திறன் குறைபாடு உள்ளவர்களுக்காக விளக்குக‌", "upload_form.description": "பார்வையற்ற விவரிக்கவும்", + "upload_form.description_missing": "No description added", "upload_form.edit": "தொகு", "upload_form.thumbnail": "சிறுபடத்தை மாற்ற", "upload_form.undo": "நீக்கு", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 5fe5cfdea..d76b9a451 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -18,12 +18,12 @@ "account.followers": "Followers", "account.followers.empty": "No one follows this user yet.", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", - "account.last_status": "Last active", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Mûi-thé", @@ -32,7 +32,6 @@ "account.mute": "Mute @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", - "account.never_active": "Never", "account.posts": "Toots", "account.posts_with_replies": "Toots and replies", "account.report": "Report @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "Unblock @{name}", "account.unblock_domain": "Unblock domain {domain}", + "account.unblock_short": "Unblock", "account.unendorse": "Don't feature on profile", "account.unfollow": "Unfollow", "account.unmute": "Unmute @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", + "account.unmute_short": "Unmute", "account_note.placeholder": "Click to add a note", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.conversations": "Conversations", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Remote only", - "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.", "compose_form.direct_message_warning_learn_more": "Learn more", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "locked", @@ -165,8 +166,9 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "There are no blocked domains yet.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", "errors.unexpected_crash.report_issue": "Report issue", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Favourites", "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", "notification.follow_request": "{name} has requested to follow you", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.filter_bar.advanced": "Display all categories", @@ -359,9 +369,9 @@ "privacy.direct.short": "Direct", "privacy.private.long": "Visible for followers only", "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all, shown in public timelines", + "privacy.public.long": "Visible for all", "privacy.public.short": "Public", - "privacy.unlisted.long": "Visible for all, but not in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "Cancel", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", - "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", - "report.placeholder": "Additional comments", - "report.submit": "Submit", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", + "report.placeholder": "Type or paste additional comments", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", + "report.submit": "Submit report", "report.target": "Report {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Search", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", "search_popout.tips.user": "user", "search_results.accounts": "People", + "search_results.all": "All", "search_results.hashtags": "Hashtags", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", @@ -474,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Delete", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index 2901689d1..8eb92f7ad 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -18,12 +18,12 @@ "account.followers": "అనుచరులు", "account.followers.empty": "ఈ వినియోగదారుడిని ఇంకా ఎవరూ అనుసరించడంలేదు.", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "ఈ వినియోగదారి ఇంకా ఎవరినీ అనుసరించడంలేదు.", "account.follows_you": "మిమ్మల్ని అనుసరిస్తున్నారు", "account.hide_reblogs": "@{name} నుంచి బూస్ట్ లను దాచిపెట్టు", "account.joined": "Joined {date}", - "account.last_status": "Last active", "account.link_verified_on": "ఈ లంకె యొక్క యాజమాన్యం {date}న పరీక్షించబడింది", "account.locked_info": "ఈ ఖాతా యొక్క గోప్యత స్థితి లాక్ చేయబడి వుంది. ఈ ఖాతాను ఎవరు అనుసరించవచ్చో యజమానే నిర్ణయం తీసుకుంటారు.", "account.media": "మీడియా", @@ -32,7 +32,6 @@ "account.mute": "@{name}ను మ్యూట్ చెయ్యి", "account.mute_notifications": "@{name}నుంచి ప్రకటనలను మ్యూట్ చెయ్యి", "account.muted": "మ్యూట్ అయినవి", - "account.never_active": "Never", "account.posts": "టూట్లు", "account.posts_with_replies": "టూట్లు మరియు ప్రత్యుత్తరములు", "account.report": "@{name}పై ఫిర్యాదుచేయు", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "@{name}పై బ్లాక్ ను తొలగించు", "account.unblock_domain": "{domain}ను దాచవద్దు", + "account.unblock_short": "Unblock", "account.unendorse": "ప్రొఫైల్లో చూపించవద్దు", "account.unfollow": "అనుసరించవద్దు", "account.unmute": "@{name}పై మ్యూట్ ని తొలగించు", "account.unmute_notifications": "@{name} నుంచి ప్రకటనలపై మ్యూట్ ని తొలగించు", + "account.unmute_short": "Unmute", "account_note.placeholder": "Click to add a note", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "బ్లాక్ చేయబడిన వినియోగదారులు", "column.bookmarks": "Bookmarks", "column.community": "స్థానిక కాలక్రమం", - "column.direct": "ప్రత్యక్ష సందేశాలు", + "column.conversations": "Conversations", "column.directory": "Browse profiles", "column.domain_blocks": "దాచిన డొమైన్లు", "column.favourites": "ఇష్టపడినవి", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "మీడియా మాత్రమే", "community.column_settings.remote_only": "Remote only", - "compose_form.direct_message_warning": "ఈ టూట్ పేర్కొన్న వినియోగదారులకు మాత్రమే పంపబడుతుంది.", "compose_form.direct_message_warning_learn_more": "మరింత తెలుసుకోండి", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "ఈ టూట్ అన్లిస్టెడ్ కాబట్టి ఏ హాష్ ట్యాగ్ క్రిందకూ రాదు. పబ్లిక్ టూట్ లను మాత్రమే హాష్ ట్యాగ్ ద్వారా శోధించవచ్చు.", "compose_form.lock_disclaimer": "మీ ఖాతా {locked} చేయబడలేదు. ఎవరైనా మిమ్మల్ని అనుసరించి మీ అనుచరులకు-మాత్రమే పోస్ట్లను వీక్షించవచ్చు.", "compose_form.lock_disclaimer.lock": "బిగించబడినది", @@ -165,8 +166,9 @@ "empty_column.blocks": "మీరు ఇంకా ఏ వినియోగదారులనూ బ్లాక్ చేయలేదు.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "స్థానిక కాలక్రమం ఖాళీగా ఉంది. మొదలుపెట్టడానికి బహిరంగంగా ఏదో ఒకటి వ్రాయండి!", - "empty_column.direct": "మీకు ఇంకా ఏ ప్రత్యక్ష సందేశాలు లేవు. మీరు ఒకదాన్ని పంపినప్పుడు లేదా స్వీకరించినప్పుడు, అది ఇక్కడ చూపబడుతుంది.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "దాచబడిన డొమైన్లు ఇంకా ఏమీ లేవు.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "మీకు ఇష్టపడిన టూట్లు ఇంకా ఎమీ లేవు. మీరు ఒకదానిని ఇష్టపడినప్పుడు, అది ఇక్కడ కనిపిస్తుంది.", "empty_column.favourites": "ఈ టూట్ను ఇంకా ఎవరూ ఇష్టపడలేదు. ఎవరైనా అలా చేసినప్పుడు, అవి ఇక్కడ కనబడతాయి.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", "errors.unexpected_crash.report_issue": "Report issue", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "బూస్ట్ చేయడానికి", "keyboard_shortcuts.column": "నిలువు వరుసలలో ఒకదానిపై దృష్టి పెట్టడానికి", "keyboard_shortcuts.compose": "కంపోజ్ టెక్స్ట్ఏరియా పై దృష్టి పెట్టడానికి", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "నేరుగా పంపిన సందేశాల నిలువు వరుసను తెరువడానికి", "keyboard_shortcuts.down": "జాబితాలో క్రిందికి వెళ్ళడానికి", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "ఇష్టపడడానికి", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "స్థానిక కాలక్రమం", "navigation_bar.compose": "కొత్త టూట్ను రాయండి", - "navigation_bar.direct": "ప్రత్యక్ష సందేశాలు", "navigation_bar.discover": "కనుగొను", "navigation_bar.domain_blocks": "దాచిన డొమైన్లు", "navigation_bar.edit_profile": "ప్రొఫైల్ని సవరించండి", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "ఇష్టపడినవి", "navigation_bar.filters": "మ్యూట్ చేయబడిన పదాలు", "navigation_bar.follow_requests": "అనుసరించడానికి అభ్యర్ధనలు", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "ప్రాధాన్యతలు", "navigation_bar.public_timeline": "సమాఖ్య కాలక్రమం", "navigation_bar.security": "భద్రత", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} మీ స్టేటస్ ను ఇష్టపడ్డారు", "notification.follow": "{name} మిమ్మల్ని అనుసరిస్తున్నారు", "notification.follow_request": "{name} has requested to follow you", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "ప్రకటనలను తుడిచివేయు", "notifications.clear_confirmation": "మీరు మీ అన్ని నోటిఫికేషన్లను శాశ్వతంగా తొలగించాలనుకుంటున్నారా?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "డెస్క్టాప్ నోటిఫికేషన్లు", "notifications.column_settings.favourite": "ఇష్టపడినవి:", "notifications.column_settings.filter_bar.advanced": "అన్ని విభాగాలను చూపించు", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "ఎన్నికను తొలగించు", "privacy.change": "స్టేటస్ గోప్యతను సర్దుబాటు చేయండి", "privacy.direct.long": "పేర్కొన్న వినియోగదారులకు మాత్రమే పోస్ట్ చేయి", - "privacy.direct.short": "ప్రత్యక్ష", + "privacy.direct.short": "Direct", "privacy.private.long": "అనుచరులకు మాత్రమే పోస్ట్ చేయి", - "privacy.private.short": "అనుచరులకు మాత్రమే", - "privacy.public.long": "ప్రజా కాలక్రమాలకు పోస్ట్ చేయండి", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "ప్రజా", - "privacy.unlisted.long": "ప్రజా కాలక్రమాలలో చూపించవద్దు", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "జాబితా చేయబడనిది", "refresh": "Refresh", "regeneration_indicator.label": "లోడ్ అవుతోంది…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "రద్దు చెయ్యి", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "{target}కి ఫార్వార్డ్ చేయండి", "report.forward_hint": "ఖాతా మరొక సర్వర్లో ఉంది. నివేదిక యొక్క ఒక అనామకంగా ఉన్న కాపీని అక్కడికి కూడా పంపించమంటారా?", - "report.hint": "మీ సేవిక మోడరేటర్లకు నివేదిక పంపబడుతుంది. ఈ ఖాతాను ఎందుకు నివేదిస్తున్నారనేదాని వివరణను మీరు దిగువన అందించవచ్చు:", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", "report.placeholder": "అదనపు వ్యాఖ్యలు", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "సమర్పించండి", "report.target": "{target}పై ఫిర్యాదు చేయండి", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "శోధన", "search_popout.search_format": "అధునాతన శోధన ఆకృతి", "search_popout.tips.full_text": "సాధారణ వచనం మీరు వ్రాసిన, ఇష్టపడే, పెంచబడిన లేదా పేర్కొనబడిన, అలాగే యూజర్పేర్లు, ప్రదర్శన పేర్లు, మరియు హ్యాష్ట్యాగ్లను నమోదు చేసిన హోదాలను అందిస్తుంది.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "సింపుల్ టెక్స్ట్ ప్రదర్శన పేర్లు, యూజర్ పేర్లు మరియు హ్యాష్ట్యాగ్లను సరిపోలుస్తుంది", "search_popout.tips.user": "వాడుకరి", "search_results.accounts": "వ్యక్తులు", + "search_results.all": "All", "search_results.hashtags": "హాష్ ట్యాగ్లు", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "టూట్లు", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", @@ -474,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "దృష్టి లోపమున్న వారి కోసం వివరించండి", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "తొలగించు", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index bef3af46f..423d3efd4 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -18,12 +18,12 @@ "account.followers": "ผู้ติดตาม", "account.followers.empty": "ยังไม่มีใครติดตามผู้ใช้นี้", "account.followers_counter": "{count, plural, other {{counter} ผู้ติดตาม}}", + "account.following": "กำลังติดตาม", "account.following_counter": "{count, plural, other {{counter} กำลังติดตาม}}", "account.follows.empty": "ผู้ใช้นี้ยังไม่ได้ติดตามใคร", "account.follows_you": "ติดตามคุณ", "account.hide_reblogs": "ซ่อนการดันจาก @{name}", "account.joined": "เข้าร่วมเมื่อ {date}", - "account.last_status": "ใช้งานล่าสุด", "account.link_verified_on": "ตรวจสอบความเป็นเจ้าของของลิงก์นี้เมื่อ {date}", "account.locked_info": "มีการตั้งสถานะความเป็นส่วนตัวของบัญชีนี้เป็นล็อคอยู่ เจ้าของตรวจทานผู้ที่สามารถติดตามเขาด้วยตนเอง", "account.media": "สื่อ", @@ -32,7 +32,6 @@ "account.mute": "ซ่อน @{name}", "account.mute_notifications": "ซ่อนการแจ้งเตือนจาก @{name}", "account.muted": "ซ่อนอยู่", - "account.never_active": "ไม่เลย", "account.posts": "โพสต์", "account.posts_with_replies": "โพสต์และการตอบกลับ", "account.report": "รายงาน @{name}", @@ -42,13 +41,15 @@ "account.statuses_counter": "{count, plural, other {{counter} โพสต์}}", "account.unblock": "เลิกปิดกั้น @{name}", "account.unblock_domain": "เลิกปิดกั้นโดเมน {domain}", + "account.unblock_short": "เลิกปิดกั้น", "account.unendorse": "ไม่แนะนำในโปรไฟล์", "account.unfollow": "เลิกติดตาม", "account.unmute": "เลิกซ่อน @{name}", "account.unmute_notifications": "เลิกซ่อนการแจ้งเตือนจาก @{name}", + "account.unmute_short": "เลิกซ่อน", "account_note.placeholder": "คลิกเพื่อเพิ่มหมายเหตุ", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "อัตราการรักษาผู้ใช้ตามวันหลังจากลงทะเบียน", + "admin.dashboard.monthly_retention": "อัตราการรักษาผู้ใช้ตามเดือนหลังจากลงทะเบียน", "admin.dashboard.retention.average": "ค่าเฉลี่ย", "admin.dashboard.retention.cohort": "เดือนที่ลงทะเบียน", "admin.dashboard.retention.cohort_size": "ผู้ใช้ใหม่", @@ -69,7 +70,7 @@ "column.blocks": "ผู้ใช้ที่ปิดกั้นอยู่", "column.bookmarks": "ที่คั่นหน้า", "column.community": "เส้นเวลาในเซิร์ฟเวอร์", - "column.direct": "ข้อความโดยตรง", + "column.conversations": "การสนทนา", "column.directory": "เรียกดูโปรไฟล์", "column.domain_blocks": "โดเมนที่ปิดกั้นอยู่", "column.favourites": "รายการโปรด", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "ในเซิร์ฟเวอร์เท่านั้น", "community.column_settings.media_only": "สื่อเท่านั้น", "community.column_settings.remote_only": "ระยะไกลเท่านั้น", - "compose_form.direct_message_warning": "จะส่งโพสต์นี้ไปยังผู้ใช้ที่กล่าวถึงเท่านั้น", "compose_form.direct_message_warning_learn_more": "เรียนรู้เพิ่มเติม", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "จะไม่แสดงรายการโพสต์นี้ภายใต้แฮชแท็กใด ๆ เนื่องจากไม่อยู่ในรายการ เฉพาะโพสต์สาธารณะเท่านั้นที่สามารถค้นหาได้โดยแฮชแท็ก", "compose_form.lock_disclaimer": "บัญชีของคุณไม่ได้ {locked} ใครก็ตามสามารถติดตามคุณเพื่อดูโพสต์สำหรับผู้ติดตามเท่านั้นของคุณ", "compose_form.lock_disclaimer.lock": "ล็อคอยู่", @@ -127,12 +128,12 @@ "confirmations.logout.confirm": "ออกจากระบบ", "confirmations.logout.message": "คุณแน่ใจหรือไม่ว่าต้องการออกจากระบบ?", "confirmations.mute.confirm": "ซ่อน", - "confirmations.mute.explanation": "นี่จะซ่อนโพสต์จากเขาและโพสต์ที่กล่าวถึงเขา แต่จะยังอนุญาตให้เขาเห็นโพสต์ของคุณและติดตามคุณ", + "confirmations.mute.explanation": "นี่จะซ่อนโพสต์จากเขาและโพสต์ที่กล่าวถึงเขา แต่จะยังคงอนุญาตให้เขาเห็นโพสต์ของคุณและติดตามคุณ", "confirmations.mute.message": "คุณแน่ใจหรือไม่ว่าต้องการซ่อน {name}?", "confirmations.redraft.confirm": "ลบแล้วร่างใหม่", "confirmations.redraft.message": "คุณแน่ใจหรือไม่ว่าต้องการลบโพสต์นี้แล้วร่างโพสต์ใหม่? รายการโปรดและการดันจะหายไป และการตอบกลับโพสต์ดั้งเดิมจะไม่มีความเกี่ยวพัน", "confirmations.reply.confirm": "ตอบกลับ", - "confirmations.reply.message": "การตอบกลับในตอนนี้จะเขียนทับข้อความที่คุณกำลังเขียน คุณแน่ใจหรือไม่ว่าต้องการดำเนินการต่อ?", + "confirmations.reply.message": "การตอบกลับในตอนนี้จะเขียนทับข้อความที่คุณกำลังเขียนในปัจจุบัน คุณแน่ใจหรือไม่ว่าต้องการดำเนินการต่อ?", "confirmations.unfollow.confirm": "เลิกติดตาม", "confirmations.unfollow.message": "คุณแน่ใจหรือไม่ว่าต้องการเลิกติดตาม {name}?", "conversation.delete": "ลบการสนทนา", @@ -165,11 +166,12 @@ "empty_column.blocks": "คุณยังไม่ได้ปิดกั้นผู้ใช้ใด ๆ", "empty_column.bookmarked_statuses": "คุณยังไม่มีโพสต์ที่เพิ่มที่คั่นหน้าไว้ใด ๆ เมื่อคุณเพิ่มที่คั่นหน้าโพสต์ โพสต์จะปรากฏที่นี่", "empty_column.community": "เส้นเวลาในเซิร์ฟเวอร์ว่างเปล่า เขียนบางอย่างเป็นสาธารณะเพื่อเริ่มต้น!", - "empty_column.direct": "คุณยังไม่มีข้อความโดยตรงใด ๆ เมื่อคุณส่งหรือรับข้อความ ข้อความจะปรากฏที่นี่", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "ยังไม่มีโดเมนที่ปิดกั้นอยู่", + "empty_column.explore_statuses": "ไม่มีสิ่งใดที่กำลังนิยมในตอนนี้ กลับมาตรวจสอบในภายหลัง!", "empty_column.favourited_statuses": "คุณยังไม่มีโพสต์ที่ชื่นชอบใด ๆ เมื่อคุณชื่นชอบโพสต์ โพสต์จะปรากฏที่นี่", "empty_column.favourites": "ยังไม่มีใครชื่นชอบโพสต์นี้ เมื่อใครสักคนชื่นชอบ เขาจะปรากฏที่นี่", - "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", + "empty_column.follow_recommendations": "ดูเหมือนว่าจะไม่สามารถสร้างข้อเสนอแนะสำหรับคุณ คุณสามารถลองใช้การค้นหาเพื่อมองหาผู้คนที่คุณอาจรู้จักหรือสำรวจแฮชแท็กที่กำลังนิยม", "empty_column.follow_requests": "คุณยังไม่มีคำขอติดตามใด ๆ เมื่อคุณได้รับคำขอ คำขอจะปรากฏที่นี่", "empty_column.hashtag": "ยังไม่มีสิ่งใดในแฮชแท็กนี้", "empty_column.home": "เส้นเวลาหน้าแรกของคุณว่างเปล่า! ติดตามผู้คนเพิ่มเติมเพื่อเติมเส้นเวลาให้เต็ม {suggestions}", @@ -178,13 +180,19 @@ "empty_column.lists": "คุณยังไม่มีรายการใด ๆ เมื่อคุณสร้างรายการ รายการจะปรากฏที่นี่", "empty_column.mutes": "คุณยังไม่ได้ซ่อนผู้ใช้ใด ๆ", "empty_column.notifications": "คุณยังไม่มีการแจ้งเตือนใด ๆ เมื่อผู้คนอื่น ๆ โต้ตอบกับคุณ คุณจะเห็นการแจ้งเตือนที่นี่", - "empty_column.public": "ไม่มีสิ่งใดที่นี่! เขียนบางอย่างเป็นสาธารณะ หรือติดตามผู้ใช้จากเซิร์ฟเวอร์อื่น ๆ ด้วยตนเองเพื่อเติมให้เต็ม", + "empty_column.public": "ไม่มีสิ่งใดที่นี่! เขียนบางอย่างเป็นสาธารณะ หรือติดตามผู้ใช้จากเซิร์ฟเวอร์อื่น ๆ ด้วยตนเองเพื่อเติมเส้นเวลาให้เต็ม", "error.unexpected_crash.explanation": "เนื่องจากข้อบกพร่องในโค้ดของเราหรือปัญหาความเข้ากันได้ของเบราว์เซอร์ จึงไม่สามารถแสดงหน้านี้ได้อย่างถูกต้อง", "error.unexpected_crash.explanation_addons": "ไม่สามารถแสดงหน้านี้ได้อย่างถูกต้อง ข้อผิดพลาดนี้เป็นไปได้ว่าเกิดจากส่วนเสริมของเบราว์เซอร์หรือเครื่องมือการแปลอัตโนมัติ", "error.unexpected_crash.next_steps": "ลองรีเฟรชหน้า หากนั่นไม่ช่วย คุณอาจยังสามารถใช้ Mastodon ได้ผ่านเบราว์เซอร์อื่นหรือแอป", "error.unexpected_crash.next_steps_addons": "ลองปิดใช้งานส่วนเสริมหรือเครื่องมือแล้วรีเฟรชหน้า หากนั่นไม่ช่วย คุณอาจยังสามารถใช้ Mastodon ได้ผ่านเบราว์เซอร์อื่นหรือแอป", "errors.unexpected_crash.copy_stacktrace": "คัดลอกการติดตามสแตกไปยังคลิปบอร์ด", "errors.unexpected_crash.report_issue": "รายงานปัญหา", + "explore.search_results": "ผลลัพธ์การค้นหา", + "explore.suggested_follows": "สำหรับคุณ", + "explore.title": "สำรวจ", + "explore.trending_links": "ข่าว", + "explore.trending_statuses": "โพสต์", + "explore.trending_tags": "แฮชแท็ก", "follow_recommendations.done": "เสร็จสิ้น", "follow_recommendations.heading": "ติดตามผู้คนที่คุณต้องการเห็นโพสต์! นี่คือข้อเสนอแนะบางส่วน", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "ดันโพสต์", "keyboard_shortcuts.column": "โฟกัสคอลัมน์", "keyboard_shortcuts.compose": "โฟกัสพื้นที่เขียนข้อความ", + "keyboard_shortcuts.conversations": "เพื่อเปิดคอลัมน์การสนทนา", "keyboard_shortcuts.description": "คำอธิบาย", - "keyboard_shortcuts.direct": "เปิดคอลัมน์ข้อความโดยตรง", "keyboard_shortcuts.down": "ย้ายลงในรายการ", "keyboard_shortcuts.enter": "เปิดโพสต์", "keyboard_shortcuts.favourite": "ชื่นชอบโพสต์", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "ที่คั่นหน้า", "navigation_bar.community_timeline": "เส้นเวลาในเซิร์ฟเวอร์", "navigation_bar.compose": "เขียนโพสต์ใหม่", - "navigation_bar.direct": "ข้อความโดยตรง", "navigation_bar.discover": "ค้นพบ", "navigation_bar.domain_blocks": "โดเมนที่ปิดกั้นอยู่", "navigation_bar.edit_profile": "แก้ไขโปรไฟล์", + "navigation_bar.explore": "สำรวจ", "navigation_bar.favourites": "รายการโปรด", "navigation_bar.filters": "คำที่ซ่อนอยู่", "navigation_bar.follow_requests": "คำขอติดตาม", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "การกำหนดลักษณะ", "navigation_bar.public_timeline": "เส้นเวลาที่ติดต่อกับภายนอก", "navigation_bar.security": "ความปลอดภัย", + "notification.admin.sign_up": "{name} ได้ลงทะเบียน", "notification.favourite": "{name} ได้ชื่นชอบโพสต์ของคุณ", "notification.follow": "{name} ได้ติดตามคุณ", "notification.follow_request": "{name} ได้ขอติดตามคุณ", @@ -311,6 +320,7 @@ "notification.update": "{name} ได้แก้ไขโพสต์", "notifications.clear": "ล้างการแจ้งเตือน", "notifications.clear_confirmation": "คุณแน่ใจหรือไม่ว่าต้องการล้างการแจ้งเตือนทั้งหมดของคุณอย่างถาวร?", + "notifications.column_settings.admin.sign_up": "การลงทะเบียนใหม่:", "notifications.column_settings.alert": "การแจ้งเตือนบนเดสก์ท็อป", "notifications.column_settings.favourite": "รายการโปรด:", "notifications.column_settings.filter_bar.advanced": "แสดงหมวดหมู่ทั้งหมด", @@ -343,7 +353,7 @@ "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.", "notifications_permission_banner.enable": "เปิดใช้งานการแจ้งเตือนบนเดสก์ท็อป", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", - "notifications_permission_banner.title": "ไม่พลาดสิ่งต่าง ๆ", + "notifications_permission_banner.title": "ไม่พลาดสิ่งใด", "picture_in_picture.restore": "นำกลับมา", "poll.closed": "ปิดแล้ว", "poll.refresh": "รีเฟรช", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "เอาการสำรวจความคิดเห็นออก", "privacy.change": "เปลี่ยนความเป็นส่วนตัวของโพสต์", "privacy.direct.long": "ปรากฏแก่ผู้ใช้ที่กล่าวถึงเท่านั้น", - "privacy.direct.short": "โดยตรง", + "privacy.direct.short": "เฉพาะผู้คนที่ฉันกล่าวถึงเท่านั้น", "privacy.private.long": "ปรากฏแก่ผู้ติดตามเท่านั้น", "privacy.private.short": "ผู้ติดตามเท่านั้น", - "privacy.public.long": "ปรากฏแก่ทุกคน แสดงในเส้นเวลาสาธารณะ", + "privacy.public.long": "ปรากฏแก่ทั้งหมด", "privacy.public.short": "สาธารณะ", - "privacy.unlisted.long": "ปรากฏแก่ทุกคน แต่ไม่อยู่ในเส้นเวลาสาธารณะ", + "privacy.unlisted.long": "ปรากฏแก่ทั้งหมด แต่เลือกไม่รับคุณลักษณะการค้นพบ", "privacy.unlisted.short": "ไม่อยู่ในรายการ", "refresh": "รีเฟรช", "regeneration_indicator.label": "กำลังโหลด…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number} วินาที", "relative_time.today": "วันนี้", "reply_indicator.cancel": "ยกเลิก", + "report.block": "ปิดกั้น", + "report.block_explanation": "คุณจะไม่เห็นโพสต์ของเขา เขาจะไม่สามารถเห็นโพสต์ของคุณหรือติดตามคุณ เขาจะสามารถบอกได้ว่ามีการปิดกั้นเขา", "report.categories.other": "อื่น ๆ", "report.categories.spam": "สแปม", "report.categories.violation": "เนื้อหาละเมิดหนึ่งกฎของเซิร์ฟเวอร์หรือมากกว่า", + "report.category.subtitle": "เลือกที่ตรงกันที่สุด", + "report.category.title": "บอกเราว่าเกิดอะไรขึ้นกับ {type} นี้", + "report.category.title_account": "โปรไฟล์", + "report.category.title_status": "โพสต์", + "report.close": "เสร็จสิ้น", + "report.comment.title": "มีสิ่งอื่นใดที่คุณคิดว่าเราควรทราบหรือไม่?", "report.forward": "ส่งต่อไปยัง {target}", "report.forward_hint": "บัญชีมาจากเซิร์ฟเวอร์อื่น ส่งสำเนาของรายงานที่ไม่ระบุตัวตนไปที่นั่นด้วย?", - "report.hint": "จะส่งรายงานไปยังผู้ควบคุมเซิร์ฟเวอร์ของคุณ คุณสามารถให้คำอธิบายเหตุผลที่คุณรายงานบัญชีนี้ได้ด้านล่าง:", + "report.mute": "ซ่อน", + "report.mute_explanation": "คุณจะไม่เห็นโพสต์ของเขา เขายังคงสามารถติดตามคุณและเห็นโพสต์ของคุณและจะไม่ทราบว่ามีการซ่อนเขา", + "report.next": "ถัดไป", "report.placeholder": "ความคิดเห็นเพิ่มเติม", + "report.reasons.dislike": "ฉันไม่ชอบโพสต์", + "report.reasons.dislike_description": "โพสต์ไม่ใช่บางอย่างที่คุณต้องการเห็น", + "report.reasons.other": "โพสต์เป็นอย่างอื่น", + "report.reasons.other_description": "ปัญหาไม่เข้าหมวดหมู่อื่น ๆ", + "report.reasons.spam": "โพสต์เป็นสแปม", + "report.reasons.spam_description": "ลิงก์ที่เป็นอันตราย, การมีส่วนร่วมปลอม หรือการตอบกลับซ้ำ ๆ", + "report.reasons.violation": "โพสต์ละเมิดกฎของเซิร์ฟเวอร์", + "report.reasons.violation_description": "คุณทราบว่าโพสต์แหกกฎเฉพาะ", + "report.rules.subtitle": "เลือกทั้งหมดที่นำไปใช้", + "report.rules.title": "กำลังละเมิดกฎใด?", + "report.statuses.subtitle": "เลือกทั้งหมดที่นำไปใช้", + "report.statuses.title": "มีโพสต์ใด ๆ ที่สนับสนุนรายงานนี้หรือไม่?", "report.submit": "ส่ง", "report.target": "กำลังรายงาน {target}", + "report.thanks.take_action": "นี่คือตัวเลือกของคุณสำหรับการควบคุมสิ่งที่คุณเห็นใน Mastodon:", + "report.thanks.take_action_actionable": "ขณะที่เราตรวจทานสิ่งนี้ คุณสามารถดำเนินการกับ @{name}:", + "report.thanks.title": "ไม่ต้องการเห็นสิ่งนี้?", + "report.thanks.title_actionable": "ขอบคุณสำหรับการรายงาน เราจะตรวจสอบสิ่งนี้", + "report.unfollow": "เลิกติดตาม @{name}", + "report.unfollow_explanation": "คุณกำลังติดตามบัญชีนี้ เพื่อไม่ให้เห็นโพสต์ของเขาในฟีดหน้าแรกของคุณอีกต่อไป เลิกติดตามเขา", "search.placeholder": "ค้นหา", "search_popout.search_format": "รูปแบบการค้นหาขั้นสูง", "search_popout.tips.full_text": "ข้อความแบบง่ายส่งคืนโพสต์ที่คุณได้เขียน ชื่นชอบ ดัน หรือได้รับการกล่าวถึง ตลอดจนชื่อผู้ใช้, ชื่อที่แสดง และแฮชแท็กที่ตรงกัน", @@ -395,7 +433,9 @@ "search_popout.tips.text": "ข้อความแบบง่ายส่งคืนชื่อที่แสดง, ชื่อผู้ใช้ และแฮชแท็กที่ตรงกัน", "search_popout.tips.user": "ผู้ใช้", "search_results.accounts": "ผู้คน", + "search_results.all": "ทั้งหมด", "search_results.hashtags": "แฮชแท็ก", + "search_results.nothing_found": "ไม่พบสิ่งใดสำหรับคำค้นหาเหล่านี้", "search_results.statuses": "โพสต์", "search_results.statuses_fts_disabled": "ไม่มีการเปิดใช้งานการค้นหาโพสต์โดยเนื้อหาของโพสต์ในเซิร์ฟเวอร์ Mastodon นี้", "search_results.total": "{count, number} {count, plural, other {ผลลัพธ์}}", @@ -474,6 +514,7 @@ "upload_error.poll": "ไม่อนุญาตให้อัปโหลดไฟล์กับการลงคะแนน", "upload_form.audio_description": "อธิบายสำหรับผู้สูญเสียการได้ยิน", "upload_form.description": "อธิบายสำหรับผู้บกพร่องทางการมองเห็น", + "upload_form.description_missing": "ไม่มีการเพิ่มคำอธิบาย", "upload_form.edit": "แก้ไข", "upload_form.thumbnail": "เปลี่ยนภาพขนาดย่อ", "upload_form.undo": "ลบ", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 3d67b62e9..bc0e8f721 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -9,30 +9,29 @@ "account.browse_more_on_origin_server": "Orijinal profilde daha fazlasına göz atın", "account.cancel_follow_request": "Takip isteğini iptal et", "account.direct": "@{name} adlı kişiye mesaj gönder", - "account.disable_notifications": "@{name} gönderi atınca bana bildirmeyi durdur", + "account.disable_notifications": "@{name} kişisinin gönderi bildirimlerini kapat", "account.domain_blocked": "Alan adı engellendi", "account.edit_profile": "Profili düzenle", - "account.enable_notifications": "@{name} gönderi atınca bana bildir", - "account.endorse": "Profildeki özellik", + "account.enable_notifications": "@{name} kişisinin gönderi bildirimlerini aç", + "account.endorse": "Profilimde öne çıkar", "account.follow": "Takip et", "account.followers": "Takipçi", "account.followers.empty": "Henüz kimse bu kullanıcıyı takip etmiyor.", "account.followers_counter": "{count, plural, one {{counter} Takipçi} other {{counter} Takipçi}}", + "account.following": "Takip Ediliyor", "account.following_counter": "{count, plural, one {{counter} Takip Edilen} other {{counter} Takip Edilen}}", "account.follows.empty": "Bu kullanıcı henüz kimseyi takip etmiyor.", "account.follows_you": "Seni takip ediyor", "account.hide_reblogs": "@{name} kişisinin boostlarını gizle", "account.joined": "{date} tarihinde katıldı", - "account.last_status": "Son etkinlik", "account.link_verified_on": "Bu bağlantının sahipliği {date} tarihinde kontrol edildi", - "account.locked_info": "Bu hesabın gizlilik durumu kilitli olarak ayarlanmış. Sahibi, onu kimin takip edebileceğini elle inceliyor.", + "account.locked_info": "Bu hesabın gizlilik durumu gizli olarak ayarlanmış. Sahibi, onu kimin takip edebileceğini manuel olarak onaylıyor.", "account.media": "Medya", "account.mention": "@{name} kişisinden bahset", "account.moved_to": "{name} şuraya taşındı:", "account.mute": "@{name} adlı kişiyi sessize al", "account.mute_notifications": "@{name} adlı kişinin bildirimlerini kapat", "account.muted": "Susturuldu", - "account.never_active": "Asla", "account.posts": "Gönderiler", "account.posts_with_replies": "Gönderiler ve yanıtlar", "account.report": "@{name} adlı kişiyi bildir", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Gönderi} other {{counter} Gönderi}}", "account.unblock": "@{name} adlı kişinin engelini kaldır", "account.unblock_domain": "{domain} alan adının engelini kaldır", - "account.unendorse": "Profilde gösterme", + "account.unblock_short": "Engeli kaldır", + "account.unendorse": "Profilimde öne çıkarma", "account.unfollow": "Takibi bırak", "account.unmute": "@{name} adlı kişinin sesini aç", "account.unmute_notifications": "@{name} adlı kişinin bildirimlerini aç", + "account.unmute_short": "Susturmayı kaldır", "account_note.placeholder": "Not eklemek için tıklayın", "admin.dashboard.daily_retention": "Kayıttan sonra günlük kullanıcı saklama oranı", "admin.dashboard.monthly_retention": "Kayıttan sonra aylık kullanıcı saklama oranı", @@ -69,7 +70,7 @@ "column.blocks": "Engellenen kullanıcılar", "column.bookmarks": "Yer İmleri", "column.community": "Yerel zaman tüneli", - "column.direct": "Direkt Mesajlar", + "column.conversations": "Sohbetler", "column.directory": "Profillere göz at", "column.domain_blocks": "Engellenen alan adları", "column.favourites": "Favoriler", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Sadece yerel", "community.column_settings.media_only": "Sadece medya", "community.column_settings.remote_only": "Sadece uzak", - "compose_form.direct_message_warning": "Bu gönderi sadece belirtilen kullanıcılara gönderilecektir.", "compose_form.direct_message_warning_learn_more": "Daha fazla bilgi edinin", + "compose_form.encryption_warning": "Mastodondaki gönderiler uçtan uca şifrelemeli değildir. Mastodon üzerinden hassas olabilecek bir bilginizi paylaşmayın.", "compose_form.hashtag_warning": "Bu gönderi liste dışı olduğu için hiç bir etikette yer almayacak. Sadece herkese açık gönderiler etiketlerde bulunabilir.", "compose_form.lock_disclaimer": "Hesabın {locked} değil. Yalnızca takipçilere özel gönderilerini görüntülemek için herkes seni takip edebilir.", "compose_form.lock_disclaimer.lock": "kilitli", @@ -121,7 +122,7 @@ "confirmations.delete_list.confirm": "Sil", "confirmations.delete_list.message": "Bu listeyi kalıcı olarak silmek istediğinden emin misin?", "confirmations.discard_edit_media.confirm": "Vazgeç", - "confirmations.discard_edit_media.message": "Ortam açıklaması veya ön izlemede kaydedilmemiş değişiklikleriniz var, yine de vazgeçmek istiyor musunuz?", + "confirmations.discard_edit_media.message": "Medya açıklaması veya ön izlemede kaydedilmemiş değişiklikleriniz var, yine de vazgeçmek istiyor musunuz?", "confirmations.domain_block.confirm": "Alanın tamamını engelle", "confirmations.domain_block.message": "{domain} alanının tamamını engellemek istediğinden gerçekten emin misin? Genellikle hedeflenen birkaç engelleme veya sessize alma yeterlidir ve tercih edilir. Bu alan adından gelen içeriği herhangi bir genel zaman çizelgesinde veya bildirimlerinde görmezsin. Bu alan adındaki takipçilerin kaldırılır.", "confirmations.logout.confirm": "Oturumu kapat", @@ -165,16 +166,17 @@ "empty_column.blocks": "Henüz herhangi bir kullanıcıyı engellemedin.", "empty_column.bookmarked_statuses": "Henüz yer imine eklediğin toot yok. Bir tanesi yer imine eklendiğinde burada görünür.", "empty_column.community": "Yerel zaman çizelgesi boş. Daha fazla eğlence için herkese açık bir gönderi paylaşın!", - "empty_column.direct": "Henüz direkt mesajın yok. Bir tane gönderdiğinde veya aldığında burada görünür.", - "empty_column.domain_blocks": "Henüz hiçbir gizli alan adı yok.", + "empty_column.conversations": "Sadece bahsedilen kişilere özel gönderi paylaştığında veya bu gizlilik seçeneğinde bir gönderi aldığında bu sayfada gözükecek.", + "empty_column.domain_blocks": "Henüz engellenmiş bir alan adı yok.", + "empty_column.explore_statuses": "Şu an öne çıkan birşey yok. Daha sonra tekrar bakın!", "empty_column.favourited_statuses": "Favori tootun yok. Favori tootun olduğunda burada görünür.", "empty_column.favourites": "Kimse bu gönderiyi favorilerine eklememiş. Biri eklediğinde burada görünecek.", "empty_column.follow_recommendations": "Öyle görünüyor ki sizin için hiçbir öneri oluşturulamıyor. Tanıdığınız kişileri aramak için aramayı kullanabilir veya öne çıkanlara bakabilirsiniz.", "empty_column.follow_requests": "Hiç takip isteğiniz yok. Bir tane aldığınızda burada görünecek.", - "empty_column.hashtag": "Henüz bu hashtag’e sahip hiçbir gönderi yok.", + "empty_column.hashtag": "Henüz bu etikete sahip hiçbir gönderi yok.", "empty_column.home": "Ana zaman tünelin boş! Akışını doldurmak için daha fazla kişiyi takip et. {suggestions}", "empty_column.home.suggestions": "Bazı önerileri görün", - "empty_column.list": "Bu listede henüz hiçbir şey yok.", + "empty_column.list": "Henüz bu listede bir şey yok. Bu listenin üyeleri bir şey paylaşığında burada gözükecek.", "empty_column.lists": "Henüz listen yok. Liste oluşturduğunda burada görünür.", "empty_column.mutes": "Henüz bir kullanıcıyı sessize almadınız.", "empty_column.notifications": "Henüz bildiriminiz yok. Sohbete başlamak için başkalarıyla etkileşim kurun.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Bunları devre dışı bırakmayı ve sayfayı yenilemeyi deneyin. Bu yardımcı olmazsa, Mastodon'u başka bir tarayıcı veya yerel uygulama aracılığıyla kullanabilirsiniz.", "errors.unexpected_crash.copy_stacktrace": "Yığın izlemeyi (stacktrace) panoya kopyala", "errors.unexpected_crash.report_issue": "Sorun bildir", + "explore.search_results": "Arama sonuçları", + "explore.suggested_follows": "Sizin için", + "explore.title": "Keşfet", + "explore.trending_links": "Haberler", + "explore.trending_statuses": "Gönderiler", + "explore.trending_tags": "Etiketler", "follow_recommendations.done": "Tamam", "follow_recommendations.heading": "Gönderilerini görmek isteyeceğiniz kişileri takip edin! Burada bazı öneriler bulabilirsiniz.", "follow_recommendations.lead": "Takip ettiğiniz kişilerin gönderileri anasayfa akışınızda kronolojik sırada görünmeye devam edecek. Hata yapmaktan çekinmeyin, kişileri istediğiniz anda kolayca takipten çıkabilirsiniz!", @@ -219,21 +227,21 @@ "intervals.full.minutes": "{number, plural, one {# dakika} other {# dakika}}", "keyboard_shortcuts.back": "geriye gitmek için", "keyboard_shortcuts.blocked": "engellenen kullanıcılar listesini açmak için", - "keyboard_shortcuts.boost": "Gönderiyi teşvik et", + "keyboard_shortcuts.boost": "gönderiyi boostla", "keyboard_shortcuts.column": "sütunlardan birindeki duruma odaklanmak için", "keyboard_shortcuts.compose": "yazma alanına odaklanmak için", + "keyboard_shortcuts.conversations": "sohbetler sütununu açmak için", "keyboard_shortcuts.description": "Açıklama", - "keyboard_shortcuts.direct": "direkt mesajlar sütununu açmak için", "keyboard_shortcuts.down": "listede aşağıya inmek için", - "keyboard_shortcuts.enter": "Gönderiyi aç", - "keyboard_shortcuts.favourite": "Gönderiyi beğen", + "keyboard_shortcuts.enter": "gönderiyi aç", + "keyboard_shortcuts.favourite": "gönderiyi favorilerine ekle", "keyboard_shortcuts.favourites": "favoriler listesini açmak için", - "keyboard_shortcuts.federated": "federe edilmiş zaman tünelini açmak için", + "keyboard_shortcuts.federated": "federe akışı aç", "keyboard_shortcuts.heading": "Klavye kısayolları", - "keyboard_shortcuts.home": "anasayfa zaman çizelgesini açmak için", + "keyboard_shortcuts.home": "ana akışı aç", "keyboard_shortcuts.hotkey": "Kısayol tuşu", "keyboard_shortcuts.legend": "bu efsaneyi görüntülemek için", - "keyboard_shortcuts.local": "yerel zaman tünelini açmak için", + "keyboard_shortcuts.local": "yerel akışı aç", "keyboard_shortcuts.mention": "yazardan bahsetmek için", "keyboard_shortcuts.muted": "sessize alınmış kullanıcı listesini açmak için", "keyboard_shortcuts.my_profile": "profilinizi açmak için", @@ -241,7 +249,7 @@ "keyboard_shortcuts.open_media": "medyayı açmak için", "keyboard_shortcuts.pinned": "Sabitlenmiş gönderilerin listesini aç", "keyboard_shortcuts.profile": "yazarın profilini açmak için", - "keyboard_shortcuts.reply": "Gönderiyi yanıtla", + "keyboard_shortcuts.reply": "gönderiyi yanıtla", "keyboard_shortcuts.requests": "takip istekleri listesini açmak için", "keyboard_shortcuts.search": "aramaya odaklanmak için", "keyboard_shortcuts.spoilers": "CW alanını göstermek/gizlemek için", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Yer İmleri", "navigation_bar.community_timeline": "Yerel Zaman Tüneli", "navigation_bar.compose": "Yeni gönderi yaz", - "navigation_bar.direct": "Direkt Mesajlar", "navigation_bar.discover": "Keşfet", "navigation_bar.domain_blocks": "Engellenen alan adları", "navigation_bar.edit_profile": "Profili düzenle", + "navigation_bar.explore": "Keşfet", "navigation_bar.favourites": "Favoriler", "navigation_bar.filters": "Sessize alınmış kelimeler", "navigation_bar.follow_requests": "Takip istekleri", @@ -300,7 +308,8 @@ "navigation_bar.preferences": "Tercihler", "navigation_bar.public_timeline": "Federe zaman tüneli", "navigation_bar.security": "Güvenlik", - "notification.favourite": "{name} gönderini beğendi", + "notification.admin.sign_up": "{name} kaydoldu", + "notification.favourite": "{name} gönderini favorilerine ekledi", "notification.follow": "{name} seni takip etti", "notification.follow_request": "{name} size takip isteği gönderdi", "notification.mention": "{name} senden bahsetti", @@ -311,8 +320,9 @@ "notification.update": "{name} bir gönderiyi düzenledi", "notifications.clear": "Bildirimleri temizle", "notifications.clear_confirmation": "Tüm bildirimlerinizi kalıcı olarak temizlemek ister misiniz?", + "notifications.column_settings.admin.sign_up": "Yeni kayıtlar:", "notifications.column_settings.alert": "Masaüstü bildirimleri", - "notifications.column_settings.favourite": "Beğeniler:", + "notifications.column_settings.favourite": "Favoriler:", "notifications.column_settings.filter_bar.advanced": "Tüm kategorileri görüntüle", "notifications.column_settings.filter_bar.category": "Hızlı filtre çubuğu", "notifications.column_settings.filter_bar.show_bar": "Süzme çubuğunu göster", @@ -330,7 +340,7 @@ "notifications.column_settings.update": "Düzenlemeler:", "notifications.filter.all": "Tümü", "notifications.filter.boosts": "Boostlar", - "notifications.filter.favourites": "Beğeniler", + "notifications.filter.favourites": "Favoriler", "notifications.filter.follows": "Takip edilenler", "notifications.filter.mentions": "Bahsetmeler", "notifications.filter.polls": "Anket sonuçları", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Anketi kaldır", "privacy.change": "Gönderi gizliliğini değiştir", "privacy.direct.long": "Sadece bahsedilen kullanıcılar için görünür", - "privacy.direct.short": "Direkt", + "privacy.direct.short": "Sadece bahsettiğim kişiler", "privacy.private.long": "Sadece takipçiler için görünür", "privacy.private.short": "Sadece takipçiler", - "privacy.public.long": "Herkese görünür, herkese açık zaman çizelgelerinde gösterilir", + "privacy.public.long": "Herkese açık", "privacy.public.short": "Herkese açık", - "privacy.unlisted.long": "Herkese görünür, ancak genel zaman çizelgelerinde gösterilmez", + "privacy.unlisted.long": "Keşfet harici herkese açık", "privacy.unlisted.short": "Listelenmemiş", "refresh": "Yenile", "regeneration_indicator.label": "Yükleniyor…", @@ -372,21 +382,49 @@ "relative_time.full.just_now": "şimdi", "relative_time.full.minutes": "{number, plural, one {# dakika} other {# dakika}} önce", "relative_time.full.seconds": "{number, plural, one {# saniye} other {# saniye}} önce", - "relative_time.hours": "{number}sa", + "relative_time.hours": "{number}s", "relative_time.just_now": "şimdi", "relative_time.minutes": "{number}dk", "relative_time.seconds": "{number}sn", "relative_time.today": "bugün", "reply_indicator.cancel": "İptal", + "report.block": "Engelle", + "report.block_explanation": "Gönderilerini göremeyeceksiniz. Gönderilerinizi göremezler veya sizi takip edemezler. Engelli olduklarını anlayabilecekler.", "report.categories.other": "Diğer", "report.categories.spam": "İstenmeyen", "report.categories.violation": "İçerik bir veya daha fazla sunucu kuralını ihlal ediyor", + "report.category.subtitle": "En uygun eşleşmeyi seçin", + "report.category.title": "Bu {type} ile ilgili neler oluyor bize söyleyin", + "report.category.title_account": "profil", + "report.category.title_status": "gönderi", + "report.close": "Tamam", + "report.comment.title": "Bilmemizi istediğiniz başka bir şey var mı?", "report.forward": "{target} ilet", "report.forward_hint": "Hesap başka bir sunucudan. Raporun anonim bir kopyası da oraya gönderilsin mi?", - "report.hint": "Bu rapor sunucu moderatörlerine gönderilecek. Bu hesabı neden bildirdiğiniz hakkında bilgi verebirsiniz:", + "report.mute": "Sessiz", + "report.mute_explanation": "Gönderilerini göremeyeceksiniz. Sizi takip etmeyi sürdürebilir ve gönderilerinizi görebilirler ama sessize alındıklarını anlamayacaklar.", + "report.next": "Sonraki", "report.placeholder": "Ek yorumlar", + "report.reasons.dislike": "Beğenmedim", + "report.reasons.dislike_description": "Görmek isteyeceğiniz bir şey değil", + "report.reasons.other": "Başka bir şey", + "report.reasons.other_description": "Sorun başka kategorilere uymuyor", + "report.reasons.spam": "İstenmeyen", + "report.reasons.spam_description": "Kötü niyetli bağlantılar, sahte etkileşim veya tekrarlayan yanıtlar", + "report.reasons.violation": "Sunucu kurallarını ihlal ediyor", + "report.reasons.violation_description": "Belirli kuralları ihlal ettiğinin farkındasınız", + "report.rules.subtitle": "Geçerli olanların hepsini seçin", + "report.rules.title": "Hangi kurallar ihlal ediliyor?", + "report.statuses.subtitle": "Geçerli olanların hepsini seçin", + "report.statuses.title": "Bu bildirimi destekleyecek herhangi bir gönderi var mı?", "report.submit": "Gönder", "report.target": "{target} Bildiriliyor", + "report.thanks.take_action": "Mastodon'da ne görebileceğinizi denetlemeye ilişkin seçenekler şunlardır:", + "report.thanks.take_action_actionable": "Biz değerlendirirken, @{name} hesabına yönelik bir şeyler yapabilirsiniz:", + "report.thanks.title": "Bunu görmek istemiyor musunuz?", + "report.thanks.title_actionable": "Bildirdiğiniz için teşekkürler, konuyu araştıracağız.", + "report.unfollow": "@{name} takip etmeyi bırak", + "report.unfollow_explanation": "Bu hesabı takip ediyorsunuz. Ana akışınızda gönderilerini görmek istemiyorsanız, onu takip etmeyi bırakın.", "search.placeholder": "Ara", "search_popout.search_format": "Gelişmiş arama biçimi", "search_popout.tips.full_text": "Basit metin yazdığınız, beğendiğiniz, teşvik ettiğiniz veya söz edilen gönderilerin yanı sıra kullanıcı adlarını, görünen adları ve hashtag'leri eşleştiren gönderileri de döndürür.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Basit metin, eşleşen görünen adları, kullanıcı adlarını ve hashtag'leri döndürür", "search_popout.tips.user": "kullanıcı", "search_results.accounts": "İnsanlar", + "search_results.all": "Tümü", "search_results.hashtags": "Etiketler", + "search_results.nothing_found": "Bu arama seçenekleriyle bir sonuç bulunamadı", "search_results.statuses": "Gönderiler", "search_results.statuses_fts_disabled": "Bu Mastodon sunucusunda gönderi içeriğine göre arama etkin değil.", "search_results.total": "{count, number} {count, plural, one {sonuç} other {sonuç}}", @@ -413,7 +453,7 @@ "status.edited": "{date} tarihinde düzenlenmiş", "status.edited_x_times": "{count, plural, one {{count} kez} other {{count} kez}} düzenlendi", "status.embed": "Gömülü", - "status.favourite": "Beğen", + "status.favourite": "Favorilerine ekle", "status.filtered": "Filtrelenmiş", "status.history.created": "{name} oluşturdu {date}", "status.history.edited": "{name} düzenledi {date}", @@ -466,14 +506,15 @@ "trends.trending_now": "Şu an gündemde", "ui.beforeunload": "Mastodon'u terk ederseniz taslağınız kaybolacak.", "units.short.billion": "{count}Mr", - "units.short.million": "{count}Mn", - "units.short.thousand": "{count}Mn", + "units.short.million": "{count}M", + "units.short.thousand": "{count}Bin", "upload_area.title": "Karşıya yükleme için sürükle bırak yapınız", "upload_button.label": "Resim, video veya ses dosyası ekleyin", "upload_error.limit": "Dosya yükleme sınırı aşıldı.", "upload_error.poll": "Anketlerde dosya yüklemesine izin verilmez.", "upload_form.audio_description": "İşitme kaybı olan kişiler için tarif edin", "upload_form.description": "Görme engelliler için açıklama", + "upload_form.description_missing": "Açıklama eklenmedi", "upload_form.edit": "Düzenle", "upload_form.thumbnail": "Küçük resmi değiştir", "upload_form.undo": "Sil", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index 464a65370..bd20b1efe 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -4,35 +4,34 @@ "account.badges.bot": "Бот", "account.badges.group": "Төркем", "account.block": "@{name} блоклау", - "account.block_domain": "Block domain {domain}", + "account.block_domain": "{domain} доменын блоклау", "account.blocked": "Блокланган", "account.browse_more_on_origin_server": "Тулырак оригинал профилендә карап була", "account.cancel_follow_request": "Cancel follow request", - "account.direct": "Direct message @{name}", + "account.direct": "@{name} өчен яңа хат", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain blocked", "account.edit_profile": "Профильны үзгәртү", - "account.enable_notifications": "Notify me when @{name} posts", + "account.enable_notifications": "@{name} язулары өчен белдерүләр яндыру", "account.endorse": "Feature on profile", "account.follow": "Языл", - "account.followers": "Followers", - "account.followers.empty": "No one follows this user yet.", - "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", - "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", - "account.follows.empty": "This user doesn't follow anyone yet.", + "account.followers": "Язылучылар", + "account.followers.empty": "Әле беркем дә язылмаган.", + "account.followers_counter": "{count, plural,one {{counter} Язылучы} other {{counter} Язылучы}}", + "account.following": "Язылган", + "account.following_counter": "{count, plural, one {{counter} Язылган} other {{counter} Язылган}}", + "account.follows.empty": "Беркемгә дә язылмаган әле.", "account.follows_you": "Сезгә язылган", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", - "account.last_status": "Last active", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Медиа", - "account.mention": "Mention @{name}", + "account.mention": "@{name} искәртү", "account.moved_to": "{name} has moved to:", "account.mute": "Mute @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", - "account.never_active": "Беркайчан да", "account.posts": "Toots", "account.posts_with_replies": "Toots and replies", "account.report": "Report @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "Unblock @{name}", "account.unblock_domain": "Unblock domain {domain}", + "account.unblock_short": "Unblock", "account.unendorse": "Don't feature on profile", "account.unfollow": "Язылынмау", "account.unmute": "Unmute @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", + "account.unmute_short": "Unmute", "account_note.placeholder": "Click to add a note", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Кыстыргычлар", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.conversations": "Conversations", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Remote only", - "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.", "compose_form.direct_message_warning_learn_more": "Learn more", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "locked", @@ -165,8 +166,9 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "There are no blocked domains yet.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", "errors.unexpected_crash.report_issue": "Report issue", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Тасвирлама", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Кыстыргычлар", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Профильны үзгәртү", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Favourites", "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Caylaw", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Хәвефсезлек", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", "notification.follow_request": "{name} has requested to follow you", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.filter_bar.advanced": "Display all categories", @@ -359,9 +369,9 @@ "privacy.direct.short": "Direct", "privacy.private.long": "Visible for followers only", "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all, shown in public timelines", + "privacy.public.long": "Visible for all", "privacy.public.short": "Public", - "privacy.unlisted.long": "Visible for all, but not in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "Яңарту", "regeneration_indicator.label": "Йөкләү...", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}сек", "relative_time.today": "бүген", "reply_indicator.cancel": "Баш тарту", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "профиль", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", - "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", - "report.placeholder": "Additional comments", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", + "report.placeholder": "Type or paste additional comments", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Җибәрү", "report.target": "Report {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Эзләү", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", "search_popout.tips.user": "кулланучы", "search_results.accounts": "Кешеләр", + "search_results.all": "All", "search_results.hashtags": "Hashtags", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", @@ -438,9 +478,9 @@ "status.report": "Report @{name}", "status.sensitive_warning": "Sensitive content", "status.share": "Уртаклашу", - "status.show_less": "Show less", + "status.show_less": "Әзрәк күрсәтү", "status.show_less_all": "Show less for all", - "status.show_more": "Show more", + "status.show_more": "Күбрәк күрсәтү", "status.show_more_all": "Show more for all", "status.show_thread": "Show thread", "status.uncached_media_warning": "Not available", @@ -474,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "Үзгәртү", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Бетерү", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index 5456eb88e..09d473ef4 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -18,12 +18,12 @@ "account.followers": "Followers", "account.followers.empty": "No one follows this user yet.", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", - "account.last_status": "Last active", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", @@ -32,7 +32,6 @@ "account.mute": "Mute @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", - "account.never_active": "Never", "account.posts": "Toots", "account.posts_with_replies": "Toots and replies", "account.report": "Report @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "Unblock @{name}", "account.unblock_domain": "Unblock domain {domain}", + "account.unblock_short": "Unblock", "account.unendorse": "Don't feature on profile", "account.unfollow": "Unfollow", "account.unmute": "Unmute @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", + "account.unmute_short": "Unmute", "account_note.placeholder": "Click to add a note", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.conversations": "Conversations", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Remote only", - "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.", "compose_form.direct_message_warning_learn_more": "Learn more", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "locked", @@ -165,8 +166,9 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "There are no blocked domains yet.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", "errors.unexpected_crash.report_issue": "Report issue", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Favourites", "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", "notification.follow_request": "{name} has requested to follow you", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.filter_bar.advanced": "Display all categories", @@ -359,9 +369,9 @@ "privacy.direct.short": "Direct", "privacy.private.long": "Visible for followers only", "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all, shown in public timelines", + "privacy.public.long": "Visible for all", "privacy.public.short": "Public", - "privacy.unlisted.long": "Visible for all, but not in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "Cancel", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", - "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", - "report.placeholder": "Additional comments", - "report.submit": "Submit", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", + "report.placeholder": "Type or paste additional comments", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", + "report.submit": "Submit report", "report.target": "Report {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Search", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", "search_popout.tips.user": "user", "search_results.accounts": "People", + "search_results.all": "All", "search_results.hashtags": "Hashtags", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", @@ -474,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Delete", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 4414d6741..16d4e0b3b 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -18,21 +18,20 @@ "account.followers": "Підписники", "account.followers.empty": "Ніхто ще не підписався на цього користувача.", "account.followers_counter": "{count, plural, one {{counter} Підписник} few {{counter} Підписники} many {{counter} Підписників} other {{counter} Підписники}}", + "account.following": "Стежите", "account.following_counter": "{count, plural, one {{counter} Підписка} few {{counter} Підписки} many {{counter} Підписок} other {{counter} Підписки}}", "account.follows.empty": "Цей користувач ще ні на кого не підписався.", "account.follows_you": "Підписаний(-а) на вас", "account.hide_reblogs": "Сховати передмухи від @{name}", "account.joined": "Долучення {date}", - "account.last_status": "Крайня активність", "account.link_verified_on": "Права власності на це посилання були перевірені {date}", "account.locked_info": "Статус конфіденційності цього облікового запису встановлено у заблокований. Власник вручну переглядає, хто може за ним стежити.", "account.media": "Медіа", "account.mention": "Згадати @{name}", "account.moved_to": "{name} переїхав на:", - "account.mute": "Заглушити @{name}", + "account.mute": "Нехтувати @{name}", "account.mute_notifications": "Не показувати сповіщення від @{name}", - "account.muted": "Заглушений", - "account.never_active": "Ніколи", + "account.muted": "Нехтується", "account.posts": "Дмухи", "account.posts_with_replies": "Дмухи й відповіді", "account.report": "Поскаржитися на @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Пост} few {{counter} Пости} many {{counter} Постів} other {{counter} Пости}}", "account.unblock": "Розблокувати @{name}", "account.unblock_domain": "Розблокувати {domain}", + "account.unblock_short": "Розблокувати", "account.unendorse": "Не публікувати у профілі", "account.unfollow": "Відписатися", - "account.unmute": "Зняти глушення з @{name}", + "account.unmute": "Не нехтувати @{name}", "account.unmute_notifications": "Показувати сповіщення від @{name}", + "account.unmute_short": "Не нехтувати", "account_note.placeholder": "Коментарі відсутні", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,14 +70,14 @@ "column.blocks": "Заблоковані користувачі", "column.bookmarks": "Закладки", "column.community": "Локальна стрічка", - "column.direct": "Прямі повідомлення", + "column.conversations": "Бесіди", "column.directory": "Переглянути профілі", "column.domain_blocks": "Приховані домени", "column.favourites": "Вподобане", "column.follow_requests": "Запити на підписку", "column.home": "Головна", "column.lists": "Списки", - "column.mutes": "Заглушені користувачі", + "column.mutes": "Нехтувані користувачі", "column.notifications": "Сповіщення", "column.pins": "Закріплені дмухи", "column.public": "Глобальна стрічка", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Тільки локальні", "community.column_settings.media_only": "Тільки медіа", "community.column_settings.remote_only": "Тільки видалені", - "compose_form.direct_message_warning": "Цей дмух буде видимий тільки згаданим користувачам.", "compose_form.direct_message_warning_learn_more": "Дізнатися більше", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Цей дмух не буде відображений у жодній стрічці хештеґу, оскільки він прихований. Тільки публічні дмухи можуть бути знайдені за хештеґом.", "compose_form.lock_disclaimer": "Ваш акаунт не {locked}. Будь-який користувач може підписатися на вас та переглядати ваші приватні пости.", "compose_form.lock_disclaimer.lock": "приватний", @@ -123,12 +124,12 @@ "confirmations.discard_edit_media.confirm": "Відкинути", "confirmations.discard_edit_media.message": "У вас є незбережені зміни в описі медіа або попереднього перегляду, все одно відкинути їх?", "confirmations.domain_block.confirm": "Сховати весь домен", - "confirmations.domain_block.message": "Ви точно, точно впевнені, що хочете заблокувати весь домен {domain}? У більшості випадків для нормальної роботи краще заблокувати/заглушити лише деяких користувачів. Ви не зможете бачити контент з цього домену у будь-яких стрічках або ваших сповіщеннях. Ваші підписники з цього домену будуть відписані від вас.", + "confirmations.domain_block.message": "Ви точно, точно впевнені, що хочете заблокувати весь домен {domain}? У більшості випадків для нормальної роботи краще заблокувати або нехтувати лише деяких користувачів. Ви не зможете бачити контент з цього домену у будь-яких стрічках або ваших сповіщеннях. Ваші підписники з цього домену будуть відписані від вас.", "confirmations.logout.confirm": "Вийти", "confirmations.logout.message": "Ви впевнені, що хочете вийти?", - "confirmations.mute.confirm": "Заглушити", - "confirmations.mute.explanation": "Це приховає пости від них і пости зі згадками про них, проте вони все одно матимуть змогу бачити ваші пости і підписуватися на вас.", - "confirmations.mute.message": "Ви впевнені, що хочете заглушити {name}?", + "confirmations.mute.confirm": "Нехтуавти", + "confirmations.mute.explanation": "Це сховає дописи від них і дописи зі згадками про них, проте вони все одно матимуть змогу бачити ваші дописи й підписуватися на вас.", + "confirmations.mute.message": "Ви впевнені, що хочете нехтувати {name}?", "confirmations.redraft.confirm": "Видалити та перестворити", "confirmations.redraft.message": "Ви впевнені, що хочете видалити допис і перестворити його? Ви втратите всі відповіді, передмухи та вподобайки допису.", "confirmations.reply.confirm": "Відповісти", @@ -165,8 +166,9 @@ "empty_column.blocks": "Ви ще не заблокували жодного користувача.", "empty_column.bookmarked_statuses": "У вас ще немає дмухів у закладках. Коли ви щось додасте до заклкдок, воно з'явиться тут.", "empty_column.community": "Локальна стрічка пуста. Напишіть щось, щоб розігріти народ!", - "empty_column.direct": "У вас ще немає прямих повідомлень. Коли ви відправите чи отримаєте якесь, воно з'явиться тут.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Тут поки немає прихованих доменів.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "У вас ще немає вподобаних дмухів. Коли ви щось вподобаєте, воно з'явиться тут.", "empty_column.favourites": "Ніхто ще не вподобав цього дмуху. Коли хтось це зробить, вони з'являться тут.", "empty_column.follow_recommendations": "Схоже, для вас не буде створено жодної пропозиції. Ви можете спробувати скористатися пошуком людей, яких ви можете знати або переглянути популярні хештеґи.", @@ -176,7 +178,7 @@ "empty_column.home.suggestions": "Переглянути пропозиції", "empty_column.list": "Немає нічого в цьому списку. Коли його учасники дмухнуть нові статуси, вони з'являться тут.", "empty_column.lists": "У вас ще немає списків. Коли ви їх створите, вони з'являться тут.", - "empty_column.mutes": "Ви ще не заглушили жодного користувача.", + "empty_column.mutes": "Ви ще не нехтуєте жодного користувача.", "empty_column.notifications": "У вас ще немає сповіщень. Переписуйтесь з іншими користувачами, щоб почати розмову.", "empty_column.public": "Тут поки нічого немає! Опублікуйте щось, або вручну підпишіться на користувачів інших інстанцій, щоб заповнити стрічку", "error.unexpected_crash.explanation": "Ця сторінка не може бути коректно відображена через баґ у нашому коді або через проблему сумісності браузера.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Спробуйте їх вимкнути та оновити сторінку. Якщо це не допомагає, ви можете використовувати Mastodon через інший браузер або окремий застосунок.", "errors.unexpected_crash.copy_stacktrace": "Скопіювати трасування стека у буфер обміну", "errors.unexpected_crash.report_issue": "Повідомити про проблему", + "explore.search_results": "Результати пошуку", + "explore.suggested_follows": "Для вас", + "explore.title": "Огляд", + "explore.trending_links": "Новини", + "explore.trending_statuses": "Дописи", + "explore.trending_tags": "Хештеґи", "follow_recommendations.done": "Готово", "follow_recommendations.heading": "Підпишіться на людей, чиї дописи ви хочете бачити! Ось деякі пропозиції.", "follow_recommendations.lead": "Дописи від людей, за якими ви стежите, з'являться в хронологічному порядку у вашій домашній стрічці. Не бійся помилятися, ви можете відписатися від людей так само легко в будь-який час!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "передмухувати", "keyboard_shortcuts.column": "фокусуватися на одній з колонок", "keyboard_shortcuts.compose": "фокусуватися на полі введення", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Опис", - "keyboard_shortcuts.direct": "відкрити колонку прямих повідомлень", "keyboard_shortcuts.down": "рухатися вниз стрічкою", "keyboard_shortcuts.enter": "відкрити статус", "keyboard_shortcuts.favourite": "вподобати", @@ -235,7 +243,7 @@ "keyboard_shortcuts.legend": "показати підказку", "keyboard_shortcuts.local": "відкрити локальну стрічку", "keyboard_shortcuts.mention": "згадати автора", - "keyboard_shortcuts.muted": "відкрити список заглушених користувачів", + "keyboard_shortcuts.muted": "Відкрити список нехтуваних користувачів", "keyboard_shortcuts.my_profile": "відкрити ваш профіль", "keyboard_shortcuts.notifications": "відкрити колонку сповіщень", "keyboard_shortcuts.open_media": "відкрити медіа", @@ -275,17 +283,17 @@ "missing_indicator.label": "Не знайдено", "missing_indicator.sublabel": "Ресурс не знайдений", "mute_modal.duration": "Тривалість", - "mute_modal.hide_notifications": "Приховати сповіщення від користувача?", + "mute_modal.hide_notifications": "Сховати сповіщення від користувача?", "mute_modal.indefinite": "Не визначено", "navigation_bar.apps": "Мобільні додатки", "navigation_bar.blocks": "Заблоковані користувачі", "navigation_bar.bookmarks": "Закладки", "navigation_bar.community_timeline": "Локальна стрічка", "navigation_bar.compose": "Написати новий дмух", - "navigation_bar.direct": "Прямі повідомлення", "navigation_bar.discover": "Знайти", "navigation_bar.domain_blocks": "Приховані домени", "navigation_bar.edit_profile": "Редагувати профіль", + "navigation_bar.explore": "Огляд", "navigation_bar.favourites": "Вподобане", "navigation_bar.filters": "Приховані слова", "navigation_bar.follow_requests": "Запити на підписку", @@ -294,12 +302,13 @@ "navigation_bar.keyboard_shortcuts": "Гарячі клавіші", "navigation_bar.lists": "Списки", "navigation_bar.logout": "Вийти", - "navigation_bar.mutes": "Заглушені користувачі", + "navigation_bar.mutes": "Нехтувані користувачі", "navigation_bar.personal": "Особисте", "navigation_bar.pins": "Закріплені дмухи", "navigation_bar.preferences": "Налаштування", "navigation_bar.public_timeline": "Глобальна стрічка", "navigation_bar.security": "Безпека", + "notification.admin.sign_up": "{name} приєднується", "notification.favourite": "{name} вподобав(-ла) ваш допис", "notification.follow": "{name} підписався(-лась) на вас", "notification.follow_request": "{name} відправив(-ла) запит на підписку", @@ -311,6 +320,7 @@ "notification.update": "{name} змінює допис", "notifications.clear": "Очистити сповіщення", "notifications.clear_confirmation": "Ви впевнені, що хочете назавжди видалити всі сповіщеня?", + "notifications.column_settings.admin.sign_up": "Нові реєстрації:", "notifications.column_settings.alert": "Сповіщення на комп'ютері", "notifications.column_settings.favourite": "Вподобане:", "notifications.column_settings.filter_bar.advanced": "Показати всі категорії", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "Видалити опитування", "privacy.change": "Змінити видимість допису", "privacy.direct.long": "Показати тільки згаданим користувачам", - "privacy.direct.short": "Особисто", + "privacy.direct.short": "Лише люди, яких я згадую", "privacy.private.long": "Показати тільки підписникам", "privacy.private.short": "Тільки для підписників", - "privacy.public.long": "Показувати у публічних стрічках", + "privacy.public.long": "Visible for all", "privacy.public.short": "Публічно", - "privacy.unlisted.long": "Не показувати у публічних стрічках", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Прихований", "refresh": "Оновити", "regeneration_indicator.label": "Завантаження…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}с", "relative_time.today": "сьогодні", "reply_indicator.cancel": "Відмінити", + "report.block": "Заблокувати", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Інше", "report.categories.spam": "Спам", "report.categories.violation": "Контент порушує одне або кілька правил сервера", + "report.category.subtitle": "Оберіть найкращий збіг", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "профіль", + "report.category.title_status": "допис", + "report.close": "Готово", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Надіслати до {target}", "report.forward_hint": "Це акаунт з іншого серверу. Відправити анонімізовану копію скарги і туди?", - "report.hint": "Скаргу буде відправлено модераторам Вашого сайту. Ви можете надати їм пояснення, чому ви скаржитесь на акаунт нижче:", + "report.mute": "Нехтувати", + "report.mute_explanation": "Ви не побачите їхніх дописів. Вони все ще можуть стежити за вами, бачити ваші дописи та не знатимуть про нехтування.", + "report.next": "Далі", "report.placeholder": "Додаткові коментарі", + "report.reasons.dislike": "Мені це не подобається", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "Це щось інше", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "Це спам", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "Порушує правила сервера", + "report.reasons.violation_description": "Ви впевнені, що це порушує певні правила", + "report.rules.subtitle": "Виберіть усі варіанти, що підходять", + "report.rules.title": "Які правила порушено?", + "report.statuses.subtitle": "Виберіть усі варіанти, що підходять", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Відправити", "report.target": "Скаржимося на {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Не хочете це бачити?", + "report.thanks.title_actionable": "Дякуємо за скаргу, ми розглянемо її.", + "report.unfollow": "Відписатися від @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Пошук", "search_popout.search_format": "Розширений формат пошуку", "search_popout.tips.full_text": "Пошук за текстом знаходить статуси, які ви написали, вподобали, передмухнули, або в яких вас згадували. Також він знаходить імена користувачів, реальні імена та хештеґи.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Пошук за текстом знаходить імена користувачів, реальні імена та хештеґи", "search_popout.tips.user": "користувач", "search_results.accounts": "Люди", + "search_results.all": "Усе", "search_results.hashtags": "Хештеґи", + "search_results.nothing_found": "Нічого не вдалося знайти за цими пошуковими термінами", "search_results.statuses": "Дмухів", "search_results.statuses_fts_disabled": "Пошук дмухів за вмістом недоступний на цьому сервері Mastodon.", "search_results.total": "{count, number} {count, plural, one {результат} few {результати} many {результатів} other {результатів}}", @@ -421,8 +461,8 @@ "status.media_hidden": "Медіа приховано", "status.mention": "Згадати @{name}", "status.more": "Більше", - "status.mute": "Заглушити @{name}", - "status.mute_conversation": "Заглушити діалог", + "status.mute": "Нехтувати @{name}", + "status.mute_conversation": "Нехтувати діалог", "status.open": "Розгорнути допис", "status.pin": "Закріпити у профілі", "status.pinned": "Закріплений дмух", @@ -444,7 +484,7 @@ "status.show_more_all": "Показувати більше для всіх", "status.show_thread": "Показати ланцюжок", "status.uncached_media_warning": "Недоступно", - "status.unmute_conversation": "Зняти глушення з діалогу", + "status.unmute_conversation": "Не нехтувати діалог", "status.unpin": "Відкріпити від профілю", "suggestions.dismiss": "Відхилити пропозицію", "suggestions.header": "Вас може зацікавити…", @@ -474,6 +514,7 @@ "upload_error.poll": "Не можна завантажувати файли до опитувань.", "upload_form.audio_description": "Опишіть для людей із вадами слуху", "upload_form.description": "Опишіть для людей з вадами зору", + "upload_form.description_missing": "Опису не додано", "upload_form.edit": "Змінити", "upload_form.thumbnail": "Змінити мініатюру", "upload_form.undo": "Видалити", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index 75d99bf4e..42728af0f 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -18,12 +18,12 @@ "account.followers": "پیروکار", "account.followers.empty": "\"ہنوز اس صارف کی کوئی پیروی نہیں کرتا\".", "account.followers_counter": "{count, plural,one {{counter} پیروکار} other {{counter} پیروکار}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} پیروی کر رہے ہیں} other {{counter} پیروی کر رہے ہیں}}", "account.follows.empty": "\"یہ صارف ہنوز کسی کی پیروی نہیں کرتا ہے\".", "account.follows_you": "آپ کا پیروکار ہے", "account.hide_reblogs": "@{name} سے فروغ چھپائیں", "account.joined": "{date} شامل ہوئے", - "account.last_status": "آخری فعال", "account.link_verified_on": "اس لنک کی ملکیت کی توثیق {date} پر کی گئی تھی", "account.locked_info": "اس اکاونٹ کا اخفائی ضابطہ مقفل ہے۔ صارف کی پیروی کون کر سکتا ہے اس کا جائزہ وہ خود لیتا ہے.", "account.media": "وسائل", @@ -32,7 +32,6 @@ "account.mute": "خاموش @{name}", "account.mute_notifications": "@{name} سے اطلاعات خاموش کریں", "account.muted": "خاموش کردہ", - "account.never_active": "کبھی نہیں", "account.posts": "ٹوٹ", "account.posts_with_replies": "ٹوٹ اور جوابات", "account.report": "@{name} اطلاع کریں", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "@{name} کو بحال کریں", "account.unblock_domain": "{domain} کو نہ چھپائیں", + "account.unblock_short": "Unblock", "account.unendorse": "مشخص پر نمایاں نہ کریں", "account.unfollow": "پیروی ترک کریں", "account.unmute": "@{name} کو با آواز کریں", "account.unmute_notifications": "@{name} سے اطلاعات کو با آواز کریں", + "account.unmute_short": "Unmute", "account_note.placeholder": "Click to add a note", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "مسدود صارفین", "column.bookmarks": "بُک مارکس", "column.community": "مقامی زمانی جدول", - "column.direct": "راست پیغام", + "column.conversations": "Conversations", "column.directory": "مشخصات کا مطالعہ کریں", "column.domain_blocks": "پوشیدہ ڈومین", "column.favourites": "پسندیدہ", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "صرف مقامی", "community.column_settings.media_only": "وسائل فقط", "community.column_settings.remote_only": "صرف خارجی", - "compose_form.direct_message_warning": "یہ ٹوٹ صرف مذکورہ صارفین کو بھیجا جائے گا.", "compose_form.direct_message_warning_learn_more": "مزید جانیں", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "چونکہ یہ ٹوٹ غیر مندرجہ ہے لہذا یہ کسی بھی ہیش ٹیگ کے تحت درج نہیں کیا جائے گا. ہیش ٹیگ کے تحت صرف \nعمومی ٹوٹ تلاش کئے جا سکتے ہیں.", "compose_form.lock_disclaimer": "آپ کا اکاؤنٹ {locked} نہیں ہے. کوئی بھی آپ کے مخصوص برائے پیروکار ٹوٹ دیکھنے کی خاطر آپ کی پیروی کر سکتا ہے.", "compose_form.lock_disclaimer.lock": "مقفل", @@ -165,8 +166,9 @@ "empty_column.blocks": "آپ نے ابھی کسی صارف کو مسدود نہیں کیا ہے.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "مقامی جدول خالی ہے. کچھ تحریر کریں تاکہ بات آگے بڑھے!", - "empty_column.direct": "آپ کیلئے کوئی راست پیغام نہیں ہے. جب آپ بھیجیں گے یا وصول کریں گے، یہاں نظر آئےگا.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "ابھی تک کوئی چھپا ہوا ڈومین نہیں ہے.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "آپ کا کوئی پسندیدہ ٹوٹ نہیں ہے. جب آپ پسند کریں گے، یہاں نظر آئےگا.", "empty_column.favourites": "ابھی تک کسی نے بھی اس ٹوٹ کو پسند نہیں کیا ہے. جب بھی کوئی اسے پسند کرے گا، ان کا نام یہاں نظر آئے گا.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", "errors.unexpected_crash.report_issue": "مسئلہ کی اطلاع کریں", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "بُک مارکس", "navigation_bar.community_timeline": "مقامی ٹائم لائن", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "براہ راست پیغامات", "navigation_bar.discover": "دریافت کریں", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "پروفائل میں ترمیم کریں", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "پسندیدہ", "navigation_bar.filters": "خاموش کردہ الفاظ", "navigation_bar.follow_requests": "پیروی کی درخواستیں", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "ترجیحات", "navigation_bar.public_timeline": "وفاقی ٹائم لائن", "navigation_bar.security": "سیکورٹی", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} آپ کی پیروی کی", "notification.follow_request": "{name} نے آپ کی پیروی کی درخواست کی", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "اطلاعات ہٹائیں", "notifications.clear_confirmation": "کیا آپ واقعی اپنی تمام اطلاعات کو صاف کرنا چاہتے ہیں؟", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "ڈیسک ٹاپ اطلاعات", "notifications.column_settings.favourite": "پسندیدہ:", "notifications.column_settings.filter_bar.advanced": "تمام زمرے دکھائیں", @@ -359,9 +369,9 @@ "privacy.direct.short": "Direct", "privacy.private.long": "Post to followers only", "privacy.private.short": "Followers-only", - "privacy.public.long": "Post to public timelines", + "privacy.public.long": "Visible for all", "privacy.public.short": "Public", - "privacy.unlisted.long": "Do not show in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "Cancel", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", - "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", - "report.placeholder": "Additional comments", - "report.submit": "Submit", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", + "report.placeholder": "Type or paste additional comments", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", + "report.submit": "Submit report", "report.target": "Report {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Search", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", "search_popout.tips.user": "user", "search_results.accounts": "People", + "search_results.all": "All", "search_results.hashtags": "Hashtags", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", @@ -474,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Delete", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 588721073..6692d2b21 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -8,58 +8,59 @@ "account.blocked": "Đã chặn", "account.browse_more_on_origin_server": "Truy cập trang của người này", "account.cancel_follow_request": "Hủy yêu cầu theo dõi", - "account.direct": "Nhắn tin @{name}", - "account.disable_notifications": "Không thông báo khi @{name} đăng tút", + "account.direct": "Nhắn riêng @{name}", + "account.disable_notifications": "Tắt thông báo khi @{name} đăng tút", "account.domain_blocked": "Người đã chặn", - "account.edit_profile": "Chỉnh sửa trang cá nhân", - "account.enable_notifications": "Thông báo khi @{name} đăng tút", + "account.edit_profile": "Sửa hồ sơ", + "account.enable_notifications": "Nhận thông báo khi @{name} đăng tút", "account.endorse": "Tôn vinh người này", "account.follow": "Theo dõi", "account.followers": "Người theo dõi", "account.followers.empty": "Chưa có người theo dõi nào.", "account.followers_counter": "{count, plural, one {{counter} Người theo dõi} other {{counter} Người theo dõi}}", + "account.following": "Đang theo dõi", "account.following_counter": "{count, plural, one {{counter} Theo dõi} other {{counter} Theo dõi}}", "account.follows.empty": "Người này chưa theo dõi ai.", "account.follows_you": "Đang theo dõi bạn", - "account.hide_reblogs": "Ẩn chia sẻ từ @{name}", + "account.hide_reblogs": "Ẩn tút @{name} đăng lại", "account.joined": "Đã tham gia {date}", - "account.last_status": "Online", - "account.link_verified_on": "Liên kết này đã được xác thực vào {date}", + "account.link_verified_on": "Liên kết này đã được xác minh vào {date}", "account.locked_info": "Đây là tài khoản riêng tư. Họ sẽ tự mình xét duyệt các yêu cầu theo dõi.", "account.media": "Media", "account.mention": "Nhắc đến @{name}", - "account.moved_to": "{name} đã đổi thành:", + "account.moved_to": "{name} đã chuyển sang:", "account.mute": "Ẩn @{name}", "account.mute_notifications": "Tắt thông báo từ @{name}", "account.muted": "Đã ẩn", - "account.never_active": "Chưa có bất cứ hoạt động nào", "account.posts": "Tút", "account.posts_with_replies": "Trả lời", "account.report": "Báo cáo @{name}", "account.requested": "Đang chờ chấp thuận. Nhấp vào đây để hủy yêu cầu theo dõi", "account.share": "Chia sẻ trang @{name}", - "account.show_reblogs": "Hiện chia sẻ từ @{name}", + "account.show_reblogs": "Hiện tút do @{name} đăng lại", "account.statuses_counter": "{count, plural, one {{counter} Tút} other {{counter} Tút}}", "account.unblock": "Bỏ chặn @{name}", "account.unblock_domain": "Bỏ ẩn {domain}", + "account.unblock_short": "Bỏ chặn", "account.unendorse": "Ngưng tôn vinh người này", "account.unfollow": "Ngưng theo dõi", "account.unmute": "Bỏ ẩn @{name}", "account.unmute_notifications": "Mở lại thông báo từ @{name}", + "account.unmute_short": "Bỏ ẩn", "account_note.placeholder": "Nhấn để thêm", "admin.dashboard.daily_retention": "Tỉ lệ người dùng sau đăng ký ở lại theo ngày", - "admin.dashboard.monthly_retention": "Tỉ lệ người dùng sau đăng ký ở lại theo tháng", + "admin.dashboard.monthly_retention": "Tỉ lệ người dùng ở lại sau khi đăng ký", "admin.dashboard.retention.average": "Trung bình", - "admin.dashboard.retention.cohort": "Đăng ký tháng", + "admin.dashboard.retention.cohort": "Tháng đăng ký", "admin.dashboard.retention.cohort_size": "Người dùng mới", "alert.rate_limited.message": "Vui lòng thử lại sau {retry_time, time, medium}.", "alert.rate_limited.title": "Vượt giới hạn", "alert.unexpected.message": "Đã xảy ra lỗi không mong muốn.", "alert.unexpected.title": "Ốiii!", - "announcement.announcement": "Thông báo chung", + "announcement.announcement": "Có gì mới?", "attachments_list.unprocessed": "(chưa xử lí)", "autosuggest_hashtag.per_week": "{count} mỗi tuần", - "boost_modal.combo": "Nhấn {combo} để chia sẻ nhanh hơn", + "boost_modal.combo": "Nhấn {combo} để bỏ qua bước này", "bundle_column_error.body": "Đã có lỗi xảy ra trong khi tải nội dung này.", "bundle_column_error.retry": "Thử lại", "bundle_column_error.title": "Không có kết nối internet", @@ -69,7 +70,7 @@ "column.blocks": "Người đã chặn", "column.bookmarks": "Đã lưu", "column.community": "Máy chủ của bạn", - "column.direct": "Tin nhắn", + "column.conversations": "Thảo luận", "column.directory": "Tìm người cùng sở thích", "column.domain_blocks": "Máy chủ đã chặn", "column.favourites": "Thích", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "Chỉ máy chủ của bạn", "community.column_settings.media_only": "Chỉ xem media", "community.column_settings.remote_only": "Chỉ người dùng ở máy chủ khác", - "compose_form.direct_message_warning": "Tút này sẽ chỉ gửi cho người được nhắc đến.", "compose_form.direct_message_warning_learn_more": "Tìm hiểu thêm", + "compose_form.encryption_warning": "Các tút trên Mastodon không được mã hóa đầu cuối. Không chia sẻ bất kỳ thông tin nhạy cảm nào qua Mastodon.", "compose_form.hashtag_warning": "Tút này sẽ không xuất hiện công khai. Chỉ những tút công khai mới có thể được tìm kiếm thông qua hashtag.", "compose_form.lock_disclaimer": "Tài khoản của bạn không {locked}. Bất cứ ai cũng có thể theo dõi và xem tút riêng tư của bạn.", "compose_form.lock_disclaimer.lock": "khóa", @@ -103,7 +104,7 @@ "compose_form.poll.remove_option": "Xóa lựa chọn này", "compose_form.poll.switch_to_multiple": "Có thể chọn nhiều lựa chọn", "compose_form.poll.switch_to_single": "Chỉ cho phép chọn duy nhất một lựa chọn", - "compose_form.publish": "Đăng tút", + "compose_form.publish": "Đăng", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Lưu thay đổi", "compose_form.sensitive.hide": "{count, plural, other {Đánh dấu nội dung nhạy cảm}}", @@ -111,7 +112,7 @@ "compose_form.sensitive.unmarked": "{count, plural, other {Nội dung này bình thường}}", "compose_form.spoiler.marked": "Hủy nội dung ẩn", "compose_form.spoiler.unmarked": "Tạo nội dung ẩn", - "compose_form.spoiler_placeholder": "Viết nội dung ẩn của bạn ở đây", + "compose_form.spoiler_placeholder": "Lời dẫn cho nội dung ẩn", "confirmation_modal.cancel": "Hủy bỏ", "confirmations.block.block_and_report": "Chặn & Báo cáo", "confirmations.block.confirm": "Chặn", @@ -130,7 +131,7 @@ "confirmations.mute.explanation": "Điều này sẽ khiến tút của họ và những tút có nhắc đến họ bị ẩn, tuy nhiên họ vẫn có thể xem tút của bạn và theo dõi bạn.", "confirmations.mute.message": "Bạn thật sự muốn ẩn {name}?", "confirmations.redraft.confirm": "Xóa & viết lại", - "confirmations.redraft.message": "Bạn thật sự muốn xóa tút và viết lại? Điều này sẽ xóa mất những lượt thích và chia sẻ của tút, cũng như những trả lời sẽ không còn nội dung gốc.", + "confirmations.redraft.message": "Bạn thật sự muốn xóa tút và viết lại? Điều này sẽ xóa mất những lượt thích và đăng lại của tút, cũng như những trả lời sẽ không còn nội dung gốc.", "confirmations.reply.confirm": "Trả lời", "confirmations.reply.message": "Nội dung bạn đang soạn thảo sẽ bị ghi đè, bạn có tiếp tục?", "confirmations.unfollow.confirm": "Ngưng theo dõi", @@ -165,8 +166,9 @@ "empty_column.blocks": "Bạn chưa chặn bất cứ ai.", "empty_column.bookmarked_statuses": "Bạn chưa lưu tút nào. Nếu có, nó sẽ hiển thị ở đây.", "empty_column.community": "Máy chủ của bạn chưa có tút nào công khai. Bạn hãy thử viết gì đó đi!", - "empty_column.direct": "Bạn chưa có tin nhắn nào. Khi bạn gửi hoặc nhận tin nhắn, nó sẽ hiển thị ở đây.", + "empty_column.conversations": "Khi bạn gửi hoặc nhận một tút chỉ hiển thị với những người được nhắc đến trong đó, tút đó sẽ hiển thị ở đây.", "empty_column.domain_blocks": "Chưa ẩn bất kỳ máy chủ nào.", + "empty_column.explore_statuses": "Chưa có xu hướng nào. Kiểm tra lại sau!", "empty_column.favourited_statuses": "Bạn chưa thích tút nào. Hãy thử đi, nó sẽ xuất hiện ở đây.", "empty_column.favourites": "Chưa có ai thích tút này.", "empty_column.follow_recommendations": "Bạn chưa có gợi ý theo dõi nào. Hãy thử tìm kiếm những người thú vị hoặc khám phá những hashtag xu hướng.", @@ -177,7 +179,7 @@ "empty_column.list": "Chưa có tút. Khi những người trong danh sách này đăng tút mới, chúng sẽ xuất hiện ở đây.", "empty_column.lists": "Bạn chưa tạo danh sách nào.", "empty_column.mutes": "Bạn chưa ẩn bất kỳ ai.", - "empty_column.notifications": "Bạn chưa có thông báo nào. Hãy thử theo dõi hoặc nhắn tin cho một ai đó.", + "empty_column.notifications": "Bạn chưa có thông báo nào. Hãy thử theo dõi hoặc nhắn riêng cho một ai đó.", "empty_column.public": "Trống trơn! Bạn hãy viết gì đó hoặc bắt đầu theo dõi những người khác", "error.unexpected_crash.explanation": "Trang này có thể không hiển thị chính xác do lỗi lập trình Mastodon hoặc vấn đề tương thích trình duyệt.", "error.unexpected_crash.explanation_addons": "Trang này không thể hiển thị do xung khắc với add-on của trình duyệt hoặc công cụ tự động dịch ngôn ngữ.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Hãy tắt add-on và làm tươi trang. Nếu vẫn không được, bạn nên thử đăng nhập Mastodon trên trình duyệt khác hoặc app khác.", "errors.unexpected_crash.copy_stacktrace": "Sao chép stacktrace vào clipboard", "errors.unexpected_crash.report_issue": "Báo cáo lỗi", + "explore.search_results": "Kết quả tìm kiếm", + "explore.suggested_follows": "Dành cho bạn", + "explore.title": "Khám phá", + "explore.trending_links": "Tin tức", + "explore.trending_statuses": "Tút", + "explore.trending_tags": "Hashtag", "follow_recommendations.done": "Xong", "follow_recommendations.heading": "Theo dõi những người bạn muốn đọc tút của họ! Dưới đây là vài gợi ý.", "follow_recommendations.lead": "Tút từ những người bạn theo dõi sẽ hiện theo thứ tự thời gian trên bảng tin. Đừng ngại, bạn có thể dễ dàng ngưng theo dõi họ bất cứ lúc nào!", @@ -210,20 +218,20 @@ "hashtag.column_settings.tag_mode.none": "Không chọn", "hashtag.column_settings.tag_toggle": "Bao gồm thêm hashtag cho cột này", "home.column_settings.basic": "Tùy chỉnh", - "home.column_settings.show_reblogs": "Hiện những lượt chia sẻ", + "home.column_settings.show_reblogs": "Hiện những lượt đăng lại", "home.column_settings.show_replies": "Hiện những tút dạng trả lời", - "home.hide_announcements": "Ẩn thông báo", - "home.show_announcements": "Hiện thông báo", + "home.hide_announcements": "Ẩn thông báo máy chủ", + "home.show_announcements": "Hiện thông báo máy chủ", "intervals.full.days": "{number, plural, other {# ngày}}", "intervals.full.hours": "{number, plural, other {# giờ}}", "intervals.full.minutes": "{number, plural, other {# phút}}", "keyboard_shortcuts.back": "trở lại", "keyboard_shortcuts.blocked": "mở danh sách người đã chặn", - "keyboard_shortcuts.boost": "chia sẻ", + "keyboard_shortcuts.boost": "đăng lại", "keyboard_shortcuts.column": "mở các mục", "keyboard_shortcuts.compose": "mở khung soạn tút", + "keyboard_shortcuts.conversations": "mở mục thảo luận", "keyboard_shortcuts.description": "Mô tả", - "keyboard_shortcuts.direct": "mở mục tin nhắn", "keyboard_shortcuts.down": "di chuyển xuống dưới danh sách", "keyboard_shortcuts.enter": "viết tút mới", "keyboard_shortcuts.favourite": "thích", @@ -236,11 +244,11 @@ "keyboard_shortcuts.local": "mở máy chủ của bạn", "keyboard_shortcuts.mention": "nhắc đến ai đó", "keyboard_shortcuts.muted": "mở danh sách người đã ẩn", - "keyboard_shortcuts.my_profile": "mở trang cá nhân của bạn", + "keyboard_shortcuts.my_profile": "mở hồ sơ của bạn", "keyboard_shortcuts.notifications": "mở mục thông báo", "keyboard_shortcuts.open_media": "mở ảnh hoặc video", "keyboard_shortcuts.pinned": "mở danh sách tút ghim", - "keyboard_shortcuts.profile": "mở trang cá nhân của người viết tút", + "keyboard_shortcuts.profile": "mở hồ sơ của người viết tút", "keyboard_shortcuts.reply": "trả lời", "keyboard_shortcuts.requests": "mở danh sách yêu cầu theo dõi", "keyboard_shortcuts.search": "mở tìm kiếm", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Đã lưu", "navigation_bar.community_timeline": "Cộng đồng", "navigation_bar.compose": "Viết tút mới", - "navigation_bar.direct": "Tin nhắn", "navigation_bar.discover": "Khám phá", "navigation_bar.domain_blocks": "Máy chủ đã ẩn", - "navigation_bar.edit_profile": "Trang cá nhân", + "navigation_bar.edit_profile": "Sửa hồ sơ", + "navigation_bar.explore": "Xu hướng", "navigation_bar.favourites": "Thích", "navigation_bar.filters": "Bộ lọc từ ngữ", "navigation_bar.follow_requests": "Yêu cầu theo dõi", @@ -300,17 +308,19 @@ "navigation_bar.preferences": "Cài đặt", "navigation_bar.public_timeline": "Thế giới", "navigation_bar.security": "Bảo mật", + "notification.admin.sign_up": "{name} đăng ký máy chủ của bạn", "notification.favourite": "{name} thích tút của bạn", "notification.follow": "{name} theo dõi bạn", "notification.follow_request": "{name} yêu cầu theo dõi bạn", "notification.mention": "{name} nhắc đến bạn", "notification.own_poll": "Cuộc bình chọn của bạn đã kết thúc", "notification.poll": "Cuộc bình chọn đã kết thúc", - "notification.reblog": "{name} chia sẻ tút của bạn", + "notification.reblog": "{name} đăng lại tút của bạn", "notification.status": "{name} vừa đăng", "notification.update": "{name} đã viết lại một tút", "notifications.clear": "Xóa hết thông báo", "notifications.clear_confirmation": "Bạn thật sự muốn xóa vĩnh viễn tất cả thông báo của mình?", + "notifications.column_settings.admin.sign_up": "Lượt đăng ký mới:", "notifications.column_settings.alert": "Thông báo trên máy tính", "notifications.column_settings.favourite": "Lượt thích:", "notifications.column_settings.filter_bar.advanced": "Toàn bộ", @@ -321,7 +331,7 @@ "notifications.column_settings.mention": "Lượt nhắc đến:", "notifications.column_settings.poll": "Kết quả bình chọn:", "notifications.column_settings.push": "Thông báo đẩy", - "notifications.column_settings.reblog": "Lượt chia sẻ mới:", + "notifications.column_settings.reblog": "Lượt đăng lại mới:", "notifications.column_settings.show": "Thông báo trên thanh menu", "notifications.column_settings.sound": "Kèm theo tiếng \"bíp\"", "notifications.column_settings.status": "Tút mới:", @@ -329,7 +339,7 @@ "notifications.column_settings.unread_notifications.highlight": "Nổi bật thông báo chưa đọc", "notifications.column_settings.update": "Lượt sửa:", "notifications.filter.all": "Toàn bộ", - "notifications.filter.boosts": "Chia sẻ", + "notifications.filter.boosts": "Đăng lại", "notifications.filter.favourites": "Thích", "notifications.filter.follows": "Đang theo dõi", "notifications.filter.mentions": "Lượt nhắc đến", @@ -356,46 +366,76 @@ "poll_button.remove_poll": "Hủy cuộc bình chọn", "privacy.change": "Thay đổi quyền riêng tư", "privacy.direct.long": "Chỉ người được nhắc đến mới thấy", - "privacy.direct.short": "Tin nhắn", + "privacy.direct.short": "Chỉ người tôi nhắc đến", "privacy.private.long": "Dành riêng cho người theo dõi", - "privacy.private.short": "Riêng tư", - "privacy.public.long": "Hiện trên bảng tin máy chủ", + "privacy.private.short": "Chỉ người theo dõi", + "privacy.public.long": "Hiển thị với mọi người", "privacy.public.short": "Công khai", - "privacy.unlisted.long": "Không hiện trên bảng tin máy chủ", + "privacy.unlisted.long": "Hiển thị với mọi người, nhưng không hiện trong tính năng khám phá", "privacy.unlisted.short": "Hạn chế", "refresh": "Làm mới", "regeneration_indicator.label": "Đang tải…", "regeneration_indicator.sublabel": "Bảng tin của bạn đang được cập nhật!", "relative_time.days": "{number} ngày", - "relative_time.full.days": "{number, plural, other {# ngày}} trước", - "relative_time.full.hours": "{number, plural, other {# giờ}} trước", + "relative_time.full.days": "{number, plural, other {# ngày}}", + "relative_time.full.hours": "{number, plural, other {# giờ}}", "relative_time.full.just_now": "vừa xong", - "relative_time.full.minutes": "{number, plural, other {# phút}} trước", - "relative_time.full.seconds": "{number, plural, other {# giây}} trước", + "relative_time.full.minutes": "{number, plural, other {# phút}}", + "relative_time.full.seconds": "{number, plural, other {#s}}", "relative_time.hours": "{number} giờ", "relative_time.just_now": "vừa xong", "relative_time.minutes": "{number} phút", "relative_time.seconds": "{number}s", "relative_time.today": "hôm nay", "reply_indicator.cancel": "Hủy bỏ", + "report.block": "Chặn", + "report.block_explanation": "Bạn sẽ không thấy tút của họ nữa. Họ cũng không thể theo dõi hoặc thấy tút của bạn. Họ sẽ biết là họ đã bị chặn.", "report.categories.other": "Khác", "report.categories.spam": "Spam", "report.categories.violation": "Vi phạm quy tắc máy chủ", + "report.category.subtitle": "Chọn mục gần khớp nhất", + "report.category.title": "Nói với họ chuyện gì xảy ra với {type}", + "report.category.title_account": "người dùng", + "report.category.title_status": "tút", + "report.close": "Xong", + "report.comment.title": "Bạn nghĩ chúng tôi nên biết thêm điều gì?", "report.forward": "Chuyển đến {target}", "report.forward_hint": "Người này thuộc máy chủ khác. Gửi một báo cáo ẩn danh tới máy chủ đó?", - "report.hint": "Hãy cho quản trị viên biết lý do vì sao bạn báo cáo người này:", + "report.mute": "Ẩn", + "report.mute_explanation": "Bạn sẽ không thấy tút của họ nữa. Họ cũng không thể theo dõi hoặc thấy tút của bạn. Họ sẽ không biết là họ đã bị bạn ẩn.", + "report.next": "Tiếp theo", "report.placeholder": "Bổ sung thêm", + "report.reasons.dislike": "Tôi không thích nó", + "report.reasons.dislike_description": "Đó không phải là thứ gì mà bạn muốn thấy", + "report.reasons.other": "Một lý do khác", + "report.reasons.other_description": "Vấn đề không nằm trong những mục trên", + "report.reasons.spam": "Đây là spam", + "report.reasons.spam_description": "Liên kết độc hại, tạo tương tác giả hoặc trả lời lặp đi lặp lại", + "report.reasons.violation": "Vi phạm quy tắc máy chủ", + "report.reasons.violation_description": "Bạn nhận thấy nó vi phạm quy tắc máy chủ", + "report.rules.subtitle": "Chọn tất cả những gì phù hợp", + "report.rules.title": "Vi phạm quy tắc nào?", + "report.statuses.subtitle": "Chọn tất cả những gì phù hợp", + "report.statuses.title": "Bạn muốn gửi tút nào kèm báo cáo này?", "report.submit": "Gửi đi", "report.target": "Báo cáo {target}", + "report.thanks.take_action": "Đây là một số cách để kiểm soát thứ bạn nhìn thấy trên Mastodon:", + "report.thanks.take_action_actionable": "Trong lúc chờ chúng tôi xem xét, bạn có thể áp dụng hành động với @{name}:", + "report.thanks.title": "Không muốn xem thứ này?", + "report.thanks.title_actionable": "Cảm ơn đã báo cáo, chúng tôi sẽ xem xét kỹ.", + "report.unfollow": "Ngưng theo dõi @{name}", + "report.unfollow_explanation": "Bạn đang theo dõi người này. Để không thấy tút của họ trong bảng tin nữa, hãy ngưng theo dõi.", "search.placeholder": "Tìm kiếm", "search_popout.search_format": "Gợi ý", - "search_popout.tips.full_text": "Nội dung trả về bao gồm những tút mà bạn đã viết, thích, chia sẻ hoặc những tút có nhắc đến bạn. Bạn cũng có thể tìm địa chỉ người dùng, tên hiển thị và hashtag.", + "search_popout.tips.full_text": "Nội dung trả về bao gồm những tút mà bạn đã viết, thích, đăng lại hoặc những tút có nhắc đến bạn. Bạn cũng có thể tìm địa chỉ người dùng, tên hiển thị và hashtag.", "search_popout.tips.hashtag": "hashtag", "search_popout.tips.status": "tút", "search_popout.tips.text": "Nội dung trả về là tên người dùng, tên hiển thị và hashtag", "search_popout.tips.user": "người dùng", "search_results.accounts": "Người dùng", + "search_results.all": "Toàn bộ", "search_results.hashtags": "Hashtags", + "search_results.nothing_found": "Không tìm thấy kết quả trùng khớp", "search_results.statuses": "Tút", "search_results.statuses_fts_disabled": "Máy chủ của bạn không bật tính năng tìm kiếm tút.", "search_results.total": "{count, number} {count, plural, one {kết quả} other {kết quả}}", @@ -403,12 +443,12 @@ "status.admin_status": "Mở tút này trong giao diện quản trị", "status.block": "Chặn @{name}", "status.bookmark": "Lưu", - "status.cancel_reblog_private": "Hủy chia sẻ", - "status.cannot_reblog": "Không thể chia sẻ tút này", + "status.cancel_reblog_private": "Hủy đăng lại", + "status.cannot_reblog": "Không thể đăng lại tút này", "status.copy": "Sao chép URL", "status.delete": "Xóa", "status.detailed_status": "Xem chi tiết thêm", - "status.direct": "Nhắn tin @{name}", + "status.direct": "Nhắn riêng @{name}", "status.edit": "Sửa", "status.edited": "Đã sửa {date}", "status.edited_x_times": "Đã sửa {count, plural, other {{count} lần}}", @@ -417,20 +457,20 @@ "status.filtered": "Bộ lọc", "status.history.created": "{name} tạo lúc {date}", "status.history.edited": "{name} sửa lúc {date}", - "status.load_more": "Xem thêm", + "status.load_more": "Tải thêm", "status.media_hidden": "Đã ẩn", "status.mention": "Nhắc đến @{name}", "status.more": "Thêm", "status.mute": "Ẩn @{name}", "status.mute_conversation": "Không quan tâm nữa", "status.open": "Xem nguyên văn", - "status.pin": "Ghim lên trang cá nhân", + "status.pin": "Ghim lên hồ sơ", "status.pinned": "Tút đã ghim", "status.read_more": "Đọc tiếp", - "status.reblog": "Chia sẻ", - "status.reblog_private": "Chia sẻ (Riêng tư)", - "status.reblogged_by": "{name} chia sẻ", - "status.reblogs.empty": "Tút này chưa có ai chia sẻ. Nếu có, nó sẽ hiển thị ở đây.", + "status.reblog": "Đăng lại", + "status.reblog_private": "Đăng lại (Riêng tư)", + "status.reblogged_by": "{name} đăng lại", + "status.reblogs.empty": "Tút này chưa có ai đăng lại. Nếu có, nó sẽ hiển thị ở đây.", "status.redraft": "Xóa và viết lại", "status.remove_bookmark": "Bỏ lưu", "status.reply": "Trả lời", @@ -442,10 +482,10 @@ "status.show_less_all": "Thu gọn toàn bộ", "status.show_more": "Xem thêm", "status.show_more_all": "Hiển thị tất cả", - "status.show_thread": "Toàn chủ đề", + "status.show_thread": "Xem chuỗi tút này", "status.uncached_media_warning": "Uncached", "status.unmute_conversation": "Quan tâm", - "status.unpin": "Bỏ ghim trên trang cá nhân", + "status.unpin": "Bỏ ghim trên hồ sơ", "suggestions.dismiss": "Tắt đề xuất", "suggestions.header": "Có thể bạn quan tâm…", "tabs_bar.federated_timeline": "Thế giới", @@ -474,6 +514,7 @@ "upload_error.poll": "Không cho phép đính kèm tập tin.", "upload_form.audio_description": "Mô tả cho người mất thính giác", "upload_form.description": "Mô tả cho người khiếm thị", + "upload_form.description_missing": "Chưa thêm mô tả", "upload_form.edit": "Biên tập", "upload_form.thumbnail": "Đổi ảnh thumbnail", "upload_form.undo": "Xóa bỏ", diff --git a/app/javascript/mastodon/locales/whitelist_kmr.json b/app/javascript/mastodon/locales/whitelist_ckb.json similarity index 100% rename from app/javascript/mastodon/locales/whitelist_kmr.json rename to app/javascript/mastodon/locales/whitelist_ckb.json diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index f34772abe..a6ddaab09 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -18,12 +18,12 @@ "account.followers": "ⵉⵎⴹⴼⴰⵕⵏ", "account.followers.empty": "No one follows this user yet.", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", + "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "ⴹⴼⵕⵏ ⴽⵯⵏ", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", - "account.last_status": "Last active", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "ⴰⵙⵏⵖⵎⵉⵙ", @@ -32,7 +32,6 @@ "account.mute": "ⵥⵥⵉⵥⵏ @{name}", "account.mute_notifications": "ⵥⵥⵉⵥⵏ ⵜⵉⵏⵖⵎⵉⵙⵉⵏ ⵙⴳ @{name}", "account.muted": "ⵉⵜⵜⵓⵥⵉⵥⵏ", - "account.never_active": "ⵓⵙⴰⵔ", "account.posts": "Toots", "account.posts_with_replies": "Toots and replies", "account.report": "Report @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "Unblock @{name}", "account.unblock_domain": "Unblock domain {domain}", + "account.unblock_short": "Unblock", "account.unendorse": "Don't feature on profile", "account.unfollow": "ⴽⴽⵙ ⴰⴹⴼⴼⵓⵕ", "account.unmute": "Unmute @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", + "account.unmute_short": "Unmute", "account_note.placeholder": "Click to add a note", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "ⵉⵏⵙⵙⵎⵔⵙⵏ ⵜⵜⵓⴳⴷⵍⵏⵉⵏ", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.conversations": "Conversations", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "ⵜⵓⴼⵓⵜⵉⵏ", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "ⵖⴰⵙ ⴰⴷⵖⴰⵔⴰⵏ", "community.column_settings.media_only": "ⵖⴰⵙ ⵉⵙⵏⵖⵎⵉⵙⵏ", "community.column_settings.remote_only": "Remote only", - "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.", "compose_form.direct_message_warning_learn_more": "ⵙⵙⵏ ⵓⴳⴳⴰⵔ", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "ⵉⵜⵜⵓⵔⴳⵍ", @@ -165,8 +166,9 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "There are no blocked domains yet.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", "errors.unexpected_crash.report_issue": "Report issue", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "ⵜⵓⵣⵉⵏⵉⵏ ⵜⵓⵙⵔⵉⴷⵉⵏ", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "ⵙⵏⴼⵍ ⵉⴼⵔⵙ", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Favourites", "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "ⵜⵓⵜⵔⴰⵡⵉⵏ ⵏ ⵓⴹⴼⴰⵕ", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "ⵉⴹⴼⴼⴰⵔ ⴽ {name}", "notification.follow_request": "{name} has requested to follow you", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "ⵙⴼⴹ ⵜⵉⵏⵖⵎⵉⵙⵉⵏ", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.filter_bar.advanced": "Display all categories", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "ⵙⵙⵉⵜⵢ ⵉⴷⵣ", "privacy.change": "Adjust status privacy", "privacy.direct.long": "Visible for mentioned users only", - "privacy.direct.short": "ⵜⵓⵔⴷⵉⵜ", + "privacy.direct.short": "Direct", "privacy.private.long": "Visible for followers only", "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all, shown in public timelines", + "privacy.public.long": "Visible for all", "privacy.public.short": "ⵜⴰⴳⴷⵓⴷⴰⵏⵜ", - "privacy.unlisted.long": "Visible for all, but not in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "Refresh", "regeneration_indicator.label": "ⴰⵣⴷⴰⵎ…", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}ⵙⵏ", "relative_time.today": "ⴰⵙⵙⴰ", "reply_indicator.cancel": "ⵙⵔ", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "ⵙⵙⵉⴼⴹ ⵉ {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", - "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", - "report.placeholder": "Additional comments", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", + "report.placeholder": "Type or paste additional comments", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "ⴰⵣⵏ", "report.target": "Report {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "ⵔⵣⵓ", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -395,7 +433,9 @@ "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", "search_popout.tips.user": "user", "search_results.accounts": "ⵎⵉⴷⴷⵏ", + "search_results.all": "All", "search_results.hashtags": "ⵀⴰⵛⵟⴰⴳ", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", @@ -474,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "ⵙⵏⴼⵍ", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "ⴽⴽⵙ", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 56dca56a6..b38cbc278 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -1,6 +1,6 @@ { "account.account_note_header": "备注", - "account.add_or_remove_from_list": "从列表中添加或删除", + "account.add_or_remove_from_list": "从列表中添加或移除", "account.badges.bot": "机器人", "account.badges.group": "群组", "account.block": "屏蔽 @{name}", @@ -13,44 +13,45 @@ "account.domain_blocked": "域名已屏蔽", "account.edit_profile": "修改个人资料", "account.enable_notifications": "当 @{name} 发嘟时通知我", - "account.endorse": "在个人资料中推荐此用户", + "account.endorse": "推荐在个人页上", "account.follow": "关注", "account.followers": "关注者", "account.followers.empty": "目前无人关注此用户。", "account.followers_counter": "被 {counter} 人关注", + "account.following": "正在关注", "account.following_counter": "正在关注 {counter} 人", "account.follows.empty": "此用户目前尚未关注任何人。", "account.follows_you": "关注了你", - "account.hide_reblogs": "隐藏来自 @{name} 的转嘟", + "account.hide_reblogs": "隐藏来自 @{name} 的转贴", "account.joined": "加入于 {date}", - "account.last_status": "最近活动", "account.link_verified_on": "此链接的所有权已在 {date} 检查", - "account.locked_info": "此账户已锁嘟。账户的主人会手动审核关注者。", + "account.locked_info": "此账户已锁嘟。账户所有者会手动审核关注者。", "account.media": "媒体", "account.mention": "提及 @{name}", "account.moved_to": "{name} 已经迁移到:", "account.mute": "隐藏 @{name}", "account.mute_notifications": "隐藏来自 @{name} 的通知", "account.muted": "已隐藏", - "account.never_active": "从未活跃", - "account.posts": "嘟文", - "account.posts_with_replies": "嘟文和回复", + "account.posts": "帖子", + "account.posts_with_replies": "帖子和回复", "account.report": "举报 @{name}", "account.requested": "正在等待对方同意。点击以取消发送关注请求", "account.share": "分享 @{name} 的个人资料", "account.show_reblogs": "显示来自 @{name} 的转嘟", "account.statuses_counter": "{counter} 条嘟文", - "account.unblock": "解除屏蔽 @{name}", + "account.unblock": "取消屏蔽 @{name}", "account.unblock_domain": "不再屏蔽 {domain} 实例", + "account.unblock_short": "取消屏蔽", "account.unendorse": "不在个人资料中推荐此用户", "account.unfollow": "取消关注", "account.unmute": "不再隐藏 @{name}", "account.unmute_notifications": "不再隐藏来自 @{name} 的通知", + "account.unmute_short": "取消静音", "account_note.placeholder": "点击添加备注", "admin.dashboard.daily_retention": "注册后用户留存率(按日计算)", "admin.dashboard.monthly_retention": "注册后用户留存率(按月计算)", "admin.dashboard.retention.average": "平均", - "admin.dashboard.retention.cohort": "注册月", + "admin.dashboard.retention.cohort": "注册月份", "admin.dashboard.retention.cohort_size": "新用户", "alert.rate_limited.message": "请在{retry_time, time, medium}后重试。", "alert.rate_limited.title": "频率受限", @@ -69,16 +70,16 @@ "column.blocks": "已屏蔽的用户", "column.bookmarks": "书签", "column.community": "本站时间轴", - "column.direct": "私信", + "column.conversations": "对话", "column.directory": "浏览用户资料", - "column.domain_blocks": "已屏蔽的网站", - "column.favourites": "喜欢", + "column.domain_blocks": "已屏蔽的域名", + "column.favourites": "收藏", "column.follow_requests": "关注请求", "column.home": "主页", "column.lists": "列表", "column.mutes": "已隐藏的用户", "column.notifications": "通知", - "column.pins": "置顶嘟文", + "column.pins": "置顶帖子", "column.public": "跨站公共时间轴", "column_back_button.label": "返回", "column_header.hide_settings": "隐藏设置", @@ -88,30 +89,30 @@ "column_header.show_settings": "显示设置", "column_header.unpin": "取消置顶", "column_subheading.settings": "设置", - "community.column_settings.local_only": "只显示本站", - "community.column_settings.media_only": "仅媒体", - "community.column_settings.remote_only": "只显示外站", - "compose_form.direct_message_warning": "这条嘟文仅对所有被提及的用户可见。", - "compose_form.direct_message_warning_learn_more": "了解详情", - "compose_form.hashtag_warning": "这条嘟文被设置为“不公开”,因此它不会出现在任何话题标签的列表下。只有公开的嘟文才能通过话题标签进行搜索。", - "compose_form.lock_disclaimer": "你的帐户没有{locked}。任何人都可以在关注你后立即查看仅关注者可见的嘟文。", + "community.column_settings.local_only": "仅限本站", + "community.column_settings.media_only": "仅限媒体", + "community.column_settings.remote_only": "仅限外部", + "compose_form.direct_message_warning_learn_more": "了解更多", + "compose_form.encryption_warning": "Mastodon上的帖子不是端到端加密的。不要在Mastodon上分享敏感信息。", + "compose_form.hashtag_warning": "此帖子被设置为“不公开”,因此它不会出现在任何话题标签的列表下。只有公开帖子才能通过话题标签进行搜索。", + "compose_form.lock_disclaimer": "你的账号没有{locked}。任何人在关注你后都能立即查看仅关注者可见的帖子。", "compose_form.lock_disclaimer.lock": "开启保护", - "compose_form.placeholder": "在想啥?", + "compose_form.placeholder": "在想些什么?", "compose_form.poll.add_option": "添加选项", "compose_form.poll.duration": "投票持续时间", "compose_form.poll.option_placeholder": "选项 {number}", - "compose_form.poll.remove_option": "移除这个选项", + "compose_form.poll.remove_option": "移除此选项", "compose_form.poll.switch_to_multiple": "将投票改为多选", "compose_form.poll.switch_to_single": "将投票改为单选", "compose_form.publish": "嘟嘟", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "保存更改", - "compose_form.sensitive.hide": "标记媒体为敏感内容", + "compose_form.sensitive.hide": "将媒体标记为敏感内容", "compose_form.sensitive.marked": "媒体已被标记为敏感内容", "compose_form.sensitive.unmarked": "媒体未被标记为敏感内容", - "compose_form.spoiler.marked": "正文已被折叠在警告信息之后", - "compose_form.spoiler.unmarked": "正文未被折叠", - "compose_form.spoiler_placeholder": "折叠部分的警告消息", + "compose_form.spoiler.marked": "移除内容警告", + "compose_form.spoiler.unmarked": "添加内容警告", + "compose_form.spoiler_placeholder": "写下你的警告", "confirmation_modal.cancel": "取消", "confirmations.block.block_and_report": "屏蔽与举报", "confirmations.block.confirm": "屏蔽", @@ -119,10 +120,10 @@ "confirmations.delete.confirm": "删除", "confirmations.delete.message": "你确定要删除这条嘟文吗?", "confirmations.delete_list.confirm": "删除", - "confirmations.delete_list.message": "你确定要永久删除这个列表吗?", + "confirmations.delete_list.message": "你确定要永久删除此列表吗?", "confirmations.discard_edit_media.confirm": "丢弃", "confirmations.discard_edit_media.message": "您还有未保存的媒体描述或预览修改,仍然丢弃它们吗?", - "confirmations.domain_block.confirm": "隐藏整个网站的内容", + "confirmations.domain_block.confirm": "屏蔽整个域名", "confirmations.domain_block.message": "你真的确定要屏蔽所有来自 {domain} 的内容吗?多数情况下,屏蔽或隐藏几个特定的用户就已经足够了。来自该网站的内容将不再出现在你的任何公共时间轴或通知列表里。来自该网站的关注者将会被移除。", "confirmations.logout.confirm": "登出", "confirmations.logout.message": "你确定要登出吗?", @@ -143,15 +144,15 @@ "directory.local": "仅来自 {domain}", "directory.new_arrivals": "新来者", "directory.recently_active": "最近活跃", - "embed.instructions": "要在你的网站上嵌入此嘟文,请复制以下代码。", + "embed.instructions": "复制以下代码在你的网站上嵌入此文章,", "embed.preview": "它会像这样显示出来:", "emoji_button.activity": "活动", "emoji_button.custom": "自定义", "emoji_button.flags": "旗帜", "emoji_button.food": "食物和饮料", - "emoji_button.label": "加入表情符号", + "emoji_button.label": "插入表情符号", "emoji_button.nature": "自然", - "emoji_button.not_found": "木有这个表情符号!(╯°□°)╯︵ ┻━┻", + "emoji_button.not_found": "没有找到匹配的表情符号", "emoji_button.objects": "物体", "emoji_button.people": "人物", "emoji_button.recent": "常用", @@ -159,18 +160,19 @@ "emoji_button.search_results": "搜索结果", "emoji_button.symbols": "符号", "emoji_button.travel": "旅行和地点", - "empty_column.account_suspended": "账户被封禁", - "empty_column.account_timeline": "这里没有嘟文!", + "empty_column.account_suspended": "账户已停用", + "empty_column.account_timeline": "这里没有帖子!", "empty_column.account_unavailable": "个人资料不可用", - "empty_column.blocks": "你目前没有屏蔽任何用户。", - "empty_column.bookmarked_statuses": "你还没有给任何嘟文添加过书签。在你添加书签后,嘟文就会显示在这里。", - "empty_column.community": "本站时间轴暂时没有内容,快写点什么让它动起来吧!", - "empty_column.direct": "你还没有使用过私信。当你发出或者收到私信时,它会在这里显示。", + "empty_column.blocks": "你还未屏蔽任何用户。", + "empty_column.bookmarked_statuses": "你还未将任何帖子加入书签。在你添加书签后,帖子将显示在此。", + "empty_column.community": "本站时间轴一片空白,快写点什么让它动起来吧!", + "empty_column.conversations": "一旦您发送或接收了一个只对其中提到的人可见的帖子,它就会显示在这里。", "empty_column.domain_blocks": "目前没有被隐藏的站点。", - "empty_column.favourited_statuses": "你还没有喜欢过任何嘟文。喜欢过的嘟文会显示在这里。", - "empty_column.favourites": "没有人喜欢过这条嘟文。如果有人喜欢了,就会显示在这里。", + "empty_column.explore_statuses": "目前没有热门话题,稍后再来看看吧!", + "empty_column.favourited_statuses": "你还未喜欢过任何帖子。当你喜欢帖子时,它将显示在此。", + "empty_column.favourites": "没有人喜欢过这条嘟文。如果有人喜欢会显示在此。", "empty_column.follow_recommendations": "似乎无法为你生成任何建议。你可以尝试使用搜索寻找你可能知道的人或探索热门标签。", - "empty_column.follow_requests": "你没有收到新的关注请求。收到了之后就会显示在这里。", + "empty_column.follow_requests": "你没有收到新的关注请求。收到后将显示在此。", "empty_column.hashtag": "这个话题标签下暂时没有内容。", "empty_column.home": "你的主页时间线是空的!快去关注更多人吧。 {suggestions}", "empty_column.home.suggestions": "查看一些建议", @@ -178,19 +180,25 @@ "empty_column.lists": "你还没有创建过列表。你创建的列表会在这里显示。", "empty_column.mutes": "你没有隐藏任何用户。", "empty_column.notifications": "你还没有收到过任何通知,快和其他用户互动吧。", - "empty_column.public": "这里什么都没有!写一些公开的嘟文,或者关注其他服务器的用户后,这里就会有嘟文出现了", + "empty_column.public": "这里什么都没有!写一些公开帖子,或者关注其他服务器的用户后,这里就会有嘟文出现了", "error.unexpected_crash.explanation": "此页面无法正确显示,这可能是因为我们的代码中有错误,也可能是因为浏览器兼容问题。", "error.unexpected_crash.explanation_addons": "此页面无法正确显示,这个错误很可能是由浏览器附加组件或自动翻译工具造成的。", "error.unexpected_crash.next_steps": "刷新一下页面试试。如果没用,你可以换个浏览器或者用本地应用。", "error.unexpected_crash.next_steps_addons": "请尝试禁用它们并刷新页面。如果没有帮助,你仍可以尝试使用其他浏览器或原生应用来使用 Mastodon。", "errors.unexpected_crash.copy_stacktrace": "把堆栈跟踪信息复制到剪贴板", "errors.unexpected_crash.report_issue": "报告问题", + "explore.search_results": "搜索结果", + "explore.suggested_follows": "为你推荐", + "explore.title": "探索", + "explore.trending_links": "最新消息", + "explore.trending_statuses": "帖子", + "explore.trending_tags": "话题标签", "follow_recommendations.done": "完成", "follow_recommendations.heading": "关注你感兴趣的用户!这里有一些推荐。", - "follow_recommendations.lead": "你关注的人的嘟文将按时间顺序在你的主页上显示。 别担心,你可以随时取消关注!", - "follow_request.authorize": "同意", + "follow_recommendations.lead": "你关注的人的帖子将按时间顺序显示在你的主页。 别担心,你可以随时取消关注!", + "follow_request.authorize": "授权", "follow_request.reject": "拒绝", - "follow_requests.unlocked_explanation": "虽说你没有锁嘟,但是 {domain} 的工作人员觉得你可能想手工审核关注请求。", + "follow_requests.unlocked_explanation": "虽说你没有锁嘟,但是 {domain} 的工作人员觉得你可能想手工审核这些账号的关注请求。", "generic.saved": "已保存", "getting_started.developers": "开发", "getting_started.directory": "用户目录", @@ -198,7 +206,7 @@ "getting_started.heading": "开始使用", "getting_started.invite": "邀请用户", "getting_started.open_source_notice": "Mastodon 是开源软件。欢迎前往 GitHub({github})贡献代码或反馈问题。", - "getting_started.security": "帐户安全", + "getting_started.security": "账号设置", "getting_started.terms": "使用条款", "hashtag.column_header.tag_mode.all": "以及 {additional}", "hashtag.column_header.tag_mode.any": "或是 {additional}", @@ -207,7 +215,7 @@ "hashtag.column_settings.select.placeholder": "输入话题标签…", "hashtag.column_settings.tag_mode.all": "全部", "hashtag.column_settings.tag_mode.any": "任一", - "hashtag.column_settings.tag_mode.none": "全都不要", + "hashtag.column_settings.tag_mode.none": "无一", "hashtag.column_settings.tag_toggle": "在此栏加入额外的标签", "home.column_settings.basic": "基本设置", "home.column_settings.show_reblogs": "显示转嘟", @@ -219,37 +227,37 @@ "intervals.full.minutes": "{number} 分钟", "keyboard_shortcuts.back": "返回上一页", "keyboard_shortcuts.blocked": "打开被屏蔽用户列表", - "keyboard_shortcuts.boost": "转嘟", - "keyboard_shortcuts.column": "选择某一栏中的嘟文", - "keyboard_shortcuts.compose": "选择嘟文撰写框", + "keyboard_shortcuts.boost": "转贴", + "keyboard_shortcuts.column": "选择某栏", + "keyboard_shortcuts.compose": "选择输入框", + "keyboard_shortcuts.conversations": "打开对话栏", "keyboard_shortcuts.description": "说明", - "keyboard_shortcuts.direct": "打开私信栏", "keyboard_shortcuts.down": "在列表中让光标下移", - "keyboard_shortcuts.enter": "展开嘟文", - "keyboard_shortcuts.favourite": "喜欢嘟文", - "keyboard_shortcuts.favourites": "打开喜欢的嘟文列表", + "keyboard_shortcuts.enter": "展开帖子", + "keyboard_shortcuts.favourite": "喜欢帖子", + "keyboard_shortcuts.favourites": "打开喜欢的帖子列表", "keyboard_shortcuts.federated": "打开跨站时间轴", "keyboard_shortcuts.heading": "快捷键列表", "keyboard_shortcuts.home": "打开主页时间轴", "keyboard_shortcuts.hotkey": "快捷键", "keyboard_shortcuts.legend": "显示此列表", "keyboard_shortcuts.local": "打开本站时间轴", - "keyboard_shortcuts.mention": "提及嘟文作者", + "keyboard_shortcuts.mention": "提及作者", "keyboard_shortcuts.muted": "打开已隐藏用户列表", "keyboard_shortcuts.my_profile": "打开你的个人资料", "keyboard_shortcuts.notifications": "打开通知栏", "keyboard_shortcuts.open_media": "打开媒体", - "keyboard_shortcuts.pinned": "打开置顶嘟文列表", + "keyboard_shortcuts.pinned": "打开置顶帖子列表", "keyboard_shortcuts.profile": "打开作者的个人资料", - "keyboard_shortcuts.reply": "回复嘟文", + "keyboard_shortcuts.reply": "回复帖子", "keyboard_shortcuts.requests": "打开关注请求列表", "keyboard_shortcuts.search": "选择搜索框", "keyboard_shortcuts.spoilers": "显示或隐藏被折叠的正文", "keyboard_shortcuts.start": "打开“开始使用”栏", "keyboard_shortcuts.toggle_hidden": "显示或隐藏被折叠的正文", "keyboard_shortcuts.toggle_sensitivity": "显示/隐藏媒体", - "keyboard_shortcuts.toot": "发送新嘟文", - "keyboard_shortcuts.unfocus": "取消输入", + "keyboard_shortcuts.toot": "发布新帖子", + "keyboard_shortcuts.unfocus": "取消输入/搜索", "keyboard_shortcuts.up": "在列表中让光标上移", "lightbox.close": "关闭", "lightbox.compress": "返回图片全览", @@ -265,71 +273,73 @@ "lists.new.title_placeholder": "新列表的标题", "lists.replies_policy.followed": "任何被关注的用户", "lists.replies_policy.list": "列表成员", - "lists.replies_policy.none": "没有人", + "lists.replies_policy.none": "没人", "lists.replies_policy.title": "显示回复给:", "lists.search": "搜索你关注的人", "lists.subheading": "你的列表", "load_pending": "{count} 项", - "loading_indicator.label": "加载中……", - "media_gallery.toggle_visible": "隐藏 {number} 张图片", + "loading_indicator.label": "加载中…", + "media_gallery.toggle_visible": "隐藏图片", "missing_indicator.label": "找不到内容", "missing_indicator.sublabel": "无法找到此资源", - "mute_modal.duration": "持续期间", + "mute_modal.duration": "持续时长", "mute_modal.hide_notifications": "同时隐藏来自这个用户的通知?", "mute_modal.indefinite": "无期限", "navigation_bar.apps": "移动应用", "navigation_bar.blocks": "已屏蔽的用户", "navigation_bar.bookmarks": "书签", "navigation_bar.community_timeline": "本站时间轴", - "navigation_bar.compose": "撰写新嘟文", - "navigation_bar.direct": "私信", + "navigation_bar.compose": "撰写新帖子", "navigation_bar.discover": "发现", - "navigation_bar.domain_blocks": "已屏蔽的网站", + "navigation_bar.domain_blocks": "已屏蔽的域名", "navigation_bar.edit_profile": "修改个人资料", + "navigation_bar.explore": "探索", "navigation_bar.favourites": "喜欢", "navigation_bar.filters": "隐藏关键词", "navigation_bar.follow_requests": "关注请求", "navigation_bar.follows_and_followers": "关注管理", - "navigation_bar.info": "关于本站", + "navigation_bar.info": "关于此服务", "navigation_bar.keyboard_shortcuts": "快捷键列表", "navigation_bar.lists": "列表", "navigation_bar.logout": "登出", "navigation_bar.mutes": "已隐藏的用户", "navigation_bar.personal": "个人", - "navigation_bar.pins": "置顶嘟文", + "navigation_bar.pins": "置顶帖子", "navigation_bar.preferences": "首选项", "navigation_bar.public_timeline": "跨站公共时间轴", - "navigation_bar.security": "安全", - "notification.favourite": "{name} 喜欢了你的嘟文", + "navigation_bar.security": "安全性", + "notification.admin.sign_up": "{name} 已注册", + "notification.favourite": "{name} 喜欢了你的帖子", "notification.follow": "{name} 开始关注你", "notification.follow_request": "{name} 向你发送了关注请求", "notification.mention": "{name} 提及了你", "notification.own_poll": "你的投票已经结束", "notification.poll": "你参与的一个投票已经结束", - "notification.reblog": "{name} 转嘟了你的嘟文", - "notification.status": "{name} 刚刚发嘟", - "notification.update": "{name} 编辑了嘟文", + "notification.reblog": "{name} 转贴了你的帖子", + "notification.status": "{name} 刚刚发帖", + "notification.update": "{name} 编辑了帖子", "notifications.clear": "清空通知列表", "notifications.clear_confirmation": "你确定要永久清空通知列表吗?", + "notifications.column_settings.admin.sign_up": "新注册:", "notifications.column_settings.alert": "桌面通知", - "notifications.column_settings.favourite": "当你的嘟文被喜欢时:", + "notifications.column_settings.favourite": "喜欢:", "notifications.column_settings.filter_bar.advanced": "显示所有类别", "notifications.column_settings.filter_bar.category": "快速过滤栏", "notifications.column_settings.filter_bar.show_bar": "显示过滤栏", - "notifications.column_settings.follow": "当有人关注你时:", - "notifications.column_settings.follow_request": "新的关注请求:", - "notifications.column_settings.mention": "当有人在嘟文中提及你时:", + "notifications.column_settings.follow": "新关注者:", + "notifications.column_settings.follow_request": "新关注请求:", + "notifications.column_settings.mention": "提及:", "notifications.column_settings.poll": "投票结果:", "notifications.column_settings.push": "推送通知", - "notifications.column_settings.reblog": "当有人转嘟了你的嘟文时:", + "notifications.column_settings.reblog": "转贴:", "notifications.column_settings.show": "在通知栏显示", - "notifications.column_settings.sound": "播放音效", - "notifications.column_settings.status": "新嘟文:", + "notifications.column_settings.sound": "播放声音", + "notifications.column_settings.status": "新贴:", "notifications.column_settings.unread_notifications.category": "未读通知", "notifications.column_settings.unread_notifications.highlight": "高亮显示未读通知", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.update": "编辑:", "notifications.filter.all": "全部", - "notifications.filter.boosts": "转嘟", + "notifications.filter.boosts": "转贴", "notifications.filter.favourites": "喜欢", "notifications.filter.follows": "关注", "notifications.filter.mentions": "提及", @@ -347,68 +357,98 @@ "picture_in_picture.restore": "恢复", "poll.closed": "已关闭", "poll.refresh": "刷新", - "poll.total_people": "{count}人", + "poll.total_people": "{count} 人", "poll.total_votes": "{count} 票", "poll.vote": "投票", "poll.voted": "你已经对这个答案投过票了", "poll.votes": "{votes, plural, one {# 票} other {# 票}}", "poll_button.add_poll": "发起投票", "poll_button.remove_poll": "移除投票", - "privacy.change": "设置嘟文的可见范围", + "privacy.change": "设置帖子的可见范围", "privacy.direct.long": "只有被提及的用户能看到", - "privacy.direct.short": "私信", - "privacy.private.long": "只有关注你的用户能看到", + "privacy.direct.short": "仅我提到的人", + "privacy.private.long": "仅关注者可见", "privacy.private.short": "仅关注者", - "privacy.public.long": "所有人可见,并会出现在公共时间轴上", + "privacy.public.long": "所有人可见", "privacy.public.short": "公开", - "privacy.unlisted.long": "所有人可见,但不会出现在公共时间轴上", + "privacy.unlisted.long": "对所有人都可见,但关闭发现功能", "privacy.unlisted.short": "不公开", "refresh": "刷新", - "regeneration_indicator.label": "加载中……", + "regeneration_indicator.label": "加载中…", "regeneration_indicator.sublabel": "你的主页动态正在准备中!", - "relative_time.days": "{number}天", + "relative_time.days": "{number} 天", "relative_time.full.days": "{number, plural, one {# 天} other {# 天}}前", "relative_time.full.hours": "{number, plural, one {# 小时} other {# 小时}}前", "relative_time.full.just_now": "刚刚", "relative_time.full.minutes": "{number, plural, one {# 分钟} other {# 分钟}}前", "relative_time.full.seconds": "{number, plural, one {# 秒} other {# 秒}}前", - "relative_time.hours": "{number}时", + "relative_time.hours": "{number} 时", "relative_time.just_now": "刚刚", - "relative_time.minutes": "{number}分", - "relative_time.seconds": "{number}秒", + "relative_time.minutes": "{number} 分", + "relative_time.seconds": "{number} 秒", "relative_time.today": "今天", "reply_indicator.cancel": "取消", + "report.block": "屏蔽", + "report.block_explanation": "你将看不到他们的帖子。他们也将无法看到你的帖子或关注你。他们将能够判断他们被屏蔽了。", "report.categories.other": "其他", "report.categories.spam": "垃圾信息", "report.categories.violation": "内容违反一条或多条服务器规则", + "report.category.subtitle": "选择最佳匹配", + "report.category.title": "告诉我们这个 {type} 的情况", + "report.category.title_account": "个人资料", + "report.category.title_status": "帖子", + "report.close": "完成", + "report.comment.title": "还有什么你认为我们应该知道的吗?", "report.forward": "转发举报至 {target}", "report.forward_hint": "这名用户来自另一个服务器。是否要向那个服务器发送一条匿名的举报?", - "report.hint": "举报将会发送给你所在服务器的监察员。你可以在下面填写举报该用户的理由:", + "report.mute": "静音", + "report.mute_explanation": "你将不会看到他们的嘟文。他们仍然可以关注你并看到你的帖子,但他们不会知道他们被静音了。", + "report.next": "下一步", "report.placeholder": "备注", + "report.reasons.dislike": "我不喜欢它", + "report.reasons.dislike_description": "这不是你想看到的东西", + "report.reasons.other": "其他原因", + "report.reasons.other_description": "该问题不符合其他类别", + "report.reasons.spam": "它是垃圾信息", + "report.reasons.spam_description": "恶意链接,虚假互动和重复回复", + "report.reasons.violation": "它违反了服务器规则", + "report.reasons.violation_description": "你清楚它违反了特定的规则", + "report.rules.subtitle": "选择所有适用选项", + "report.rules.title": "哪些规则被违反了?", + "report.statuses.subtitle": "选择所有适用选项", + "report.statuses.title": "有任何帖子可以支持此报告吗?", "report.submit": "提交", "report.target": "举报 {target}", + "report.thanks.take_action": "以下是您控制您在 Mastodon 上能看到哪些内容的选项:", + "report.thanks.take_action_actionable": "在我们审阅这个问题时,你可以对 @{name} 采取行动", + "report.thanks.title": "不想看到这个内容?", + "report.thanks.title_actionable": "感谢提交举报,我们将会进行处理。", + "report.unfollow": "取消关注 @{name}", + "report.unfollow_explanation": "你正在关注此账户。如果要想在你的主页上不再看到他们的帖子,取消对他们的关注即可。", "search.placeholder": "搜索", "search_popout.search_format": "高级搜索格式", - "search_popout.tips.full_text": "输入关键词检索所有你发送、喜欢、转嘟过或提及到你的嘟文,以及其他用户公开的用户名、昵称和话题标签。", + "search_popout.tips.full_text": "输入关键词检索所有你发送、喜欢、转嘟过或提及到你的帖子,以及其他用户公开的用户名、昵称和话题标签。", "search_popout.tips.hashtag": "话题标签", - "search_popout.tips.status": "嘟文", + "search_popout.tips.status": "帖子", "search_popout.tips.text": "输入关键词检索昵称、用户名和话题标签", "search_popout.tips.user": "用户", "search_results.accounts": "用户", + "search_results.all": "全部", "search_results.hashtags": "话题标签", - "search_results.statuses": "嘟文", - "search_results.statuses_fts_disabled": "此Mastodon服务器未启用嘟文内容搜索。", + "search_results.nothing_found": "无法找到符合这些搜索词的任何内容", + "search_results.statuses": "帖子", + "search_results.statuses_fts_disabled": "此 Mastodon 服务器未启用帖子内容搜索。", "search_results.total": "共 {count, number} 个结果", "status.admin_account": "打开 @{name} 的管理界面", - "status.admin_status": "打开这条嘟文的管理界面", + "status.admin_status": "打开此帖的管理界面", "status.block": "屏蔽 @{name}", "status.bookmark": "添加到书签", - "status.cancel_reblog_private": "取消转嘟", - "status.cannot_reblog": "这条嘟文不允许被转嘟", - "status.copy": "复制嘟文链接", + "status.cancel_reblog_private": "取消转贴", + "status.cannot_reblog": "此贴不允许被转贴", + "status.copy": "复制帖子链接", "status.delete": "删除", - "status.detailed_status": "对话详情", - "status.direct": "发送私信给 @{name}", + "status.detailed_status": "详细的对话视图", + "status.direct": "私信 @{name}", "status.edit": "编辑", "status.edited": "编辑于 {date}", "status.edited_x_times": "共编辑 {count, plural, one {{count} 次} other {{count} 次}}", @@ -423,14 +463,14 @@ "status.more": "更多", "status.mute": "隐藏 @{name}", "status.mute_conversation": "将此对话静音", - "status.open": "展开嘟文", + "status.open": "展开此贴", "status.pin": "在个人资料页面置顶", - "status.pinned": "置顶嘟文", - "status.read_more": "阅读全文", - "status.reblog": "转嘟", - "status.reblog_private": "转嘟(可见者不变)", - "status.reblogged_by": "{name} 转嘟了", - "status.reblogs.empty": "没有人转嘟过此条嘟文。如果有人转嘟了,就会显示在这里。", + "status.pinned": "置顶帖子", + "status.read_more": "查看更多", + "status.reblog": "转贴", + "status.reblog_private": "转贴(可见者不变)", + "status.reblogged_by": "{name} 转贴了", + "status.reblogs.empty": "没有人转贴过此贴。如果有人转贴了将显示在此。", "status.redraft": "删除并重新编辑", "status.remove_bookmark": "移除书签", "status.reply": "回复", @@ -439,9 +479,9 @@ "status.sensitive_warning": "敏感内容", "status.share": "分享", "status.show_less": "隐藏内容", - "status.show_less_all": "隐藏所有内容", + "status.show_less_all": "隐藏全部内容", "status.show_more": "显示更多", - "status.show_more_all": "显示所有内容", + "status.show_more_all": "显示全部内容", "status.show_thread": "显示全部对话", "status.uncached_media_warning": "暂不可用", "status.unmute_conversation": "将此对话解除静音", @@ -450,7 +490,7 @@ "suggestions.header": "你可能会感兴趣…", "tabs_bar.federated_timeline": "跨站", "tabs_bar.home": "主页", - "tabs_bar.local_timeline": "本站", + "tabs_bar.local_timeline": "本地", "tabs_bar.notifications": "通知", "tabs_bar.search": "搜索", "time_remaining.days": "剩余 {number, plural, one {# 天} other {# 天}}", @@ -461,19 +501,20 @@ "timeline_hint.remote_resource_not_displayed": "不会显示来自其它服务器的 {resource}", "timeline_hint.resources.followers": "关注者", "timeline_hint.resources.follows": "关注", - "timeline_hint.resources.statuses": "更早的嘟文", + "timeline_hint.resources.statuses": "更早的帖子", "trends.counter_by_accounts": "{count, plural, one {{counter} 人} other {{counter} 人}}正在讨论", "trends.trending_now": "现在流行", "ui.beforeunload": "如果你现在离开 Mastodon,你的草稿内容将会丢失。", - "units.short.billion": "{count}B", - "units.short.million": "{count}M", - "units.short.thousand": "{count}K", + "units.short.billion": "{count} B", + "units.short.million": "{count} M", + "units.short.thousand": "{count} K", "upload_area.title": "将文件拖放到此处开始上传", "upload_button.label": "上传图片、视频或音频", "upload_error.limit": "文件大小超过限制。", "upload_error.poll": "投票中不允许上传文件。", "upload_form.audio_description": "为听障人士添加文字描述", "upload_form.description": "为视觉障碍人士添加文字说明", + "upload_form.description_missing": "没有添加描述", "upload_form.edit": "编辑", "upload_form.thumbnail": "更改缩略图", "upload_form.undo": "删除", @@ -482,13 +523,13 @@ "upload_modal.apply": "应用", "upload_modal.applying": "正在应用…", "upload_modal.choose_image": "选择图像", - "upload_modal.description_placeholder": "天地玄黄 宇宙洪荒 日月盈仄 辰宿列张", + "upload_modal.description_placeholder": "快狐跨懒狗", "upload_modal.detect_text": "从图片中检测文本", "upload_modal.edit_media": "编辑媒体", "upload_modal.hint": "在预览图上点击或拖动圆圈,以选择缩略图的焦点。", - "upload_modal.preparing_ocr": "正在准备文字识别……", + "upload_modal.preparing_ocr": "正在准备文字识别…", "upload_modal.preview_label": "预览 ({ratio})", - "upload_progress.label": "上传中……", + "upload_progress.label": "上传中…", "video.close": "关闭视频", "video.download": "下载文件", "video.exit_fullscreen": "退出全屏", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index 1f06f7fc6..45e030833 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -18,12 +18,12 @@ "account.followers": "關注者", "account.followers.empty": "尚未有人關注這位使用者。", "account.followers_counter": "有 {count, plural,one {{counter} 個} other {{counter} 個}}關注者", + "account.following": "Following", "account.following_counter": "正在關注 {count, plural,one {{counter}}other {{counter} 人}}", "account.follows.empty": "這位使用者尚未關注任何人。", "account.follows_you": "關注你", "account.hide_reblogs": "隱藏 @{name} 的轉推", "account.joined": "於 {date} 加入", - "account.last_status": "上次活躍時間", "account.link_verified_on": "此連結的所有權已在 {date} 檢查過", "account.locked_info": "這位使用者將私隱設定為「不公開」,會手動審批誰能關注他/她。", "account.media": "媒體", @@ -32,7 +32,6 @@ "account.mute": "將 @{name} 靜音", "account.mute_notifications": "將來自 @{name} 的通知靜音", "account.muted": "靜音", - "account.never_active": "永不", "account.posts": "文章", "account.posts_with_replies": "包含回覆的文章", "account.report": "舉報 @{name}", @@ -42,10 +41,12 @@ "account.statuses_counter": "{count, plural,one {{counter} 篇}other {{counter} 篇}}文章", "account.unblock": "解除對 @{name} 的封鎖", "account.unblock_domain": "解除對域名 {domain} 的封鎖", + "account.unblock_short": "Unblock", "account.unendorse": "不再於個人資料頁面推薦對方", "account.unfollow": "取消關注", "account.unmute": "取消 @{name} 的靜音", "account.unmute_notifications": "取消來自 @{name} 通知的靜音", + "account.unmute_short": "Unmute", "account_note.placeholder": "按此添加備注", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -69,7 +70,7 @@ "column.blocks": "封鎖名單", "column.bookmarks": "書籤", "column.community": "本站時間軸", - "column.direct": "個人訊息", + "column.conversations": "Conversations", "column.directory": "瀏覽個人資料", "column.domain_blocks": "封鎖的服務站", "column.favourites": "最愛的文章", @@ -91,8 +92,8 @@ "community.column_settings.local_only": "只顯示本站", "community.column_settings.media_only": "只顯示多媒體", "community.column_settings.remote_only": "只顯示外站", - "compose_form.direct_message_warning": "這文章只有被提及的使用者才可以看到。", "compose_form.direct_message_warning_learn_more": "了解更多", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "這文章因為不是公開,所以不會被標籤搜索。只有公開的文章才會被標籤搜索。", "compose_form.lock_disclaimer": "你的用戶狀態沒有{locked},任何人都能立即關注你,然後看到「只有關注者能看」的文章。", "compose_form.lock_disclaimer.lock": "鎖定", @@ -165,8 +166,9 @@ "empty_column.blocks": "你還沒有封鎖任何使用者。", "empty_column.bookmarked_statuses": "你還沒建立任何書籤。這裡將會顯示你建立的書籤。", "empty_column.community": "本站時間軸暫時未有內容,快寫一點東西來搶頭香啊!", - "empty_column.direct": "你沒有個人訊息。當你發出或接收個人訊息,就會在這裡出現。", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "尚未隱藏任何網域。", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "你還沒收藏任何文章。這裡將會顯示你收藏的嘟文。", "empty_column.favourites": "還沒有人收藏這則文章。這裡將會顯示被收藏的嘟文。", "empty_column.follow_recommendations": "似乎未能替您產生任何建議。您可以試著搜尋您知道的帳戶或者探索熱門主題標籤", @@ -185,6 +187,12 @@ "error.unexpected_crash.next_steps_addons": "請嘗試停止使用這些附加元件然後重新載入頁面。如果問題沒有解決,你仍然可以使用不同的瀏覽器或 Mastodon 應用程式來檢視。", "errors.unexpected_crash.copy_stacktrace": "複製 stacktrace 到剪貼簿", "errors.unexpected_crash.report_issue": "舉報問題", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", "follow_recommendations.done": "完成", "follow_recommendations.heading": "跟隨人們以看到來自他們的嘟文!這裡有些建議。", "follow_recommendations.lead": "您跟隨對象知嘟文將會以時間順序顯示於您的 home feed 上。別擔心犯下錯誤,您隨時可以取消跟隨人們!", @@ -222,8 +230,8 @@ "keyboard_shortcuts.boost": "轉推", "keyboard_shortcuts.column": "把標示移動到其中一列", "keyboard_shortcuts.compose": "把標示移動到文字輸入區", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "描述", - "keyboard_shortcuts.direct": "開啟私訊欄", "keyboard_shortcuts.down": "在列表往下移動", "keyboard_shortcuts.enter": "打開文章", "keyboard_shortcuts.favourite": "收藏文章", @@ -282,10 +290,10 @@ "navigation_bar.bookmarks": "書籤", "navigation_bar.community_timeline": "本站時間軸", "navigation_bar.compose": "撰寫新文章", - "navigation_bar.direct": "個人訊息", "navigation_bar.discover": "探索", "navigation_bar.domain_blocks": "封鎖的服務站", "navigation_bar.edit_profile": "修改個人資料", + "navigation_bar.explore": "Explore", "navigation_bar.favourites": "最愛的內容", "navigation_bar.filters": "靜音詞彙", "navigation_bar.follow_requests": "關注請求", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "偏好設定", "navigation_bar.public_timeline": "跨站時間軸", "navigation_bar.security": "安全", + "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} 喜歡你的文章", "notification.follow": "{name} 開始關注你", "notification.follow_request": "{name} 要求關注你", @@ -311,6 +320,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "清空通知紀錄", "notifications.clear_confirmation": "你確定要清空通知紀錄嗎?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "顯示桌面通知", "notifications.column_settings.favourite": "你最愛的文章:", "notifications.column_settings.filter_bar.advanced": "顯示所有分類", @@ -356,12 +366,12 @@ "poll_button.remove_poll": "移除投票", "privacy.change": "調整私隱設定", "privacy.direct.long": "只有提及的使用者能看到", - "privacy.direct.short": "私人訊息", + "privacy.direct.short": "Direct", "privacy.private.long": "只有你的關注者能看到", - "privacy.private.short": "關注者", - "privacy.public.long": "在公共時間軸顯示", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "公共", - "privacy.unlisted.long": "公開,但不在公共時間軸顯示", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "公開", "refresh": "重新整理", "regeneration_indicator.label": "載入中……", @@ -378,15 +388,43 @@ "relative_time.seconds": "{number}秒前", "relative_time.today": "今天", "reply_indicator.cancel": "取消", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", "report.forward": "轉寄到 {target}", "report.forward_hint": "這個帳戶屬於其他服務站。要向該服務站發送匿名的舉報訊息嗎?", - "report.hint": "這訊息會發送到你服務站的管理員。你可以提供舉報這個帳戶的理由:", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", "report.placeholder": "額外訊息", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "提交", "report.target": "舉報", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "搜尋", "search_popout.search_format": "高級搜索格式", "search_popout.tips.full_text": "輸入簡單的文字,搜索由你發放、收藏、轉推和提及你的文章,以及符合的使用者名稱,顯示名稱和標籤。", @@ -395,7 +433,9 @@ "search_popout.tips.text": "輸入簡單的文字,搜索符合的顯示名稱、使用者名稱和標籤", "search_popout.tips.user": "使用者", "search_results.accounts": "使用者", + "search_results.all": "All", "search_results.hashtags": "標籤", + "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "文章", "search_results.statuses_fts_disabled": "此 Mastodon 伺服器並未啟用「搜尋文章內章」功能。", "search_results.total": "{count, number} 項結果", @@ -474,6 +514,7 @@ "upload_error.poll": "不允許在投票上傳檔案。", "upload_form.audio_description": "簡單描述內容給聽障人士", "upload_form.description": "為視覺障礙人士添加文字說明", + "upload_form.description_missing": "No description added", "upload_form.edit": "編輯", "upload_form.thumbnail": "更改預覽圖", "upload_form.undo": "刪除", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 3f89737d4..811e998bb 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -1,29 +1,29 @@ { "account.account_note_header": "備註", - "account.add_or_remove_from_list": "從名單中新增或移除", + "account.add_or_remove_from_list": "從列表中新增或移除", "account.badges.bot": "機器人", "account.badges.group": "群組", "account.block": "封鎖 @{name}", "account.block_domain": "封鎖來自 {domain} 網域的所有內容", "account.blocked": "已封鎖", - "account.browse_more_on_origin_server": "在該伺服器的個人檔案頁上瀏覽更多", + "account.browse_more_on_origin_server": "於該伺服器的個人檔案頁上瀏覽更多", "account.cancel_follow_request": "取消跟隨請求", "account.direct": "傳私訊給 @{name}", "account.disable_notifications": "取消來自 @{name} 嘟文的通知", "account.domain_blocked": "已封鎖網域", - "account.edit_profile": "編輯個人資料", + "account.edit_profile": "編輯個人檔案", "account.enable_notifications": "當 @{name} 嘟文時通知我", - "account.endorse": "在個人資料推薦對方", + "account.endorse": "在個人檔案推薦對方", "account.follow": "跟隨", "account.followers": "跟隨者", "account.followers.empty": "尚未有人跟隨這位使用者。", "account.followers_counter": "被 {count, plural,one {{counter} 人}other {{counter} 人}} 跟隨", + "account.following": "跟隨中", "account.following_counter": "正在跟隨 {count, plural,one {{counter}}other {{counter} 人}}", "account.follows.empty": "這位使用者尚未跟隨任何人。", "account.follows_you": "跟隨了您", "account.hide_reblogs": "隱藏來自 @{name} 的轉嘟", "account.joined": "加入於 {date}", - "account.last_status": "上次活躍時間", "account.link_verified_on": "已在 {date} 檢查此連結的擁有者權限", "account.locked_info": "此帳戶的隱私狀態被設為鎖定。該擁有者會手動審核能跟隨此帳戶的人。", "account.media": "媒體", @@ -32,27 +32,28 @@ "account.mute": "靜音 @{name}", "account.mute_notifications": "靜音來自 @{name} 的通知", "account.muted": "已靜音", - "account.never_active": "永不", "account.posts": "嘟文", "account.posts_with_replies": "嘟文與回覆", "account.report": "檢舉 @{name}", "account.requested": "正在等待核准。按一下以取消跟隨請求", - "account.share": "分享 @{name} 的個人資料", + "account.share": "分享 @{name} 的個人檔案", "account.show_reblogs": "顯示來自 @{name} 的嘟文", "account.statuses_counter": "{count, plural,one {{counter} 則}other {{counter} 則}}嘟文", "account.unblock": "取消封鎖 @{name}", "account.unblock_domain": "取消封鎖域名 {domain}", - "account.unendorse": "不再於個人資料頁面推薦對方", + "account.unblock_short": "解除封鎖", + "account.unendorse": "不再於個人檔案頁面推薦對方", "account.unfollow": "取消跟隨", "account.unmute": "取消靜音 @{name}", "account.unmute_notifications": "重新接收來自 @{name} 的通知", + "account.unmute_short": "解除靜音", "account_note.placeholder": "按此添加備注", "admin.dashboard.daily_retention": "註冊後使用者存留率(日)", "admin.dashboard.monthly_retention": "註冊後使用者存留率(月)", "admin.dashboard.retention.average": "平均", "admin.dashboard.retention.cohort": "註冊月份", "admin.dashboard.retention.cohort_size": "新使用者", - "alert.rate_limited.message": "請在 {retry_time, time, medium} 後重試", + "alert.rate_limited.message": "請在 {retry_time, time, medium} 後重試。", "alert.rate_limited.title": "已限速", "alert.unexpected.message": "發生了非預期的錯誤。", "alert.unexpected.title": "哎呀!", @@ -68,14 +69,14 @@ "bundle_modal_error.retry": "重試", "column.blocks": "已封鎖的使用者", "column.bookmarks": "書籤", - "column.community": "本機時間軸", - "column.direct": "私訊", - "column.directory": "瀏覽個人資料", + "column.community": "本站時間軸", + "column.conversations": "對話", + "column.directory": "瀏覽個人檔案", "column.domain_blocks": "已封鎖的網域", "column.favourites": "最愛", "column.follow_requests": "跟隨請求", "column.home": "首頁", - "column.lists": "名單", + "column.lists": "列表", "column.mutes": "已靜音的使用者", "column.notifications": "通知", "column.pins": "釘選的嘟文", @@ -88,13 +89,13 @@ "column_header.show_settings": "顯示設定", "column_header.unpin": "取消釘選", "column_subheading.settings": "設定", - "community.column_settings.local_only": "只有本機", + "community.column_settings.local_only": "只有本站", "community.column_settings.media_only": "只有媒體", "community.column_settings.remote_only": "只有遠端", - "compose_form.direct_message_warning": "這條嘟文只有被提及的使用者才看得到。", "compose_form.direct_message_warning_learn_more": "了解更多", + "compose_form.encryption_warning": "Mastodon 上的嘟文並未端到端加密。請不要透過 Mastodon 分享任何敏感資訊。", "compose_form.hashtag_warning": "由於這則嘟文設定為「不公開」,它將不會被列於任何主題標籤下。只有公開的嘟文才能藉由主題標籤找到。", - "compose_form.lock_disclaimer": "您的帳戶尚未{locked}。任何人都能關注您並看到您設定成只有跟隨者能看的嘟文。", + "compose_form.lock_disclaimer": "您的帳戶尚未 {locked}。任何人都能關注您並看到您設定成只有跟隨者能看的嘟文。", "compose_form.lock_disclaimer.lock": "上鎖", "compose_form.placeholder": "正在想些什麼嗎?", "compose_form.poll.add_option": "新增選項", @@ -115,26 +116,26 @@ "confirmation_modal.cancel": "取消", "confirmations.block.block_and_report": "封鎖並檢舉", "confirmations.block.confirm": "封鎖", - "confirmations.block.message": "確定要封鎖 {name} 嗎?", + "confirmations.block.message": "您確定要封鎖 {name} ?", "confirmations.delete.confirm": "刪除", "confirmations.delete.message": "您確定要刪除這則嘟文?", "confirmations.delete_list.confirm": "刪除", - "confirmations.delete_list.message": "確定永久刪除此名單?", + "confirmations.delete_list.message": "您確定要永久刪除此列表?", "confirmations.discard_edit_media.confirm": "捨棄", "confirmations.discard_edit_media.message": "您在媒體描述或預覽區塊有未儲存的變更。是否要捨棄這些變更?", "confirmations.domain_block.confirm": "隱藏整個域名", "confirmations.domain_block.message": "真的非常確定封鎖整個 {domain} 網域嗎?大部分情況下,您只需要封鎖或靜音少數特定的帳帳戶能滿足需求了。您將不能在任何公開的時間軸及通知中看到來自此網域的內容。您來自該網域的跟隨者也將被移除。", "confirmations.logout.confirm": "登出", - "confirmations.logout.message": "確定要登出嗎?", + "confirmations.logout.message": "您確定要登出嗎?", "confirmations.mute.confirm": "靜音", "confirmations.mute.explanation": "這將會隱藏來自他們的嘟文與通知,但是他們還是可以查閱您的嘟文與跟隨您。", - "confirmations.mute.message": "確定靜音 {name} ?", + "confirmations.mute.message": "您確定要靜音 {name} ?", "confirmations.redraft.confirm": "刪除並重新編輯", - "confirmations.redraft.message": "確定刪掉這則嘟文並重新編輯嗎?將會失去這則嘟文的轉嘟及最愛,且回覆這則的嘟文將會變成獨立的嘟文。", + "confirmations.redraft.message": "您確定要刪掉這則嘟文並重新編輯嗎?將會失去這則嘟文的轉嘟及最愛,且回覆這則的嘟文將會變成獨立的嘟文。", "confirmations.reply.confirm": "回覆", "confirmations.reply.message": "現在回覆將蓋掉您目前正在撰寫的訊息。是否仍要回覆?", "confirmations.unfollow.confirm": "取消跟隨", - "confirmations.unfollow.message": "確定要取消跟隨 {name} 嗎?", + "confirmations.unfollow.message": "您確定要取消跟隨 {name} 嗎?", "conversation.delete": "刪除對話", "conversation.mark_as_read": "標記為已讀", "conversation.open": "檢視對話", @@ -161,12 +162,13 @@ "emoji_button.travel": "旅遊與地點", "empty_column.account_suspended": "帳戶被暫停", "empty_column.account_timeline": "這裡還沒有嘟文!", - "empty_column.account_unavailable": "無法取得個人資料", + "empty_column.account_unavailable": "無法取得個人檔案", "empty_column.blocks": "您還沒有封鎖任何使用者。", "empty_column.bookmarked_statuses": "您還沒建立任何書籤。當您建立書簽時,它將於此顯示。", - "empty_column.community": "本機時間軸是空的。快公開嘟些文搶頭香啊!", - "empty_column.direct": "您還沒有任何私訊。當您私訊別人或收到私訊時,它將於此顯示。", + "empty_column.community": "本站時間軸是空的。快公開嘟些文搶頭香啊!", + "empty_column.conversations": "一旦您傳送或收到僅對其中提到之人可見的嘟文,就會在這邊顯示。", "empty_column.domain_blocks": "尚未封鎖任何網域。", + "empty_column.explore_statuses": "目前沒有熱門討論,請稍候再回來看看!", "empty_column.favourited_statuses": "您還沒加過任何嘟文至最愛。當您收藏嘟文時,它將於此顯示。", "empty_column.favourites": "還沒有人加過這則嘟文至最愛。當有人收藏嘟文時,它將於此顯示。", "empty_column.follow_recommendations": "似乎未能為您產生任何建議。您可以嘗試使用搜尋來尋找您可能認識的人,或是探索熱門主題標籤。", @@ -174,8 +176,8 @@ "empty_column.hashtag": "這個主題標籤下什麼也沒有。", "empty_column.home": "您的首頁時間軸是空的!前往 {suggestions} 或使用搜尋功能來認識其他人。", "empty_column.home.suggestions": "檢視部份建議", - "empty_column.list": "這份名單還沒有東西。當此名單的成員嘟出了新的嘟文時,它們就會顯示於此。", - "empty_column.lists": "您還沒有建立任何名單。這裡將會顯示您所建立的名單。", + "empty_column.list": "這份列表下什麼也沒有。當此列表的成員嘟出了新的嘟文時,它們就會顯示於此。", + "empty_column.lists": "您還沒有建立任何列表。這裡將會顯示您所建立的列表。", "empty_column.mutes": "您尚未靜音任何使用者。", "empty_column.notifications": "您尚未收到任何通知,和別人互動開啟對話吧。", "empty_column.public": "這裡什麼都沒有!嘗試寫些公開的嘟文,或著自己跟隨其他伺服器的使用者後就會有嘟文出現了", @@ -185,15 +187,21 @@ "error.unexpected_crash.next_steps_addons": "請嘗試關閉他們然後重新整理頁面。如果狀況沒有改善,您可以使用不同的瀏覽器或應用程式來檢視來使用 Mastodon。", "errors.unexpected_crash.copy_stacktrace": "複製 stacktrace 到剪貼簿", "errors.unexpected_crash.report_issue": "回報問題", + "explore.search_results": "搜尋結果", + "explore.suggested_follows": "為您推薦", + "explore.title": "探索", + "explore.trending_links": "最新消息", + "explore.trending_statuses": "嘟文", + "explore.trending_tags": "主題標籤", "follow_recommendations.done": "完成", - "follow_recommendations.heading": "跟隨您想檢視其貼文的人!這裡有一些建議。", - "follow_recommendations.lead": "來自您跟隨的人的貼文將會按時間順序顯示在您的家 feed 上。不要害怕犯錯,您隨時都可以取消跟隨其他人!", + "follow_recommendations.heading": "跟隨您想檢視其嘟文的人!這裡有一些建議。", + "follow_recommendations.lead": "來自您跟隨的人之嘟文將會按時間順序顯示在您的首頁時間軸上。不要害怕犯錯,您隨時都可以取消跟隨其他人!", "follow_request.authorize": "授權", "follow_request.reject": "拒絕", "follow_requests.unlocked_explanation": "即便您的帳戶未被鎖定,{domain} 的管理員認為您可能想要自己審核這些帳戶的跟隨請求。", "generic.saved": "已儲存", "getting_started.developers": "開發者", - "getting_started.directory": "個人資料目錄", + "getting_started.directory": "個人檔案目錄", "getting_started.documentation": "文件", "getting_started.heading": "開始使用", "getting_started.invite": "邀請使用者", @@ -222,77 +230,77 @@ "keyboard_shortcuts.boost": "轉嘟", "keyboard_shortcuts.column": "將焦點放在其中一欄的嘟文", "keyboard_shortcuts.compose": "將焦點移至撰寫文字區塊", + "keyboard_shortcuts.conversations": "開啟對話欄", "keyboard_shortcuts.description": "說明", - "keyboard_shortcuts.direct": "開啟私訊欄", - "keyboard_shortcuts.down": "在名單中往下移動", + "keyboard_shortcuts.down": "在列表中往下移動", "keyboard_shortcuts.enter": "檢視嘟文", "keyboard_shortcuts.favourite": "加到最愛", - "keyboard_shortcuts.favourites": "開啟最愛名單", + "keyboard_shortcuts.favourites": "開啟最愛列表", "keyboard_shortcuts.federated": "開啟聯邦時間軸", "keyboard_shortcuts.heading": "鍵盤快速鍵", "keyboard_shortcuts.home": "開啟首頁時間軸", "keyboard_shortcuts.hotkey": "快速鍵", "keyboard_shortcuts.legend": "顯示此圖例", - "keyboard_shortcuts.local": "開啟本機時間軸", + "keyboard_shortcuts.local": "開啟本站時間軸", "keyboard_shortcuts.mention": "提及作者", - "keyboard_shortcuts.muted": "開啟靜音使用者名單", - "keyboard_shortcuts.my_profile": "開啟個人資料頁面", + "keyboard_shortcuts.muted": "開啟靜音使用者列表", + "keyboard_shortcuts.my_profile": "開啟個人檔案頁面", "keyboard_shortcuts.notifications": "開啟通知欄", "keyboard_shortcuts.open_media": "開啟媒體", - "keyboard_shortcuts.pinned": "開啟釘選的嘟文名單", - "keyboard_shortcuts.profile": "開啟作者的個人資料頁面", + "keyboard_shortcuts.pinned": "開啟釘選的嘟文列表", + "keyboard_shortcuts.profile": "開啟作者的個人檔案頁面", "keyboard_shortcuts.reply": "回應嘟文", - "keyboard_shortcuts.requests": "開啟跟隨請求名單", + "keyboard_shortcuts.requests": "開啟跟隨請求列表", "keyboard_shortcuts.search": "將焦點移至搜尋框", "keyboard_shortcuts.spoilers": "顯示或隱藏被折疊的正文", "keyboard_shortcuts.start": "開啟「開始使用」欄位", - "keyboard_shortcuts.toggle_hidden": "顯示/隱藏在內容警告之後的正文", - "keyboard_shortcuts.toggle_sensitivity": "顯示 / 隱藏媒體", + "keyboard_shortcuts.toggle_hidden": "顯示或隱藏在內容警告之後的正文", + "keyboard_shortcuts.toggle_sensitivity": "顯示或隱藏媒體", "keyboard_shortcuts.toot": "開始發出新嘟文", "keyboard_shortcuts.unfocus": "取消輸入文字區塊 / 搜尋的焦點", - "keyboard_shortcuts.up": "在名單中往上移動", + "keyboard_shortcuts.up": "在列表中往上移動", "lightbox.close": "關閉", "lightbox.compress": "折疊圖片檢視框", "lightbox.expand": "展開圖片檢視框", "lightbox.next": "下一步", "lightbox.previous": "上一步", - "lists.account.add": "新增至名單", - "lists.account.remove": "從名單中移除", - "lists.delete": "刪除名單", - "lists.edit": "編輯名單", + "lists.account.add": "新增至列表", + "lists.account.remove": "從列表中移除", + "lists.delete": "刪除列表", + "lists.edit": "編輯列表", "lists.edit.submit": "變更標題", - "lists.new.create": "新增名單", - "lists.new.title_placeholder": "新名單標題", + "lists.new.create": "新增列表", + "lists.new.title_placeholder": "新列表標題", "lists.replies_policy.followed": "任何跟隨的使用者", "lists.replies_policy.list": "列表成員", "lists.replies_policy.none": "沒有人", "lists.replies_policy.title": "顯示回覆:", "lists.search": "搜尋您跟隨的使用者", - "lists.subheading": "您的名單", + "lists.subheading": "您的列表", "load_pending": "{count, plural, one {# 個新項目} other {# 個新項目}}", "loading_indicator.label": "讀取中...", "media_gallery.toggle_visible": "切換可見性", "missing_indicator.label": "找不到", "missing_indicator.sublabel": "找不到此資源", "mute_modal.duration": "持續時間", - "mute_modal.hide_notifications": "隱藏來自這位使用者的通知?", + "mute_modal.hide_notifications": "是否隱藏來自這位使用者的通知?", "mute_modal.indefinite": "無期限", "navigation_bar.apps": "行動應用程式", "navigation_bar.blocks": "封鎖使用者", "navigation_bar.bookmarks": "書籤", - "navigation_bar.community_timeline": "本機時間軸", + "navigation_bar.community_timeline": "本站時間軸", "navigation_bar.compose": "撰寫新嘟文", - "navigation_bar.direct": "私訊", "navigation_bar.discover": "探索", "navigation_bar.domain_blocks": "隱藏的網域", - "navigation_bar.edit_profile": "編輯個人資料", - "navigation_bar.favourites": "收藏", + "navigation_bar.edit_profile": "編輯個人檔案", + "navigation_bar.explore": "探索", + "navigation_bar.favourites": "最愛", "navigation_bar.filters": "靜音詞彙", "navigation_bar.follow_requests": "跟隨請求", "navigation_bar.follows_and_followers": "跟隨中與跟隨者", "navigation_bar.info": "關於此伺服器", "navigation_bar.keyboard_shortcuts": "快速鍵", - "navigation_bar.lists": "名單", + "navigation_bar.lists": "列表", "navigation_bar.logout": "登出", "navigation_bar.mutes": "靜音的使用者", "navigation_bar.personal": "個人", @@ -300,6 +308,7 @@ "navigation_bar.preferences": "偏好設定", "navigation_bar.public_timeline": "聯邦時間軸", "navigation_bar.security": "安全性", + "notification.admin.sign_up": "{name} 已經註冊", "notification.favourite": "{name} 把您的嘟文加入了最愛", "notification.follow": "{name} 跟隨了您", "notification.follow_request": "{name} 要求跟隨您", @@ -310,7 +319,8 @@ "notification.status": "{name} 剛剛嘟文", "notification.update": "{name} 編輯了嘟文", "notifications.clear": "清除通知", - "notifications.clear_confirmation": "確定要永久清除您的通知嗎?", + "notifications.clear_confirmation": "您確定要永久清除您的通知嗎?", + "notifications.column_settings.admin.sign_up": "新註冊帳號:", "notifications.column_settings.alert": "桌面通知", "notifications.column_settings.favourite": "最愛:", "notifications.column_settings.filter_bar.advanced": "顯示所有分類", @@ -334,13 +344,13 @@ "notifications.filter.follows": "跟隨的使用者", "notifications.filter.mentions": "提及", "notifications.filter.polls": "投票結果", - "notifications.filter.statuses": "已跟隨使用者的最新動態", + "notifications.filter.statuses": "您跟隨的使用者之最新動態", "notifications.grant_permission": "授予權限", "notifications.group": "{count} 條通知", "notifications.mark_as_read": "將所有通知都標記為已讀", "notifications.permission_denied": "由於之前拒絕了瀏覽器請求,因此桌面通知不可用", - "notifications.permission_denied_alert": "因為之前瀏覽器權限被拒絕,無法啟用桌面通知", - "notifications.permission_required": "因為尚未授予所需的權限,所以桌面通知不可用。", + "notifications.permission_denied_alert": "由於之前瀏覽器權限被拒絕,無法啟用桌面通知", + "notifications.permission_required": "由於尚未授予所需的權限,所以桌面通知不可用。", "notifications_permission_banner.enable": "啟用桌面通知", "notifications_permission_banner.how_to_control": "啟用桌面通知以在 Mastodon 沒有開啟的時候接收通知。在已經啟用桌面通知的時候,您可以透過上面的 {icon} 按鈕準確的控制哪些類型的互動會產生桌面通知。", "notifications_permission_banner.title": "不要錯過任何東西!", @@ -356,37 +366,65 @@ "poll_button.remove_poll": "移除投票", "privacy.change": "調整嘟文隱私狀態", "privacy.direct.long": "只有被提及的使用者能看到", - "privacy.direct.short": "私訊", + "privacy.direct.short": "僅限於我提及的人", "privacy.private.long": "只有跟隨您的使用者能看到", - "privacy.private.short": "僅跟隨者", - "privacy.public.long": "公開,且顯示於公開時間軸", + "privacy.private.short": "僅限跟隨者", + "privacy.public.long": "對所有人可見", "privacy.public.short": "公開", - "privacy.unlisted.long": "公開,但不會顯示在公開時間軸", + "privacy.unlisted.long": "對所有人可見,但選擇退出探索功能", "privacy.unlisted.short": "不公開", "refresh": "重新整理", "regeneration_indicator.label": "載入中…", - "regeneration_indicator.sublabel": "您的主頁時間軸正在準備中!", + "regeneration_indicator.sublabel": "您的首頁時間軸正在準備中!", "relative_time.days": "{number} 天", "relative_time.full.days": "{number, plural, one {# 天} other {# 天}}前", "relative_time.full.hours": "{number, plural, one {# 小時} other {# 小時}}前", "relative_time.full.just_now": "剛剛", "relative_time.full.minutes": "{number, plural, one {# 分鐘} other {# 分鐘}}前", "relative_time.full.seconds": "{number, plural, one {# 秒} other {# 秒}}前", - "relative_time.hours": "{number}小時前", + "relative_time.hours": "{number} 小時前", "relative_time.just_now": "剛剛", - "relative_time.minutes": "{number} 分前", + "relative_time.minutes": "{number} 分鐘前", "relative_time.seconds": "{number} 秒", "relative_time.today": "今天", "reply_indicator.cancel": "取消", + "report.block": "封鎖", + "report.block_explanation": "您將不再看到他們的嘟文。他們將無法看到您的嘟文或是跟隨您。他們會發現他們已被封鎖。", "report.categories.other": "其他", "report.categories.spam": "垃圾訊息", "report.categories.violation": "內容違反一項或多項伺服器條款", + "report.category.subtitle": "選擇最佳條件符合", + "report.category.title": "告訴我們這個 {type} 發生了什麼事", + "report.category.title_account": "個人檔案", + "report.category.title_status": "嘟文", + "report.close": "已完成", + "report.comment.title": "有什麼其他您想讓我們知道的嗎?", "report.forward": "轉寄到 {target}", - "report.forward_hint": "這個帳戶屬於其他伺服器。要像該伺服器發送匿名的檢舉訊息嗎?", - "report.hint": "這項訊息會發送到您伺服器的管理員。您可以提供檢舉這個帳戶的理由:", + "report.forward_hint": "這個帳戶屬於其他伺服器。要像該伺服器發送匿名的檢舉訊息嗎?", + "report.mute": "靜音", + "report.mute_explanation": "您將不再看到他們的嘟文。他們仍能可以跟隨您以及察看您的嘟文,並且不會知道他們已被靜音。", + "report.next": "繼續", "report.placeholder": "其他備註", + "report.reasons.dislike": "我不喜歡", + "report.reasons.dislike_description": "這是您不想看到的", + "report.reasons.other": "其他原因", + "report.reasons.other_description": "這個問題不屬於其他分類", + "report.reasons.spam": "垃圾訊息", + "report.reasons.spam_description": "有害連結、假造的互動,或是重複性回覆", + "report.reasons.violation": "違反伺服器規則", + "report.reasons.violation_description": "您知道它違反特定規則", + "report.rules.subtitle": "請選擇所有適用的選項", + "report.rules.title": "違反了哪些規則?", + "report.statuses.subtitle": "請選擇所有適用的選項", + "report.statuses.title": "是否有能佐證這份檢舉之嘟文?", "report.submit": "送出", "report.target": "檢舉 {target}", + "report.thanks.take_action": "以下是控制您想於 Mastodon 看到什麼內容之選項:", + "report.thanks.take_action_actionable": "當我們正在審核期間,您可以對 @{name} 採取以下措施:", + "report.thanks.title": "不想再看到這個?", + "report.thanks.title_actionable": "感謝您的檢舉,我們將會著手處理。", + "report.unfollow": "取消跟隨 @{name}", + "report.unfollow_explanation": "您正在跟隨此帳號。如不欲於首頁時間軸再見到他們的嘟文,請取消跟隨。", "search.placeholder": "搜尋", "search_popout.search_format": "進階搜尋格式", "search_popout.tips.full_text": "輸入簡單的文字,搜尋由您撰寫、最愛、轉嘟或提您的嘟文,以及與關鍵詞匹配的使用者名稱、帳戶顯示名稱和主題標籤。", @@ -395,7 +433,9 @@ "search_popout.tips.text": "輸入簡單的文字,搜尋符合的使用者名稱,帳戶名稱與標籤", "search_popout.tips.user": "使用者", "search_results.accounts": "使用者", + "search_results.all": "全部", "search_results.hashtags": "主題標籤", + "search_results.nothing_found": "無法找到符合搜尋條件之結果", "search_results.statuses": "嘟文", "search_results.statuses_fts_disabled": "「依內容搜尋嘟文」未在此 Mastodon 伺服器啟用。", "search_results.total": "{count, number} 項結果", @@ -424,14 +464,14 @@ "status.mute": "靜音 @{name}", "status.mute_conversation": "靜音對話", "status.open": "展開此嘟文", - "status.pin": "釘選到個人資料頁", + "status.pin": "釘選到個人檔案頁面", "status.pinned": "釘選的嘟文", "status.read_more": "閱讀更多", "status.reblog": "轉嘟", "status.reblog_private": "轉嘟給原有關注者", "status.reblogged_by": "{name} 轉嘟了", "status.reblogs.empty": "還沒有人轉嘟過這則嘟文。當有人轉嘟時,它將於此顯示。", - "status.redraft": "刪除 & 編輯", + "status.redraft": "刪除並重新編輯", "status.remove_bookmark": "移除書籤", "status.reply": "回覆", "status.replyAll": "回覆討論串", @@ -445,17 +485,17 @@ "status.show_thread": "顯示討論串", "status.uncached_media_warning": "無法使用", "status.unmute_conversation": "解除此對話的靜音", - "status.unpin": "從個人頁面解除釘選", + "status.unpin": "從個人檔案頁面解除釘選", "suggestions.dismiss": "關閉建議", "suggestions.header": "您可能對這些東西有興趣…", "tabs_bar.federated_timeline": "聯邦宇宙", "tabs_bar.home": "首頁", - "tabs_bar.local_timeline": "本機", + "tabs_bar.local_timeline": "本站", "tabs_bar.notifications": "通知", "tabs_bar.search": "搜尋", - "time_remaining.days": "剩餘{number, plural, one {# 天} other {# 天}}", - "time_remaining.hours": "剩餘{number, plural, one {# 小時} other {# 小時}}", - "time_remaining.minutes": "剩餘{number, plural, one {# 分鐘} other {# 分鐘}}", + "time_remaining.days": "剩餘 {number, plural, one {# 天} other {# 天}}", + "time_remaining.hours": "剩餘 {number, plural, one {# 小時} other {# 小時}}", + "time_remaining.minutes": "剩餘 {number, plural, one {# 分鐘} other {# 分鐘}}", "time_remaining.moments": "剩餘時間", "time_remaining.seconds": "剩餘 {number, plural, one {# 秒} other {# 秒}}", "timeline_hint.remote_resource_not_displayed": "不會顯示來自其他伺服器的 {resource}", @@ -463,7 +503,7 @@ "timeline_hint.resources.follows": "正在跟隨", "timeline_hint.resources.statuses": "更早的嘟文", "trends.counter_by_accounts": "{count, plural,one {{counter} 人}other {{counter} 人}}正在討論", - "trends.trending_now": "目前趨勢", + "trends.trending_now": "現正熱門", "ui.beforeunload": "如果離開 Mastodon,您的草稿將會不見。", "units.short.billion": "{count}B", "units.short.million": "{count}M", @@ -474,10 +514,11 @@ "upload_error.poll": "不允許在投票中上傳檔案。", "upload_form.audio_description": "描述內容給聽障人士", "upload_form.description": "為視障人士增加文字說明", + "upload_form.description_missing": "沒有任何描述", "upload_form.edit": "編輯", "upload_form.thumbnail": "更改預覽圖", "upload_form.undo": "刪除", - "upload_form.video_description": "描述給聽障或視障人士", + "upload_form.video_description": "描述內容給聽障或視障人士", "upload_modal.analyzing_picture": "正在分析圖片…", "upload_modal.apply": "套用", "upload_modal.applying": "正在套用⋯⋯", diff --git a/app/javascript/mastodon/reducers/search.js b/app/javascript/mastodon/reducers/search.js index 587d4c72e..890621f44 100644 --- a/app/javascript/mastodon/reducers/search.js +++ b/app/javascript/mastodon/reducers/search.js @@ -43,7 +43,10 @@ export default function search(state = initialState, action) { case COMPOSE_DIRECT: return state.set('hidden', true); case SEARCH_FETCH_REQUEST: - return state.set('isLoading', true); + return state.withMutations(map => { + map.set('isLoading', true); + map.set('submitted', true); + }); case SEARCH_FETCH_FAIL: return state.set('isLoading', false); case SEARCH_FETCH_SUCCESS: @@ -54,7 +57,6 @@ export default function search(state = initialState, action) { hashtags: fromJS(action.results.hashtags), })); - map.set('submitted', true); map.set('searchTerm', action.searchTerm); map.set('isLoading', false); }); diff --git a/app/javascript/mastodon/reducers/status_lists.js b/app/javascript/mastodon/reducers/status_lists.js index 49bc94a40..a7c56cc19 100644 --- a/app/javascript/mastodon/reducers/status_lists.js +++ b/app/javascript/mastodon/reducers/status_lists.js @@ -21,6 +21,9 @@ import { TRENDS_STATUSES_FETCH_REQUEST, TRENDS_STATUSES_FETCH_SUCCESS, TRENDS_STATUSES_FETCH_FAIL, + TRENDS_STATUSES_EXPAND_REQUEST, + TRENDS_STATUSES_EXPAND_SUCCESS, + TRENDS_STATUSES_EXPAND_FAIL, } from '../actions/trends'; import { Map as ImmutableMap, List as ImmutableList } from 'immutable'; import { @@ -111,11 +114,15 @@ export default function statusLists(state = initialState, action) { case BOOKMARKED_STATUSES_EXPAND_SUCCESS: return appendToList(state, 'bookmarks', action.statuses, action.next); case TRENDS_STATUSES_FETCH_REQUEST: + case TRENDS_STATUSES_EXPAND_REQUEST: return state.setIn(['trending', 'isLoading'], true); case TRENDS_STATUSES_FETCH_FAIL: + case TRENDS_STATUSES_EXPAND_FAIL: return state.setIn(['trending', 'isLoading'], false); case TRENDS_STATUSES_FETCH_SUCCESS: return normalizeList(state, 'trending', action.statuses, action.next); + case TRENDS_STATUSES_EXPAND_SUCCESS: + return appendToList(state, 'trending', action.statuses, action.next); case FAVOURITE_SUCCESS: return prependOneToList(state, 'favourites', action.status); case UNFAVOURITE_SUCCESS: diff --git a/app/javascript/mastodon/reducers/timelines.js b/app/javascript/mastodon/reducers/timelines.js index b66c19fd5..d72109e69 100644 --- a/app/javascript/mastodon/reducers/timelines.js +++ b/app/javascript/mastodon/reducers/timelines.js @@ -16,7 +16,7 @@ import { ACCOUNT_MUTE_SUCCESS, ACCOUNT_UNFOLLOW_SUCCESS, } from '../actions/accounts'; -import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable'; +import { Map as ImmutableMap, List as ImmutableList, OrderedSet as ImmutableOrderedSet, fromJS } from 'immutable'; import compareId from '../compare_id'; const initialState = ImmutableMap(); @@ -32,6 +32,13 @@ const initialTimeline = ImmutableMap({ }); const expandNormalizedTimeline = (state, timeline, statuses, next, isPartial, isLoadingRecent, usePendingItems) => { + // This method is pretty tricky because: + // - existing items in the timeline might be out of order + // - the existing timeline may have gaps, most often explicitly noted with a `null` item + // - ideally, we don't want it to reorder existing items of the timeline + // - `statuses` may include items that are already included in the timeline + // - this function can be called either to fill in a gap, or load newer items + return state.update(timeline, initialTimeline, map => map.withMutations(mMap => { mMap.set('isLoading', false); mMap.set('isPartial', isPartial); @@ -46,15 +53,42 @@ const expandNormalizedTimeline = (state, timeline, statuses, next, isPartial, is mMap.update(usePendingItems ? 'pendingItems' : 'items', ImmutableList(), oldIds => { const newIds = statuses.map(status => status.get('id')); - const lastIndex = oldIds.findLastIndex(id => id !== null && compareId(id, newIds.last()) >= 0) + 1; - const firstIndex = oldIds.take(lastIndex).findLastIndex(id => id !== null && compareId(id, newIds.first()) > 0); + // Now this gets tricky, as we don't necessarily know for sure where the gap to fill is + // and some items in the timeline may not be properly ordered. - if (firstIndex < 0) { - return (isPartial ? newIds.unshift(null) : newIds).concat(oldIds.skip(lastIndex)); + // However, we know that `newIds.last()` is the oldest item that was requested and that + // there is no “hole” between `newIds.last()` and `newIds.first()`. + + // First, find the furthest (if properly sorted, oldest) item in the timeline that is + // newer than the oldest fetched one, as it's most likely that it delimits the gap. + // Start the gap *after* that item. + const lastIndex = oldIds.findLastIndex(id => id !== null && compareId(id, newIds.last()) >= 0) + 1; + + // Then, try to find the furthest (if properly sorted, oldest) item in the timeline that + // is newer than the most recent fetched one, as it delimits a section comprised of only + // items older or within `newIds` (or that were deleted from the server, so should be removed + // anyway). + // Stop the gap *after* that item. + const firstIndex = oldIds.take(lastIndex).findLastIndex(id => id !== null && compareId(id, newIds.first()) > 0) + 1; + + let insertedIds = ImmutableOrderedSet(newIds).withMutations(insertedIds => { + // It is possible, though unlikely, that the slice we are replacing contains items older + // than the elements we got from the API. Get them and add them back at the back of the + // slice. + const olderIds = oldIds.slice(firstIndex, lastIndex).filter(id => id !== null && compareId(id, newIds.last()) < 0); + insertedIds.union(olderIds); + + // Make sure we aren't inserting duplicates + insertedIds.subtract(oldIds.take(firstIndex), oldIds.skip(lastIndex)); + }).toList(); + + // Finally, insert a gap marker if the data is marked as partial by the server + if (isPartial && (firstIndex === 0 || oldIds.get(firstIndex - 1) !== null)) { + insertedIds = insertedIds.unshift(null); } - return oldIds.take(firstIndex + 1).concat( - isPartial && oldIds.get(firstIndex) !== null ? newIds.unshift(null) : newIds, + return oldIds.take(firstIndex).concat( + insertedIds, oldIds.skip(lastIndex), ); }); @@ -137,6 +171,17 @@ const updateTop = (state, timeline, top) => { })); }; +const reconnectTimeline = (state, usePendingItems) => { + if (state.get('online')) { + return state; + } + + return state.withMutations(mMap => { + mMap.update(usePendingItems ? 'pendingItems' : 'items', items => items.first() ? items.unshift(null) : items); + mMap.set('online', true); + }); +}; + export default function timelines(state = initialState, action) { switch(action.type) { case TIMELINE_LOAD_PENDING: @@ -162,7 +207,7 @@ export default function timelines(state = initialState, action) { case TIMELINE_SCROLL_TOP: return updateTop(state, action.timeline, action.top); case TIMELINE_CONNECT: - return state.update(action.timeline, initialTimeline, map => map.set('online', true)); + return state.update(action.timeline, initialTimeline, map => reconnectTimeline(map, action.usePendingItems)); case TIMELINE_DISCONNECT: return state.update( action.timeline, diff --git a/app/javascript/packs/admin.js b/app/javascript/packs/admin.js index f32679619..a3ed1ffed 100644 --- a/app/javascript/packs/admin.js +++ b/app/javascript/packs/admin.js @@ -100,6 +100,16 @@ ready(() => { const registrationMode = document.getElementById('form_admin_settings_registrations_mode'); if (registrationMode) onChangeRegistrationMode(registrationMode); + document.querySelector('a#add-instance-button')?.addEventListener('click', (e) => { + const domain = document.getElementById('by_domain')?.value; + + if (domain) { + const url = new URL(event.target.href); + url.searchParams.set('_domain', domain); + e.target.href = url; + } + }); + const React = require('react'); const ReactDOM = require('react-dom'); diff --git a/app/javascript/styles/mailer.scss b/app/javascript/styles/mailer.scss index 34852178e..18fe522eb 100644 --- a/app/javascript/styles/mailer.scss +++ b/app/javascript/styles/mailer.scss @@ -435,6 +435,10 @@ h5 { background: $success-green; } + &.warning-icon td { + background: $gold-star; + } + &.alert-icon td { background: $error-red; } diff --git a/app/javascript/styles/mastodon-light/diff.scss b/app/javascript/styles/mastodon-light/diff.scss index 8e6b0cdd5..2c8162b28 100644 --- a/app/javascript/styles/mastodon-light/diff.scss +++ b/app/javascript/styles/mastodon-light/diff.scss @@ -40,19 +40,11 @@ html { background: lighten($ui-base-color, 12%); } -.filter-form, -.directory__card__bar { +.filter-form { background: $white; border-bottom: 1px solid lighten($ui-base-color, 8%); } -.scrollable .directory__list { - width: calc(100% + 2px); - margin-left: -1px; - margin-right: -1px; -} - -.directory__card, .table-of-contents { border: 1px solid lighten($ui-base-color, 8%); } @@ -75,8 +67,7 @@ html { .column-header__back-button, .column-header__button, .column-header__button.active, -.account__header__bar, -.directory__card__extra { +.account__header__bar { background: $white; } @@ -152,10 +143,15 @@ html { .box-widget input[type="password"], .box-widget textarea, .statuses-grid .detailed-status, +.report-dialog-modal__textarea, .audio-player { border: 1px solid lighten($ui-base-color, 8%); } +.report-dialog-modal .dialog-option .poll__input { + color: $white; +} + .search__input { @media screen and (max-width: $no-gap-breakpoint) { border-top: 0; @@ -308,7 +304,8 @@ html { } &__item { - a { + a, + button { background: $white; color: $darker-text-color; } @@ -340,10 +337,18 @@ html { color: $white; } -.dropdown-menu__separator { +.dropdown-menu__separator, +.dropdown-menu__item.edited-timestamp__history__item, +.dropdown-menu__container__header, +.compare-history-modal .report-modal__target, +.report-dialog-modal .poll__option.dialog-option { border-bottom-color: lighten($ui-base-color, 4%); } +.report-dialog-modal__container { + border-top-color: lighten($ui-base-color, 4%); +} + // Change the background colors of modals .actions-modal, .boost-modal, @@ -351,9 +356,11 @@ html { .mute-modal, .block-modal, .report-modal, +.report-dialog-modal, .embed-modal, .error-modal, .onboarding-modal, +.compare-history-modal, .report-modal__comment .setting-text__wrapper, .report-modal__comment .setting-text, .announcements, diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss index 2e212eca5..68e6d2482 100644 --- a/app/javascript/styles/mastodon/admin.scss +++ b/app/javascript/styles/mastodon/admin.scss @@ -367,6 +367,21 @@ body, } } + .positive-hint, + .negative-hint, + .neutral-hint { + a { + color: inherit; + text-decoration: underline; + + &:focus, + &:hover, + &:active { + text-decoration: none; + } + } + } + .positive-hint { color: $valid-value-color; font-weight: 500; @@ -888,6 +903,14 @@ a.name-tag, text-align: center; } +.applications-list__item { + padding: 15px 0; + background: $ui-base-color; + border: 1px solid lighten($ui-base-color, 4%); + border-radius: 4px; + margin-top: 15px; +} + .announcements-list { border: 1px solid lighten($ui-base-color, 4%); border-radius: 4px; @@ -907,6 +930,12 @@ a.name-tag, text-decoration: none; margin-bottom: 10px; + .account-role { + vertical-align: middle; + } + } + + a.announcements-list__item__title { &:hover, &:focus, &:active { @@ -925,6 +954,10 @@ a.name-tag, align-items: center; } + &__permissions { + margin-top: 10px; + } + &:last-child { border-bottom: 0; } @@ -1202,6 +1235,11 @@ a.sparkline { background: $ui-base-color; border-radius: 4px; + &__permalink { + color: inherit; + text-decoration: none; + } + &__header { padding: 4px; border-radius: 4px; @@ -1218,20 +1256,22 @@ a.sparkline { } &__title { - margin-top: -25px; + margin-top: -(15px + 8px); display: flex; align-items: flex-end; &__avatar { - padding: 15px; + padding: 14px; - img { + img, + .account__avatar { display: block; margin: 0; width: 56px; height: 56px; - background: darken($ui-base-color, 8%); + background-color: darken($ui-base-color, 8%); border-radius: 8px; + border: 1px solid $ui-base-color; } } @@ -1239,28 +1279,32 @@ a.sparkline { color: $darker-text-color; padding-bottom: 15px; font-size: 15px; + line-height: 20px; bdi { display: block; color: $primary-text-color; - font-weight: 500; + font-weight: 700; } } } &__bio { padding: 0 15px; + margin: 8px 0; overflow: hidden; text-overflow: ellipsis; word-wrap: break-word; - max-height: 18px * 2; + max-height: 21px * 2; position: relative; + font-size: 15px; + line-height: 21px; &::after { display: block; content: ""; width: 50px; - height: 18px; + height: 21px; position: absolute; bottom: 0; right: 15px; @@ -1275,10 +1319,6 @@ a.sparkline { &:hover { text-decoration: underline; - - .fa { - color: lighten($dark-text-color, 7%); - } } &.mention { @@ -1295,12 +1335,21 @@ a.sparkline { &__actions { display: flex; + justify-content: space-between; align-items: center; - padding-top: 10px; &__button { - flex: 0 0 auto; + flex-shrink: 1; padding: 0 15px; + overflow: hidden; + + .button { + min-width: 0; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + max-width: 100%; + } } } @@ -1309,19 +1358,23 @@ a.sparkline { display: grid; grid-auto-columns: minmax(0, 1fr); grid-auto-flow: column; + max-width: 340px; + min-width: 65px * 3; &__item { - padding: 15px; + padding: 15px 0; text-align: center; color: $primary-text-color; font-weight: 600; font-size: 15px; + line-height: 21px; small { display: block; color: $darker-text-color; font-weight: 400; font-size: 13px; + line-height: 18px; } } } @@ -1494,6 +1547,8 @@ a.sparkline { word-wrap: break-word; font-weight: 400; color: $primary-text-color; + box-sizing: border-box; + min-height: 100%; p { margin-bottom: 20px; @@ -1556,3 +1611,38 @@ a.sparkline { } } } + +.availability-indicator { + display: flex; + align-items: center; + margin-bottom: 30px; + font-size: 14px; + line-height: 21px; + + &__hint { + padding: 0 15px; + } + + &__graphic { + display: flex; + margin: 0 -2px; + + &__item { + display: block; + flex: 0 0 auto; + width: 4px; + height: 21px; + background: lighten($ui-base-color, 8%); + margin: 0 2px; + border-radius: 2px; + + &.positive { + background: $valid-value-color; + } + + &.negative { + background: $error-value-color; + } + } + } +} diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 99a6eb796..dfb950dce 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -50,7 +50,7 @@ cursor: pointer; display: inline-block; font-family: inherit; - font-size: 17px; + font-size: 15px; font-weight: 500; letter-spacing: 0; line-height: 22px; @@ -596,30 +596,24 @@ display: flex; align-items: flex-start; justify-content: space-between; - opacity: 0; - transition: opacity .1s ease; + } - .icon-button { - flex: 0 1 auto; - color: $secondary-text-color; - font-size: 14px; - font-weight: 500; - padding: 10px; - font-family: inherit; + .icon-button { + flex: 0 1 auto; + color: $secondary-text-color; + font-size: 14px; + font-weight: 500; + padding: 10px; + font-family: inherit; - &:hover, - &:focus, - &:active { - color: lighten($secondary-text-color, 7%); - } - } - - &.active { - opacity: 1; + &:hover, + &:focus, + &:active { + color: lighten($secondary-text-color, 7%); } } - &-description { + &__warning { position: absolute; z-index: 2; bottom: 0; @@ -627,34 +621,6 @@ right: 0; box-sizing: border-box; background: linear-gradient(0deg, rgba($base-shadow-color, 0.8) 0, rgba($base-shadow-color, 0.35) 80%, transparent); - padding: 10px; - opacity: 0; - transition: opacity .1s ease; - - textarea { - background: transparent; - color: $secondary-text-color; - border: 0; - padding: 0; - margin: 0; - width: 100%; - font-family: inherit; - font-size: 14px; - font-weight: 500; - - &:focus { - color: $white; - } - - &::placeholder { - opacity: 0.75; - color: $secondary-text-color; - } - } - - &.active { - opacity: 1; - } } } @@ -874,7 +840,8 @@ .status__content__spoiler-link { background: $action-button-color; - &:hover { + &:hover, + &:focus { background: lighten($action-button-color, 7%); text-decoration: none; } @@ -990,7 +957,7 @@ text-transform: uppercase; line-height: 20px; cursor: pointer; - vertical-align: middle; + vertical-align: top; } .status__wrapper--filtered { @@ -1153,7 +1120,8 @@ color: $primary-text-color; background: $ui-primary-color; - &:hover { + &:hover, + &:focus { background: lighten($ui-primary-color, 8%); } } @@ -1208,7 +1176,7 @@ .media-gallery, .audio-player, .video-player { - margin-top: 8px; + margin-top: 15px; max-width: 250px; } @@ -1727,7 +1695,8 @@ a.account__display-name { background: $ui-base-lighter-color; color: $inverted-text-color; - &:hover { + &:hover, + &:focus { background: lighten($ui-base-lighter-color, 7%); text-decoration: none; } @@ -2414,17 +2383,7 @@ a.account__display-name { padding: 0; } - .directory__list { - display: grid; - grid-gap: 10px; - grid-template-columns: minmax(0, 50%) minmax(0, 50%); - - @media screen and (max-width: $no-gap-breakpoint) { - display: block; - } - } - - .directory__card { + .account-card { margin-bottom: 0; } @@ -4396,7 +4355,7 @@ a.status-card.compact:hover { } } -.upload-progess__message { +.upload-progress__message { flex: 1 1 auto; } @@ -5249,6 +5208,15 @@ a.status-card.compact:hover { color: $inverted-text-color; } + .status__content__spoiler-link { + color: $primary-text-color; + background: $ui-primary-color; + + &:hover { + background: lighten($ui-primary-color, 8%); + } + } + .dialog-option .poll__input { border-color: $inverted-text-color; color: $ui-secondary-color; @@ -5700,12 +5668,18 @@ a.status-card.compact:hover { margin: 20px 0; } } + + .media-gallery, + .audio-player, + .video-player { + margin-top: 15px; + } } .loading-bar { background-color: $highlight-text-color; height: 3px; - position: absolute; + position: fixed; top: 0; left: 0; z-index: 9999; @@ -6300,136 +6274,20 @@ a.status-card.compact:hover { } } -.directory { - &__list { - width: 100%; - margin: 10px 0; - transition: opacity 100ms ease-in; +.scrollable .account-card { + margin: 10px; + background: lighten($ui-base-color, 8%); +} - &.loading { - opacity: 0.7; - } - - @media screen and (max-width: $no-gap-breakpoint) { - margin: 0; - } +.scrollable .account-card__title__avatar { + img, + .account__avatar { + border-color: lighten($ui-base-color, 8%); } +} - &__card { - box-sizing: border-box; - margin-bottom: 10px; - - &__img { - height: 125px; - position: relative; - background: darken($ui-base-color, 12%); - overflow: hidden; - - img { - display: block; - width: 100%; - height: 100%; - margin: 0; - object-fit: cover; - } - } - - &__bar { - display: flex; - align-items: center; - background: lighten($ui-base-color, 4%); - padding: 10px; - - &__name { - flex: 1 1 auto; - display: flex; - align-items: center; - text-decoration: none; - overflow: hidden; - } - - &__relationship { - width: 23px; - min-height: 1px; - flex: 0 0 auto; - } - - .avatar { - flex: 0 0 auto; - width: 48px; - height: 48px; - padding-top: 2px; - - img { - width: 100%; - height: 100%; - display: block; - margin: 0; - border-radius: 4px; - background: darken($ui-base-color, 8%); - object-fit: cover; - } - } - - .display-name { - margin-left: 15px; - text-align: left; - - strong { - font-size: 15px; - color: $primary-text-color; - font-weight: 500; - overflow: hidden; - text-overflow: ellipsis; - } - - span { - display: block; - font-size: 14px; - color: $darker-text-color; - font-weight: 400; - overflow: hidden; - text-overflow: ellipsis; - } - } - } - - &__extra { - background: $ui-base-color; - display: flex; - align-items: center; - justify-content: center; - - .accounts-table__count { - width: 33.33%; - flex: 0 0 auto; - padding: 15px 0; - } - - .account__header__content { - box-sizing: border-box; - padding: 15px 10px; - border-bottom: 1px solid lighten($ui-base-color, 8%); - width: 100%; - min-height: 18px + 30px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - - p { - display: none; - - &:first-child { - display: inline; - } - } - - br { - display: none; - } - } - } - } +.scrollable .account-card__bio::after { + background: linear-gradient(to left, lighten($ui-base-color, 8%), transparent); } .account-gallery__container { @@ -6533,6 +6391,7 @@ a.status-card.compact:hover { &__column { padding: 10px 15px; + padding-bottom: 0; } .radio-button { diff --git a/app/javascript/styles/mastodon/containers.scss b/app/javascript/styles/mastodon/containers.scss index e40ad18ff..81459f5ba 100644 --- a/app/javascript/styles/mastodon/containers.scss +++ b/app/javascript/styles/mastodon/containers.scss @@ -1,7 +1,6 @@ .container-alt { width: 700px; margin: 0 auto; - margin-top: 40px; @media screen and (max-width: 740px) { width: 100%; @@ -67,22 +66,20 @@ line-height: 18px; box-sizing: border-box; padding: 20px 0; - padding-bottom: 0; - margin-bottom: -30px; margin-top: 40px; + margin-bottom: 10px; + border-bottom: 1px solid $ui-base-color; @media screen and (max-width: 440px) { width: 100%; margin: 0; - margin-bottom: 10px; padding: 20px; - padding-bottom: 0; } .avatar { width: 40px; height: 40px; - margin-right: 8px; + margin-right: 10px; img { width: 100%; @@ -96,7 +93,7 @@ .name { flex: 1 1 auto; color: $secondary-text-color; - width: calc(100% - 88px); + width: calc(100% - 90px); .username { display: block; @@ -110,7 +107,7 @@ display: block; font-size: 32px; line-height: 40px; - margin-left: 8px; + margin-left: 10px; } } @@ -412,14 +409,6 @@ } } - .directory__card { - border-radius: 4px; - - @media screen and (max-width: $no-gap-breakpoint) { - border-radius: 0; - } - } - .page-header { @media screen and (max-width: $no-gap-breakpoint) { border-bottom: 0; @@ -838,19 +827,21 @@ grid-gap: 10px; grid-template-columns: minmax(0, 50%) minmax(0, 50%); + .account-card { + display: flex; + flex-direction: column; + } + @media screen and (max-width: $no-gap-breakpoint) { display: block; - } - .icon-button { - font-size: 18px; + .account-card { + margin-bottom: 10px; + display: block; + } } } - .directory__card { - margin-bottom: 0; - } - .card-grid { display: flex; flex-wrap: wrap; diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss index 65f53471d..90d56b075 100644 --- a/app/javascript/styles/mastodon/forms.scss +++ b/app/javascript/styles/mastodon/forms.scss @@ -800,9 +800,41 @@ code { } } } +} - @media screen and (max-width: 740px) and (min-width: 441px) { - margin-top: 40px; +.oauth-prompt { + h3 { + color: $ui-secondary-color; + font-size: 17px; + line-height: 22px; + font-weight: 500; + margin-bottom: 30px; + } + + p { + font-size: 14px; + line-height: 18px; + margin-bottom: 30px; + } + + .permissions-list { + border: 1px solid $ui-base-color; + border-radius: 4px; + background: darken($ui-base-color, 4%); + margin-bottom: 30px; + } + + .actions { + margin: 0 -10px; + display: flex; + + form { + box-sizing: border-box; + padding: 0 10px; + flex: 1 1 auto; + min-height: 1px; + width: 50%; + } } } @@ -1005,3 +1037,39 @@ code { display: none; } } + +.permissions-list { + &__item { + padding: 15px; + color: $ui-secondary-color; + border-bottom: 1px solid lighten($ui-base-color, 4%); + display: flex; + align-items: center; + + &__text { + flex: 1 1 auto; + + &__title { + font-weight: 500; + } + + &__type { + color: $darker-text-color; + } + } + + &__icon { + flex: 0 0 auto; + font-size: 18px; + width: 30px; + color: $valid-value-color; + display: flex; + align-items: center; + } + + &:last-child { + border-bottom: 0; + padding-bottom: 0; + } + } +} diff --git a/app/javascript/styles/mastodon/polls.scss b/app/javascript/styles/mastodon/polls.scss index e33fc7983..a719044ea 100644 --- a/app/javascript/styles/mastodon/polls.scss +++ b/app/javascript/styles/mastodon/polls.scss @@ -69,7 +69,7 @@ display: none; } - .autossugest-input { + .autosuggest-input { flex: 1 1 auto; } diff --git a/app/javascript/styles/mastodon/rtl.scss b/app/javascript/styles/mastodon/rtl.scss index ea7bb5113..98eb1511c 100644 --- a/app/javascript/styles/mastodon/rtl.scss +++ b/app/javascript/styles/mastodon/rtl.scss @@ -12,11 +12,6 @@ body.rtl { margin-left: 10px; } - .directory__card__bar .display-name { - margin-left: 0; - margin-right: 15px; - } - .display-name, .announcements__item { text-align: right; diff --git a/app/javascript/styles/mastodon/tables.scss b/app/javascript/styles/mastodon/tables.scss index 1f7e71776..431b8a73a 100644 --- a/app/javascript/styles/mastodon/tables.scss +++ b/app/javascript/styles/mastodon/tables.scss @@ -65,6 +65,24 @@ } } + &.horizontal-table { + border-collapse: collapse; + border-style: hidden; + + & > tbody > tr > th, + & > tbody > tr > td { + padding: 11px 10px; + background: transparent; + border: 1px solid lighten($ui-base-color, 8%); + color: $secondary-text-color; + } + + & > tbody > tr > th { + color: $darker-text-color; + font-weight: 600; + } + } + &.batch-table { & > thead > tr > th { background: $ui-base-color; diff --git a/app/lib/access_token_extension.rb b/app/lib/access_token_extension.rb index 3e184e775..f51bde492 100644 --- a/app/lib/access_token_extension.rb +++ b/app/lib/access_token_extension.rb @@ -4,6 +4,8 @@ module AccessTokenExtension extend ActiveSupport::Concern included do + include Redisable + after_commit :push_to_streaming_api end @@ -11,7 +13,11 @@ module AccessTokenExtension update(revoked_at: clock.now.utc) end + def update_last_used(request, clock = Time) + update(last_used_at: clock.now.utc, last_used_ip: request.remote_ip) + end + def push_to_streaming_api - Redis.current.publish("timeline:access_token:#{id}", Oj.dump(event: :kill)) if revoked? || destroyed? + redis.publish("timeline:access_token:#{id}", Oj.dump(event: :kill)) if revoked? || destroyed? end end diff --git a/app/lib/activitypub/activity.rb b/app/lib/activitypub/activity.rb index 706960f92..3c51a7a51 100644 --- a/app/lib/activitypub/activity.rb +++ b/app/lib/activitypub/activity.rb @@ -71,15 +71,7 @@ class ActivityPub::Activity end def object_uri - @object_uri ||= begin - str = value_or_id(@object) - - if str&.start_with?('bear:') - Addressable::URI.parse(str).query_values['u'] - else - str - end - end + @object_uri ||= uri_from_bearcap(value_or_id(@object)) end def unsupported_object_type? @@ -172,7 +164,7 @@ class ActivityPub::Activity end def lock_or_fail(key, expire_after = 15.minutes.seconds) - RedisLock.acquire({ redis: Redis.current, key: key, autorelease: expire_after }) do |lock| + RedisLock.acquire({ redis: redis, key: key, autorelease: expire_after }) do |lock| if lock.acquired? yield else diff --git a/app/lib/activitypub/activity/announce.rb b/app/lib/activitypub/activity/announce.rb index 7cd5a41e8..0674b1083 100644 --- a/app/lib/activitypub/activity/announce.rb +++ b/app/lib/activitypub/activity/announce.rb @@ -35,7 +35,7 @@ class ActivityPub::Activity::Announce < ActivityPub::Activity def distribute # Notify the author of the original status if that status is local - NotifyService.new.call(@status.reblog.account, :reblog, @status) if reblog_of_local_account?(@status) && !reblog_by_following_group_account?(@status) + LocalNotificationWorker.perform_async(@status.reblog.account_id, @status.id, 'Status', 'reblog') if reblog_of_local_account?(@status) && !reblog_by_following_group_account?(@status) # Distribute into home and list feeds ::DistributionWorker.perform_async(@status.id) if @options[:override_timestamps] || @status.within_realtime_window? diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb index 7bb12b97f..23f402e75 100644 --- a/app/lib/activitypub/activity/create.rb +++ b/app/lib/activitypub/activity/create.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true class ActivityPub::Activity::Create < ActivityPub::Activity + include FormattingHelper + def perform dereference_object! @@ -116,7 +118,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity language: @status_parser.language, spoiler_text: converted_object_type? ? '' : (@status_parser.spoiler_text || ''), created_at: @status_parser.created_at, - edited_at: @status_parser.edited_at, + edited_at: @status_parser.edited_at && @status_parser.edited_at != @status_parser.created_at ? @status_parser.edited_at : nil, override_timestamps: @options[:override_timestamps], reply: @status_parser.reply, sensitive: @account.sensitized? || @status_parser.sensitive || false, @@ -369,7 +371,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity end def converted_text - Formatter.instance.linkify([@status_parser.title.presence, @status_parser.spoiler_text.presence, @status_parser.url || @status_parser.uri].compact.join("\n\n")) + linkify([@status_parser.title.presence, @status_parser.spoiler_text.presence, @status_parser.url || @status_parser.uri].compact.join("\n\n")) end def unsupported_media_type?(mime_type) diff --git a/app/lib/activitypub/activity/follow.rb b/app/lib/activitypub/activity/follow.rb index 4efb84b8c..97e41ab78 100644 --- a/app/lib/activitypub/activity/follow.rb +++ b/app/lib/activitypub/activity/follow.rb @@ -31,10 +31,10 @@ class ActivityPub::Activity::Follow < ActivityPub::Activity follow_request = FollowRequest.create!(account: @account, target_account: target_account, uri: @json['id']) if target_account.locked? || @account.silenced? - NotifyService.new.call(target_account, :follow_request, follow_request) + LocalNotificationWorker.perform_async(target_account.id, follow_request.id, 'FollowRequest', 'follow_request') else AuthorizeFollowService.new.call(@account, target_account) - NotifyService.new.call(target_account, :follow, ::Follow.find_by(account: @account, target_account: target_account)) + LocalNotificationWorker.perform_async(target_account.id, ::Follow.find_by(account: @account, target_account: target_account).id, 'Follow', 'follow') end end diff --git a/app/lib/activitypub/activity/like.rb b/app/lib/activitypub/activity/like.rb index ebbda15b9..aa1dc3040 100644 --- a/app/lib/activitypub/activity/like.rb +++ b/app/lib/activitypub/activity/like.rb @@ -8,7 +8,7 @@ class ActivityPub::Activity::Like < ActivityPub::Activity favourite = original_status.favourites.create!(account: @account) - NotifyService.new.call(original_status.account, :favourite, favourite) + LocalNotificationWorker.perform_async(original_status.account_id, favourite.id, 'Favourite', 'favourite') Trends.statuses.register(original_status) end end diff --git a/app/lib/activitypub/activity/update.rb b/app/lib/activitypub/activity/update.rb index 0bfead55b..5b3238ece 100644 --- a/app/lib/activitypub/activity/update.rb +++ b/app/lib/activitypub/activity/update.rb @@ -8,6 +8,8 @@ class ActivityPub::Activity::Update < ActivityPub::Activity update_account elsif equals_or_includes_any?(@object['type'], %w(Note Question)) update_status + elsif converted_object_type? + Status.find_by(uri: object_uri, account_id: @account.id) end end @@ -20,17 +22,12 @@ class ActivityPub::Activity::Update < ActivityPub::Activity end def update_status - return reject_payload! if invalid_origin?(@object['id']) + return reject_payload! if invalid_origin?(object_uri) @status = Status.find_by(uri: object_uri, account_id: @account.id) return if @status.nil? - forwarder.forward! if forwarder.forwardable? ActivityPub::ProcessStatusUpdateService.new.call(@status, @object) end - - def forwarder - @forwarder ||= ActivityPub::Forwarder.new(@account, @json, @status) - end end diff --git a/app/lib/activitypub/parser/media_attachment_parser.rb b/app/lib/activitypub/parser/media_attachment_parser.rb index 1798e58a4..30bea1f0e 100644 --- a/app/lib/activitypub/parser/media_attachment_parser.rb +++ b/app/lib/activitypub/parser/media_attachment_parser.rb @@ -27,7 +27,9 @@ class ActivityPub::Parser::MediaAttachmentParser end def description - @json['summary'].presence || @json['name'].presence + str = @json['summary'].presence || @json['name'].presence + str = str.strip[0...MediaAttachment::MAX_DESCRIPTION_LENGTH] if str.present? + str end def focus diff --git a/app/lib/admin/metrics/dimension.rb b/app/lib/admin/metrics/dimension.rb index d8392ddfc..81b89d9b3 100644 --- a/app/lib/admin/metrics/dimension.rb +++ b/app/lib/admin/metrics/dimension.rb @@ -9,6 +9,8 @@ class Admin::Metrics::Dimension software_versions: Admin::Metrics::Dimension::SoftwareVersionsDimension, tag_servers: Admin::Metrics::Dimension::TagServersDimension, tag_languages: Admin::Metrics::Dimension::TagLanguagesDimension, + instance_accounts: Admin::Metrics::Dimension::InstanceAccountsDimension, + instance_languages: Admin::Metrics::Dimension::InstanceLanguagesDimension, }.freeze def self.retrieve(dimension_keys, start_at, end_at, limit, params) diff --git a/app/lib/admin/metrics/dimension/instance_accounts_dimension.rb b/app/lib/admin/metrics/dimension/instance_accounts_dimension.rb new file mode 100644 index 000000000..4eac8e611 --- /dev/null +++ b/app/lib/admin/metrics/dimension/instance_accounts_dimension.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +class Admin::Metrics::Dimension::InstanceAccountsDimension < Admin::Metrics::Dimension::BaseDimension + include LanguagesHelper + + def self.with_params? + true + end + + def key + 'instance_accounts' + end + + protected + + def perform_query + sql = <<-SQL.squish + SELECT accounts.username, count(follows.*) AS value + FROM accounts + LEFT JOIN follows ON follows.target_account_id = accounts.id + WHERE accounts.domain = $1 + GROUP BY accounts.id, follows.target_account_id + ORDER BY value DESC + LIMIT $2 + SQL + + rows = ActiveRecord::Base.connection.select_all(sql, nil, [[nil, params[:domain]], [nil, @limit]]) + + rows.map { |row| { key: row['username'], human_key: row['username'], value: row['value'].to_s } } + end + + def params + @params.permit(:domain) + end +end diff --git a/app/lib/admin/metrics/dimension/instance_languages_dimension.rb b/app/lib/admin/metrics/dimension/instance_languages_dimension.rb new file mode 100644 index 000000000..1ede1a56e --- /dev/null +++ b/app/lib/admin/metrics/dimension/instance_languages_dimension.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +class Admin::Metrics::Dimension::InstanceLanguagesDimension < Admin::Metrics::Dimension::BaseDimension + include LanguagesHelper + + def self.with_params? + true + end + + def key + 'instance_languages' + end + + protected + + def perform_query + sql = <<-SQL.squish + SELECT COALESCE(statuses.language, 'und') AS language, count(*) AS value + FROM statuses + INNER JOIN accounts ON accounts.id = statuses.account_id + WHERE accounts.domain = $1 + AND statuses.id BETWEEN $2 AND $3 + AND statuses.reblog_of_id IS NULL + GROUP BY COALESCE(statuses.language, 'und') + ORDER BY count(*) DESC + LIMIT $4 + SQL + + rows = ActiveRecord::Base.connection.select_all(sql, nil, [[nil, params[:domain]], [nil, Mastodon::Snowflake.id_at(@start_at, with_random: false)], [nil, Mastodon::Snowflake.id_at(@end_at, with_random: false)], [nil, @limit]]) + + rows.map { |row| { key: row['language'], human_key: standard_locale_name(row['language']), value: row['value'].to_s } } + end + + def params + @params.permit(:domain) + end +end diff --git a/app/lib/admin/metrics/measure.rb b/app/lib/admin/metrics/measure.rb index a839498a1..0b510eb25 100644 --- a/app/lib/admin/metrics/measure.rb +++ b/app/lib/admin/metrics/measure.rb @@ -10,6 +10,12 @@ class Admin::Metrics::Measure tag_accounts: Admin::Metrics::Measure::TagAccountsMeasure, tag_uses: Admin::Metrics::Measure::TagUsesMeasure, tag_servers: Admin::Metrics::Measure::TagServersMeasure, + instance_accounts: Admin::Metrics::Measure::InstanceAccountsMeasure, + instance_media_attachments: Admin::Metrics::Measure::InstanceMediaAttachmentsMeasure, + instance_reports: Admin::Metrics::Measure::InstanceReportsMeasure, + instance_statuses: Admin::Metrics::Measure::InstanceStatusesMeasure, + instance_follows: Admin::Metrics::Measure::InstanceFollowsMeasure, + instance_followers: Admin::Metrics::Measure::InstanceFollowersMeasure, }.freeze def self.retrieve(measure_keys, start_at, end_at, params) diff --git a/app/lib/admin/metrics/measure/base_measure.rb b/app/lib/admin/metrics/measure/base_measure.rb index ed1df9c7d..e33a6c494 100644 --- a/app/lib/admin/metrics/measure/base_measure.rb +++ b/app/lib/admin/metrics/measure/base_measure.rb @@ -26,6 +26,14 @@ class Admin::Metrics::Measure::BaseMeasure raise NotImplementedError end + def unit + nil + end + + def total_in_time_range? + true + end + def total load[:total] end diff --git a/app/lib/admin/metrics/measure/instance_accounts_measure.rb b/app/lib/admin/metrics/measure/instance_accounts_measure.rb new file mode 100644 index 000000000..4c61a064a --- /dev/null +++ b/app/lib/admin/metrics/measure/instance_accounts_measure.rb @@ -0,0 +1,58 @@ +# frozen_string_literal: true + +class Admin::Metrics::Measure::InstanceAccountsMeasure < Admin::Metrics::Measure::BaseMeasure + def self.with_params? + true + end + + def key + 'instance_accounts' + end + + def total_in_time_range? + false + end + + protected + + def perform_total_query + Account.where(domain: params[:domain]).count + end + + def perform_previous_total_query + nil + end + + def perform_data_query + sql = <<-SQL.squish + SELECT axis.*, ( + WITH new_accounts AS ( + SELECT accounts.id + FROM accounts + WHERE date_trunc('day', accounts.created_at)::date = axis.period + AND accounts.domain = $3::text + ) + SELECT count(*) FROM new_accounts + ) AS value + FROM ( + SELECT generate_series(date_trunc('day', $1::timestamp)::date, date_trunc('day', $2::timestamp)::date, interval '1 day') AS period + ) AS axis + SQL + + rows = ActiveRecord::Base.connection.select_all(sql, nil, [[nil, @start_at], [nil, @end_at], [nil, params[:domain]]]) + + rows.map { |row| { date: row['period'], value: row['value'].to_s } } + end + + def time_period + (@start_at.to_date..@end_at.to_date) + end + + def previous_time_period + ((@start_at.to_date - length_of_period)..(@end_at.to_date - length_of_period)) + end + + def params + @params.permit(:domain) + end +end diff --git a/app/lib/admin/metrics/measure/instance_followers_measure.rb b/app/lib/admin/metrics/measure/instance_followers_measure.rb new file mode 100644 index 000000000..caa60013b --- /dev/null +++ b/app/lib/admin/metrics/measure/instance_followers_measure.rb @@ -0,0 +1,59 @@ +# frozen_string_literal: true + +class Admin::Metrics::Measure::InstanceFollowersMeasure < Admin::Metrics::Measure::BaseMeasure + def self.with_params? + true + end + + def key + 'instance_followers' + end + + def total_in_time_range? + false + end + + protected + + def perform_total_query + Follow.joins(:account).merge(Account.where(domain: params[:domain])).count + end + + def perform_previous_total_query + nil + end + + def perform_data_query + sql = <<-SQL.squish + SELECT axis.*, ( + WITH new_followers AS ( + SELECT follows.id + FROM follows + INNER JOIN accounts ON follows.account_id = accounts.id + WHERE date_trunc('day', follows.created_at)::date = axis.period + AND accounts.domain = $3::text + ) + SELECT count(*) FROM new_followers + ) AS value + FROM ( + SELECT generate_series(date_trunc('day', $1::timestamp)::date, date_trunc('day', $2::timestamp)::date, interval '1 day') AS period + ) AS axis + SQL + + rows = ActiveRecord::Base.connection.select_all(sql, nil, [[nil, @start_at], [nil, @end_at], [nil, params[:domain]]]) + + rows.map { |row| { date: row['period'], value: row['value'].to_s } } + end + + def time_period + (@start_at.to_date..@end_at.to_date) + end + + def previous_time_period + ((@start_at.to_date - length_of_period)..(@end_at.to_date - length_of_period)) + end + + def params + @params.permit(:domain) + end +end diff --git a/app/lib/admin/metrics/measure/instance_follows_measure.rb b/app/lib/admin/metrics/measure/instance_follows_measure.rb new file mode 100644 index 000000000..b026c7e6d --- /dev/null +++ b/app/lib/admin/metrics/measure/instance_follows_measure.rb @@ -0,0 +1,59 @@ +# frozen_string_literal: true + +class Admin::Metrics::Measure::InstanceFollowsMeasure < Admin::Metrics::Measure::BaseMeasure + def self.with_params? + true + end + + def key + 'instance_follows' + end + + def total_in_time_range? + false + end + + protected + + def perform_total_query + Follow.joins(:target_account).merge(Account.where(domain: params[:domain])).count + end + + def perform_previous_total_query + nil + end + + def perform_data_query + sql = <<-SQL.squish + SELECT axis.*, ( + WITH new_follows AS ( + SELECT follows.id + FROM follows + INNER JOIN accounts ON follows.target_account_id = accounts.id + WHERE date_trunc('day', follows.created_at)::date = axis.period + AND accounts.domain = $3::text + ) + SELECT count(*) FROM new_follows + ) AS value + FROM ( + SELECT generate_series(date_trunc('day', $1::timestamp)::date, date_trunc('day', $2::timestamp)::date, interval '1 day') AS period + ) AS axis + SQL + + rows = ActiveRecord::Base.connection.select_all(sql, nil, [[nil, @start_at], [nil, @end_at], [nil, params[:domain]]]) + + rows.map { |row| { date: row['period'], value: row['value'].to_s } } + end + + def time_period + (@start_at.to_date..@end_at.to_date) + end + + def previous_time_period + ((@start_at.to_date - length_of_period)..(@end_at.to_date - length_of_period)) + end + + def params + @params.permit(:domain) + end +end diff --git a/app/lib/admin/metrics/measure/instance_media_attachments_measure.rb b/app/lib/admin/metrics/measure/instance_media_attachments_measure.rb new file mode 100644 index 000000000..2e2154c92 --- /dev/null +++ b/app/lib/admin/metrics/measure/instance_media_attachments_measure.rb @@ -0,0 +1,69 @@ +# frozen_string_literal: true + +class Admin::Metrics::Measure::InstanceMediaAttachmentsMeasure < Admin::Metrics::Measure::BaseMeasure + include ActionView::Helpers::NumberHelper + + def self.with_params? + true + end + + def key + 'instance_media_attachments' + end + + def unit + 'bytes' + end + + def value_to_human_value(value) + number_to_human_size(value) + end + + def total_in_time_range? + false + end + + protected + + def perform_total_query + MediaAttachment.joins(:account).merge(Account.where(domain: params[:domain])).sum('COALESCE(file_file_size, 0) + COALESCE(thumbnail_file_size, 0)') + end + + def perform_previous_total_query + nil + end + + def perform_data_query + sql = <<-SQL.squish + SELECT axis.*, ( + WITH new_media_attachments AS ( + SELECT COALESCE(media_attachments.file_file_size, 0) + COALESCE(media_attachments.thumbnail_file_size, 0) AS size + FROM media_attachments + INNER JOIN accounts ON accounts.id = media_attachments.account_id + WHERE date_trunc('day', media_attachments.created_at)::date = axis.period + AND accounts.domain = $3::text + ) + SELECT SUM(size) FROM new_media_attachments + ) AS value + FROM ( + SELECT generate_series(date_trunc('day', $1::timestamp)::date, date_trunc('day', $2::timestamp)::date, interval '1 day') AS period + ) AS axis + SQL + + rows = ActiveRecord::Base.connection.select_all(sql, nil, [[nil, @start_at], [nil, @end_at], [nil, params[:domain]]]) + + rows.map { |row| { date: row['period'], value: row['value'].to_s } } + end + + def time_period + (@start_at.to_date..@end_at.to_date) + end + + def previous_time_period + ((@start_at.to_date - length_of_period)..(@end_at.to_date - length_of_period)) + end + + def params + @params.permit(:domain) + end +end diff --git a/app/lib/admin/metrics/measure/instance_reports_measure.rb b/app/lib/admin/metrics/measure/instance_reports_measure.rb new file mode 100644 index 000000000..6b3f35067 --- /dev/null +++ b/app/lib/admin/metrics/measure/instance_reports_measure.rb @@ -0,0 +1,59 @@ +# frozen_string_literal: true + +class Admin::Metrics::Measure::InstanceReportsMeasure < Admin::Metrics::Measure::BaseMeasure + def self.with_params? + true + end + + def key + 'instance_reports' + end + + def total_in_time_range? + false + end + + protected + + def perform_total_query + Report.where(target_account: Account.where(domain: params[:domain])).count + end + + def perform_previous_total_query + nil + end + + def perform_data_query + sql = <<-SQL.squish + SELECT axis.*, ( + WITH new_reports AS ( + SELECT reports.id + FROM reports + INNER JOIN accounts ON accounts.id = reports.target_account_id + WHERE date_trunc('day', reports.created_at)::date = axis.period + AND accounts.domain = $3::text + ) + SELECT count(*) FROM new_reports + ) AS value + FROM ( + SELECT generate_series(date_trunc('day', $1::timestamp)::date, date_trunc('day', $2::timestamp)::date, interval '1 day') AS period + ) AS axis + SQL + + rows = ActiveRecord::Base.connection.select_all(sql, nil, [[nil, @start_at], [nil, @end_at], [nil, params[:domain]]]) + + rows.map { |row| { date: row['period'], value: row['value'].to_s } } + end + + def time_period + (@start_at.to_date..@end_at.to_date) + end + + def previous_time_period + ((@start_at.to_date - length_of_period)..(@end_at.to_date - length_of_period)) + end + + def params + @params.permit(:domain) + end +end diff --git a/app/lib/admin/metrics/measure/instance_statuses_measure.rb b/app/lib/admin/metrics/measure/instance_statuses_measure.rb new file mode 100644 index 000000000..86b10da6c --- /dev/null +++ b/app/lib/admin/metrics/measure/instance_statuses_measure.rb @@ -0,0 +1,60 @@ +# frozen_string_literal: true + +class Admin::Metrics::Measure::InstanceStatusesMeasure < Admin::Metrics::Measure::BaseMeasure + def self.with_params? + true + end + + def key + 'instance_statuses' + end + + def total_in_time_range? + false + end + + protected + + def perform_total_query + Status.joins(:account).merge(Account.where(domain: params[:domain])).count + end + + def perform_previous_total_query + nil + end + + def perform_data_query + sql = <<-SQL.squish + SELECT axis.*, ( + WITH new_statuses AS ( + SELECT statuses.id + FROM statuses + INNER JOIN accounts ON accounts.id = statuses.account_id + WHERE statuses.id BETWEEN $3 AND $4 + AND accounts.domain = $5::text + AND date_trunc('day', statuses.created_at)::date = axis.period + ) + SELECT count(*) FROM new_statuses + ) AS value + FROM ( + SELECT generate_series(date_trunc('day', $1::timestamp)::date, date_trunc('day', $2::timestamp)::date, interval '1 day') AS period + ) AS axis + SQL + + rows = ActiveRecord::Base.connection.select_all(sql, nil, [[nil, @start_at], [nil, @end_at], [nil, Mastodon::Snowflake.id_at(@start_at, with_random: false)], [nil, Mastodon::Snowflake.id_at(@end_at, with_random: false)], [nil, params[:domain]]]) + + rows.map { |row| { date: row['period'], value: row['value'].to_s } } + end + + def time_period + (@start_at.to_date..@end_at.to_date) + end + + def previous_time_period + ((@start_at.to_date - length_of_period)..(@end_at.to_date - length_of_period)) + end + + def params + @params.permit(:domain) + end +end diff --git a/app/lib/admin/system_check.rb b/app/lib/admin/system_check.rb index afb20cb47..877a42ef6 100644 --- a/app/lib/admin/system_check.rb +++ b/app/lib/admin/system_check.rb @@ -5,6 +5,7 @@ class Admin::SystemCheck Admin::SystemCheck::DatabaseSchemaCheck, Admin::SystemCheck::SidekiqProcessCheck, Admin::SystemCheck::RulesCheck, + Admin::SystemCheck::ElasticsearchCheck, ].freeze def self.perform diff --git a/app/lib/admin/system_check/elasticsearch_check.rb b/app/lib/admin/system_check/elasticsearch_check.rb new file mode 100644 index 000000000..1b48a5415 --- /dev/null +++ b/app/lib/admin/system_check/elasticsearch_check.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +class Admin::SystemCheck::ElasticsearchCheck < Admin::SystemCheck::BaseCheck + def pass? + return true unless Chewy.enabled? + + running_version.present? && compatible_version? + end + + def message + if running_version.present? + Admin::SystemCheck::Message.new(:elasticsearch_version_check, I18n.t('admin.system_checks.elasticsearch_version_check.version_comparison', running_version: running_version, required_version: required_version)) + else + Admin::SystemCheck::Message.new(:elasticsearch_running_check) + end + end + + private + + def running_version + @running_version ||= begin + Chewy.client.info['version']['number'] + rescue Faraday::ConnectionFailed + nil + end + end + + def required_version + '7.x' + end + + def compatible_version? + Gem::Version.new(running_version) >= Gem::Version.new(required_version) + end + + def missing_queues + @missing_queues ||= Sidekiq::ProcessSet.new.reduce(SIDEKIQ_QUEUES) { |queues, process| queues - process['queues'] } + end +end diff --git a/app/lib/application_extension.rb b/app/lib/application_extension.rb index e61cd0721..a1fea6430 100644 --- a/app/lib/application_extension.rb +++ b/app/lib/application_extension.rb @@ -8,4 +8,8 @@ module ApplicationExtension validates :website, url: true, length: { maximum: 2_000 }, if: :website? validates :redirect_uri, length: { maximum: 2_000 } end + + def most_recently_used_access_token + @most_recently_used_access_token ||= access_tokens.where.not(last_used_at: nil).order(last_used_at: :desc).first + end end diff --git a/app/lib/delivery_failure_tracker.rb b/app/lib/delivery_failure_tracker.rb index 8907ade4c..7c4e28eb7 100644 --- a/app/lib/delivery_failure_tracker.rb +++ b/app/lib/delivery_failure_tracker.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true class DeliveryFailureTracker + include Redisable + FAILURE_DAYS_THRESHOLD = 7 def initialize(url_or_host) @@ -8,21 +10,21 @@ class DeliveryFailureTracker end def track_failure! - Redis.current.sadd(exhausted_deliveries_key, today) + redis.sadd(exhausted_deliveries_key, today) UnavailableDomain.create(domain: @host) if reached_failure_threshold? end def track_success! - Redis.current.del(exhausted_deliveries_key) + redis.del(exhausted_deliveries_key) UnavailableDomain.find_by(domain: @host)&.destroy end def clear_failures! - Redis.current.del(exhausted_deliveries_key) + redis.del(exhausted_deliveries_key) end def days - Redis.current.scard(exhausted_deliveries_key) || 0 + redis.scard(exhausted_deliveries_key) || 0 end def available? @@ -30,12 +32,14 @@ class DeliveryFailureTracker end def exhausted_deliveries_days - Redis.current.smembers(exhausted_deliveries_key).sort.map { |date| Date.new(date.slice(0, 4).to_i, date.slice(4, 2).to_i, date.slice(6, 2).to_i) } + @exhausted_deliveries_days ||= redis.smembers(exhausted_deliveries_key).sort.map { |date| Date.new(date.slice(0, 4).to_i, date.slice(4, 2).to_i, date.slice(6, 2).to_i) } end alias reset! track_success! class << self + include Redisable + def without_unavailable(urls) unavailable_domains_map = Rails.cache.fetch('unavailable_domains') { UnavailableDomain.pluck(:domain).index_with(true) } @@ -54,7 +58,7 @@ class DeliveryFailureTracker end def warning_domains - domains = Redis.current.keys(exhausted_deliveries_key_by('*')).map do |key| + domains = redis.keys(exhausted_deliveries_key_by('*')).map do |key| key.delete_prefix(exhausted_deliveries_key_by('')) end @@ -62,7 +66,7 @@ class DeliveryFailureTracker end def warning_domains_map - warning_domains.index_with { |domain| Redis.current.scard(exhausted_deliveries_key_by(domain)) } + warning_domains.index_with { |domain| redis.scard(exhausted_deliveries_key_by(domain)) } end private diff --git a/app/lib/emoji_formatter.rb b/app/lib/emoji_formatter.rb new file mode 100644 index 000000000..f808f3a22 --- /dev/null +++ b/app/lib/emoji_formatter.rb @@ -0,0 +1,98 @@ +# frozen_string_literal: true + +class EmojiFormatter + include RoutingHelper + + DISALLOWED_BOUNDING_REGEX = /[[:alnum:]:]/.freeze + + attr_reader :html, :custom_emojis, :options + + # @param [ActiveSupport::SafeBuffer] html + # @param [Array] custom_emojis + # @param [Hash] options + # @option options [Boolean] :animate + def initialize(html, custom_emojis, options = {}) + raise ArgumentError unless html.html_safe? + + @html = html + @custom_emojis = custom_emojis + @options = options + end + + def to_s + return html if custom_emojis.empty? || html.blank? + + i = -1 + tag_open_index = nil + inside_shortname = false + shortname_start_index = -1 + invisible_depth = 0 + last_index = 0 + result = ''.dup + + while i + 1 < html.size + i += 1 + + if invisible_depth.zero? && inside_shortname && html[i] == ':' + inside_shortname = false + shortcode = html[shortname_start_index + 1..i - 1] + char_after = html[i + 1] + + next unless (char_after.nil? || !DISALLOWED_BOUNDING_REGEX.match?(char_after)) && (emoji = emoji_map[shortcode]) + + result << html[last_index..shortname_start_index - 1] if shortname_start_index.positive? + result << image_for_emoji(shortcode, emoji) + last_index = i + 1 + elsif tag_open_index && html[i] == '>' + tag = html[tag_open_index..i] + tag_open_index = nil + + if invisible_depth.positive? + invisible_depth += count_tag_nesting(tag) + elsif tag == ' Hello world' - end - end - - context 'given a post containing plain text' do - let(:status) { Fabricate(:status, text: 'text', uri: nil) } - - it 'paragraphizes the text' do - is_expected.to eq '

    text

    ' - end - end - - context 'given a post containing line feeds' do - let(:status) { Fabricate(:status, text: "line\nfeed", uri: nil) } - - it 'removes line feeds' do - is_expected.not_to include "\n" - end - end - - context 'given a post containing linkable mentions' do - let(:status) { Fabricate(:status, mentions: [ Fabricate(:mention, account: local_account) ], text: '@alice') } - - it 'creates a mention link' do - is_expected.to include '@alice' - end - end - - context 'given a post containing unlinkable mentions' do - let(:status) { Fabricate(:status, text: '@alice', uri: nil) } - - it 'does not create a mention link' do - is_expected.to include '@alice' - end - end - - context do - subject do - status = Fabricate(:status, text: text, uri: nil) - Formatter.instance.format(status) - end - - include_examples 'encode and link URLs' - end - - context 'given a post with custom_emojify option' do - let!(:emoji) { Fabricate(:custom_emoji) } - let(:status) { Fabricate(:status, account: local_account, text: text) } - - subject { Formatter.instance.format(status, custom_emojify: true) } - - context 'given a post with an emoji shortcode at the start' do - let(:text) { ':coolcat: Beep boop' } - - it 'converts the shortcode to an image tag' do - is_expected.to match(/

    :coolcat::coolcat: Beep boop
    ' } - - it 'converts the shortcode to an image tag' do - is_expected.to match(/

    :coolcat:Beep :coolcat: boop

    ' } - - it 'converts the shortcode to an image tag' do - is_expected.to match(/Beep :coolcat::coolcat::coolcat:

    ' } - - it 'does not touch the shortcodes' do - is_expected.to match(/

    :coolcat::coolcat:<\/p>/) - end - end - - context 'given a post with an emoji shortcode at the end' do - let(:text) { '

    Beep boop
    :coolcat:

    ' } - - it 'converts the shortcode to an image tag' do - is_expected.to match(/
    :coolcat:alert("Hello")' } - - it 'strips the scripts' do - is_expected.to_not include '' - end - end - - context 'given a post containing malicious classes' do - let(:text) { 'Show more' } - - it 'strips the malicious classes' do - is_expected.to_not include 'status__content__spoiler-link' - end - end - end - - describe '#plaintext' do - subject { Formatter.instance.plaintext(status) } - - context 'given a post with local status' do - let(:status) { Fabricate(:status, text: '

    a text by a nerd who uses an HTML tag in text

    ', uri: nil) } - - it 'returns the raw text' do - is_expected.to eq '

    a text by a nerd who uses an HTML tag in text

    ' - end - end - - context 'given a post with remote status' do - let(:status) { Fabricate(:status, account: remote_account, text: '') } - - it 'returns tag-stripped text' do - is_expected.to eq '' - end - end - end - - describe '#simplified_format' do - subject { Formatter.instance.simplified_format(account) } - - context 'given a post with local status' do - let(:account) { Fabricate(:account, domain: nil, note: text) } - - context 'given a post containing linkable mentions for local accounts' do - let(:text) { '@alice' } - - before { local_account } - - it 'creates a mention link' do - is_expected.to eq '

    @alice

    ' - end - end - - context 'given a post containing linkable mentions for remote accounts' do - let(:text) { '@bob@remote.test' } - - before { remote_account } - - it 'creates a mention link' do - is_expected.to eq '

    @bob

    ' - end - end - - context 'given a post containing unlinkable mentions' do - let(:text) { '@alice' } - - it 'does not create a mention link' do - is_expected.to eq '

    @alice

    ' - end - end - - context 'given a post with custom_emojify option' do - let!(:emoji) { Fabricate(:custom_emoji) } - - before { account.note = text } - subject { Formatter.instance.simplified_format(account, custom_emojify: true) } - - context 'given a post with an emoji shortcode at the start' do - let(:text) { ':coolcat: Beep boop' } - - it 'converts the shortcode to an image tag' do - is_expected.to match(/

    :coolcat:alert("Hello")' } - let(:account) { Fabricate(:account, domain: 'remote', note: text) } - - it 'reformats' do - is_expected.to_not include '' - end - - context 'with custom_emojify option' do - let!(:emoji) { Fabricate(:custom_emoji, domain: remote_account.domain) } - - before { remote_account.note = text } - - subject { Formatter.instance.simplified_format(remote_account, custom_emojify: true) } - - context 'given a post with an emoji shortcode at the start' do - let(:text) { '

    :coolcat: Beep boop
    ' } - - it 'converts shortcode to image tag' do - is_expected.to match(/

    :coolcat:Beep :coolcat: boop

    ' } - - it 'converts shortcode to image tag' do - is_expected.to match(/Beep :coolcat::coolcat::coolcat:

    ' } - - it 'does not touch the shortcodes' do - is_expected.to match(/

    :coolcat::coolcat:<\/p>/) - end - end - - context 'given a post with an emoji shortcode at the end' do - let(:text) { '

    Beep boop
    :coolcat:

    ' } - - it 'converts shortcode to image tag' do - is_expected.to match(/
    :coolcat:alert("Hello")' } - - subject { Formatter.instance.sanitize(html, Sanitize::Config::MASTODON_STRICT) } - - it 'sanitizes' do - is_expected.to eq '' - end - end -end diff --git a/spec/lib/html_aware_formatter_spec.rb b/spec/lib/html_aware_formatter_spec.rb new file mode 100644 index 000000000..18d23abf5 --- /dev/null +++ b/spec/lib/html_aware_formatter_spec.rb @@ -0,0 +1,44 @@ +require 'rails_helper' + +RSpec.describe HtmlAwareFormatter do + describe '#to_s' do + subject { described_class.new(text, local).to_s } + + context 'when local' do + let(:local) { true } + let(:text) { 'Foo bar' } + + it 'returns formatted text' do + is_expected.to eq '

    Foo bar

    ' + end + end + + context 'when remote' do + let(:local) { false } + + context 'given plain text' do + let(:text) { 'Beep boop' } + + it 'keeps the plain text' do + is_expected.to include 'Beep boop' + end + end + + context 'given text containing script tags' do + let(:text) { '' } + + it 'strips the scripts' do + is_expected.to_not include '' + end + end + + context 'given text containing malicious classes' do + let(:text) { 'Show more' } + + it 'strips the malicious classes' do + is_expected.to_not include 'status__content__spoiler-link' + end + end + end + end +end diff --git a/spec/lib/link_details_extractor_spec.rb b/spec/lib/link_details_extractor_spec.rb index 84bb4579c..7ea867c61 100644 --- a/spec/lib/link_details_extractor_spec.rb +++ b/spec/lib/link_details_extractor_spec.rb @@ -25,6 +25,14 @@ RSpec.describe LinkDetailsExtractor do expect(subject.canonical_url).to eq 'https://foo.com/article' end end + + context 'when canonical URL is set to "null"' do + let(:html) { '' } + + it 'ignores the canonical URLs' do + expect(subject.canonical_url).to eq original_url + end + end end context 'when structured data is present' do diff --git a/spec/lib/plain_text_formatter_spec.rb b/spec/lib/plain_text_formatter_spec.rb new file mode 100644 index 000000000..c3d0ee630 --- /dev/null +++ b/spec/lib/plain_text_formatter_spec.rb @@ -0,0 +1,24 @@ +require 'rails_helper' + +RSpec.describe PlainTextFormatter do + describe '#to_s' do + subject { described_class.new(status.text, status.local?).to_s } + + context 'given a post with local status' do + let(:status) { Fabricate(:status, text: '

    a text by a nerd who uses an HTML tag in text

    ', uri: nil) } + + it 'returns the raw text' do + is_expected.to eq '

    a text by a nerd who uses an HTML tag in text

    ' + end + end + + context 'given a post with remote status' do + let(:remote_account) { Fabricate(:account, domain: 'remote.test', username: 'bob', url: 'https://remote.test/') } + let(:status) { Fabricate(:status, account: remote_account, text: '

    Hello

    ') } + + it 'returns tag-stripped text' do + is_expected.to eq 'Hello' + end + end + end +end diff --git a/spec/lib/rss/serializer_spec.rb b/spec/lib/rss/serializer_spec.rb index 0364d13de..1da45d302 100644 --- a/spec/lib/rss/serializer_spec.rb +++ b/spec/lib/rss/serializer_spec.rb @@ -13,13 +13,6 @@ describe RSS::Serializer do subject { RSS::Serializer.new.send(:status_title, status) } - context 'if destroyed?' do - it 'returns "#{account.acct} deleted status"' do - status.destroy! - expect(subject).to eq "#{account.acct} deleted status" - end - end - context 'on a toot with long text' do let(:text) { "This toot's text is longer than the allowed number of characters" } diff --git a/spec/lib/scope_transformer_spec.rb b/spec/lib/scope_transformer_spec.rb new file mode 100644 index 000000000..e5a992144 --- /dev/null +++ b/spec/lib/scope_transformer_spec.rb @@ -0,0 +1,89 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe ScopeTransformer do + describe '#apply' do + subject { described_class.new.apply(ScopeParser.new.parse(input)) } + + shared_examples 'a scope' do |namespace, term, access| + it 'parses the term' do + expect(subject.term).to eq term + end + + it 'parses the namespace' do + expect(subject.namespace).to eq namespace + end + + it 'parses the access' do + expect(subject.access).to eq access + end + end + + context 'for scope "read"' do + let(:input) { 'read' } + + it_behaves_like 'a scope', nil, 'all', 'read' + end + + context 'for scope "write"' do + let(:input) { 'write' } + + it_behaves_like 'a scope', nil, 'all', 'write' + end + + context 'for scope "follow"' do + let(:input) { 'follow' } + + it_behaves_like 'a scope', nil, 'follow', 'read/write' + end + + context 'for scope "crypto"' do + let(:input) { 'crypto' } + + it_behaves_like 'a scope', nil, 'crypto', 'read/write' + end + + context 'for scope "push"' do + let(:input) { 'push' } + + it_behaves_like 'a scope', nil, 'push', 'read/write' + end + + context 'for scope "admin:read"' do + let(:input) { 'admin:read' } + + it_behaves_like 'a scope', 'admin', 'all', 'read' + end + + context 'for scope "admin:write"' do + let(:input) { 'admin:write' } + + it_behaves_like 'a scope', 'admin', 'all', 'write' + end + + context 'for scope "admin:read:accounts"' do + let(:input) { 'admin:read:accounts' } + + it_behaves_like 'a scope', 'admin', 'accounts', 'read' + end + + context 'for scope "admin:write:accounts"' do + let(:input) { 'admin:write:accounts' } + + it_behaves_like 'a scope', 'admin', 'accounts', 'write' + end + + context 'for scope "read:accounts"' do + let(:input) { 'read:accounts' } + + it_behaves_like 'a scope', nil, 'accounts', 'read' + end + + context 'for scope "write:accounts"' do + let(:input) { 'write:accounts' } + + it_behaves_like 'a scope', nil, 'accounts', 'write' + end + end +end diff --git a/spec/lib/suspicious_sign_in_detector_spec.rb b/spec/lib/suspicious_sign_in_detector_spec.rb new file mode 100644 index 000000000..101a18aa0 --- /dev/null +++ b/spec/lib/suspicious_sign_in_detector_spec.rb @@ -0,0 +1,57 @@ +require 'rails_helper' + +RSpec.describe SuspiciousSignInDetector do + describe '#suspicious?' do + let(:user) { Fabricate(:user, current_sign_in_at: 1.day.ago) } + let(:request) { double(remote_ip: remote_ip) } + let(:remote_ip) { nil } + + subject { described_class.new(user).suspicious?(request) } + + context 'when user has 2FA enabled' do + before do + user.update!(otp_required_for_login: true) + end + + it 'returns false' do + expect(subject).to be false + end + end + + context 'when exact IP has been used before' do + let(:remote_ip) { '1.1.1.1' } + + before do + user.update!(sign_up_ip: remote_ip) + end + + it 'returns false' do + expect(subject).to be false + end + end + + context 'when similar IP has been used before' do + let(:remote_ip) { '1.1.2.2' } + + before do + user.update!(sign_up_ip: '1.1.1.1') + end + + it 'returns false' do + expect(subject).to be false + end + end + + context 'when IP is completely unfamiliar' do + let(:remote_ip) { '2.2.2.2' } + + before do + user.update!(sign_up_ip: '1.1.1.1') + end + + it 'returns true' do + expect(subject).to be true + end + end + end +end diff --git a/spec/lib/tag_manager_spec.rb b/spec/lib/tag_manager_spec.rb index 2230f9710..cd9fb936c 100644 --- a/spec/lib/tag_manager_spec.rb +++ b/spec/lib/tag_manager_spec.rb @@ -6,7 +6,7 @@ RSpec.describe TagManager do around do |example| original_local_domain = Rails.configuration.x.local_domain - Rails.configuration.x.local_domain = 'domain.test' + Rails.configuration.x.local_domain = 'domain.example.com' example.run @@ -18,11 +18,11 @@ RSpec.describe TagManager do end it 'returns true if the slash-stripped string equals to local domain' do - expect(TagManager.instance.local_domain?('DoMaIn.Test/')).to eq true + expect(TagManager.instance.local_domain?('DoMaIn.Example.com/')).to eq true end it 'returns false for irrelevant string' do - expect(TagManager.instance.local_domain?('DoMaIn.Test!')).to eq false + expect(TagManager.instance.local_domain?('DoMaIn.Example.com!')).to eq false end end @@ -31,7 +31,7 @@ RSpec.describe TagManager do around do |example| original_web_domain = Rails.configuration.x.web_domain - Rails.configuration.x.web_domain = 'domain.test' + Rails.configuration.x.web_domain = 'domain.example.com' example.run @@ -43,11 +43,11 @@ RSpec.describe TagManager do end it 'returns true if the slash-stripped string equals to web domain' do - expect(TagManager.instance.web_domain?('DoMaIn.Test/')).to eq true + expect(TagManager.instance.web_domain?('DoMaIn.Example.com/')).to eq true end it 'returns false for string with irrelevant characters' do - expect(TagManager.instance.web_domain?('DoMaIn.Test!')).to eq false + expect(TagManager.instance.web_domain?('DoMaIn.Example.com!')).to eq false end end @@ -57,7 +57,7 @@ RSpec.describe TagManager do end it 'returns normalized domain' do - expect(TagManager.instance.normalize_domain('DoMaIn.Test/')).to eq 'domain.test' + expect(TagManager.instance.normalize_domain('DoMaIn.Example.com/')).to eq 'domain.example.com' end end @@ -69,18 +69,18 @@ RSpec.describe TagManager do end it 'returns true if the normalized string with port is local URL' do - Rails.configuration.x.web_domain = 'domain.test:42' - expect(TagManager.instance.local_url?('https://DoMaIn.Test:42/')).to eq true + Rails.configuration.x.web_domain = 'domain.example.com:42' + expect(TagManager.instance.local_url?('https://DoMaIn.Example.com:42/')).to eq true end it 'returns true if the normalized string without port is local URL' do - Rails.configuration.x.web_domain = 'domain.test' - expect(TagManager.instance.local_url?('https://DoMaIn.Test/')).to eq true + Rails.configuration.x.web_domain = 'domain.example.com' + expect(TagManager.instance.local_url?('https://DoMaIn.Example.com/')).to eq true end it 'returns false for string with irrelevant characters' do - Rails.configuration.x.web_domain = 'domain.test' - expect(TagManager.instance.local_url?('https://domainn.test/')).to eq false + Rails.configuration.x.web_domain = 'domain.example.com' + expect(TagManager.instance.local_url?('https://domain.example.net/')).to eq false end end end diff --git a/spec/lib/text_formatter_spec.rb b/spec/lib/text_formatter_spec.rb new file mode 100644 index 000000000..52a9d2498 --- /dev/null +++ b/spec/lib/text_formatter_spec.rb @@ -0,0 +1,313 @@ +require 'rails_helper' + +RSpec.describe TextFormatter do + describe '#to_s' do + let(:preloaded_accounts) { nil } + + subject { described_class.new(text, preloaded_accounts: preloaded_accounts).to_s } + + context 'given text containing plain text' do + let(:text) { 'text' } + + it 'paragraphizes the text' do + is_expected.to eq '

    text

    ' + end + end + + context 'given text containing line feeds' do + let(:text) { "line\nfeed" } + + it 'removes line feeds' do + is_expected.not_to include "\n" + end + end + + context 'given text containing linkable mentions' do + let(:preloaded_accounts) { [Fabricate(:account, username: 'alice')] } + let(:text) { '@alice' } + + it 'creates a mention link' do + is_expected.to include '@alice' + end + end + + context 'given text containing unlinkable mentions' do + let(:preloaded_accounts) { [] } + let(:text) { '@alice' } + + it 'does not create a mention link' do + is_expected.to include '@alice' + end + end + + context 'given a stand-alone medium URL' do + let(:text) { 'https://hackernoon.com/the-power-to-build-communities-a-response-to-mark-zuckerberg-3f2cac9148a4' } + + it 'matches the full URL' do + is_expected.to include 'href="https://hackernoon.com/the-power-to-build-communities-a-response-to-mark-zuckerberg-3f2cac9148a4"' + end + end + + context 'given a stand-alone google URL' do + let(:text) { 'http://google.com' } + + it 'matches the full URL' do + is_expected.to include 'href="http://google.com"' + end + end + + context 'given a stand-alone URL with a newer TLD' do + let(:text) { 'http://example.gay' } + + it 'matches the full URL' do + is_expected.to include 'href="http://example.gay"' + end + end + + context 'given a stand-alone IDN URL' do + let(:text) { 'https://nic.みんな/' } + + it 'matches the full URL' do + is_expected.to include 'href="https://nic.みんな/"' + end + + it 'has display URL' do + is_expected.to include 'nic.みんな/' + end + end + + context 'given a URL with a trailing period' do + let(:text) { 'http://www.mcmansionhell.com/post/156408871451/50-states-of-mcmansion-hell-scottsdale-arizona. ' } + + it 'matches the full URL but not the period' do + is_expected.to include 'href="http://www.mcmansionhell.com/post/156408871451/50-states-of-mcmansion-hell-scottsdale-arizona"' + end + end + + context 'given a URL enclosed with parentheses' do + let(:text) { '(http://google.com/)' } + + it 'matches the full URL but not the parentheses' do + is_expected.to include 'href="http://google.com/"' + end + end + + context 'given a URL with a trailing exclamation point' do + let(:text) { 'http://www.google.com!' } + + it 'matches the full URL but not the exclamation point' do + is_expected.to include 'href="http://www.google.com"' + end + end + + context 'given a URL with a trailing single quote' do + let(:text) { "http://www.google.com'" } + + it 'matches the full URL but not the single quote' do + is_expected.to include 'href="http://www.google.com"' + end + end + + context 'given a URL with a trailing angle bracket' do + let(:text) { 'http://www.google.com>' } + + it 'matches the full URL but not the angle bracket' do + is_expected.to include 'href="http://www.google.com"' + end + end + + context 'given a URL with a query string' do + context 'with escaped unicode character' do + let(:text) { 'https://www.ruby-toolbox.com/search?utf8=%E2%9C%93&q=autolink' } + + it 'matches the full URL' do + is_expected.to include 'href="https://www.ruby-toolbox.com/search?utf8=%E2%9C%93&q=autolink"' + end + end + + context 'with unicode character' do + let(:text) { 'https://www.ruby-toolbox.com/search?utf8=✓&q=autolink' } + + it 'matches the full URL' do + is_expected.to include 'href="https://www.ruby-toolbox.com/search?utf8=✓&q=autolink"' + end + end + + context 'with unicode character at the end' do + let(:text) { 'https://www.ruby-toolbox.com/search?utf8=✓' } + + it 'matches the full URL' do + is_expected.to include 'href="https://www.ruby-toolbox.com/search?utf8=✓"' + end + end + + context 'with escaped and not escaped unicode characters' do + let(:text) { 'https://www.ruby-toolbox.com/search?utf8=%E2%9C%93&utf81=✓&q=autolink' } + + it 'preserves escaped unicode characters' do + is_expected.to include 'href="https://www.ruby-toolbox.com/search?utf8=%E2%9C%93&utf81=✓&q=autolink"' + end + end + end + + context 'given a URL with parentheses in it' do + let(:text) { 'https://en.wikipedia.org/wiki/Diaspora_(software)' } + + it 'matches the full URL' do + is_expected.to include 'href="https://en.wikipedia.org/wiki/Diaspora_(software)"' + end + end + + context 'given a URL in quotation marks' do + let(:text) { '"https://example.com/"' } + + it 'does not match the quotation marks' do + is_expected.to include 'href="https://example.com/"' + end + end + + context 'given a URL in angle brackets' do + let(:text) { '' } + + it 'does not match the angle brackets' do + is_expected.to include 'href="https://example.com/"' + end + end + + context 'given a URL with Japanese path string' do + let(:text) { 'https://ja.wikipedia.org/wiki/日本' } + + it 'matches the full URL' do + is_expected.to include 'href="https://ja.wikipedia.org/wiki/日本"' + end + end + + context 'given a URL with Korean path string' do + let(:text) { 'https://ko.wikipedia.org/wiki/대한민국' } + + it 'matches the full URL' do + is_expected.to include 'href="https://ko.wikipedia.org/wiki/대한민국"' + end + end + + context 'given a URL with a full-width space' do + let(:text) { 'https://example.com/ abc123' } + + it 'does not match the full-width space' do + is_expected.to include 'href="https://example.com/"' + end + end + + context 'given a URL in Japanese quotation marks' do + let(:text) { '「[https://example.org/」' } + + it 'does not match the quotation marks' do + is_expected.to include 'href="https://example.org/"' + end + end + + context 'given a URL with Simplified Chinese path string' do + let(:text) { 'https://baike.baidu.com/item/中华人民共和国' } + + it 'matches the full URL' do + is_expected.to include 'href="https://baike.baidu.com/item/中华人民共和国"' + end + end + + context 'given a URL with Traditional Chinese path string' do + let(:text) { 'https://zh.wikipedia.org/wiki/臺灣' } + + it 'matches the full URL' do + is_expected.to include 'href="https://zh.wikipedia.org/wiki/臺灣"' + end + end + + context 'given a URL containing unsafe code (XSS attack, visible part)' do + let(:text) { %q{http://example.com/bb} } + + it 'does not include the HTML in the URL' do + is_expected.to include '"http://example.com/b"' + end + + it 'escapes the HTML' do + is_expected.to include '<del>b</del>' + end + end + + context 'given a URL containing unsafe code (XSS attack, invisible part)' do + let(:text) { %q{http://example.com/blahblahblahblah/a} } + + it 'does not include the HTML in the URL' do + is_expected.to include '"http://example.com/blahblahblahblah/a"' + end + + it 'escapes the HTML' do + is_expected.to include '<script>alert("Hello")</script>' + end + end + + context 'given text containing HTML code (script tag)' do + let(:text) { '' } + + it 'escapes the HTML' do + is_expected.to include '

    <script>alert("Hello")</script>

    ' + end + end + + context 'given text containing HTML (XSS attack)' do + let(:text) { %q{} } + + it 'escapes the HTML' do + is_expected.to include '

    <img src="javascript:alert('XSS');">

    ' + end + end + + context 'given an invalid URL' do + let(:text) { 'http://www\.google\.com' } + + it 'outputs the raw URL' do + is_expected.to eq '

    http://www\.google\.com

    ' + end + end + + context 'given text containing a hashtag' do + let(:text) { '#hashtag' } + + it 'creates a hashtag link' do + is_expected.to include '/tags/hashtag" class="mention hashtag" rel="tag">#hashtag' + end + end + + context 'given text containing a hashtag with Unicode chars' do + let(:text) { '#hashtagタグ' } + + it 'creates a hashtag link' do + is_expected.to include '/tags/hashtag%E3%82%BF%E3%82%B0" class="mention hashtag" rel="tag">#hashtagタグ' + end + end + + context 'given text with a stand-alone xmpp: URI' do + let(:text) { 'xmpp:user@instance.com' } + + it 'matches the full URI' do + is_expected.to include 'href="xmpp:user@instance.com"' + end + end + + context 'given text with an xmpp: URI with a query-string' do + let(:text) { 'please join xmpp:muc@instance.com?join right now' } + + it 'matches the full URI' do + is_expected.to include 'href="xmpp:muc@instance.com?join"' + end + end + + context 'given text containing a magnet: URI' do + let(:text) { 'wikipedia gives this example of a magnet uri: magnet:?xt=urn:btih:c12fe1c06bba254a9dc9f519b335aa7c1367a88a' } + + it 'matches the full URI' do + is_expected.to include 'href="magnet:?xt=urn:btih:c12fe1c06bba254a9dc9f519b335aa7c1367a88a"' + end + end + end +end diff --git a/spec/mailers/previews/user_mailer_preview.rb b/spec/mailers/previews/user_mailer_preview.rb index 8de7d8669..95712e6cf 100644 --- a/spec/mailers/previews/user_mailer_preview.rb +++ b/spec/mailers/previews/user_mailer_preview.rb @@ -87,8 +87,8 @@ class UserMailerPreview < ActionMailer::Preview UserMailer.appeal_approved(User.first, Appeal.last) end - # Preview this email at http://localhost:3000/rails/mailers/user_mailer/sign_in_token - def sign_in_token - UserMailer.sign_in_token(User.first.tap { |user| user.generate_sign_in_token }, '127.0.0.1', 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:75.0) Gecko/20100101 Firefox/75.0', Time.now.utc) + # Preview this email at http://localhost:3000/rails/mailers/user_mailer/suspicious_sign_in + def suspicious_sign_in + UserMailer.suspicious_sign_in(User.first, '127.0.0.1', 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:75.0) Gecko/20100101 Firefox/75.0', Time.now.utc) end end diff --git a/spec/mailers/user_mailer_spec.rb b/spec/mailers/user_mailer_spec.rb index 9c866788f..2ed33c1e4 100644 --- a/spec/mailers/user_mailer_spec.rb +++ b/spec/mailers/user_mailer_spec.rb @@ -83,4 +83,15 @@ describe UserMailer, type: :mailer do include_examples 'localized subject', 'devise.mailer.email_changed.subject' end + + describe 'warning' do + let(:strike) { Fabricate(:account_warning, target_account: receiver.account, text: 'dont worry its just the testsuite', action: 'suspend') } + let(:mail) { UserMailer.warning(receiver, strike) } + + it 'renders warning notification' do + receiver.update!(locale: nil) + expect(mail.body.encoded).to include I18n.t("user_mailer.warning.title.suspend", acct: receiver.account.acct) + expect(mail.body.encoded).to include strike.text + end + end end diff --git a/spec/models/account_statuses_filter_spec.rb b/spec/models/account_statuses_filter_spec.rb new file mode 100644 index 000000000..03f0ffeb0 --- /dev/null +++ b/spec/models/account_statuses_filter_spec.rb @@ -0,0 +1,229 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe AccountStatusesFilter do + let(:account) { Fabricate(:account) } + let(:current_account) { nil } + let(:params) { {} } + + subject { described_class.new(account, current_account, params) } + + def status!(visibility) + Fabricate(:status, account: account, visibility: visibility) + end + + def status_with_tag!(visibility, tag) + Fabricate(:status, account: account, visibility: visibility, tags: [tag]) + end + + def status_with_parent!(visibility) + Fabricate(:status, account: account, visibility: visibility, thread: Fabricate(:status)) + end + + def status_with_reblog!(visibility) + Fabricate(:status, account: account, visibility: visibility, reblog: Fabricate(:status)) + end + + def status_with_mention!(visibility, mentioned_account = nil) + Fabricate(:status, account: account, visibility: visibility).tap do |status| + Fabricate(:mention, status: status, account: mentioned_account || Fabricate(:account)) + end + end + + def status_with_media_attachment!(visibility) + Fabricate(:status, account: account, visibility: visibility).tap do |status| + Fabricate(:media_attachment, account: account, status: status) + end + end + + describe '#results' do + let(:tag) { Fabricate(:tag) } + + before do + status!(:public) + status!(:unlisted) + status!(:private) + status_with_parent!(:public) + status_with_reblog!(:public) + status_with_tag!(:public, tag) + status_with_mention!(:direct) + status_with_media_attachment!(:public) + end + + shared_examples 'filter params' do + context 'with only_media param' do + let(:params) { { only_media: true } } + + it 'returns only statuses with media' do + expect(subject.results.all?(&:with_media?)).to be true + end + end + + context 'with tagged param' do + let(:params) { { tagged: tag.name } } + + it 'returns only statuses with tag' do + expect(subject.results.all? { |s| s.tags.include?(tag) }).to be true + end + end + + context 'with exclude_replies param' do + let(:params) { { exclude_replies: true } } + + it 'returns only statuses that are not replies' do + expect(subject.results.none?(&:reply?)).to be true + end + end + + context 'with exclude_reblogs param' do + let(:params) { { exclude_reblogs: true } } + + it 'returns only statuses that are not reblogs' do + expect(subject.results.none?(&:reblog?)).to be true + end + end + end + + context 'when accessed anonymously' do + let(:current_account) { nil } + let(:direct_status) { nil } + + it 'returns only public statuses' do + expect(subject.results.pluck(:visibility).uniq).to match_array %w(unlisted public) + end + + it 'returns public replies' do + expect(subject.results.pluck(:in_reply_to_id)).to_not be_empty + end + + it 'returns public reblogs' do + expect(subject.results.pluck(:reblog_of_id)).to_not be_empty + end + + it_behaves_like 'filter params' + end + + context 'when accessed with a blocked account' do + let(:current_account) { Fabricate(:account) } + + before do + account.block!(current_account) + end + + it 'returns nothing' do + expect(subject.results.to_a).to be_empty + end + end + + context 'when accessed by self' do + let(:current_account) { account } + + it 'returns everything' do + expect(subject.results.pluck(:visibility).uniq).to match_array %w(direct private unlisted public) + end + + it 'returns replies' do + expect(subject.results.pluck(:in_reply_to_id)).to_not be_empty + end + + it 'returns reblogs' do + expect(subject.results.pluck(:reblog_of_id)).to_not be_empty + end + + it_behaves_like 'filter params' + end + + context 'when accessed by a follower' do + let(:current_account) { Fabricate(:account) } + + before do + current_account.follow!(account) + end + + it 'returns private statuses' do + expect(subject.results.pluck(:visibility).uniq).to match_array %w(private unlisted public) + end + + it 'returns replies' do + expect(subject.results.pluck(:in_reply_to_id)).to_not be_empty + end + + it 'returns reblogs' do + expect(subject.results.pluck(:reblog_of_id)).to_not be_empty + end + + context 'when there is a direct status mentioning the non-follower' do + let!(:direct_status) { status_with_mention!(:direct, current_account) } + + it 'returns the direct status' do + expect(subject.results.pluck(:id)).to include(direct_status.id) + end + end + + it_behaves_like 'filter params' + end + + context 'when accessed by a non-follower' do + let(:current_account) { Fabricate(:account) } + + it 'returns only public statuses' do + expect(subject.results.pluck(:visibility).uniq).to match_array %w(unlisted public) + end + + it 'returns public replies' do + expect(subject.results.pluck(:in_reply_to_id)).to_not be_empty + end + + it 'returns public reblogs' do + expect(subject.results.pluck(:reblog_of_id)).to_not be_empty + end + + context 'when there is a private status mentioning the non-follower' do + let!(:private_status) { status_with_mention!(:private, current_account) } + + it 'returns the private status' do + expect(subject.results.pluck(:id)).to include(private_status.id) + end + end + + context 'when blocking a reblogged account' do + let(:reblog) { status_with_reblog!('public') } + + before do + current_account.block!(reblog.reblog.account) + end + + it 'does not return reblog of blocked account' do + expect(subject.results.pluck(:id)).to_not include(reblog.id) + end + end + + context 'when muting a reblogged account' do + let(:reblog) { status_with_reblog!('public') } + + before do + current_account.mute!(reblog.reblog.account) + end + + it 'does not return reblog of muted account' do + expect(subject.results.pluck(:id)).to_not include(reblog.id) + end + end + + context 'when blocked by a reblogged account' do + let(:reblog) { status_with_reblog!('public') } + + before do + reblog.reblog.account.block!(current_account) + end + + it 'does not return reblog of blocked-by account' do + expect(subject.results.pluck(:id)).to_not include(reblog.id) + end + end + + it_behaves_like 'filter params' + end + end +end diff --git a/spec/models/home_feed_spec.rb b/spec/models/home_feed_spec.rb index ee7a83960..80f6edbff 100644 --- a/spec/models/home_feed_spec.rb +++ b/spec/models/home_feed_spec.rb @@ -15,7 +15,7 @@ RSpec.describe HomeFeed, type: :model do context 'when feed is generated' do before do - Redis.current.zadd( + redis.zadd( FeedManager.instance.key(:home, account.id), [[4, 4], [3, 3], [2, 2], [1, 1]] ) @@ -31,7 +31,7 @@ RSpec.describe HomeFeed, type: :model do context 'when feed is being generated' do before do - Redis.current.set("account:#{account.id}:regeneration", true) + redis.set("account:#{account.id}:regeneration", true) end it 'returns nothing' do diff --git a/spec/models/media_attachment_spec.rb b/spec/models/media_attachment_spec.rb index 7360b23cf..cbd9a09c5 100644 --- a/spec/models/media_attachment_spec.rb +++ b/spec/models/media_attachment_spec.rb @@ -186,14 +186,6 @@ RSpec.describe MediaAttachment, type: :model do expect(media.valid?).to be false end - describe 'descriptions for remote attachments' do - it 'are cut off at 1500 characters' do - media = Fabricate(:media_attachment, description: 'foo' * 1000, remote_url: 'http://example.com/blah.jpg') - - expect(media.description.size).to be <= 1_500 - end - end - describe 'size limit validation' do it 'rejects video files that are too large' do stub_const 'MediaAttachment::IMAGE_LIMIT', 100.megabytes diff --git a/spec/models/report_spec.rb b/spec/models/report_spec.rb index 3d29c0219..874be4132 100644 --- a/spec/models/report_spec.rb +++ b/spec/models/report_spec.rb @@ -11,14 +11,13 @@ describe Report do end end - describe 'media_attachments' do - it 'returns media attachments from statuses' do - status = Fabricate(:status) - media_attachment = Fabricate(:media_attachment, status: status) - _other_media_attachment = Fabricate(:media_attachment) - report = Fabricate(:report, status_ids: [status.id]) + describe 'media_attachments_count' do + it 'returns count of media attachments in statuses' do + status1 = Fabricate(:status, ordered_media_attachment_ids: [1, 2]) + status2 = Fabricate(:status, ordered_media_attachment_ids: [5]) + report = Fabricate(:report, status_ids: [status1.id, status2.id]) - expect(report.media_attachments).to eq [media_attachment] + expect(report.media_attachments_count).to eq 3 end end @@ -119,7 +118,7 @@ describe Report do end end - describe 'validatiions' do + describe 'validations' do it 'has a valid fabricator' do report = Fabricate(:report) report.valid? diff --git a/spec/models/status_spec.rb b/spec/models/status_spec.rb index 67af6d06d..130f4d03f 100644 --- a/spec/models/status_spec.rb +++ b/spec/models/status_spec.rb @@ -348,59 +348,6 @@ RSpec.describe Status, type: :model do end end - describe '.permitted_for' do - subject { described_class.permitted_for(target_account, account).pluck(:visibility) } - - let(:target_account) { alice } - let(:account) { bob } - let!(:public_status) { Fabricate(:status, account: target_account, visibility: 'public') } - let!(:unlisted_status) { Fabricate(:status, account: target_account, visibility: 'unlisted') } - let!(:private_status) { Fabricate(:status, account: target_account, visibility: 'private') } - - let!(:direct_status) do - Fabricate(:status, account: target_account, visibility: 'direct').tap do |status| - Fabricate(:mention, status: status, account: account) - end - end - - let!(:other_direct_status) do - Fabricate(:status, account: target_account, visibility: 'direct').tap do |status| - Fabricate(:mention, status: status) - end - end - - context 'given nil' do - let(:account) { nil } - let(:direct_status) { nil } - it { is_expected.to eq(%w(unlisted public)) } - end - - context 'given blocked account' do - before do - target_account.block!(account) - end - - it { is_expected.to be_empty } - end - - context 'given same account' do - let(:account) { target_account } - it { is_expected.to eq(%w(direct direct private unlisted public)) } - end - - context 'given followed account' do - before do - account.follow!(target_account) - end - - it { is_expected.to eq(%w(direct private unlisted public)) } - end - - context 'given unfollowed account' do - it { is_expected.to eq(%w(direct unlisted public)) } - end - end - describe 'before_validation' do it 'sets account being replied to correctly over intermediary nodes' do first_status = Fabricate(:status, account: bob) diff --git a/spec/policies/user_policy_spec.rb b/spec/policies/user_policy_spec.rb index 1933ee014..731c041d1 100644 --- a/spec/policies/user_policy_spec.rb +++ b/spec/policies/user_policy_spec.rb @@ -114,13 +114,13 @@ RSpec.describe UserPolicy do permissions :promote? do context 'admin?' do - context 'promoteable?' do + context 'promotable?' do it 'permits' do expect(subject).to permit(admin, john.user) end end - context '!promoteable?' do + context '!promotable?' do it 'denies' do expect(subject).to_not permit(admin, admin.user) end diff --git a/spec/presenters/familiar_followers_presenter_spec.rb b/spec/presenters/familiar_followers_presenter_spec.rb new file mode 100644 index 000000000..17be4b971 --- /dev/null +++ b/spec/presenters/familiar_followers_presenter_spec.rb @@ -0,0 +1,58 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe FamiliarFollowersPresenter do + describe '#accounts' do + let(:account) { Fabricate(:account) } + let(:familiar_follower) { Fabricate(:account) } + let(:requested_accounts) { Fabricate.times(2, :account) } + + subject { described_class.new(requested_accounts, account.id) } + + before do + familiar_follower.follow!(requested_accounts.first) + account.follow!(familiar_follower) + end + + it 'returns a result for each requested account' do + expect(subject.accounts.map(&:id)).to eq requested_accounts.map(&:id) + end + + it 'returns followers you follow' do + result = subject.accounts.first + + expect(result).to_not be_nil + expect(result.id).to eq requested_accounts.first.id + expect(result.accounts).to match_array([familiar_follower]) + end + + context 'when requested account hides followers' do + before do + requested_accounts.first.update(hide_collections: true) + end + + it 'does not return followers you follow' do + result = subject.accounts.first + + expect(result).to_not be_nil + expect(result.id).to eq requested_accounts.first.id + expect(result.accounts).to be_empty + end + end + + context 'when familiar follower hides follows' do + before do + familiar_follower.update(hide_collections: true) + end + + it 'does not return followers you follow' do + result = subject.accounts.first + + expect(result).to_not be_nil + expect(result.id).to eq requested_accounts.first.id + expect(result.accounts).to be_empty + end + end + end +end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 86c2a9c52..02827a388 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -13,7 +13,6 @@ Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f } ActiveRecord::Migration.maintain_test_schema! WebMock.disable_net_connect!(allow: Chewy.settings[:host]) -Redis.current = Redis::Namespace.new("mastodon_test#{ENV['TEST_ENV_NUMBER']}", redis: Redis.current) Sidekiq::Testing.inline! Sidekiq.logger = nil @@ -44,6 +43,7 @@ RSpec.configure do |config| config.include Devise::Test::ControllerHelpers, type: :view config.include Paperclip::Shoulda::Matchers config.include ActiveSupport::Testing::TimeHelpers + config.include Redisable config.before :each, type: :feature do https = ENV['LOCAL_HTTPS'] == 'true' @@ -60,9 +60,7 @@ RSpec.configure do |config| config.after :each do Rails.cache.clear - - keys = Redis.current.keys - Redis.current.del(keys) if keys.any? + redis.del(redis.keys) end end diff --git a/spec/services/activitypub/fetch_remote_status_service_spec.rb b/spec/services/activitypub/fetch_remote_status_service_spec.rb index 94574aa7f..943cb161d 100644 --- a/spec/services/activitypub/fetch_remote_status_service_spec.rb +++ b/spec/services/activitypub/fetch_remote_status_service_spec.rb @@ -3,9 +3,11 @@ require 'rails_helper' RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do include ActionView::Helpers::TextHelper - let(:sender) { Fabricate(:account) } - let(:recipient) { Fabricate(:account) } - let(:valid_domain) { Rails.configuration.x.local_domain } + let!(:sender) { Fabricate(:account).tap { |account| account.update(uri: ActivityPub::TagManager.instance.uri_for(account)) } } + let!(:recipient) { Fabricate(:account) } + let!(:valid_domain) { Rails.configuration.x.local_domain } + + let(:existing_status) { nil } let(:note) do { @@ -19,11 +21,13 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do subject { described_class.new } + before do + stub_request(:head, 'https://example.com/watch?v=12345').to_return(status: 404, body: '') + end + describe '#call' do before do - sender.update(uri: ActivityPub::TagManager.instance.uri_for(sender)) - - stub_request(:head, 'https://example.com/watch?v=12345').to_return(status: 404, body: '') + existing_status subject.call(object[:id], prefetched_body: Oj.dump(object)) end @@ -186,5 +190,37 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do expect(sender.statuses.first).to be_nil end end + + context 'when status already exists' do + let(:existing_status) { Fabricate(:status, account: sender, text: 'Foo', uri: note[:id]) } + + context 'with a Note object' do + let(:object) { note.merge(updated: '2021-09-08T22:39:25Z') } + + it 'updates status' do + existing_status.reload + expect(existing_status.text).to eq 'Lorem ipsum' + expect(existing_status.edits).to_not be_empty + end + end + + context 'with a Create activity' do + let(:object) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + id: "https://#{valid_domain}/@foo/1234/create", + type: 'Create', + actor: ActivityPub::TagManager.instance.uri_for(sender), + object: note.merge(updated: '2021-09-08T22:39:25Z'), + } + end + + it 'updates status' do + existing_status.reload + expect(existing_status.text).to eq 'Lorem ipsum' + expect(existing_status.edits).to_not be_empty + end + end + end end end diff --git a/spec/services/activitypub/process_collection_service_spec.rb b/spec/services/activitypub/process_collection_service_spec.rb index 00d71a86a..3eccaab5b 100644 --- a/spec/services/activitypub/process_collection_service_spec.rb +++ b/spec/services/activitypub/process_collection_service_spec.rb @@ -91,6 +91,146 @@ RSpec.describe ActivityPub::ProcessCollectionService, type: :service do subject.call(json, forwarder) end + + context 'when receiving a fabricated status' do + let!(:actor) do + Fabricate(:account, + username: 'bob', + domain: 'example.com', + uri: 'https://example.com/users/bob', + public_key: "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuuYyoyfsRkYnXRotMsId\nW3euBDDfiv9oVqOxUVC7bhel8KednIMrMCRWFAkgJhbrlzbIkjVr68o1MP9qLcn7\nCmH/BXHp7yhuFTr4byjdJKpwB+/i2jNEsvDH5jR8WTAeTCe0x/QHg21V3F7dSI5m\nCCZ/1dSIyOXLRTWVlfDlm3rE4ntlCo+US3/7oSWbg/4/4qEnt1HC32kvklgScxua\n4LR5ATdoXa5bFoopPWhul7MJ6NyWCyQyScUuGdlj8EN4kmKQJvphKHrI9fvhgOuG\nTvhTR1S5InA4azSSchY0tXEEw/VNxraeX0KPjbgr6DPcwhPd/m0nhVDq0zVyVBBD\nMwIDAQAB\n-----END PUBLIC KEY-----\n", + private_key: nil) + end + + let(:payload) do + { + '@context': [ + 'https://www.w3.org/ns/activitystreams', + nil, + {'object': 'https://www.w3.org/ns/activitystreams#object'} + ], + 'id': 'https://example.com/users/bob/fake-status/activity', + 'type': 'Create', + 'actor': 'https://example.com/users/bob', + 'published': '2022-01-22T15:00:00Z', + 'to': [ + 'https://www.w3.org/ns/activitystreams#Public' + ], + 'cc': [ + 'https://example.com/users/bob/followers' + ], + 'signature': { + 'type': 'RsaSignature2017', + 'creator': 'https://example.com/users/bob#main-key', + 'created': '2022-03-09T21:57:25Z', + 'signatureValue': 'WculK0LelTQ0MvGwU9TPoq5pFzFfGYRDCJqjZ232/Udj4CHqDTGOSw5UTDLShqBOyycCkbZGrQwXG+dpyDpQLSe1UVPZ5TPQtc/9XtI57WlS2nMNpdvRuxGnnb2btPdesXZ7n3pCxo0zjaXrJMe0mqQh5QJO22mahb4bDwwmfTHgbD3nmkD+fBfGi+UV2qWwqr+jlV4L4JqNkh0gWljF5KTePLRRZCuWiQ/FAt7c67636cdIPf7fR+usjuZltTQyLZKEGuK8VUn2Gkfsx5qns7Vcjvlz1JqlAjyO8HPBbzTTHzUG2nUOIgC3PojCSWv6mNTmRGoLZzOscCAYQA6cKw==' + }, + '@id': 'https://example.com/users/bob/statuses/107928807471117876/activity', + '@type': 'https://www.w3.org/ns/activitystreams#Create', + 'https://www.w3.org/ns/activitystreams#actor': { + '@id': 'https://example.com/users/bob' + }, + 'https://www.w3.org/ns/activitystreams#cc': { + '@id': 'https://example.com/users/bob/followers' + }, + 'object': { + 'id': 'https://example.com/users/bob/fake-status', + 'type': 'Note', + 'published': '2022-01-22T15:00:00Z', + 'url': 'https://www.youtube.com/watch?v=dQw4w9WgXcQ&feature=puck-was-here', + 'attributedTo': 'https://example.com/users/bob', + 'to': [ + 'https://www.w3.org/ns/activitystreams#Public' + ], + 'cc': [ + 'https://example.com/users/bob/followers' + ], + 'sensitive': false, + 'atomUri': 'https://example.com/users/bob/fake-status', + 'conversation': 'tag:example.com,2022-03-09:objectId=15:objectType=Conversation', + 'content': '

    puck was here

    ', + + '@id': 'https://example.com/users/bob/statuses/107928807471117876', + '@type': 'https://www.w3.org/ns/activitystreams#Note', + 'http://ostatus.org#atomUri': 'https://example.com/users/bob/statuses/107928807471117876', + 'http://ostatus.org#conversation': 'tag:example.com,2022-03-09:objectId=15:objectType=Conversation', + 'https://www.w3.org/ns/activitystreams#attachment': [], + 'https://www.w3.org/ns/activitystreams#attributedTo': { + '@id': 'https://example.com/users/bob' + }, + 'https://www.w3.org/ns/activitystreams#cc': { + '@id': 'https://example.com/users/bob/followers' + }, + 'https://www.w3.org/ns/activitystreams#content': [ + '

    hello world

    ', + { + '@value': '

    hello world

    ', + '@language': 'en' + } + ], + 'https://www.w3.org/ns/activitystreams#published': { + '@type': 'http://www.w3.org/2001/XMLSchema#dateTime', + '@value': '2022-03-09T21:55:07Z' + }, + 'https://www.w3.org/ns/activitystreams#replies': { + '@id': 'https://example.com/users/bob/statuses/107928807471117876/replies', + '@type': 'https://www.w3.org/ns/activitystreams#Collection', + 'https://www.w3.org/ns/activitystreams#first': { + '@type': 'https://www.w3.org/ns/activitystreams#CollectionPage', + 'https://www.w3.org/ns/activitystreams#items': [], + 'https://www.w3.org/ns/activitystreams#next': { + '@id': 'https://example.com/users/bob/statuses/107928807471117876/replies?only_other_accounts=true&page=true' + }, + 'https://www.w3.org/ns/activitystreams#partOf': { + '@id': 'https://example.com/users/bob/statuses/107928807471117876/replies' + } + } + }, + 'https://www.w3.org/ns/activitystreams#sensitive': false, + 'https://www.w3.org/ns/activitystreams#tag': [], + 'https://www.w3.org/ns/activitystreams#to': { + '@id': 'https://www.w3.org/ns/activitystreams#Public' + }, + 'https://www.w3.org/ns/activitystreams#url': { + '@id': 'https://example.com/@bob/107928807471117876' + } + }, + 'https://www.w3.org/ns/activitystreams#published': { + '@type': 'http://www.w3.org/2001/XMLSchema#dateTime', + '@value': '2022-03-09T21:55:07Z' + }, + 'https://www.w3.org/ns/activitystreams#to': { + '@id': 'https://www.w3.org/ns/activitystreams#Public' + } + } + end + + it 'does not process forged payload' do + expect(ActivityPub::Activity).not_to receive(:factory).with( + hash_including( + 'object' => hash_including( + 'id' => 'https://example.com/users/bob/fake-status' + ) + ), + anything(), + anything() + ) + + expect(ActivityPub::Activity).not_to receive(:factory).with( + hash_including( + 'object' => hash_including( + 'content' => '

    puck was here

    ' + ) + ), + anything(), + anything() + ) + + subject.call(json, forwarder) + + expect(Status.where(uri: 'https://example.com/users/bob/fake-status').exists?).to be false + end + end end end end diff --git a/spec/services/activitypub/process_status_update_service_spec.rb b/spec/services/activitypub/process_status_update_service_spec.rb index 6ee1dcb43..481572742 100644 --- a/spec/services/activitypub/process_status_update_service_spec.rb +++ b/spec/services/activitypub/process_status_update_service_spec.rb @@ -1,5 +1,9 @@ require 'rails_helper' +def poll_option_json(name, votes) + { type: 'Note', name: name, replies: { type: 'Collection', totalItems: votes } } +end + RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do let!(:status) { Fabricate(:status, text: 'Hello world', account: Fabricate(:account, domain: 'example.com')) } @@ -46,6 +50,227 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do expect(status.reload.spoiler_text).to eq 'Show more' end + context 'when the changes are only in sanitized-out HTML' do + let!(:status) { Fabricate(:status, text: '

    Hello world joinmastodon.org

    ', account: Fabricate(:account, domain: 'example.com')) } + + let(:payload) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + id: 'foo', + type: 'Note', + updated: '2021-09-08T22:39:25Z', + content: '

    Hello world joinmastodon.org

    ', + } + end + + before do + subject.call(status, json) + end + + it 'does not create any edits' do + expect(status.reload.edits).to be_empty + end + + it 'does not mark status as edited' do + expect(status.edited?).to be false + end + end + + context 'when the status has not been explicitly edited' do + let(:payload) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + id: 'foo', + type: 'Note', + content: 'Updated text', + } + end + + before do + subject.call(status, json) + end + + it 'does not create any edits' do + expect(status.reload.edits).to be_empty + end + + it 'does not mark status as edited' do + expect(status.reload.edited?).to be false + end + + it 'does not update the text' do + expect(status.reload.text).to eq 'Hello world' + end + end + + context 'when the status has not been explicitly edited and features a poll' do + let(:account) { Fabricate(:account, domain: 'example.com') } + let!(:expiration) { 10.days.from_now.utc } + let!(:status) do + Fabricate(:status, + text: 'Hello world', + account: account, + poll_attributes: { + options: %w(Foo Bar), + account: account, + multiple: false, + hide_totals: false, + expires_at: expiration + } + ) + end + + let(:payload) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + id: 'https://example.com/foo', + type: 'Question', + content: 'Hello world', + endTime: expiration.iso8601, + oneOf: [ + poll_option_json('Foo', 4), + poll_option_json('Bar', 3), + ], + } + end + + before do + subject.call(status, json) + end + + it 'does not create any edits' do + expect(status.reload.edits).to be_empty + end + + it 'does not mark status as edited' do + expect(status.reload.edited?).to be false + end + + it 'does not update the text' do + expect(status.reload.text).to eq 'Hello world' + end + + it 'updates tallies' do + expect(status.poll.reload.cached_tallies).to eq [4, 3] + end + end + + context 'when the status changes a poll despite being not explicitly marked as updated' do + let(:account) { Fabricate(:account, domain: 'example.com') } + let!(:expiration) { 10.days.from_now.utc } + let!(:status) do + Fabricate(:status, + text: 'Hello world', + account: account, + poll_attributes: { + options: %w(Foo Bar), + account: account, + multiple: false, + hide_totals: false, + expires_at: expiration + } + ) + end + + let(:payload) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + id: 'https://example.com/foo', + type: 'Question', + content: 'Hello world', + endTime: expiration.iso8601, + oneOf: [ + poll_option_json('Foo', 4), + poll_option_json('Bar', 3), + poll_option_json('Baz', 3), + ], + } + end + + before do + subject.call(status, json) + end + + it 'does not create any edits' do + expect(status.reload.edits).to be_empty + end + + it 'does not mark status as edited' do + expect(status.reload.edited?).to be false + end + + it 'does not update the text' do + expect(status.reload.text).to eq 'Hello world' + end + + it 'does not update tallies' do + expect(status.poll.reload.cached_tallies).to eq [0, 0] + end + end + + context 'when receiving an edit older than the latest processed' do + before do + status.snapshot!(at_time: status.created_at, rate_limit: false) + status.update!(text: 'Hello newer world', edited_at: Time.now.utc) + status.snapshot!(rate_limit: false) + end + + it 'does not create any edits' do + expect { subject.call(status, json) }.not_to change { status.reload.edits.pluck(&:id) } + end + + it 'does not update the text, spoiler_text or edited_at' do + expect { subject.call(status, json) }.not_to change { s = status.reload; [s.text, s.spoiler_text, s.edited_at] } + end + end + + context 'with no changes at all' do + let(:payload) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + id: 'foo', + type: 'Note', + content: 'Hello world', + } + end + + before do + subject.call(status, json) + end + + it 'does not create any edits' do + expect(status.reload.edits).to be_empty + end + + it 'does not mark status as edited' do + expect(status.edited?).to be false + end + end + + context 'with no changes and originally with no ordered_media_attachment_ids' do + let(:payload) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + id: 'foo', + type: 'Note', + content: 'Hello world', + } + end + + before do + status.update(ordered_media_attachment_ids: nil) + subject.call(status, json) + end + + it 'does not create any edits' do + expect(status.reload.edits).to be_empty + end + + it 'does not mark status as edited' do + expect(status.edited?).to be false + end + end + context 'originally without tags' do before do subject.call(status, json) @@ -124,7 +349,7 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do end it 'updates media attachments' do - media_attachment = status.media_attachments.reload.first + media_attachment = status.reload.ordered_media_attachments.first expect(media_attachment).to_not be_nil expect(media_attachment.remote_url).to eq 'https://example.com/foo.png' @@ -135,7 +360,7 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do end it 'records media change in edit' do - expect(status.edits.reload.last.media_attachments_changed).to be true + expect(status.edits.reload.last.ordered_media_attachment_ids).to_not be_empty end end @@ -173,11 +398,11 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do end it 'updates media attachments' do - expect(status.media_attachments.reload.map(&:remote_url)).to eq %w(https://example.com/foo.png) + expect(status.ordered_media_attachments.map(&:remote_url)).to eq %w(https://example.com/foo.png) end it 'records media change in edit' do - expect(status.edits.reload.last.media_attachments_changed).to be true + expect(status.edits.reload.last.ordered_media_attachment_ids).to_not be_empty end end @@ -193,7 +418,7 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do end it 'records media change in edit' do - expect(status.edits.reload.last.media_attachments_changed).to be true + expect(status.edits.reload.last.poll_options).to be_nil end end @@ -226,7 +451,7 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do end it 'records media change in edit' do - expect(status.edits.reload.last.media_attachments_changed).to be true + expect(status.edits.reload.last.poll_options).to eq %w(Foo Bar Baz) end end @@ -239,10 +464,5 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do subject.call(status, json) expect(status.reload.edited_at.to_s).to eq '2021-09-08 22:39:25 UTC' end - - it 'records that no media has been changed in edit' do - subject.call(status, json) - expect(status.edits.reload.last.media_attachments_changed).to be false - end end end diff --git a/spec/services/after_block_service_spec.rb b/spec/services/after_block_service_spec.rb index fe5b26b2b..337766d06 100644 --- a/spec/services/after_block_service_spec.rb +++ b/spec/services/after_block_service_spec.rb @@ -1,9 +1,7 @@ require 'rails_helper' RSpec.describe AfterBlockService, type: :service do - subject do - -> { described_class.new.call(account, target_account) } - end + subject { described_class.new.call(account, target_account) } let(:account) { Fabricate(:account) } let(:target_account) { Fabricate(:account) } @@ -16,7 +14,7 @@ RSpec.describe AfterBlockService, type: :service do let(:home_timeline_key) { FeedManager.instance.key(:home, account.id) } before do - Redis.current.del(home_timeline_key) + redis.del(home_timeline_key) end it "clears account's statuses" do @@ -24,8 +22,8 @@ RSpec.describe AfterBlockService, type: :service do FeedManager.instance.push_to_home(account, other_account_status) FeedManager.instance.push_to_home(account, other_account_reblog) - is_expected.to change { - Redis.current.zrange(home_timeline_key, 0, -1) + expect { subject }.to change { + redis.zrange(home_timeline_key, 0, -1) }.from([status.id.to_s, other_account_status.id.to_s, other_account_reblog.id.to_s]).to([other_account_status.id.to_s]) end end @@ -35,7 +33,7 @@ RSpec.describe AfterBlockService, type: :service do let(:list_timeline_key) { FeedManager.instance.key(:list, list.id) } before do - Redis.current.del(list_timeline_key) + redis.del(list_timeline_key) end it "clears account's statuses" do @@ -43,8 +41,8 @@ RSpec.describe AfterBlockService, type: :service do FeedManager.instance.push_to_list(list, other_account_status) FeedManager.instance.push_to_list(list, other_account_reblog) - is_expected.to change { - Redis.current.zrange(list_timeline_key, 0, -1) + expect { subject }.to change { + redis.zrange(list_timeline_key, 0, -1) }.from([status.id.to_s, other_account_status.id.to_s, other_account_reblog.id.to_s]).to([other_account_status.id.to_s]) end end diff --git a/spec/services/batched_remove_status_service_spec.rb b/spec/services/batched_remove_status_service_spec.rb index 8f38908cd..920edeb13 100644 --- a/spec/services/batched_remove_status_service_spec.rb +++ b/spec/services/batched_remove_status_service_spec.rb @@ -12,7 +12,7 @@ RSpec.describe BatchedRemoveStatusService, type: :service do let(:status2) { PostStatusService.new.call(alice, text: 'Another status') } before do - allow(Redis.current).to receive_messages(publish: nil) + allow(redis).to receive_messages(publish: nil) stub_request(:post, 'http://example.com/inbox').to_return(status: 200) @@ -40,11 +40,11 @@ RSpec.describe BatchedRemoveStatusService, type: :service do end it 'notifies streaming API of followers' do - expect(Redis.current).to have_received(:publish).with("timeline:#{jeff.id}", any_args).at_least(:once) + expect(redis).to have_received(:publish).with("timeline:#{jeff.id}", any_args).at_least(:once) end it 'notifies streaming API of public timeline' do - expect(Redis.current).to have_received(:publish).with('timeline:public', any_args).at_least(:once) + expect(redis).to have_received(:publish).with('timeline:public', any_args).at_least(:once) end it 'sends delete activity to followers' do diff --git a/spec/services/delete_account_service_spec.rb b/spec/services/delete_account_service_spec.rb index 9c785fc17..1fbe4d07c 100644 --- a/spec/services/delete_account_service_spec.rb +++ b/spec/services/delete_account_service_spec.rb @@ -23,12 +23,10 @@ RSpec.describe DeleteAccountService, type: :service do let!(:account_note) { Fabricate(:account_note, account: account) } - subject do - -> { described_class.new.call(account) } - end + subject { described_class.new.call(account) } it 'deletes associated owned records' do - is_expected.to change { + expect { subject }.to change { [ account.statuses, account.media_attachments, @@ -43,7 +41,7 @@ RSpec.describe DeleteAccountService, type: :service do end it 'deletes associated target records' do - is_expected.to change { + expect { subject }.to change { [ AccountPin.where(target_account: account), ].map(&:count) @@ -51,7 +49,7 @@ RSpec.describe DeleteAccountService, type: :service do end it 'deletes associated target notifications' do - is_expected.to change { + expect { subject }.to change { [ 'poll', 'favourite', 'status', 'mention', 'follow' ].map { |type| Notification.where(type: type).count } @@ -73,7 +71,7 @@ RSpec.describe DeleteAccountService, type: :service do let!(:local_follower) { Fabricate(:account) } it 'sends a delete actor activity to all known inboxes' do - subject.call + subject expect(a_request(:post, "https://alice.com/inbox")).to have_been_made.once expect(a_request(:post, "https://bob.com/inbox")).to have_been_made.once end @@ -91,7 +89,7 @@ RSpec.describe DeleteAccountService, type: :service do let!(:local_follower) { Fabricate(:account) } it 'sends a reject follow to follower inboxes' do - subject.call + subject expect(a_request(:post, account.inbox_url)).to have_been_made.once end end diff --git a/spec/services/fan_out_on_write_service_spec.rb b/spec/services/fan_out_on_write_service_spec.rb index aaf179ce5..59e15d230 100644 --- a/spec/services/fan_out_on_write_service_spec.rb +++ b/spec/services/fan_out_on_write_service_spec.rb @@ -18,7 +18,7 @@ RSpec.describe FanOutOnWriteService, type: :service do ProcessMentionsService.new.call(status) ProcessHashtagsService.new.call(status) - allow(Redis.current).to receive(:publish) + allow(redis).to receive(:publish) subject.call(status) end @@ -40,13 +40,13 @@ RSpec.describe FanOutOnWriteService, type: :service do end it 'is broadcast to the hashtag stream' do - expect(Redis.current).to have_received(:publish).with('timeline:hashtag:hoge', anything) - expect(Redis.current).to have_received(:publish).with('timeline:hashtag:hoge:local', anything) + expect(redis).to have_received(:publish).with('timeline:hashtag:hoge', anything) + expect(redis).to have_received(:publish).with('timeline:hashtag:hoge:local', anything) end it 'is broadcast to the public stream' do - expect(Redis.current).to have_received(:publish).with('timeline:public', anything) - expect(Redis.current).to have_received(:publish).with('timeline:public:local', anything) + expect(redis).to have_received(:publish).with('timeline:public', anything) + expect(redis).to have_received(:publish).with('timeline:public:local', anything) end end @@ -66,8 +66,8 @@ RSpec.describe FanOutOnWriteService, type: :service do end it 'is not broadcast publicly' do - expect(Redis.current).to_not have_received(:publish).with('timeline:hashtag:hoge', anything) - expect(Redis.current).to_not have_received(:publish).with('timeline:public', anything) + expect(redis).to_not have_received(:publish).with('timeline:hashtag:hoge', anything) + expect(redis).to_not have_received(:publish).with('timeline:public', anything) end end @@ -84,8 +84,8 @@ RSpec.describe FanOutOnWriteService, type: :service do end it 'is not broadcast publicly' do - expect(Redis.current).to_not have_received(:publish).with('timeline:hashtag:hoge', anything) - expect(Redis.current).to_not have_received(:publish).with('timeline:public', anything) + expect(redis).to_not have_received(:publish).with('timeline:hashtag:hoge', anything) + expect(redis).to_not have_received(:publish).with('timeline:public', anything) end end @@ -105,8 +105,8 @@ RSpec.describe FanOutOnWriteService, type: :service do end it 'is not broadcast publicly' do - expect(Redis.current).to_not have_received(:publish).with('timeline:hashtag:hoge', anything) - expect(Redis.current).to_not have_received(:publish).with('timeline:public', anything) + expect(redis).to_not have_received(:publish).with('timeline:hashtag:hoge', anything) + expect(redis).to_not have_received(:publish).with('timeline:public', anything) end end end diff --git a/spec/services/mute_service_spec.rb b/spec/services/mute_service_spec.rb index 4bb839b8d..57d8c41de 100644 --- a/spec/services/mute_service_spec.rb +++ b/spec/services/mute_service_spec.rb @@ -1,9 +1,7 @@ require 'rails_helper' RSpec.describe MuteService, type: :service do - subject do - -> { described_class.new.call(account, target_account) } - end + subject { described_class.new.call(account, target_account) } let(:account) { Fabricate(:account) } let(:target_account) { Fabricate(:account) } @@ -14,52 +12,48 @@ RSpec.describe MuteService, type: :service do let(:home_timeline_key) { FeedManager.instance.key(:home, account.id) } before do - Redis.current.del(home_timeline_key) + redis.del(home_timeline_key) end it "clears account's statuses" do FeedManager.instance.push_to_home(account, status) FeedManager.instance.push_to_home(account, other_account_status) - is_expected.to change { - Redis.current.zrange(home_timeline_key, 0, -1) + expect { subject }.to change { + redis.zrange(home_timeline_key, 0, -1) }.from([status.id.to_s, other_account_status.id.to_s]).to([other_account_status.id.to_s]) end end it 'mutes account' do - is_expected.to change { + expect { subject }.to change { account.muting?(target_account) }.from(false).to(true) end context 'without specifying a notifications parameter' do it 'mutes notifications from the account' do - is_expected.to change { + expect { subject }.to change { account.muting_notifications?(target_account) }.from(false).to(true) end end context 'with a true notifications parameter' do - subject do - -> { described_class.new.call(account, target_account, notifications: true) } - end + subject { described_class.new.call(account, target_account, notifications: true) } it 'mutes notifications from the account' do - is_expected.to change { + expect { subject }.to change { account.muting_notifications?(target_account) }.from(false).to(true) end end context 'with a false notifications parameter' do - subject do - -> { described_class.new.call(account, target_account, notifications: false) } - end + subject { described_class.new.call(account, target_account, notifications: false) } it 'does not mute notifications from the account' do - is_expected.to_not change { + expect { subject }.to_not change { account.muting_notifications?(target_account) }.from(false) end diff --git a/spec/services/notify_service_spec.rb b/spec/services/notify_service_spec.rb index 7433866b7..294c31b04 100644 --- a/spec/services/notify_service_spec.rb +++ b/spec/services/notify_service_spec.rb @@ -1,9 +1,7 @@ require 'rails_helper' RSpec.describe NotifyService, type: :service do - subject do - -> { described_class.new.call(recipient, type, activity) } - end + subject { described_class.new.call(recipient, type, activity) } let(:user) { Fabricate(:user) } let(:recipient) { user.account } @@ -11,42 +9,42 @@ RSpec.describe NotifyService, type: :service do let(:activity) { Fabricate(:follow, account: sender, target_account: recipient) } let(:type) { :follow } - it { is_expected.to change(Notification, :count).by(1) } + it { expect { subject }.to change(Notification, :count).by(1) } it 'does not notify when sender is blocked' do recipient.block!(sender) - is_expected.to_not change(Notification, :count) + expect { subject }.to_not change(Notification, :count) end it 'does not notify when sender is muted with hide_notifications' do recipient.mute!(sender, notifications: true) - is_expected.to_not change(Notification, :count) + expect { subject }.to_not change(Notification, :count) end it 'does notify when sender is muted without hide_notifications' do recipient.mute!(sender, notifications: false) - is_expected.to change(Notification, :count) + expect { subject }.to change(Notification, :count) end it 'does not notify when sender\'s domain is blocked' do recipient.block_domain!(sender.domain) - is_expected.to_not change(Notification, :count) + expect { subject }.to_not change(Notification, :count) end it 'does still notify when sender\'s domain is blocked but sender is followed' do recipient.block_domain!(sender.domain) recipient.follow!(sender) - is_expected.to change(Notification, :count) + expect { subject }.to change(Notification, :count) end it 'does not notify when sender is silenced and not followed' do sender.silence! - is_expected.to_not change(Notification, :count) + expect { subject }.to_not change(Notification, :count) end it 'does not notify when recipient is suspended' do recipient.suspend! - is_expected.to_not change(Notification, :count) + expect { subject }.to_not change(Notification, :count) end context 'for direct messages' do @@ -61,7 +59,7 @@ RSpec.describe NotifyService, type: :service do let(:enabled) { true } it 'does not notify' do - is_expected.to_not change(Notification, :count) + expect { subject }.to_not change(Notification, :count) end context 'if the message chain is initiated by recipient, but is not direct message' do @@ -70,7 +68,7 @@ RSpec.describe NotifyService, type: :service do let(:activity) { Fabricate(:mention, account: recipient, status: Fabricate(:status, account: sender, visibility: :direct, thread: reply_to)) } it 'does not notify' do - is_expected.to_not change(Notification, :count) + expect { subject }.to_not change(Notification, :count) end end @@ -81,7 +79,7 @@ RSpec.describe NotifyService, type: :service do let(:activity) { Fabricate(:mention, account: recipient, status: Fabricate(:status, account: sender, visibility: :direct, thread: dummy_reply)) } it 'does not notify' do - is_expected.to_not change(Notification, :count) + expect { subject }.to_not change(Notification, :count) end end @@ -91,7 +89,7 @@ RSpec.describe NotifyService, type: :service do let(:activity) { Fabricate(:mention, account: recipient, status: Fabricate(:status, account: sender, visibility: :direct, thread: reply_to)) } it 'does notify' do - is_expected.to change(Notification, :count) + expect { subject }.to change(Notification, :count) end end end @@ -100,7 +98,7 @@ RSpec.describe NotifyService, type: :service do let(:enabled) { false } it 'does notify' do - is_expected.to change(Notification, :count) + expect { subject }.to change(Notification, :count) end end end @@ -112,17 +110,17 @@ RSpec.describe NotifyService, type: :service do it 'shows reblogs by default' do recipient.follow!(sender) - is_expected.to change(Notification, :count) + expect { subject }.to change(Notification, :count) end it 'shows reblogs when explicitly enabled' do recipient.follow!(sender, reblogs: true) - is_expected.to change(Notification, :count) + expect { subject }.to change(Notification, :count) end it 'shows reblogs when disabled' do recipient.follow!(sender, reblogs: false) - is_expected.to change(Notification, :count) + expect { subject }.to change(Notification, :count) end end @@ -134,12 +132,12 @@ RSpec.describe NotifyService, type: :service do it 'does not notify when conversation is muted' do recipient.mute_conversation!(activity.status.conversation) - is_expected.to_not change(Notification, :count) + expect { subject }.to_not change(Notification, :count) end it 'does not notify when it is a reply to a blocked user' do recipient.block!(asshole) - is_expected.to_not change(Notification, :count) + expect { subject }.to_not change(Notification, :count) end end @@ -147,7 +145,7 @@ RSpec.describe NotifyService, type: :service do let(:sender) { recipient } it 'does not notify when recipient is the sender' do - is_expected.to_not change(Notification, :count) + expect { subject }.to_not change(Notification, :count) end end @@ -163,7 +161,7 @@ RSpec.describe NotifyService, type: :service do let(:enabled) { true } it 'sends email' do - is_expected.to change(ActionMailer::Base.deliveries, :count).by(1) + expect { subject }.to change(ActionMailer::Base.deliveries, :count).by(1) end end @@ -171,7 +169,7 @@ RSpec.describe NotifyService, type: :service do let(:enabled) { false } it "doesn't send email" do - is_expected.to_not change(ActionMailer::Base.deliveries, :count).from(0) + expect { subject }.to_not change(ActionMailer::Base.deliveries, :count).from(0) end end end diff --git a/spec/services/precompute_feed_service_spec.rb b/spec/services/precompute_feed_service_spec.rb index 1f6b6ed88..86b93b5d2 100644 --- a/spec/services/precompute_feed_service_spec.rb +++ b/spec/services/precompute_feed_service_spec.rb @@ -13,7 +13,7 @@ RSpec.describe PrecomputeFeedService, type: :service do subject.call(account) - expect(Redis.current.zscore(FeedManager.instance.key(:home, account.id), status.id)).to be_within(0.1).of(status.id.to_f) + expect(redis.zscore(FeedManager.instance.key(:home, account.id), status.id)).to be_within(0.1).of(status.id.to_f) end it 'does not raise an error even if it could not find any status' do @@ -30,7 +30,7 @@ RSpec.describe PrecomputeFeedService, type: :service do subject.call(account) - expect(Redis.current.zscore(FeedManager.instance.key(:home, account.id), reblog.id)).to eq nil + expect(redis.zscore(FeedManager.instance.key(:home, account.id), reblog.id)).to eq nil end end end diff --git a/spec/services/reblog_service_spec.rb b/spec/services/reblog_service_spec.rb index e2077f282..c0ae5eedc 100644 --- a/spec/services/reblog_service_spec.rb +++ b/spec/services/reblog_service_spec.rb @@ -32,6 +32,18 @@ RSpec.describe ReblogService, type: :service do end end + context 'when the reblogged status is discarded in the meantime' do + let(:status) { Fabricate(:status, account: alice, visibility: :public) } + + before do + status.discard + end + + it 'raises an exception' do + expect { subject.call(alice, status) }.to raise_error ActiveRecord::ActiveRecordError + end + end + context 'ActivityPub' do let(:bob) { Fabricate(:account, username: 'bob', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox') } let(:status) { Fabricate(:status, account: bob) } diff --git a/spec/services/resolve_account_service_spec.rb b/spec/services/resolve_account_service_spec.rb index 7b1e8885c..8c302e1d8 100644 --- a/spec/services/resolve_account_service_spec.rb +++ b/spec/services/resolve_account_service_spec.rb @@ -220,6 +220,8 @@ RSpec.describe ResolveAccountService, type: :service do return_values << described_class.new.call('foo@ap.example.com') rescue ActiveRecord::RecordNotUnique fail_occurred = true + ensure + RedisConfiguration.pool.checkin if Thread.current[:redis] end end end diff --git a/spec/services/resolve_url_service_spec.rb b/spec/services/resolve_url_service_spec.rb index a38b23590..1b639dea9 100644 --- a/spec/services/resolve_url_service_spec.rb +++ b/spec/services/resolve_url_service_spec.rb @@ -7,15 +7,29 @@ describe ResolveURLService, type: :service do describe '#call' do it 'returns nil when there is no resource url' do - url = 'http://example.com/missing-resource' + url = 'http://example.com/missing-resource' + known_account = Fabricate(:account, uri: url) service = double allow(FetchResourceService).to receive(:new).and_return service + allow(service).to receive(:response_code).and_return(404) allow(service).to receive(:call).with(url).and_return(nil) expect(subject.call(url)).to be_nil end + it 'returns known account on temporary error' do + url = 'http://example.com/missing-resource' + known_account = Fabricate(:account, uri: url) + service = double + + allow(FetchResourceService).to receive(:new).and_return service + allow(service).to receive(:response_code).and_return(500) + allow(service).to receive(:call).with(url).and_return(nil) + + expect(subject.call(url)).to eq known_account + end + context 'searching for a remote private status' do let(:account) { Fabricate(:account) } let(:poster) { Fabricate(:account, domain: 'example.com') } diff --git a/spec/services/suspend_account_service_spec.rb b/spec/services/suspend_account_service_spec.rb index cf7eb257a..5d45e4ffd 100644 --- a/spec/services/suspend_account_service_spec.rb +++ b/spec/services/suspend_account_service_spec.rb @@ -5,9 +5,7 @@ RSpec.describe SuspendAccountService, type: :service do let!(:local_follower) { Fabricate(:user, current_sign_in_at: 1.hour.ago).account } let!(:list) { Fabricate(:list, account: local_follower) } - subject do - -> { described_class.new.call(account) } - end + subject { described_class.new.call(account) } before do allow(FeedManager.instance).to receive(:unmerge_from_home).and_return(nil) @@ -18,13 +16,13 @@ RSpec.describe SuspendAccountService, type: :service do end it "unmerges from local followers' feeds" do - subject.call + subject expect(FeedManager.instance).to have_received(:unmerge_from_home).with(account, local_follower) expect(FeedManager.instance).to have_received(:unmerge_from_list).with(account, list) end it 'marks account as suspended' do - is_expected.to change { account.suspended? }.from(false).to(true) + expect { subject }.to change { account.suspended? }.from(false).to(true) end end @@ -51,7 +49,7 @@ RSpec.describe SuspendAccountService, type: :service do end it 'sends an update actor to followers and reporters' do - subject.call + subject expect(a_request(:post, remote_follower.inbox_url).with { |req| match_update_actor_request(req, account) }).to have_been_made.once expect(a_request(:post, remote_reporter.inbox_url).with { |req| match_update_actor_request(req, account) }).to have_been_made.once end @@ -77,7 +75,7 @@ RSpec.describe SuspendAccountService, type: :service do end it 'sends a reject follow' do - subject.call + subject expect(a_request(:post, account.inbox_url).with { |req| match_reject_follow_request(req, account, local_followee) }).to have_been_made.once end end diff --git a/spec/services/unsuspend_account_service_spec.rb b/spec/services/unsuspend_account_service_spec.rb index d52cb6cc0..3ac4cc085 100644 --- a/spec/services/unsuspend_account_service_spec.rb +++ b/spec/services/unsuspend_account_service_spec.rb @@ -5,9 +5,7 @@ RSpec.describe UnsuspendAccountService, type: :service do let!(:local_follower) { Fabricate(:user, current_sign_in_at: 1.hour.ago).account } let!(:list) { Fabricate(:list, account: local_follower) } - subject do - -> { described_class.new.call(account) } - end + subject { described_class.new.call(account) } before do allow(FeedManager.instance).to receive(:merge_into_home).and_return(nil) @@ -33,7 +31,7 @@ RSpec.describe UnsuspendAccountService, type: :service do end it 'marks account as unsuspended' do - is_expected.to change { account.suspended? }.from(true).to(false) + expect { subject }.to change { account.suspended? }.from(true).to(false) end include_examples 'common behavior' do @@ -47,13 +45,13 @@ RSpec.describe UnsuspendAccountService, type: :service do end it "merges back into local followers' feeds" do - subject.call + subject expect(FeedManager.instance).to have_received(:merge_into_home).with(account, local_follower) expect(FeedManager.instance).to have_received(:merge_into_list).with(account, list) end it 'sends an update actor to followers and reporters' do - subject.call + subject expect(a_request(:post, remote_follower.inbox_url).with { |req| match_update_actor_request(req, account) }).to have_been_made.once expect(a_request(:post, remote_reporter.inbox_url).with { |req| match_update_actor_request(req, account) }).to have_been_made.once end @@ -63,69 +61,69 @@ RSpec.describe UnsuspendAccountService, type: :service do describe 'unsuspending a remote account' do include_examples 'common behavior' do let!(:account) { Fabricate(:account, domain: 'bob.com', uri: 'https://bob.com', inbox_url: 'https://bob.com/inbox', protocol: :activitypub) } - let!(:reslove_account_service) { double } + let!(:resolve_account_service) { double } before do - allow(ResolveAccountService).to receive(:new).and_return(reslove_account_service) + allow(ResolveAccountService).to receive(:new).and_return(resolve_account_service) end context 'when the account is not remotely suspended' do before do - allow(reslove_account_service).to receive(:call).with(account).and_return(account) + allow(resolve_account_service).to receive(:call).with(account).and_return(account) end it 're-fetches the account' do - subject.call - expect(reslove_account_service).to have_received(:call).with(account) + subject + expect(resolve_account_service).to have_received(:call).with(account) end it "merges back into local followers' feeds" do - subject.call + subject expect(FeedManager.instance).to have_received(:merge_into_home).with(account, local_follower) expect(FeedManager.instance).to have_received(:merge_into_list).with(account, list) end it 'marks account as unsuspended' do - is_expected.to change { account.suspended? }.from(true).to(false) + expect { subject }.to change { account.suspended? }.from(true).to(false) end end context 'when the account is remotely suspended' do before do - allow(reslove_account_service).to receive(:call).with(account) do |account| + allow(resolve_account_service).to receive(:call).with(account) do |account| account.suspend!(origin: :remote) account end end it 're-fetches the account' do - subject.call - expect(reslove_account_service).to have_received(:call).with(account) + subject + expect(resolve_account_service).to have_received(:call).with(account) end it "does not merge back into local followers' feeds" do - subject.call + subject expect(FeedManager.instance).to_not have_received(:merge_into_home).with(account, local_follower) expect(FeedManager.instance).to_not have_received(:merge_into_list).with(account, list) end it 'does not mark the account as unsuspended' do - is_expected.not_to change { account.suspended? } + expect { subject }.not_to change { account.suspended? } end end context 'when the account is remotely deleted' do before do - allow(reslove_account_service).to receive(:call).with(account).and_return(nil) + allow(resolve_account_service).to receive(:call).with(account).and_return(nil) end it 're-fetches the account' do - subject.call - expect(reslove_account_service).to have_received(:call).with(account) + subject + expect(resolve_account_service).to have_received(:call).with(account) end it "does not merge back into local followers' feeds" do - subject.call + subject expect(FeedManager.instance).to_not have_received(:merge_into_home).with(account, local_follower) expect(FeedManager.instance).to_not have_received(:merge_into_list).with(account, list) end diff --git a/spec/services/update_status_service_spec.rb b/spec/services/update_status_service_spec.rb index 4fd4837c6..71a73be5b 100644 --- a/spec/services/update_status_service_spec.rb +++ b/spec/services/update_status_service_spec.rb @@ -3,6 +3,23 @@ require 'rails_helper' RSpec.describe UpdateStatusService, type: :service do subject { described_class.new } + context 'when nothing changes' do + let!(:status) { Fabricate(:status, text: 'Foo', language: 'en') } + + before do + allow(ActivityPub::DistributionWorker).to receive(:perform_async) + subject.call(status, status.account_id, text: 'Foo') + end + + it 'does not create an edit' do + expect(status.reload.edits).to be_empty + end + + it 'does not notify anyone' do + expect(ActivityPub::DistributionWorker).to_not have_received(:perform_async) + end + end + context 'when text changes' do let!(:status) { Fabricate(:status, text: 'Foo') } let(:preview_card) { Fabricate(:preview_card) } @@ -21,7 +38,7 @@ RSpec.describe UpdateStatusService, type: :service do end it 'saves edit history' do - expect(status.edits.pluck(:text, :media_attachments_changed)).to eq [['Foo', false], ['Bar', false]] + expect(status.edits.pluck(:text)).to eq %w(Foo Bar) end end @@ -39,7 +56,7 @@ RSpec.describe UpdateStatusService, type: :service do end it 'saves edit history' do - expect(status.edits.pluck(:text, :spoiler_text, :media_attachments_changed)).to eq [['Foo', '', false], ['Foo', 'Bar', false]] + expect(status.edits.pluck(:text, :spoiler_text)).to eq [['Foo', ''], ['Foo', 'Bar']] end end @@ -54,11 +71,11 @@ RSpec.describe UpdateStatusService, type: :service do end it 'updates media attachments' do - expect(status.media_attachments.to_a).to eq [attached_media_attachment] + expect(status.ordered_media_attachments).to eq [attached_media_attachment] end - it 'detaches detached media attachments' do - expect(detached_media_attachment.reload.status_id).to be_nil + it 'does not detach detached media attachments' do + expect(detached_media_attachment.reload.status_id).to eq status.id end it 'attaches attached media attachments' do @@ -66,7 +83,7 @@ RSpec.describe UpdateStatusService, type: :service do end it 'saves edit history' do - expect(status.edits.pluck(:text, :media_attachments_changed)).to eq [['Foo', false], ['Foo', true]] + expect(status.edits.pluck(:ordered_media_attachment_ids)).to eq [[detached_media_attachment.id], [attached_media_attachment.id]] end end @@ -95,7 +112,7 @@ RSpec.describe UpdateStatusService, type: :service do end it 'saves edit history' do - expect(status.edits.pluck(:text, :media_attachments_changed)).to eq [['Foo', false], ['Foo', true]] + expect(status.edits.pluck(:poll_options)).to eq [%w(Foo Bar), %w(Bar Baz Foo)] end end diff --git a/spec/support/stories/profile_stories.rb b/spec/support/stories/profile_stories.rb index 75b413330..0c4a14d1c 100644 --- a/spec/support/stories/profile_stories.rb +++ b/spec/support/stories/profile_stories.rb @@ -22,7 +22,7 @@ module ProfileStories def with_alice_as_local_user @alice_bio = '@alice and @bob are fictional characters commonly used as'\ 'placeholder names in #cryptology, as well as #science and'\ - 'engineering 📖 literature. Not affilated with @pepe.' + 'engineering 📖 literature. Not affiliated with @pepe.' @alice = Fabricate( :user, diff --git a/spec/validators/email_mx_validator_spec.rb b/spec/validators/email_mx_validator_spec.rb index af0eb98f5..4feedd0c7 100644 --- a/spec/validators/email_mx_validator_spec.rb +++ b/spec/validators/email_mx_validator_spec.rb @@ -56,66 +56,6 @@ describe EmailMxValidator do expect(user.errors).to have_received(:add) end - it 'adds an error if the A record is blacklisted' do - EmailDomainBlock.create!(domain: 'alternate-example.com', ips: ['1.2.3.4']) - resolver = double - - allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::MX).and_return([]) - allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::A).and_return([double(address: '1.2.3.4')]) - allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::AAAA).and_return([]) - allow(resolver).to receive(:timeouts=).and_return(nil) - allow(Resolv::DNS).to receive(:open).and_yield(resolver) - - subject.validate(user) - expect(user.errors).to have_received(:add) - end - - it 'adds an error if the AAAA record is blacklisted' do - EmailDomainBlock.create!(domain: 'alternate-example.com', ips: ['fd00::1']) - resolver = double - - allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::MX).and_return([]) - allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::A).and_return([]) - allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::AAAA).and_return([double(address: 'fd00::1')]) - allow(resolver).to receive(:timeouts=).and_return(nil) - allow(Resolv::DNS).to receive(:open).and_yield(resolver) - - subject.validate(user) - expect(user.errors).to have_received(:add) - end - - it 'adds an error if the A record of the MX record is blacklisted' do - EmailDomainBlock.create!(domain: 'mail.other-domain.com', ips: ['2.3.4.5']) - resolver = double - - allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::MX).and_return([double(exchange: 'mail.example.com')]) - allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::A).and_return([]) - allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::AAAA).and_return([]) - allow(resolver).to receive(:getresources).with('mail.example.com', Resolv::DNS::Resource::IN::A).and_return([double(address: '2.3.4.5')]) - allow(resolver).to receive(:getresources).with('mail.example.com', Resolv::DNS::Resource::IN::AAAA).and_return([]) - allow(resolver).to receive(:timeouts=).and_return(nil) - allow(Resolv::DNS).to receive(:open).and_yield(resolver) - - subject.validate(user) - expect(user.errors).to have_received(:add) - end - - it 'adds an error if the AAAA record of the MX record is blacklisted' do - EmailDomainBlock.create!(domain: 'mail.other-domain.com', ips: ['fd00::2']) - resolver = double - - allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::MX).and_return([double(exchange: 'mail.example.com')]) - allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::A).and_return([]) - allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::AAAA).and_return([]) - allow(resolver).to receive(:getresources).with('mail.example.com', Resolv::DNS::Resource::IN::A).and_return([]) - allow(resolver).to receive(:getresources).with('mail.example.com', Resolv::DNS::Resource::IN::AAAA).and_return([double(address: 'fd00::2')]) - allow(resolver).to receive(:timeouts=).and_return(nil) - allow(Resolv::DNS).to receive(:open).and_yield(resolver) - - subject.validate(user) - expect(user.errors).to have_received(:add) - end - it 'adds an error if the MX record is blacklisted' do EmailDomainBlock.create!(domain: 'mail.example.com') resolver = double diff --git a/spec/validators/status_length_validator_spec.rb b/spec/validators/status_length_validator_spec.rb index bef3f29f5..db9c728a8 100644 --- a/spec/validators/status_length_validator_spec.rb +++ b/spec/validators/status_length_validator_spec.rb @@ -50,6 +50,13 @@ describe StatusLengthValidator do expect(status.errors).to have_received(:add) end + it 'does not count overly long URLs as 23 characters flat' do + text = "http://example.com/valid?#{'#foo?' * 1000}" + status = double(spoiler_text: '', text: text, errors: double(add: nil), local?: true, reblog?: false) + subject.validate(status) + expect(status.errors).to have_received(:add) + end + it 'counts only the front part of remote usernames' do text = ('a' * 475) + " @alice@#{'b' * 30}.com" status = double(spoiler_text: '', text: text, errors: double(add: nil), local?: true, reblog?: false) @@ -57,5 +64,13 @@ describe StatusLengthValidator do subject.validate(status) expect(status.errors).to_not have_received(:add) end + + it 'does count both parts of remote usernames for overly long domains' do + text = "@alice@#{'b' * 500}.com" + status = double(spoiler_text: '', text: text, errors: double(add: nil), local?: true, reblog?: false) + + subject.validate(status) + expect(status.errors).to have_received(:add) + end end end diff --git a/spec/views/about/show.html.haml_spec.rb b/spec/views/about/show.html.haml_spec.rb index 1c2f5eee9..4eab97da9 100644 --- a/spec/views/about/show.html.haml_spec.rb +++ b/spec/views/about/show.html.haml_spec.rb @@ -8,6 +8,7 @@ describe 'about/show.html.haml', without_verify_partial_doubles: true do allow(view).to receive(:site_title).and_return('example site') allow(view).to receive(:new_user).and_return(User.new) allow(view).to receive(:use_seamless_external_login?).and_return(false) + allow(view).to receive(:current_account).and_return(nil) end it 'has valid open graph tags' do diff --git a/spec/workers/scheduler/feed_cleanup_scheduler_spec.rb b/spec/workers/scheduler/feed_cleanup_scheduler_spec.rb index 914eed829..82d794594 100644 --- a/spec/workers/scheduler/feed_cleanup_scheduler_spec.rb +++ b/spec/workers/scheduler/feed_cleanup_scheduler_spec.rb @@ -7,17 +7,17 @@ describe Scheduler::FeedCleanupScheduler do let!(:inactive_user) { Fabricate(:user, current_sign_in_at: 22.days.ago) } it 'clears feeds of inactives' do - Redis.current.zadd(feed_key_for(inactive_user), 1, 1) - Redis.current.zadd(feed_key_for(active_user), 1, 1) - Redis.current.zadd(feed_key_for(inactive_user, 'reblogs'), 2, 2) - Redis.current.sadd(feed_key_for(inactive_user, 'reblogs:2'), 3) + redis.zadd(feed_key_for(inactive_user), 1, 1) + redis.zadd(feed_key_for(active_user), 1, 1) + redis.zadd(feed_key_for(inactive_user, 'reblogs'), 2, 2) + redis.sadd(feed_key_for(inactive_user, 'reblogs:2'), 3) subject.perform - expect(Redis.current.zcard(feed_key_for(inactive_user))).to eq 0 - expect(Redis.current.zcard(feed_key_for(active_user))).to eq 1 - expect(Redis.current.exists?(feed_key_for(inactive_user, 'reblogs'))).to be false - expect(Redis.current.exists?(feed_key_for(inactive_user, 'reblogs:2'))).to be false + expect(redis.zcard(feed_key_for(inactive_user))).to eq 0 + expect(redis.zcard(feed_key_for(active_user))).to eq 1 + expect(redis.exists?(feed_key_for(inactive_user, 'reblogs'))).to be false + expect(redis.exists?(feed_key_for(inactive_user, 'reblogs:2'))).to be false end def feed_key_for(user, subtype = nil) diff --git a/streaming/index.js b/streaming/index.js index 3db94b160..6935c4764 100644 --- a/streaming/index.js +++ b/streaming/index.js @@ -146,7 +146,7 @@ const startWorker = async (workerId) => { const app = express(); - app.set('trusted proxy', process.env.TRUSTED_PROXY_IP || 'loopback,uniquelocal'); + app.set('trust proxy', process.env.TRUSTED_PROXY_IP ? process.env.TRUSTED_PROXY_IP.split(/(?:\s*,\s*|\s+)/) : 'loopback,uniquelocal'); const pgPool = new pg.Pool(Object.assign(pgConfigs[env], dbUrlToConfig(process.env.DATABASE_URL))); const server = http.createServer(app); @@ -167,6 +167,11 @@ const startWorker = async (workerId) => { const redisPrefix = redisNamespace ? `${redisNamespace}:` : ''; + /** + * @type {Object.>} + */ + const subs = {}; + const redisSubscribeClient = await redisUrlToClient(redisParams, process.env.REDIS_URL); const redisClient = await redisUrlToClient(redisParams, process.env.REDIS_URL); @@ -191,23 +196,55 @@ const startWorker = async (workerId) => { }; /** + * @param {string} message * @param {string} channel - * @param {function(string): void} callback */ - const subscribe = (channel, callback) => { - log.silly(`Adding listener for ${channel}`); + const onRedisMessage = (message, channel) => { + const callbacks = subs[channel]; - redisSubscribeClient.subscribe(channel, callback); + log.silly(`New message on channel ${channel}`); + + if (!callbacks) { + return; + } + + callbacks.forEach(callback => callback(message)); }; /** * @param {string} channel * @param {function(string): void} callback */ + const subscribe = (channel, callback) => { + log.silly(`Adding listener for ${channel}`); + + subs[channel] = subs[channel] || []; + + if (subs[channel].length === 0) { + log.verbose(`Subscribe ${channel}`); + redisSubscribeClient.subscribe(channel, onRedisMessage); + } + + subs[channel].push(callback); + }; + + /** + * @param {string} channel + */ const unsubscribe = (channel, callback) => { log.silly(`Removing listener for ${channel}`); - redisSubscribeClient.unsubscribe(channel, callback); + if (!subs[channel]) { + return; + } + + subs[channel] = subs[channel].filter(item => item !== callback); + + if (subs[channel].length === 0) { + log.verbose(`Unsubscribe ${channel}`); + redisSubscribeClient.unsubscribe(channel); + delete subs[channel]; + } }; const FALSE_VALUES = [ diff --git a/yarn.lock b/yarn.lock index 3b7ece932..20bae6f91 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@ampproject/remapping@^2.0.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.0.tgz#72becdf17ee44b2d1ac5651fb12f1952c336fe23" - integrity sha512-d5RysTlJ7hmw5Tw4UxgxcY3lkMe92n8sXCcuLPAyIAHK6j8DefDwtGnVVDgOnv+RnEosulDJ9NPKQL27bDId0g== +"@ampproject/remapping@^2.1.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" + integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg== dependencies: "@jridgewell/trace-mapping" "^0.3.0" @@ -28,31 +28,36 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.8.tgz#31560f9f29fdf1868de8cb55049538a1b9732a60" integrity sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q== -"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.17.2", "@babel/core@^7.7.2", "@babel/core@^7.8.0": - version "7.17.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.2.tgz#2c77fc430e95139d816d39b113b31bf40fb22337" - integrity sha512-R3VH5G42VSDolRHyUO4V2cfag8WHcZyxdq5Z/m8Xyb92lW/Erm/6kM+XtRFGf3Mulre3mveni2NHfEUws8wSvw== +"@babel/compat-data@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.7.tgz#078d8b833fbbcc95286613be8c716cef2b519fa2" + integrity sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ== + +"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.17.9", "@babel/core@^7.7.2", "@babel/core@^7.8.0": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.9.tgz#6bae81a06d95f4d0dec5bb9d74bbc1f58babdcfe" + integrity sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw== dependencies: - "@ampproject/remapping" "^2.0.0" + "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.0" - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helpers" "^7.17.2" - "@babel/parser" "^7.17.0" + "@babel/generator" "^7.17.9" + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helpers" "^7.17.9" + "@babel/parser" "^7.17.9" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.0" + "@babel/traverse" "^7.17.9" "@babel/types" "^7.17.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" - json5 "^2.1.2" + json5 "^2.2.1" semver "^6.3.0" -"@babel/generator@^7.17.0", "@babel/generator@^7.7.2": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.0.tgz#7bd890ba706cd86d3e2f727322346ffdbf98f65e" - integrity sha512-I3Omiv6FGOC29dtlZhkfXO6pgkmukJSlT26QjVvS1DGZe/NzSVCPG41X0tS21oZkJYlovfj9qDWgKP+Cn4bXxw== +"@babel/generator@^7.17.9", "@babel/generator@^7.7.2": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.9.tgz#f4af9fd38fa8de143c29fce3f71852406fc1e2fc" + integrity sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ== dependencies: "@babel/types" "^7.17.0" jsesc "^2.5.1" @@ -81,25 +86,25 @@ "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b" - integrity sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA== +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz#a3c2924f5e5f0379b356d4cfb313d1414dc30e46" + integrity sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w== dependencies: - "@babel/compat-data" "^7.16.4" + "@babel/compat-data" "^7.17.7" "@babel/helper-validator-option" "^7.16.7" browserslist "^4.17.5" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.1": - version "7.17.1" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.1.tgz#9699f14a88833a7e055ce57dcd3ffdcd25186b21" - integrity sha512-JBdSr/LtyYIno/pNnJ75lBcqc3Z1XXujzPanHqjvvrhOA+DTceTFuJi8XjmWTZh4r3fsdfqaCMN0iZemdkxZHQ== +"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz#71835d7fb9f38bd9f1378e40a4c0902fdc2ea49d" + integrity sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-member-expression-to-functions" "^7.17.7" "@babel/helper-optimise-call-expression" "^7.16.7" "@babel/helper-replace-supers" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" @@ -163,6 +168,14 @@ "@babel/template" "^7.16.7" "@babel/types" "^7.16.7" +"@babel/helper-function-name@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" + integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== + dependencies: + "@babel/template" "^7.16.7" + "@babel/types" "^7.17.0" + "@babel/helper-get-function-arity@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" @@ -184,6 +197,13 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-member-expression-to-functions@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" + integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw== + dependencies: + "@babel/types" "^7.17.0" + "@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" @@ -191,19 +211,19 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-module-transforms@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz#7665faeb721a01ca5327ddc6bba15a5cb34b6a41" - integrity sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng== +"@babel/helper-module-transforms@^7.16.7", "@babel/helper-module-transforms@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd" + integrity sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw== dependencies: "@babel/helper-environment-visitor" "^7.16.7" "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-simple-access" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" "@babel/helper-split-export-declaration" "^7.16.7" "@babel/helper-validator-identifier" "^7.16.7" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.16.7" - "@babel/types" "^7.16.7" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" "@babel/helper-optimise-call-expression@^7.16.7": version "7.16.7" @@ -244,6 +264,13 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-simple-access@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367" + integrity sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA== + dependencies: + "@babel/types" "^7.17.0" + "@babel/helper-skip-transparent-expression-wrappers@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" @@ -283,13 +310,13 @@ "@babel/traverse" "^7.16.8" "@babel/types" "^7.16.8" -"@babel/helpers@^7.17.2": - version "7.17.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.2.tgz#23f0a0746c8e287773ccd27c14be428891f63417" - integrity sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ== +"@babel/helpers@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.9.tgz#b2af120821bfbe44f9907b1826e168e819375a1a" + integrity sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q== dependencies: "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.0" + "@babel/traverse" "^7.17.9" "@babel/types" "^7.17.0" "@babel/highlight@^7.10.4": @@ -310,10 +337,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.0", "@babel/parser@^7.7.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.0.tgz#f0ac33eddbe214e4105363bb17c3341c5ffcc43c" - integrity sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.9", "@babel/parser@^7.7.0": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.9.tgz#9c94189a6062f0291418ca021077983058e171ef" + integrity sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": version "7.16.7" @@ -357,14 +384,15 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-proposal-decorators@^7.17.2": - version "7.17.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.2.tgz#c36372ddfe0360cac1ee331a238310bddca11493" - integrity sha512-WH8Z95CwTq/W8rFbMqb9p3hicpt4RX4f0K659ax2VHxgOyT6qQmUaEVEjIh4WR9Eh9NymkVn5vwsrE68fAQNUw== +"@babel/plugin-proposal-decorators@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.9.tgz#67a1653be9c77ce5b6c318aa90c8287b87831619" + integrity sha512-EfH2LZ/vPa2wuPwJ26j+kYRkaubf89UlwxKXtxqEm57HrgSEYDB8t4swFP+p8LcI9yiP9ZRJJjo/58hS6BnaDA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.17.1" + "@babel/helper-create-class-features-plugin" "^7.17.9" "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" "@babel/plugin-syntax-decorators" "^7.17.0" charcodes "^0.2.0" @@ -1024,10 +1052,10 @@ dependencies: regenerator-runtime "^0.12.0" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.2", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": - version "7.17.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.2.tgz#66f68591605e59da47523c631416b18508779941" - integrity sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw== +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.9", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" + integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== dependencies: regenerator-runtime "^0.13.4" @@ -1040,18 +1068,18 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.0", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.0.tgz#3143e5066796408ccc880a33ecd3184f3e75cd30" - integrity sha512-fpFIXvqD6kC7c7PUNnZ0Z8cQXlarCLtCUpt2S1Dx7PjoRtCFffvOkHHSom+m5HIxMZn5bIBVb71lhabcmjEsqg== +"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.9.tgz#1f9b207435d9ae4a8ed6998b2b82300d83c37a0d" + integrity sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw== dependencies: "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.0" + "@babel/generator" "^7.17.9" "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" "@babel/helper-hoist-variables" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.17.0" + "@babel/parser" "^7.17.9" "@babel/types" "^7.17.0" debug "^4.1.0" globals "^11.1.0" @@ -1403,10 +1431,10 @@ resolved "https://registry.yarnpkg.com/@node-redis/bloom/-/bloom-1.0.1.tgz#144474a0b7dc4a4b91badea2cfa9538ce0a1854e" integrity sha512-mXEBvEIgF4tUzdIN89LiYsbi6//EdpFA7L8M+DHCvePXg+bfHWi+ct5VI6nHUFQE5+ohm/9wmgihCH3HSkeKsw== -"@node-redis/client@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@node-redis/client/-/client-1.0.3.tgz#ece282b7ee07283d744e6ab1fa72f2d47641402c" - integrity sha512-IXNgOG99PHGL3NxN3/e8J8MuX+H08I+OMNmheGmZBXngE0IntaCQwwrd7NzmiHA+zH3SKHiJ+6k3P7t7XYknMw== +"@node-redis/client@1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@node-redis/client/-/client-1.0.5.tgz#ebac5e2bbf12214042a37621604973a954ede755" + integrity sha512-ESZ3bd1f+od62h4MaBLKum+klVJfA4wAeLHcVQBkoXa1l0viFesOWnakLQqKg+UyrlJhZmXJWtu0Y9v7iTMrig== dependencies: cluster-key-slot "1.1.0" generic-pool "3.8.2" @@ -1423,15 +1451,15 @@ resolved "https://registry.yarnpkg.com/@node-redis/json/-/json-1.0.2.tgz#8ad2d0f026698dc1a4238cc3d1eb099a3bee5ab8" integrity sha512-qVRgn8WfG46QQ08CghSbY4VhHFgaTY71WjpwRBGEuqGPfWwfRcIf3OqSpR7Q/45X+v3xd8mvYjywqh0wqJ8T+g== -"@node-redis/search@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@node-redis/search/-/search-1.0.2.tgz#8cfc91006ea787df801d41410283e1f59027f818" - integrity sha512-gWhEeji+kTAvzZeguUNJdMSZNH2c5dv3Bci8Nn2f7VGuf6IvvwuZDSBOuOlirLVgayVuWzAG7EhwaZWK1VDnWQ== +"@node-redis/search@1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@node-redis/search/-/search-1.0.5.tgz#96050007eb7c50a7e47080320b4f12aca8cf94c4" + integrity sha512-MCOL8iCKq4v+3HgEQv8zGlSkZyXSXtERgrAJ4TSryIG/eLFy84b57KmNNa/V7M1Q2Wd2hgn2nPCGNcQtk1R1OQ== -"@node-redis/time-series@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@node-redis/time-series/-/time-series-1.0.1.tgz#703149f8fa4f6fff377c61a0873911e7c1ba5cc3" - integrity sha512-+nTn6EewVj3GlUXPuD3dgheWqo219jTxlo6R+pg24OeVvFHx9aFGGiyOgj3vBPhWUdRZ0xMcujXV5ki4fbLyMw== +"@node-redis/time-series@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@node-redis/time-series/-/time-series-1.0.2.tgz#5dd3638374edd85ebe0aa6b0e87addc88fb9df69" + integrity sha512-HGQ8YooJ8Mx7l28tD7XjtB3ImLEjlUxG1wC1PAjxu6hPJqjPshUZxAICzDqDjtIbhDTf48WXXUcx8TQJB1XTKA== "@npmcli/move-file@^1.0.1": version "1.0.1" @@ -1445,10 +1473,10 @@ resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.11.tgz#aeb16f50649a91af79dbe36574b66d0f9e4d9f71" integrity sha512-3NsZsJIA/22P3QUyrEDNA2D133H4j224twJrdipXN38dpnIOzAbUDtOwkcJ5pXmn75w7LSQDjA4tO9dm1XlqlA== -"@rails/ujs@^6.1.4": - version "6.1.4" - resolved "https://registry.yarnpkg.com/@rails/ujs/-/ujs-6.1.4.tgz#093d5341595a02089ed309dec40f3c37da7b1b10" - integrity sha512-O3lEzL5DYbxppMdsFSw36e4BHIlfz/xusynwXGv3l2lhSlvah41qviRpsoAlKXxl37nZAqK+UUF5cnGGK45Mfw== +"@rails/ujs@^6.1.5": + version "6.1.5" + resolved "https://registry.yarnpkg.com/@rails/ujs/-/ujs-6.1.5.tgz#bb1afddd0d771f00924f44b21634969e329532e1" + integrity sha512-Ir4yd2fdDldWIghavPr874copVKf6OOoecKHZiFRlPtm38tFvhyxr+ywzNieXGwolF9JQe3D5GrM8ejkzUgh5Q== "@sinonjs/commons@^1.7.0": version "1.8.1" @@ -1478,10 +1506,10 @@ lz-string "^1.4.4" pretty-format "^27.0.2" -"@testing-library/jest-dom@^5.16.2": - version "5.16.2" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.2.tgz#f329b36b44aa6149cd6ced9adf567f8b6aa1c959" - integrity sha512-6ewxs1MXWwsBFZXIk4nKKskWANelkdUehchEOokHsN8X7c2eKXGw+77aRV63UU8f/DTSVUPLaGxdrj4lN7D/ug== +"@testing-library/jest-dom@^5.16.4": + version "5.16.4" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.4.tgz#938302d7b8b483963a3ae821f1c0808f872245cd" + integrity sha512-Gy+IoFutbMQcky0k+bqqumXZ1cTGswLsFqmNLzNdSKkU9KGV2u9oXhukCbbJ9/LRPKiqwxEE8VpV/+YZlfkPUA== dependencies: "@babel/runtime" "^7.9.2" "@types/testing-library__jest-dom" "^5.9.1" @@ -1493,13 +1521,14 @@ lodash "^4.17.15" redent "^3.0.0" -"@testing-library/react@^12.1.2": - version "12.1.2" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-12.1.2.tgz#f1bc9a45943461fa2a598bb4597df1ae044cfc76" - integrity sha512-ihQiEOklNyHIpo2Y8FREkyD1QAea054U0MVbwH1m8N9TxeFz+KoJ9LkqoKqJlzx2JDm56DVwaJ1r36JYxZM05g== +"@testing-library/react@^12.1.5": + version "12.1.5" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-12.1.5.tgz#bb248f72f02a5ac9d949dea07279095fa577963b" + integrity sha512-OfTXCJUFgjd/digLUuPxa0+/3ZxsQmE7ub9kcbW/wi96Bh3o/p5vrETcBGfP17NWPGqeYYl5LTRpwyGoMC4ysg== dependencies: "@babel/runtime" "^7.12.5" "@testing-library/dom" "^8.0.0" + "@types/react-dom" "<18.0.0" "@tootallnate/once@1": version "1.1.2" @@ -1660,6 +1689,13 @@ resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== +"@types/react-dom@<18.0.0": + version "17.0.15" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.15.tgz#f2c8efde11521a4b7991e076cb9c70ba3bb0d156" + integrity sha512-Tr9VU9DvNoHDWlmecmcsE5ZZiUkYx+nKBzum4Oxe1K0yJVyBlfbq7H3eXjxXqJczBKqPGq3EgfTru4MgKb9+Yw== + dependencies: + "@types/react" "^17" + "@types/react-redux@^7.1.20": version "7.1.20" resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.20.tgz#42f0e61ababb621e12c66c96dda94c58423bd7df" @@ -1686,6 +1722,15 @@ "@types/scheduler" "*" csstype "^3.0.2" +"@types/react@^17": + version "17.0.44" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.44.tgz#c3714bd34dd551ab20b8015d9d0dbec812a51ec7" + integrity sha512-Ye0nlw09GeMp2Suh8qoOv0odfgCoowfM/9MG6WeRD60Gq9wS90bdkdRtYbRkNhXOpG4H+YXGvj4wOWhAC0LJ1g== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + "@types/scheduler@*": version "0.16.1" resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.1.tgz#18845205e86ff0038517aab7a18a62a6b9f71275" @@ -1887,13 +1932,13 @@ abab@^2.0.3, abab@^2.0.5: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" + mime-types "~2.1.34" + negotiator "0.6.3" acorn-globals@^6.0.0: version "6.0.0" @@ -2269,9 +2314,9 @@ async-limiter@~1.0.0: integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== async@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + version "2.6.4" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" + integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== dependencies: lodash "^4.17.14" @@ -2303,10 +2348,10 @@ axe-core@^4.3.5: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.3.5.tgz#78d6911ba317a8262bfee292aeafcc1e04b49cc5" integrity sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA== -axios@^0.26.0: - version "0.26.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.26.0.tgz#9a318f1c69ec108f8cd5f3c3d390366635e13928" - integrity sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og== +axios@^0.26.1: + version "0.26.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9" + integrity sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA== dependencies: follow-redirects "^1.14.8" @@ -2341,13 +2386,13 @@ babel-jest@^27.5.1: graceful-fs "^4.2.9" slash "^3.0.0" -babel-loader@^8.2.3: - version "8.2.3" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.3.tgz#8986b40f1a64cacfcb4b8429320085ef68b1342d" - integrity sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw== +babel-loader@^8.2.4: + version "8.2.4" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.4.tgz#95f5023c791b2e9e2ca6f67b0984f39c82ff384b" + integrity sha512-8dytA3gcvPPPv4Grjhnt8b5IIiTcq/zeXOPk4iTYI0SVXcsmuGg7JtBRDp8S9X+gJfhQ8ektjXZlDu1Bb33U8A== dependencies: find-cache-dir "^3.3.1" - loader-utils "^1.4.0" + loader-utils "^2.0.0" make-dir "^3.1.0" schema-utils "^2.6.5" @@ -2545,10 +2590,10 @@ bluebird@^3.5.5: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -blurhash@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/blurhash/-/blurhash-1.1.4.tgz#a7010ceb3019cd2c9809b17c910ebf6175d29244" - integrity sha512-MXIPz6zwYUKayju+Uidf83KhH0vodZfeRl6Ich8Gu+KGl0JgKiFq9LsfqV7cVU5fKD/AotmduZqvOfrGKOfTaA== +blurhash@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/blurhash/-/blurhash-1.1.5.tgz#3034104cd5dce5a3e5caa871ae2f0f1f2d0ab566" + integrity sha512-a+LO3A2DfxTaTztsmkbLYmUzUeApi0LZuKalwbNmqAHR6HhJGMt1qSV/R3wc+w4DL28holjqO3Bg74aUGavGjg== bmp-js@^0.1.0: version "0.1.0" @@ -2565,21 +2610,23 @@ bn.js@^5.1.1: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== -body-parser@1.19.1: - version "1.19.1" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.1.tgz#1499abbaa9274af3ecc9f6f10396c995943e31d4" - integrity sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA== +body-parser@1.20.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" + integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== dependencies: - bytes "3.1.1" + bytes "3.1.2" content-type "~1.0.4" debug "2.6.9" - depd "~1.1.2" - http-errors "1.8.1" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.9.6" - raw-body "2.4.2" + on-finished "2.4.1" + qs "6.10.3" + raw-body "2.5.1" type-is "~1.6.18" + unpipe "1.0.0" bonjour@^3.5.0: version "3.5.0" @@ -2793,10 +2840,10 @@ bytes@3.0.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= -bytes@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.1.tgz#3f018291cb4cbad9accb6e6970bca9c8889e879a" - integrity sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg== +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== cacache@^12.0.2: version "12.0.4" @@ -2923,7 +2970,7 @@ caniuse-api@^3.0.0: caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001219, caniuse-lite@^1.0.30001271, caniuse-lite@^1.0.30001286: version "1.0.30001310" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001310.tgz" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001310.tgz#da02cd07432c9eece6992689d1b84ca18139eea8" integrity sha512-cb9xTV8k9HTIUA3GnPUJCk0meUnrHL5gy5QePfDjxHyNBcnzPzrHFv5GqfP7ue5b1ZyzZL0RJboD6hQlPXjhjg== chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: @@ -3179,7 +3226,7 @@ color-string@^1.5.2: color-name "^1.0.0" simple-swizzle "^0.2.2" -color-support@^1.1.2: +color-support@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== @@ -3280,7 +3327,7 @@ console-browserify@^1.1.0: resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== -console-control-strings@^1.0.0, console-control-strings@^1.1.0: +console-control-strings@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= @@ -3314,10 +3361,10 @@ cookie-signature@1.0.6: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= -cookie@0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" - integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== copy-concurrently@^1.0.0: version "1.0.5" @@ -3838,6 +3885,11 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" @@ -3851,10 +3903,10 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== detect-file@^1.0.0: version "1.0.0" @@ -4317,32 +4369,32 @@ eslint-import-resolver-node@^0.3.6: debug "^3.2.7" resolve "^1.20.0" -eslint-module-utils@^2.7.2: - version "2.7.2" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz#1d0aa455dcf41052339b63cada8ab5fd57577129" - integrity sha512-zquepFnWCY2ISMFwD/DqzaM++H+7PDzOpUvotJWm/y1BAFt5R4oeULgdrTejKqLkz7MA/tgstsUMNYc7wNdTrg== +eslint-module-utils@^2.7.3: + version "2.7.3" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz#ad7e3a10552fdd0642e1e55292781bd6e34876ee" + integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ== dependencies: debug "^3.2.7" find-up "^2.1.0" -eslint-plugin-import@~2.25.4: - version "2.25.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz#322f3f916a4e9e991ac7af32032c25ce313209f1" - integrity sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA== +eslint-plugin-import@~2.26.0: + version "2.26.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" + integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== dependencies: array-includes "^3.1.4" array.prototype.flat "^1.2.5" debug "^2.6.9" doctrine "^2.1.0" eslint-import-resolver-node "^0.3.6" - eslint-module-utils "^2.7.2" + eslint-module-utils "^2.7.3" has "^1.0.3" - is-core-module "^2.8.0" + is-core-module "^2.8.1" is-glob "^4.0.3" - minimatch "^3.0.4" + minimatch "^3.1.2" object.values "^1.1.5" - resolve "^1.20.0" - tsconfig-paths "^3.12.0" + resolve "^1.22.0" + tsconfig-paths "^3.14.1" eslint-plugin-jsx-a11y@~6.5.1: version "6.5.1" @@ -4367,22 +4419,22 @@ eslint-plugin-promise@~6.0.0: resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz#017652c07c9816413a41e11c30adc42c3d55ff18" integrity sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw== -eslint-plugin-react@~7.28.0: - version "7.28.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.28.0.tgz#8f3ff450677571a659ce76efc6d80b6a525adbdf" - integrity sha512-IOlFIRHzWfEQQKcAD4iyYDndHwTQiCMcJVJjxempf203jnNLUnW34AXLrV33+nEXoifJE2ZEGmcjKPL8957eSw== +eslint-plugin-react@~7.29.4: + version "7.29.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz#4717de5227f55f3801a5fd51a16a4fa22b5914d2" + integrity sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ== dependencies: array-includes "^3.1.4" array.prototype.flatmap "^1.2.5" doctrine "^2.1.0" estraverse "^5.3.0" jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.0.4" + minimatch "^3.1.2" object.entries "^1.1.5" object.fromentries "^2.0.5" object.hasown "^1.1.0" object.values "^1.1.5" - prop-types "^15.7.2" + prop-types "^15.8.1" resolve "^2.0.0-next.3" semver "^6.3.0" string.prototype.matchall "^4.0.6" @@ -4667,38 +4719,39 @@ expect@^27.5.1: jest-matcher-utils "^27.5.1" jest-message-util "^27.5.1" -express@^4.17.1, express@^4.17.2: - version "4.17.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.2.tgz#c18369f265297319beed4e5558753cc8c1364cb3" - integrity sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg== +express@^4.17.1, express@^4.18.0: + version "4.18.0" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.0.tgz#7a426773325d0dd5406395220614c0db10b6e8e2" + integrity sha512-EJEXxiTQJS3lIPrU1AE2vRuT7X7E+0KBbpm5GSoK524yl0K8X+er8zS2P14E64eqsVNoWbMCT7MpmQ+ErAhgRg== dependencies: - accepts "~1.3.7" + accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.19.1" + body-parser "1.20.0" content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.4.1" + cookie "0.5.0" cookie-signature "1.0.6" debug "2.6.9" - depd "~1.1.2" + depd "2.0.0" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" - finalhandler "~1.1.2" + finalhandler "1.2.0" fresh "0.5.2" + http-errors "2.0.0" merge-descriptors "1.0.1" methods "~1.1.2" - on-finished "~2.3.0" + on-finished "2.4.1" parseurl "~1.3.3" path-to-regexp "0.1.7" proxy-addr "~2.0.7" - qs "6.9.6" + qs "6.10.3" range-parser "~1.2.1" safe-buffer "5.2.1" - send "0.17.2" - serve-static "1.14.2" + send "0.18.0" + serve-static "1.15.0" setprototypeof "1.2.0" - statuses "~1.5.0" + statuses "2.0.1" type-is "~1.6.18" utils-merge "1.0.1" vary "~1.1.2" @@ -4831,17 +4884,17 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== dependencies: debug "2.6.9" encodeurl "~1.0.2" escape-html "~1.0.3" - on-finished "~2.3.0" + on-finished "2.4.1" parseurl "~1.3.3" - statuses "~1.5.0" + statuses "2.0.1" unpipe "~1.0.0" find-cache-dir@^2.1.0: @@ -5044,20 +5097,19 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -gauge@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.0.tgz#afba07aa0374a93c6219603b1fb83eaa2264d8f8" - integrity sha512-F8sU45yQpjQjxKkm1UOAhf0U/O0aFt//Fl7hsrNVto+patMHjs7dPI9mFOGUKbhrgKm0S3EjW3scMFuQmWSROw== +gauge@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" + integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== dependencies: - ansi-regex "^5.0.1" aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.2" - console-control-strings "^1.0.0" + color-support "^1.1.3" + console-control-strings "^1.1.0" has-unicode "^2.0.1" - signal-exit "^3.0.0" + signal-exit "^3.0.7" string-width "^4.2.3" strip-ansi "^6.0.1" - wide-align "^1.1.2" + wide-align "^1.1.5" generate-function@^2.0.0: version "2.3.1" @@ -5465,15 +5517,15 @@ http-deceiver@^1.2.7: resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= -http-errors@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" - integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== dependencies: - depd "~1.1.2" + depd "2.0.0" inherits "2.0.4" setprototypeof "1.2.0" - statuses ">= 1.5.0 < 2" + statuses "2.0.1" toidentifier "1.0.1" http-errors@~1.6.2: @@ -5889,14 +5941,7 @@ is-color-stop@^1.0.0: rgb-regex "^1.0.1" rgba-regex "^1.0.0" -is-core-module@^2.2.0, is-core-module@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" - integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== - dependencies: - has "^1.0.3" - -is-core-module@^2.8.1: +is-core-module@^2.2.0, is-core-module@^2.8.1: version "2.8.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== @@ -6793,12 +6838,10 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" - integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== - dependencies: - minimist "^1.2.5" +json5@^2.1.2, json5@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== jsonfile@^3.0.0: version "3.0.1" @@ -7113,10 +7156,10 @@ mark-loader@^0.1.6: resolved "https://registry.yarnpkg.com/mark-loader/-/mark-loader-0.1.6.tgz#0abb477dca7421d70e20128ff6489f5cae8676d5" integrity sha1-CrtHfcp0IdcOIBKP9kifXK6GdtU= -marky@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/marky/-/marky-1.2.2.tgz#4456765b4de307a13d263a69b0c79bf226e68323" - integrity sha512-k1dB2HNeaNyORco8ulVEhctyEGkKHb2YWAhDsxeFlW2nROIirsctBYzKwwS3Vza+sKTS1zO4Z+n9/+9WbGLIxQ== +marky@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/marky/-/marky-1.2.4.tgz#d02bb4c08be2366687c778ecd2a328971ce23d7f" + integrity sha512-zd2/GiSn6U3/jeFVZ0J9CA1LzQ8RfIVvXkb/U0swFHF/zT+dVohTAWjmo2DcIuofmIIIROlwTbd+shSeXmxr0w== md5.js@^1.3.4: version "1.3.5" @@ -7223,6 +7266,11 @@ mime-db@1.44.0, "mime-db@>= 1.43.0 < 2": resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== +mime-db@1.51.0: + version "1.51.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" + integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== + mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.24: version "2.1.27" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" @@ -7230,6 +7278,13 @@ mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.24: dependencies: mime-db "1.44.0" +mime-types@~2.1.34: + version "2.1.34" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" + integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== + dependencies: + mime-db "1.51.0" + mime@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" @@ -7274,7 +7329,14 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2: +minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@~3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -7291,6 +7353,11 @@ minimist@^1.2.0, minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minimist@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== + minipass-collect@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" @@ -7445,10 +7512,10 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== neo-async@^2.5.0, neo-async@^2.6.1, neo-async@^2.6.2: version "2.6.2" @@ -7562,14 +7629,14 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -npmlog@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.1.tgz#06f1344a174c06e8de9c6c70834cfba2964bba17" - integrity sha512-BTHDvY6nrRHuRfyjt1MAufLxYdVXZfd099H4+i1f0lPywNQyI4foeNXJRObB/uy+TYqUW0vAD9gbdSOXPst7Eg== +npmlog@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" + integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== dependencies: are-we-there-yet "^3.0.0" console-control-strings "^1.1.0" - gauge "^4.0.0" + gauge "^4.0.3" set-blocking "^2.0.0" nth-check@^1.0.2: @@ -7729,10 +7796,10 @@ offline-plugin@^5.0.7: minimatch "^3.0.3" slash "^1.0.0" -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== dependencies: ee-first "1.1.1" @@ -8612,6 +8679,11 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= +prettier@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.2.tgz#e26d71a18a74c3d0f0597f55f01fb6c06c206032" + integrity sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew== + pretty-format@^25.2.1, pretty-format@^25.5.0: version "25.5.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" @@ -8775,10 +8847,12 @@ q@^1.1.2: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= -qs@6.9.6: - version "6.9.6" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee" - integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ== +qs@6.10.3: + version "6.10.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" + integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== + dependencies: + side-channel "^1.0.4" querystring-es3@^0.2.0: version "0.2.1" @@ -8827,13 +8901,13 @@ range-parser@^1.2.1, range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.2.tgz#baf3e9c21eebced59dd6533ac872b71f7b61cb32" - integrity sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ== +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== dependencies: - bytes "3.1.1" - http-errors "1.8.1" + bytes "3.1.2" + http-errors "2.0.0" iconv-lite "0.4.24" unpipe "1.0.0" @@ -8967,10 +9041,10 @@ react-redux-loading-bar@^4.0.8: prop-types "^15.6.2" react-lifecycles-compat "^3.0.2" -react-redux@^7.2.6: - version "7.2.6" - resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.6.tgz#49633a24fe552b5f9caf58feb8a138936ddfe9aa" - integrity sha512-10RPdsz0UUrRL1NZE0ejTkucnclYSgXp5q+tB5SWx2qeG2ZJQJyymgAhwKy73yiL/13btfB6fPr+rgbMAaZIAQ== +react-redux@^7.2.8: + version "7.2.8" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.8.tgz#a894068315e65de5b1b68899f9c6ee0923dd28de" + integrity sha512-6+uDjhs3PSIclqoCk0kd6iX74gzrGc3W5zcAjbrFgEdIjRSQObdIwfx80unTkVUYvbQ95Y8Av3OvFHq1w5EOUw== dependencies: "@babel/runtime" "^7.15.4" "@types/react-redux" "^7.1.20" @@ -9012,10 +9086,10 @@ react-router@^4.3.1: prop-types "^15.6.1" warning "^4.0.1" -react-select@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.2.2.tgz#3d5edf0a60f1276fd5f29f9f90a305f0a25a5189" - integrity sha512-miGS2rT1XbFNjduMZT+V73xbJEeMzVkJOz727F6MeAr2hKE0uUSA8Ff7vD44H32x2PD3SRB6OXTY/L+fTV3z9w== +react-select@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.3.0.tgz#dc77c1f95e1037ec4cb01c5e5d6272d80be8d3f6" + integrity sha512-GM6Fbv1+X+kb3e5Fc4oNeyOJkCIesY/D4NBiReKlGY4RxoeztFYm3J0KREgwMaIKQqwTiuLqTlpUBY3SYw5goQ== dependencies: "@babel/runtime" "^7.12.0" "@emotion/cache" "^11.4.0" @@ -9185,17 +9259,17 @@ redis-parser@3.0.0: dependencies: redis-errors "^1.0.0" -redis@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/redis/-/redis-4.0.3.tgz#f60931175de6f5b5727240a08e58a9ed5cf0f9de" - integrity sha512-SJMRXvgiQUYN0HaWwWv002J5ZgkhYXOlbLomzcrL3kP42yRNZ8Jx5nvLYhVpgmf10xcDpanFOxxJkphu2eyIFQ== +redis@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/redis/-/redis-4.0.6.tgz#a2ded4d9f4f4bad148e54781051618fc684cd858" + integrity sha512-IaPAxgF5dV0jx+A9l6yd6R9/PAChZIoAskDVRzUODeLDNhsMlq7OLLTmu0AwAr0xjrJ1bibW5xdpRwqIQ8Q0Xg== dependencies: "@node-redis/bloom" "1.0.1" - "@node-redis/client" "1.0.3" + "@node-redis/client" "1.0.5" "@node-redis/graph" "1.0.0" "@node-redis/json" "1.0.2" - "@node-redis/search" "1.0.2" - "@node-redis/time-series" "1.0.1" + "@node-redis/search" "1.0.5" + "@node-redis/time-series" "1.0.2" redux-immutable@^4.0.0: version "4.0.0" @@ -9426,15 +9500,7 @@ resolve.exports@^1.1.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== -resolve@^1.12.0, resolve@^1.14.2, resolve@^1.20.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -resolve@^1.19.0: +resolve@^1.12.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0: version "1.22.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== @@ -9580,10 +9646,10 @@ sass-loader@^10.2.0: schema-utils "^3.0.0" semver "^7.3.2" -sass@^1.49.7: - version "1.49.7" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.49.7.tgz#22a86a50552b9b11f71404dfad1b9ff44c6b0c49" - integrity sha512-13dml55EMIR2rS4d/RDHHP0sXMY3+30e1TKsyXaSz3iLWVoDWEoboY8WzJd5JMnxrRHffKO3wq2mpJ0jxRJiEQ== +sass@^1.50.1: + version "1.50.1" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.50.1.tgz#e9b078a1748863013c4712d2466ce8ca4e4ed292" + integrity sha512-noTnY41KnlW2A9P8sdwESpDmo+KBNkukI1i8+hOK3footBUcohNHtdOJbckp46XO95nuvcHDDZ+4tmOnpK3hjw== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -9678,24 +9744,24 @@ semver@^7.2.1, semver@^7.3.2, semver@^7.3.5: dependencies: lru-cache "^6.0.0" -send@0.17.2: - version "0.17.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820" - integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww== +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== dependencies: debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" + depd "2.0.0" + destroy "1.2.0" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" fresh "0.5.2" - http-errors "1.8.1" + http-errors "2.0.0" mime "1.6.0" ms "2.1.3" - on-finished "~2.3.0" + on-finished "2.4.1" range-parser "~1.2.1" - statuses "~1.5.0" + statuses "2.0.1" serialize-javascript@^2.1.2: version "2.1.2" @@ -9722,15 +9788,15 @@ serve-index@^1.9.1: mime-types "~2.1.17" parseurl "~1.3.2" -serve-static@1.14.2: - version "1.14.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.2.tgz#722d6294b1d62626d41b43a013ece4598d292bfa" - integrity sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ== +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" parseurl "~1.3.3" - send "0.17.2" + send "0.18.0" set-blocking@^2.0.0: version "2.0.0" @@ -9825,6 +9891,11 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== +signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + simple-swizzle@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" @@ -10093,7 +10164,12 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +"statuses@>= 1.4.0 < 2": version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= @@ -10147,7 +10223,16 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0: +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -10164,15 +10249,6 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - string.prototype.matchall@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz#5abb5dabc94c7b0ea2380f65ba610b3a544b15fa" @@ -10675,14 +10751,14 @@ ts-essentials@^2.0.3: resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-2.0.12.tgz#c9303f3d74f75fa7528c3d49b80e089ab09d8745" integrity sha512-3IVX4nI6B5cc31/GFFE+i8ey/N2eA0CZDbo6n0yrz0zDX8ZJ8djmU1p+XRz7G3is0F3bB3pu2pAroFdAWQKU3w== -tsconfig-paths@^3.12.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz#19769aca6ee8f6a1a341e38c8fa45dd9fb18899b" - integrity sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg== +tsconfig-paths@^3.14.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" + integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== dependencies: "@types/json5" "^0.0.29" json5 "^1.0.1" - minimist "^1.2.0" + minimist "^1.2.6" strip-bom "^3.0.0" tslib@^1.9.0: @@ -10877,9 +10953,9 @@ urix@^0.1.0: integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= url-parse@^1.4.3, url-parse@^1.4.7: - version "1.5.7" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.7.tgz#00780f60dbdae90181f51ed85fb24109422c932a" - integrity sha512-HxWkieX+STA38EDk7CE9MEryFeHCKzgagxlGvsdS7WBImq9Mk+PGwiT56w82WI3aicwJA8REp42Cxo98c8FZMA== + version "1.5.10" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== dependencies: querystringify "^2.1.1" requires-port "^1.0.0" @@ -10923,10 +10999,10 @@ user-home@^2.0.0: dependencies: os-homedir "^1.0.0" -utf-8-validate@^5.0.8: - version "5.0.8" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.8.tgz#4a735a61661dbb1c59a0868c397d2fe263f14e58" - integrity sha512-k4dW/Qja1BYDl2qD4tOMB9PFVha/UJtxTc1cXYOe3WwA/2m0Yn4qB7wLMpJyLJ/7DR0XnTut3HsCSzDT4ZvKgA== +utf-8-validate@^5.0.9: + version "5.0.9" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.9.tgz#ba16a822fbeedff1a58918f2a6a6b36387493ea3" + integrity sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q== dependencies: node-gyp-build "^4.3.0" @@ -11332,12 +11408,12 @@ wicg-inert@^3.1.1: resolved "https://registry.yarnpkg.com/wicg-inert/-/wicg-inert-3.1.1.tgz#b033fd4fbfb9e3fd709e5d84becbdf2e06e5c229" integrity sha512-PhBaNh8ur9Xm4Ggy4umelwNIP6pPP1bv3EaWaKqfb/QNme2rdLjm7wIInvV4WhxVHhzA4Spgw9qNSqWtB/ca2A== -wide-align@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== +wide-align@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== dependencies: - string-width "^1.0.2 || 2" + string-width "^1.0.2 || 2 || 3 || 4" wildcard@^2.0.0: version "2.0.0" @@ -11500,10 +11576,10 @@ yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^17.3.1: - version "17.3.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.3.1.tgz#da56b28f32e2fd45aefb402ed9c26f42be4c07b9" - integrity sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA== +yargs@^17.4.1: + version "17.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.4.1.tgz#ebe23284207bb75cee7c408c33e722bfb27b5284" + integrity sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g== dependencies: cliui "^7.0.2" escalade "^3.1.1"