diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 3913a6b0f8..0000000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,128 +0,0 @@ -version: 2.1 - -orbs: - ruby: circleci/ruby@2.0.0 - node: circleci/node@5.0.3 - -executors: - default: - parameters: - ruby-version: - type: string - docker: - - image: cimg/ruby:<< parameters.ruby-version >> - environment: - BUNDLE_JOBS: 3 - BUNDLE_RETRY: 3 - CONTINUOUS_INTEGRATION: true - DB_HOST: localhost - DB_USER: root - DISABLE_SIMPLECOV: true - RAILS_ENV: test - - image: cimg/postgres:14.5 - environment: - POSTGRES_USER: root - POSTGRES_HOST_AUTH_METHOD: trust - - image: cimg/redis:7.0 - -commands: - install-system-dependencies: - steps: - - run: - name: Install system dependencies - command: | - sudo apt-get update - sudo apt-get install -y libicu-dev libidn11-dev - install-ruby-dependencies: - parameters: - ruby-version: - type: string - steps: - - run: - command: | - bundle config clean 'true' - bundle config frozen 'true' - bundle config without 'development production' - name: Set bundler settings - - ruby/install-deps: - bundler-version: '2.3.26' - key: ruby<< parameters.ruby-version >>-gems-v2 - wait-db: - steps: - - run: - command: dockerize -wait tcp://localhost:5432 -wait tcp://localhost:6379 -timeout 1m - name: Wait for PostgreSQL and Redis - -jobs: - build: - docker: - - image: cimg/ruby:3.2-node - environment: - RAILS_ENV: test - steps: - - checkout - - install-system-dependencies - - install-ruby-dependencies: - ruby-version: '3.2' - - node/install-packages: - cache-version: v1 - pkg-manager: yarn - - run: - command: | - export NODE_OPTIONS=--openssl-legacy-provider - ./bin/rails assets:precompile - name: Precompile assets - - persist_to_workspace: - paths: - - public/assets - - public/packs-test - root: . - - test: - parameters: - ruby-version: - type: string - executor: - name: default - ruby-version: << parameters.ruby-version >> - environment: - ALLOW_NOPAM: true - PAM_ENABLED: true - PAM_DEFAULT_SERVICE: pam_test - PAM_CONTROLLED_SERVICE: pam_test_controlled - parallelism: 4 - steps: - - checkout - - install-system-dependencies - - run: - command: sudo apt-get install -y ffmpeg imagemagick libmagickcore-dev libmagickwand-dev libjpeg-dev libpng-dev libtiff-dev libwebp-dev libpam-dev - name: Install additional system dependencies - - run: - command: bundle config with 'pam_authentication' - name: Enable PAM authentication - - install-ruby-dependencies: - ruby-version: << parameters.ruby-version >> - - attach_workspace: - at: . - - wait-db - - run: - command: ./bin/rails db:create db:schema:load db:seed - name: Load database schema - - ruby/rspec-test - -workflows: - version: 2 - build-and-test: - jobs: - - build - - test: - matrix: - parameters: - ruby-version: - - '2.7' - - '3.0' - - '3.1' - - '3.2' - name: test-ruby<< matrix.ruby-version >> - requires: - - build diff --git a/.codeclimate.yml b/.codeclimate.yml deleted file mode 100644 index 00469df005..0000000000 --- a/.codeclimate.yml +++ /dev/null @@ -1,39 +0,0 @@ -version: '2' -checks: - argument-count: - enabled: false - complex-logic: - enabled: false - file-lines: - enabled: false - method-complexity: - enabled: false - method-count: - enabled: false - method-lines: - enabled: false - nested-control-flow: - enabled: false - return-statements: - enabled: false - similar-code: - enabled: false - identical-code: - enabled: false -plugins: - brakeman: - enabled: true - bundler-audit: - enabled: false - eslint: - enabled: false - rubocop: - enabled: false - sass-lint: - enabled: false -exclude_patterns: - - spec/ - - vendor/asset/ - - - app/javascript/mastodon/locales/**/*.json - - config/locales/**/*.yml diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 425b86a6bb..04ac9560ca 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,16 +1,14 @@ -# [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} +# For details, see https://github.com/devcontainers/images/tree/main/src/ruby +FROM mcr.microsoft.com/devcontainers/ruby:0-3.2-bullseye # 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" +ENV RAILS_DEVELOPMENT_HOSTS=".githubpreview.dev,.preview.app.github.dev,.app.github.dev" -# [Choice] Node.js version: lts/*, 18, 16, 14 -ARG NODE_VERSION="lts/*" +ARG NODE_VERSION="16" 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. @@ -22,3 +20,5 @@ 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 + +COPY welcome-message.txt /usr/local/etc/vscode-dev-containers/first-run-notice.txt diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 6ac6993ee9..17208a84e9 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,30 +1,13 @@ +// For more details, see https://aka.ms/devcontainer.json. { "name": "Mastodon", "dockerComposeFile": "docker-compose.yml", "service": "app", - "workspaceFolder": "/mastodon", - - // Configure tool-specific properties. - "customizations": { - // Configure properties specific to VS Code. - "vscode": { - // 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", - "webben.browserslist" - ] - } - }, + "workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}", + // Features to add to the dev container. More info: https://containers.dev/features. "features": { - "ghcr.io/devcontainers/features/sshd:1": { - "version": "latest" - } + "ghcr.io/devcontainers/features/sshd:1": {} }, // Use 'forwardPorts' to make a list of ports inside the container available locally. @@ -32,8 +15,18 @@ "forwardPorts": [3000, 4000], // Use 'postCreateCommand' to run commands after the container is created. + "onCreateCommand": "git config --global --add safe.directory ${containerWorkspaceFolder}", "postCreateCommand": ".devcontainer/post-create.sh", + "waitFor": "postCreateCommand", - // Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. - "remoteUser": "vscode" + // Configure tool-specific properties. + "customizations": { + // Configure properties specific to VS Code. + "vscode": { + // 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", "webben.browserslist"] + } + } } diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml index 95f401379c..73fe22f3aa 100644 --- a/.devcontainer/docker-compose.yml +++ b/.devcontainer/docker-compose.yml @@ -5,19 +5,12 @@ services: 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: '16' volumes: - - ..:/mastodon:cached + - ../..:/workspaces:cached environment: RAILS_ENV: development NODE_ENV: development - + BIND: 0.0.0.0 REDIS_HOST: redis REDIS_PORT: '6379' DB_HOST: db @@ -30,10 +23,13 @@ services: LIBRE_TRANSLATE_ENDPOINT: http://libretranslate:5000 # Overrides default command so things don't shut down after the process ends. command: sleep infinity + ports: + - '127.0.0.1:3000:3000' + - '127.0.0.1:4000:4000' + - '127.0.0.1:80:3000' networks: - external_network - internal_network - user: vscode db: image: postgres:14-alpine @@ -49,7 +45,7 @@ services: - internal_network redis: - image: redis:6-alpine + image: redis:7-alpine restart: unless-stopped volumes: - redis-data:/data @@ -74,15 +70,19 @@ services: hard: -1 libretranslate: - image: libretranslate/libretranslate:v1.2.9 + image: libretranslate/libretranslate:v1.3.10 restart: unless-stopped + volumes: + - lt-data:/home/libretranslate/.local networks: + - external_network - internal_network volumes: postgres-data: redis-data: es-data: + lt-data: networks: external_network: diff --git a/.devcontainer/post-create.sh b/.devcontainer/post-create.sh index 02f488f120..a075cc7b3b 100755 --- a/.devcontainer/post-create.sh +++ b/.devcontainer/post-create.sh @@ -3,17 +3,22 @@ set -e # Fail the whole script on first error # Fetch Ruby gem dependencies -bundle install --path vendor/bundle --with='development test' - -# Fetch Javascript dependencies -yarn install +bundle config path 'vendor/bundle' +bundle config with 'development test' +bundle install # Make Gemfile.lock pristine again git checkout -- Gemfile.lock +# Fetch Javascript dependencies +yarn --frozen-lockfile + # [re]create, migrate, and seed the test database RAILS_ENV=test ./bin/rails db:setup +# [re]create, migrate, and seed the development database +RAILS_ENV=development ./bin/rails db:setup + # Precompile assets for development RAILS_ENV=development ./bin/rails assets:precompile diff --git a/.devcontainer/welcome-message.txt b/.devcontainer/welcome-message.txt new file mode 100644 index 0000000000..488cf92857 --- /dev/null +++ b/.devcontainer/welcome-message.txt @@ -0,0 +1,8 @@ +👋 Welcome to "Mastodon" in GitHub Codespaces! + +🛠️ Your environment is fully setup with all the required software. + +🔍 To explore VS Code to its fullest, search using the Command Palette (Cmd/Ctrl + Shift + P or F1). + +📝 Edit away, run your app as usual, and we'll automatically make it available for you to access. + diff --git a/.eslintrc.js b/.eslintrc.js index 606a87e415..bbdfa7de27 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -13,38 +13,39 @@ module.exports = { browser: true, node: true, es6: true, - jest: true, }, globals: { ATTACHMENT_HOST: false, }, - parser: '@babel/eslint-parser', + parser: '@typescript-eslint/parser', plugins: [ 'react', 'jsx-a11y', 'import', 'promise', + '@typescript-eslint', ], parserOptions: { sourceType: 'module', ecmaFeatures: { - experimentalObjectRestSpread: true, jsx: true, }, ecmaVersion: 2021, + requireConfigFile: false, + babelOptions: { + configFile: false, + presets: ['@babel/react', '@babel/env'], + }, }, settings: { react: { version: 'detect', }, - 'import/extensions': [ - '.js', '.jsx', - ], 'import/ignore': [ 'node_modules', '\\.(css|scss|json)$', @@ -52,7 +53,7 @@ module.exports = { 'import/resolver': { node: { paths: ['app/javascript'], - extensions: ['.js', '.jsx'], + extensions: ['.js', '.jsx', '.ts', '.tsx'], }, }, }, @@ -93,7 +94,8 @@ module.exports = { 'no-self-assign': 'off', 'no-trailing-spaces': 'warn', 'no-unused-expressions': 'error', - 'no-unused-vars': [ + 'no-unused-vars': 'off', + '@typescript-eslint/no-unused-vars': [ 'error', { vars: 'all', @@ -112,7 +114,7 @@ module.exports = { semi: 'error', 'valid-typeof': 'error', - 'react/jsx-filename-extension': ['error', { 'allow': 'as-needed' }], + 'react/jsx-filename-extension': ['error', { extensions: ['.jsx', 'tsx'] }], 'react/jsx-boolean-value': 'error', 'react/jsx-closing-bracket-location': ['error', 'line-aligned'], 'react/jsx-curly-spacing': 'error', @@ -188,6 +190,8 @@ module.exports = { { js: 'never', jsx: 'never', + ts: 'never', + tsx: 'never', }, ], 'import/newline-after-import': 'error', @@ -196,6 +200,7 @@ module.exports = { { devDependencies: [ 'config/webpack/**', + 'app/javascript/mastodon/performance.js', 'app/javascript/mastodon/test_setup.js', 'app/javascript/**/__tests__/**', ], @@ -214,4 +219,52 @@ module.exports = { 'promise/no-nesting': 'off', 'promise/no-promise-in-callback': 'off', }, + + overrides: [ + { + files: [ + '*.config.js', + '.*rc.js', + 'ide-helper.js', + ], + + env: { + commonjs: true, + }, + + parserOptions: { + sourceType: 'script', + }, + }, + { + files: [ + '**/*.ts', + '**/*.tsx', + ], + + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:react/recommended', + 'plugin:jsx-a11y/recommended', + 'plugin:import/recommended', + 'plugin:import/typescript', + 'plugin:promise/recommended', + ], + + rules: { + '@typescript-eslint/no-explicit-any': 'off', + }, + }, + { + files: [ + '**/__tests__/*.js', + '**/__tests__/*.jsx', + ], + + env: { + jest: true, + }, + }, + ], }; diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index c254418ea7..97a363d1e6 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -25,12 +25,15 @@ jobs: - uses: hadolint/hadolint-action@v3.1.0 - uses: docker/setup-qemu-action@v2 - uses: docker/setup-buildx-action@v2 - - uses: docker/login-action@v2 + + - name: Log in to the Github Container registry + uses: docker/login-action@v2 with: registry: ghcr.io - username: ${{ github.repository_owner }} + username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} if: github.event_name != 'pull_request' + - uses: docker/metadata-action@v4 id: meta with: @@ -39,6 +42,7 @@ jobs: type=raw,value=latest,enable={{is_default_branch}} type=edge,branch=main type=sha,prefix=,format=long + - uses: docker/build-push-action@v4 with: context: . @@ -47,5 +51,6 @@ jobs: builder: ${{ steps.buildx.outputs.name }} push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} cache-from: type=gha cache-to: type=gha,mode=max diff --git a/.github/workflows/check-i18n.yml b/.github/workflows/check-i18n.yml index aa8f1f5844..df0d75c9f6 100644 --- a/.github/workflows/check-i18n.yml +++ b/.github/workflows/check-i18n.yml @@ -30,13 +30,28 @@ jobs: ruby-version: .ruby-version bundler-cache: true + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + cache: yarn + node-version-file: '.nvmrc' + + - name: Install all yarn packages + run: yarn --frozen-lockfile + + - name: Check for missing strings in English JSON + run: | + yarn build:development + yarn manage:translations + git diff --exit-code + - name: Check locale file normalization run: bundle exec i18n-tasks check-normalized - name: Check for unused strings run: bundle exec i18n-tasks unused - - name: Check for missing strings in English + - name: Check for missing strings in English YML run: | bundle exec i18n-tasks add-missing -l en git diff --exit-code diff --git a/.github/workflows/haml-lint-problem-matcher.json b/.github/workflows/haml-lint-problem-matcher.json new file mode 100644 index 0000000000..3523ea2951 --- /dev/null +++ b/.github/workflows/haml-lint-problem-matcher.json @@ -0,0 +1,17 @@ +{ + "problemMatcher": [ + { + "owner": "haml-lint", + "severity": "warning", + "pattern": [ + { + "regexp": "^(.*):(\\d+)\\s\\[W]\\s(.*):\\s(.*)$", + "file": 1, + "line": 2, + "code": 3, + "message": 4 + } + ] + } + ] +} diff --git a/.github/workflows/lint-haml.yml b/.github/workflows/lint-haml.yml new file mode 100644 index 0000000000..2ddbca7818 --- /dev/null +++ b/.github/workflows/lint-haml.yml @@ -0,0 +1,46 @@ +name: Haml Linting +on: + push: + branches-ignore: + - 'dependabot/**' + paths: + - '.github/workflows/haml-lint-problem-matcher.json' + - '.github/workflows/lint-haml.yml' + - '.haml-lint*.yml' + - '.rubocop*.yml' + - '.ruby-version' + - '**/*.haml' + - 'Gemfile*' + + pull_request: + paths: + - '.github/workflows/haml-lint-problem-matcher.json' + - '.github/workflows/lint-haml.yml' + - '.haml-lint*.yml' + - '.rubocop*.yml' + - '.ruby-version' + - '**/*.haml' + - 'Gemfile*' + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - name: Clone repository + uses: actions/checkout@v3 + + - name: Install native Ruby 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: .ruby-version + bundler-cache: true + + - name: Run haml-lint + run: | + echo "::add-matcher::.github/workflows/haml-lint-problem-matcher.json" + bundle exec haml-lint diff --git a/.github/workflows/lint-js.yml b/.github/workflows/lint-js.yml index 44929f63db..e0c309c736 100644 --- a/.github/workflows/lint-js.yml +++ b/.github/workflows/lint-js.yml @@ -6,22 +6,28 @@ on: paths: - 'package.json' - 'yarn.lock' + - 'tsconfig.json' - '.nvmrc' - '.prettier*' - '.eslint*' - '**/*.js' - '**/*.jsx' + - '**/*.ts' + - '**/*.tsx' - '.github/workflows/lint-js.yml' pull_request: paths: - 'package.json' - 'yarn.lock' + - 'tsconfig.json' - '.nvmrc' - '.prettier*' - '.eslint*' - '**/*.js' - '**/*.jsx' + - '**/*.ts' + - '**/*.tsx' - '.github/workflows/lint-js.yml' jobs: @@ -43,3 +49,6 @@ jobs: - name: ESLint run: yarn test:lint:js + + - name: Typecheck + run: yarn test:typecheck diff --git a/.github/workflows/rebase-needed.yml b/.github/workflows/rebase-needed.yml index 99b224ec60..6a8035210c 100644 --- a/.github/workflows/rebase-needed.yml +++ b/.github/workflows/rebase-needed.yml @@ -2,7 +2,13 @@ name: PR Needs Rebase on: push: + branches-ignore: + - 'dependabot/**' + - 'l10n_main' pull_request_target: + branches-ignore: + - 'dependabot/**' + - 'l10n_main' types: [synchronize] permissions: diff --git a/.github/workflows/test-migrations-one-step.yml b/.github/workflows/test-migrations-one-step.yml index 8f070697ca..d7e424a8c4 100644 --- a/.github/workflows/test-migrations-one-step.yml +++ b/.github/workflows/test-migrations-one-step.yml @@ -16,7 +16,7 @@ jobs: - id: skip_check uses: fkirc/skip-duplicate-actions@v5 with: - paths: '["Gemfile*", ".ruby-version", "**/*.rb", ".github/workflows/test-migrations-one-step.yml"]' + paths: '["Gemfile*", ".ruby-version", "**/*.rb", ".github/workflows/test-migrations-one-step.yml", "lib/tasks/tests.rake"]' test: runs-on: ubuntu-latest @@ -25,7 +25,7 @@ jobs: services: postgres: - image: postgres:14.5 + image: postgres:14-alpine env: POSTGRES_PASSWORD: postgres POSTGRES_USER: postgres @@ -38,7 +38,7 @@ jobs: - 5432:5432 redis: - image: redis:7.0 + image: redis:7-alpine options: >- --health-cmd "redis-cli ping" --health-interval 10s @@ -64,7 +64,9 @@ jobs: - uses: actions/checkout@v3 - name: Install native Ruby dependencies - run: sudo apt-get install -y libicu-dev libidn11-dev + run: | + sudo apt-get update + sudo apt-get install -y libicu-dev libidn11-dev - name: Set up bundler cache uses: ruby/setup-ruby@v1 diff --git a/.github/workflows/test-migrations-two-step.yml b/.github/workflows/test-migrations-two-step.yml index 2fdce80254..25bf5ba87f 100644 --- a/.github/workflows/test-migrations-two-step.yml +++ b/.github/workflows/test-migrations-two-step.yml @@ -16,7 +16,7 @@ jobs: - id: skip_check uses: fkirc/skip-duplicate-actions@v5 with: - paths: '["Gemfile*", ".ruby-version", "**/*.rb", ".github/workflows/test-migrations-two-step.yml"]' + paths: '["Gemfile*", ".ruby-version", "**/*.rb", ".github/workflows/test-migrations-two-step.yml", "lib/tasks/tests.rake"]' test: runs-on: ubuntu-latest @@ -25,7 +25,7 @@ jobs: services: postgres: - image: postgres:14.5 + image: postgres:14-alpine env: POSTGRES_PASSWORD: postgres POSTGRES_USER: postgres @@ -37,7 +37,7 @@ jobs: ports: - 5432:5432 redis: - image: redis:7.0 + image: redis:7-alpine options: >- --health-cmd "redis-cli ping" --health-interval 10s @@ -63,7 +63,9 @@ jobs: - uses: actions/checkout@v3 - name: Install native Ruby dependencies - run: sudo apt-get install -y libicu-dev libidn11-dev + run: | + sudo apt-get update + sudo apt-get install -y libicu-dev libidn11-dev - name: Set up bundler cache uses: ruby/setup-ruby@v1 diff --git a/.github/workflows/test-ruby.yml b/.github/workflows/test-ruby.yml new file mode 100644 index 0000000000..d1aa8468ae --- /dev/null +++ b/.github/workflows/test-ruby.yml @@ -0,0 +1,146 @@ +name: Ruby Testing + +on: + push: + branches-ignore: + - 'dependabot/**' + pull_request: + +env: + BUNDLE_CLEAN: true + BUNDLE_FROZEN: true + BUNDLE_WITHOUT: 'development production' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + + env: + RAILS_ENV: test + + steps: + - uses: actions/checkout@v3 + + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + cache: yarn + node-version-file: '.nvmrc' + + - name: Install native Ruby dependencies + run: | + sudo apt-get update + sudo apt-get install -y libicu-dev libidn11-dev + + - name: Set up bundler cache + uses: ruby/setup-ruby@v1 + with: + ruby-version: .ruby-version + bundler-cache: true + + - run: yarn --frozen-lockfile --production + - name: Precompile assets + # Previously had set this, but it's not supported + # export NODE_OPTIONS=--openssl-legacy-provider + run: |- + ./bin/rails assets:precompile + + - uses: actions/upload-artifact@v3 + with: + path: |- + ./public/assets + ./public/packs-test + name: ${{ github.sha }} + retention-days: 0 + + test: + runs-on: ubuntu-latest + + needs: + - build + + services: + postgres: + image: postgres:14-alpine + env: + POSTGRES_PASSWORD: postgres + POSTGRES_USER: postgres + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + ports: + - 5432:5432 + + redis: + image: redis:7-alpine + options: >- + --health-cmd "redis-cli ping" + --health-interval 10s + --health-timeout 5s + --health-retries 5 + ports: + - 6379:6379 + + env: + DB_HOST: localhost + DB_USER: postgres + DB_PASS: postgres + DISABLE_SIMPLECOV: true + RAILS_ENV: test + ALLOW_NOPAM: true + PAM_ENABLED: true + PAM_DEFAULT_SERVICE: pam_test + PAM_CONTROLLED_SERVICE: pam_test_controlled + BUNDLE_WITH: 'pam_authentication' + CI_JOBS: ${{ matrix.ci_job }}/4 + + strategy: + fail-fast: false + matrix: + ruby-version: + - '2.7' + - '3.0' + - '3.1' + - '.ruby-version' + ci_job: + - 1 + - 2 + - 3 + - 4 + steps: + - uses: actions/checkout@v3 + + - uses: actions/download-artifact@v3 + with: + path: './public' + name: ${{ github.sha }} + + - name: Update package index + run: sudo apt-get update + + - name: Install native Ruby dependencies + run: sudo apt-get install -y libicu-dev libidn11-dev + + - name: Install additional system dependencies + run: sudo apt-get install -y ffmpeg imagemagick libpam-dev + + - name: Set up bundler cache + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby-version}} + bundler-cache: true + + - name: Update system gems + if: matrix.ruby-version == '2.7' + run: gem update --system + + - name: Load database schema + run: './bin/rails db:create db:schema:load db:seed' + + - run: bundle exec rake rspec_chunked diff --git a/.haml-lint.yml b/.haml-lint.yml index 7853d81d7c..12ca463422 100644 --- a/.haml-lint.yml +++ b/.haml-lint.yml @@ -1,108 +1,9 @@ -# Whether to ignore frontmatter at the beginning of HAML documents for -# frameworks such as Jekyll/Middleman -skip_frontmatter: false +inherits_from: .haml-lint_todo.yml exclude: - 'vendor/**/*' - - 'spec/**/*' - - 'lib/templates/**/*' - - 'app/views/kaminari/**/*' + - lib/templates/haml/scaffold/_form.html.haml linters: AltText: - enabled: false - - ClassAttributeWithStaticValue: - enabled: true - - ClassesBeforeIds: - enabled: true - - ConsecutiveComments: - enabled: true - - ConsecutiveSilentScripts: - enabled: true - max_consecutive: 2 - - EmptyObjectReference: - enabled: true - - EmptyScript: - enabled: true - - FinalNewline: - enabled: true - present: true - - HtmlAttributes: - enabled: true - - ImplicitDiv: - enabled: true - - LeadingCommentSpace: - enabled: true - - LineLength: - enabled: false - max: 80 - - MultilinePipe: - enabled: true - - MultilineScript: - enabled: true - - ObjectReferenceAttributes: - enabled: true - - RuboCop: - enabled: true - # These cops are incredibly noisy when it comes to HAML templates, so we - # ignore them. - ignored_cops: - - Lint/BlockAlignment - - Lint/EndAlignment - - Lint/Void - - Metrics/BlockLength - - Metrics/LineLength - - Style/AlignParameters - - Style/BlockNesting - - Style/ElseAlignment - - Style/EndOfLine - - Style/FileName - - Style/FinalNewline - - Style/FrozenStringLiteralComment - - Style/IfUnlessModifier - - Style/IndentationWidth - - Style/Next - - Style/TrailingBlankLines - - Style/TrailingWhitespace - - Style/WhileUntilModifier - - RubyComments: - enabled: true - - SpaceBeforeScript: - enabled: true - - SpaceInsideHashAttributes: - enabled: true - style: space - - Indentation: - enabled: true - character: space # or tab - - TagName: - enabled: true - - TrailingWhitespace: - enabled: true - - UnnecessaryInterpolation: - enabled: true - - UnnecessaryStringOutput: enabled: true diff --git a/.haml-lint_todo.yml b/.haml-lint_todo.yml new file mode 100644 index 0000000000..c601683907 --- /dev/null +++ b/.haml-lint_todo.yml @@ -0,0 +1,106 @@ +# This configuration was generated by +# `haml-lint --auto-gen-config` +# on 2023-03-15 00:55:01 -0400 using Haml-Lint version 0.45.0. +# The point is for the user to remove these configuration records +# one by one as the lints are removed from the code base. +# Note that changes in the inspected code, or installation of new +# versions of Haml-Lint, may require this file to be generated again. + +linters: + # Offense count: 63 + RuboCop: + exclude: + - 'app/views/accounts/_og.html.haml' + - 'app/views/admin/account_warnings/_account_warning.html.haml' + - 'app/views/admin/accounts/index.html.haml' + - 'app/views/admin/accounts/show.html.haml' + - 'app/views/admin/announcements/edit.html.haml' + - 'app/views/admin/announcements/new.html.haml' + - 'app/views/admin/disputes/appeals/_appeal.html.haml' + - 'app/views/admin/domain_blocks/edit.html.haml' + - 'app/views/admin/domain_blocks/new.html.haml' + - 'app/views/admin/ip_blocks/new.html.haml' + - 'app/views/admin/reports/actions/preview.html.haml' + - 'app/views/admin/reports/index.html.haml' + - 'app/views/admin/reports/show.html.haml' + - 'app/views/admin/roles/_form.html.haml' + - 'app/views/admin/settings/about/show.html.haml' + - 'app/views/admin/settings/appearance/show.html.haml' + - 'app/views/admin/settings/registrations/show.html.haml' + - 'app/views/admin/statuses/show.html.haml' + - 'app/views/auth/registrations/new.html.haml' + - 'app/views/disputes/strikes/show.html.haml' + - 'app/views/filters/_filter_fields.html.haml' + - 'app/views/invites/_form.html.haml' + - 'app/views/layouts/application.html.haml' + - 'app/views/layouts/error.html.haml' + - 'app/views/notification_mailer/_status.html.haml' + - 'app/views/settings/applications/_fields.html.haml' + - 'app/views/settings/imports/show.html.haml' + - 'app/views/settings/preferences/appearance/show.html.haml' + - 'app/views/settings/preferences/other/show.html.haml' + - 'app/views/statuses/_detailed_status.html.haml' + - 'app/views/statuses/_poll.html.haml' + - 'app/views/statuses/show.html.haml' + - 'app/views/statuses_cleanup/show.html.haml' + - 'app/views/user_mailer/warning.html.haml' + + # Offense count: 913 + LineLength: + enabled: false + + # Offense count: 22 + UnnecessaryStringOutput: + exclude: + - 'app/views/accounts/show.html.haml' + - 'app/views/admin/custom_emojis/_custom_emoji.html.haml' + - 'app/views/admin/relays/_relay.html.haml' + - 'app/views/admin/rules/_rule.html.haml' + - 'app/views/admin/statuses/index.html.haml' + - 'app/views/auth/registrations/_sessions.html.haml' + - 'app/views/disputes/strikes/show.html.haml' + - 'app/views/notification_mailer/_status.html.haml' + - 'app/views/settings/two_factor_authentication_methods/index.html.haml' + - 'app/views/statuses/_detailed_status.html.haml' + - 'app/views/statuses/_poll.html.haml' + - 'app/views/statuses/_simple_status.html.haml' + - 'app/views/user_mailer/suspicious_sign_in.html.haml' + - 'app/views/user_mailer/webauthn_credential_added.html.haml' + - 'app/views/user_mailer/webauthn_credential_deleted.html.haml' + - 'app/views/user_mailer/welcome.html.haml' + + # Offense count: 3 + ViewLength: + exclude: + - 'app/views/admin/accounts/show.html.haml' + - 'app/views/admin/reports/show.html.haml' + - 'app/views/disputes/strikes/show.html.haml' + + # Offense count: 41 + InstanceVariables: + exclude: + - 'app/views/admin/reports/_actions.html.haml' + - 'app/views/admin/roles/_form.html.haml' + - 'app/views/admin/webhooks/_form.html.haml' + - 'app/views/auth/registrations/_sessions.html.haml' + - 'app/views/auth/registrations/_status.html.haml' + - 'app/views/auth/sessions/two_factor/_otp_authentication_form.html.haml' + - 'app/views/authorize_interactions/_post_follow_actions.html.haml' + - 'app/views/invites/_form.html.haml' + - 'app/views/relationships/_account.html.haml' + - 'app/views/shared/_og.html.haml' + - 'app/views/statuses/_status.html.haml' + + # Offense count: 6 + ConsecutiveSilentScripts: + exclude: + - 'app/views/admin/settings/shared/_links.html.haml' + - 'app/views/settings/login_activities/_login_activity.html.haml' + - 'app/views/statuses/_poll.html.haml' + + # Offense count: 3 + IdNames: + exclude: + - 'app/views/authorize_interactions/error.html.haml' + - 'app/views/oauth/authorizations/error.html.haml' + - 'app/views/shared/_error_messages.html.haml' diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 0000000000..d2ae35e84b --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +yarn lint-staged diff --git a/.nvmrc b/.nvmrc index 030fcd56bf..59ea99ee63 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -16.19 +16.20 diff --git a/.prettierignore b/.prettierignore index af0411e9cc..36ba57bfb5 100644 --- a/.prettierignore +++ b/.prettierignore @@ -70,6 +70,8 @@ app/javascript/styles/mastodon/reset.scss # Ignore Javascript pending https://github.com/mastodon/mastodon/pull/23631 *.js *.jsx +*.ts +*.tsx # Ignore HTML till cleaned and included in CI *.html diff --git a/.rubocop.yml b/.rubocop.yml index 27d778edfb..e6a0c2d14e 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,5 +1,7 @@ +# Can be removed once all rules are addressed or moved to this file as documented overrides inherit_from: .rubocop_todo.yml +# Used for merging with exclude lists with .rubocop_todo.yml inherit_mode: merge: - Exclude @@ -8,32 +10,34 @@ require: - rubocop-rails - rubocop-rspec - rubocop-performance + - rubocop-capybara AllCops: - TargetRubyVersion: 2.7 + TargetRubyVersion: 2.7 # Set to minimum supported version of CI DisplayCopNames: true DisplayStyleGuide: true ExtraDetails: true UseCache: true CacheRootDirectory: tmp - NewCops: enable + NewCops: enable # Opt-in to newly added rules Exclude: - db/schema.rb - - 'app/views/**/*' - - 'config/**/*' - 'bin/*' - 'Rakefile' - 'node_modules/**/*' - 'Vagrantfile' - 'vendor/**/*' - - 'lib/json_ld/*' + - 'lib/json_ld/*' # Generated files - 'lib/templates/**/*' +# Reason: Prefer Hashes without extreme indentation +# https://docs.rubocop.org/rubocop/cops_layout.html#layoutfirsthashelementindentation Layout/FirstHashElementIndentation: EnforcedStyle: consistent +# Reason: Currently disabled in .rubocop_todo.yml +# https://docs.rubocop.org/rubocop/cops_layout.html#layoutlinelength Layout/LineLength: - Max: 140 # RuboCop default 120 AllowedPatterns: # Allow comments to be long lines - !ruby/regexp / \# .*$/ @@ -43,83 +47,215 @@ Layout/LineLength: - db/*migrate/**/* - db/seeds/**/* +# Reason: +# https://docs.rubocop.org/rubocop/cops_lint.html#lintuselessaccessmodifier Lint/UselessAccessModifier: ContextCreatingMethods: - class_methods +# Reason: Currently disabled in .rubocop_todo.yml +# https://docs.rubocop.org/rubocop/cops_metrics.html#metricsabcsize Metrics/AbcSize: - Max: 34 # RuboCop default 17 Exclude: - 'lib/**/*cli*.rb' - db/*migrate/**/* +# Reason: Some functions cannot be broken up, but others may be refactor candidates +# https://docs.rubocop.org/rubocop/cops_metrics.html#metricsblocklength Metrics/BlockLength: - Max: 55 # Default 25 - CountAsOne: [array, heredoc] + CountAsOne: ['array', 'hash', 'heredoc', 'method_call'] Exclude: - 'lib/mastodon/*_cli.rb' + - 'lib/tasks/*.rake' + - 'app/models/concerns/account_associations.rb' + - 'app/models/concerns/account_interactions.rb' + - 'app/models/concerns/ldap_authenticable.rb' + - 'app/models/concerns/omniauthable.rb' + - 'app/models/concerns/pam_authenticable.rb' + - 'app/models/concerns/remotable.rb' + - 'app/services/suspend_account_service.rb' + - 'app/services/unsuspend_account_service.rb' + - 'app/views/accounts/show.rss.ruby' + - 'app/views/tags/show.rss.ruby' + - 'config/environments/development.rb' + - 'config/environments/production.rb' + - 'config/initializers/devise.rb' + - 'config/initializers/doorkeeper.rb' + - 'config/initializers/omniauth.rb' + - 'config/initializers/simple_form.rb' + - 'config/navigation.rb' + - 'config/routes.rb' + - 'db/post_migrate/20221101190723_backfill_admin_action_logs.rb' + - 'db/post_migrate/20221206114142_backfill_admin_action_logs_again.rb' + - 'lib/paperclip/gif_transcoder.rb' +# Reason: +# https://docs.rubocop.org/rubocop/cops_metrics.html#metricsblocknesting Metrics/BlockNesting: Exclude: - 'lib/mastodon/*_cli.rb' +# Reason: Some Excluded files would be candidates for refactoring but not currently addressed +# https://docs.rubocop.org/rubocop/cops_metrics.html#metricsclasslength Metrics/ClassLength: - Max: 500 # Default 100 - CountAsOne: [array, heredoc] + CountAsOne: ['array', 'hash', 'heredoc', 'method_call'] Exclude: - 'lib/mastodon/*_cli.rb' + - 'app/controllers/admin/accounts_controller.rb' + - 'app/controllers/api/base_controller.rb' + - 'app/controllers/api/v1/admin/accounts_controller.rb' + - 'app/controllers/application_controller.rb' + - 'app/controllers/auth/registrations_controller.rb' + - 'app/controllers/auth/sessions_controller.rb' + - 'app/lib/activitypub/activity.rb' + - 'app/lib/activitypub/activity/create.rb' + - 'app/lib/activitypub/tag_manager.rb' + - 'app/lib/feed_manager.rb' + - 'app/lib/link_details_extractor.rb' + - 'app/lib/request.rb' + - 'app/lib/text_formatter.rb' + - 'app/lib/user_settings_decorator.rb' + - 'app/mailers/user_mailer.rb' + - 'app/models/account.rb' + - 'app/models/admin/account_action.rb' + - 'app/models/form/account_batch.rb' + - 'app/models/media_attachment.rb' + - 'app/models/status.rb' + - 'app/models/tag.rb' + - 'app/models/user.rb' + - 'app/serializers/activitypub/actor_serializer.rb' + - 'app/serializers/activitypub/note_serializer.rb' + - 'app/serializers/rest/status_serializer.rb' + - 'app/services/account_search_service.rb' + - 'app/services/activitypub/process_account_service.rb' + - 'app/services/activitypub/process_status_update_service.rb' + - 'app/services/backup_service.rb' + - 'app/services/delete_account_service.rb' + - 'app/services/fan_out_on_write_service.rb' + - 'app/services/fetch_link_card_service.rb' + - 'app/services/import_service.rb' + - 'app/services/notify_service.rb' + - 'app/services/post_status_service.rb' + - 'app/services/update_status_service.rb' + - 'lib/paperclip/color_extractor.rb' +# Reason: Currently disabled in .rubocop_todo.yml +# https://docs.rubocop.org/rubocop/cops_metrics.html#metricscyclomaticcomplexity Metrics/CyclomaticComplexity: - Max: 12 # Default 7 Exclude: - lib/mastodon/*cli*.rb - db/*migrate/**/* +# Reason: Currently disabled in .rubocop_todo.yml +# https://docs.rubocop.org/rubocop/cops_metrics.html#metricsmethodlength Metrics/MethodLength: - Max: 25 # RuboCop default 10 CountAsOne: [array, heredoc] Exclude: - 'lib/mastodon/*_cli.rb' +# Reason: +# https://docs.rubocop.org/rubocop/cops_style.html#stylerescuestandarderror Metrics/ModuleLength: - Max: 200 # Default 100 CountAsOne: [array, heredoc] -Metrics/PerceivedComplexity: - Max: 16 # RuboCop default 8 - +# Reason: Prevailing style uses numeric status codes, matches RSpec/Rails/HttpStatus +# https://docs.rubocop.org/rubocop-rails/cops_rails.html#railshttpstatus Rails/HttpStatus: EnforcedStyle: numeric +# Reason: Allowed only in the `tootctl` CLI application code +# https://docs.rubocop.org/rubocop-rails/cops_rails.html#railsexit Rails/Exit: Exclude: - 'lib/mastodon/*_cli.rb' - 'lib/mastodon/cli_helper.rb' - 'lib/cli.rb' +# Reason: Some single letter camel case files shouldn't be split +# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecfilepath +RSpec/FilePath: + CustomTransform: + ActivityPub: activitypub # Ignore the snake_case due to the amount of files to rename + DeepL: deepl + FetchOEmbedService: fetch_oembed_service + JsonLdHelper: jsonld_helper + OEmbedController: oembed_controller + OStatus: ostatus + NodeInfoController: nodeinfo_controller # NodeInfo isn't snake_cased for any of the instances + Exclude: + - 'spec/config/initializers/rack_attack_spec.rb' # namespaces usually have separate folder + - 'spec/lib/sanitize_config_spec.rb' # namespaces usually have separate folder + - 'spec/controllers/concerns/account_controller_concern_spec.rb' # Concerns describe ApplicationController and don't fit naming + - 'spec/controllers/concerns/export_controller_concern_spec.rb' + - 'spec/controllers/concerns/localized_spec.rb' + - 'spec/controllers/concerns/rate_limit_headers_spec.rb' + - 'spec/controllers/concerns/signature_verification_spec.rb' + - 'spec/controllers/concerns/user_tracking_concern_spec.rb' + +# Reason: +# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecnamedsubject +RSpec/NamedSubject: + EnforcedStyle: named_only + +# Reason: Prevailing style choice +# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecnottonot RSpec/NotToNot: EnforcedStyle: to_not +# Reason: Prevailing style uses numeric status codes, matches Rails/HttpStatus +# https://docs.rubocop.org/rubocop-rspec/cops_rspec_rails.html#rspecrailshttpstatus RSpec/Rails/HttpStatus: EnforcedStyle: numeric +# Reason: +# https://docs.rubocop.org/rubocop/cops_style.html#styleclassandmodulechildren +Style/ClassAndModuleChildren: + Enabled: false + +# Reason: Classes mostly self-document with their names +# https://docs.rubocop.org/rubocop/cops_style.html#styledocumentation +Style/Documentation: + Enabled: false + +# Reason: Enforce modern Ruby style +# https://docs.rubocop.org/rubocop/cops_style.html#stylehashsyntax Style/HashSyntax: EnforcedStyle: ruby19_no_mixed_keys +# Reason: +# https://docs.rubocop.org/rubocop/cops_style.html#stylenumericliterals Style/NumericLiterals: AllowedPatterns: - \d{4}_\d{2}_\d{2}_\d{6} # For DB migration date version number readability +# Reason: +# https://docs.rubocop.org/rubocop/cops_style.html#stylepercentliteraldelimiters Style/PercentLiteralDelimiters: PreferredDelimiters: '%i': '()' '%w': '()' +# Reason: Prefer less indentation in conditional assignments +# https://docs.rubocop.org/rubocop/cops_style.html#styleredundantbegin +Style/RedundantBegin: + Enabled: false + +# Reason: Overridden to reduce implicit StandardError rescues +# https://docs.rubocop.org/rubocop/cops_style.html#stylerescuestandarderror Style/RescueStandardError: EnforcedStyle: implicit +# Reason: Originally disabled for CodeClimate, and no config consensus has been found +# https://docs.rubocop.org/rubocop/cops_style.html#stylesymbolarray +Style/SymbolArray: + Enabled: false + +# Reason: +# https://docs.rubocop.org/rubocop/cops_style.html#styletrailingcommainarrayliteral Style/TrailingCommaInArrayLiteral: EnforcedStyleForMultiline: 'comma' +# Reason: +# https://docs.rubocop.org/rubocop/cops_style.html#styletrailingcommainhashliteral Style/TrailingCommaInHashLiteral: EnforcedStyleForMultiline: 'comma' diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 22e1a99c12..dc7e21dc54 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -1,12 +1,11 @@ # This configuration was generated by -# `rubocop --auto-gen-config --auto-gen-only-exclude --no-exclude-limit` -# on 2023-02-19 06:22:09 UTC using RuboCop version 1.45.1. +# `rubocop --auto-gen-config --auto-gen-only-exclude --no-exclude-limit --no-offense-counts --no-auto-gen-timestamp` +# using RuboCop version 1.48.1. # The point is for the user to remove these configuration records # one by one as the offenses are removed from the code base. # Note that changes in the inspected code, or installation of new # versions of RuboCop, may require this file to be generated again. -# Offense count: 15 # This cop supports safe autocorrection (--autocorrect). # Configuration parameters: TreatCommentsAsGroupSeparators, ConsiderPunctuation, Include. # Include: **/*.gemfile, **/Gemfile, **/gems.rb @@ -14,14 +13,81 @@ Bundler/OrderedGems: Exclude: - 'Gemfile' -# Offense count: 581 # This cop supports safe autocorrection (--autocorrect). -# Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns. -# URISchemes: http, https -Layout/LineLength: - Enabled: false +# Configuration parameters: EnforcedStyle, IndentationWidth. +# SupportedStyles: with_first_argument, with_fixed_indentation +Layout/ArgumentAlignment: + Exclude: + - 'config/initializers/cors.rb' + - 'config/initializers/session_store.rb' + +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: EnforcedStyle. +# SupportedStyles: empty_lines, no_empty_lines +Layout/EmptyLinesAroundBlockBody: + Exclude: + - 'config/routes.rb' + +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: AllowForAlignment, AllowBeforeTrailingComments, ForceEqualSignAlignment. +Layout/ExtraSpacing: + Exclude: + - 'config/initializers/omniauth.rb' + +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: AllowMultipleStyles, EnforcedHashRocketStyle, EnforcedColonStyle, EnforcedLastArgumentHashStyle. +# SupportedHashRocketStyles: key, separator, table +# SupportedColonStyles: key, separator, table +# SupportedLastArgumentHashStyles: always_inspect, always_ignore, ignore_implicit, ignore_explicit +Layout/HashAlignment: + Exclude: + - 'config/boot.rb' + - 'config/environments/production.rb' + - 'config/initializers/rack_attack.rb' + - 'config/routes.rb' + +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: Width, AllowedPatterns. +Layout/IndentationWidth: + Exclude: + - 'config/initializers/ffmpeg.rb' + +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: AllowDoxygenCommentStyle, AllowGemfileRubyComment. +Layout/LeadingCommentSpace: + Exclude: + - 'config/application.rb' + - 'config/initializers/omniauth.rb' + +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces. +# SupportedStyles: space, no_space +# SupportedStylesForEmptyBraces: space, no_space +Layout/SpaceBeforeBlockBraces: + Exclude: + - 'config/initializers/paperclip.rb' + +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: EnforcedStyle. +# SupportedStyles: require_no_space, require_space +Layout/SpaceInLambdaLiteral: + Exclude: + - 'config/environments/production.rb' + - 'config/initializers/content_security_policy.rb' + +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: EnforcedStyle. +# SupportedStyles: space, no_space +Layout/SpaceInsideStringInterpolation: + Exclude: + - 'config/initializers/webauthn.rb' + +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: AllowInHeredoc. +Layout/TrailingWhitespace: + Exclude: + - 'config/initializers/paperclip.rb' -# Offense count: 14 # Configuration parameters: AllowedMethods, AllowedPatterns. Lint/AmbiguousBlockAssociation: Exclude: @@ -35,7 +101,11 @@ Lint/AmbiguousBlockAssociation: - 'spec/services/unsuspend_account_service_spec.rb' - 'spec/workers/scheduler/accounts_statuses_cleanup_scheduler_spec.rb' -# Offense count: 15 +# This cop supports safe autocorrection (--autocorrect). +Lint/AmbiguousOperatorPrecedence: + Exclude: + - 'config/initializers/rack_attack.rb' + # Configuration parameters: AllowedMethods. # AllowedMethods: enums Lint/ConstantDefinitionInBlock: @@ -47,10 +117,8 @@ Lint/ConstantDefinitionInBlock: - 'spec/lib/activitypub/adapter_spec.rb' - 'spec/lib/connection_pool/shared_connection_pool_spec.rb' - 'spec/lib/connection_pool/shared_timed_stack_spec.rb' - - 'spec/lib/settings/extend_spec.rb' - 'spec/models/concerns/remotable_spec.rb' -# Offense count: 5 # Configuration parameters: IgnoreLiteralBranches, IgnoreConstantBranches. Lint/DuplicateBranch: Exclude: @@ -60,7 +128,6 @@ Lint/DuplicateBranch: - 'app/validators/vote_validator.rb' - 'lib/mastodon/maintenance_cli.rb' -# Offense count: 42 # Configuration parameters: AllowComments, AllowEmptyLambdas. Lint/EmptyBlock: Exclude: @@ -68,11 +135,7 @@ Lint/EmptyBlock: - 'spec/controllers/application_controller_spec.rb' - 'spec/fabricators/access_token_fabricator.rb' - 'spec/fabricators/conversation_fabricator.rb' - - 'spec/fabricators/conversation_mute_fabricator.rb' - - 'spec/fabricators/import_fabricator.rb' - - 'spec/fabricators/setting_fabricator.rb' - 'spec/fabricators/system_key_fabricator.rb' - - 'spec/fabricators/web_setting_fabricator.rb' - 'spec/helpers/admin/action_logs_helper_spec.rb' - 'spec/lib/activitypub/adapter_spec.rb' - 'spec/models/account_alias_spec.rb' @@ -93,7 +156,6 @@ Lint/EmptyBlock: - 'spec/models/list_spec.rb' - 'spec/models/login_activity_spec.rb' - 'spec/models/mute_spec.rb' - - 'spec/models/one_time_key_spec.rb' - 'spec/models/preview_card_spec.rb' - 'spec/models/preview_card_trend_spec.rb' - 'spec/models/relay_spec.rb' @@ -107,33 +169,43 @@ Lint/EmptyBlock: - 'spec/models/user_role_spec.rb' - 'spec/models/web/setting_spec.rb' -# Offense count: 1 # Configuration parameters: AllowComments. Lint/EmptyClass: Exclude: - 'spec/controllers/api/base_controller_spec.rb' -# Offense count: 1 # This cop supports unsafe autocorrection (--autocorrect-all). Lint/NonDeterministicRequireOrder: Exclude: - 'spec/rails_helper.rb' -# Offense count: 1 Lint/NonLocalExitFromIterator: Exclude: - 'app/helpers/jsonld_helper.rb' -# Offense count: 2 # This cop supports unsafe autocorrection (--autocorrect-all). Lint/OrAssignmentToConstant: Exclude: - 'lib/sanitize_ext/sanitize_config.rb' -# Offense count: 33 +# This cop supports safe autocorrection (--autocorrect). +Lint/SendWithMixinArgument: + Exclude: + - 'config/application.rb' + +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: IgnoreEmptyBlocks, AllowUnusedKeywordArguments. +Lint/UnusedBlockArgument: + Exclude: + - 'config/initializers/content_security_policy.rb' + - 'config/initializers/doorkeeper.rb' + - 'config/initializers/paperclip.rb' + - 'config/initializers/simple_form.rb' + Lint/UselessAssignment: Exclude: - 'app/services/activitypub/process_status_update_service.rb' + - 'config/initializers/omniauth.rb' - 'db/migrate/20190511134027_add_silenced_at_suspended_at_to_accounts.rb' - 'db/post_migrate/20190511152737_remove_suspended_silenced_account_fields.rb' - 'spec/controllers/api/v1/bookmarks_controller_spec.rb' @@ -151,53 +223,38 @@ Lint/UselessAssignment: - 'spec/services/resolve_url_service_spec.rb' - 'spec/views/statuses/show.html.haml_spec.rb' -# Offense count: 3 # Configuration parameters: CheckForMethodsWithNoSideEffects. Lint/Void: Exclude: - 'spec/services/resolve_account_service_spec.rb' -# Offense count: 66 # Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes. Metrics/AbcSize: - Enabled: false + Max: 150 -# Offense count: 10 -# Configuration parameters: CountComments, Max, CountAsOne, AllowedMethods, AllowedPatterns, inherit_mode. -# AllowedMethods: refine -Metrics/BlockLength: - Exclude: - - 'app/models/concerns/account_interactions.rb' - - 'db/post_migrate/20221101190723_backfill_admin_action_logs.rb' - - 'db/post_migrate/20221206114142_backfill_admin_action_logs_again.rb' - - 'lib/tasks/branding.rake' - - 'lib/tasks/mastodon.rake' - - 'lib/tasks/repo.rake' - - 'lib/tasks/tests.rake' - -# Offense count: 1 # Configuration parameters: CountBlocks, Max. Metrics/BlockNesting: Exclude: - 'lib/tasks/mastodon.rake' -# Offense count: 39 # Configuration parameters: AllowedMethods, AllowedPatterns. Metrics/CyclomaticComplexity: - Enabled: false + Max: 25 -# Offense count: 35 # Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns. Metrics/MethodLength: - Enabled: false + Max: 58 -# Offense count: 1 # Configuration parameters: CountComments, Max, CountAsOne. Metrics/ModuleLength: Exclude: + - 'app/controllers/concerns/signature_verification.rb' + - 'app/helpers/application_helper.rb' + - 'app/helpers/jsonld_helper.rb' + - 'app/helpers/statuses_helper.rb' - 'app/models/concerns/account_interactions.rb' + - 'app/models/concerns/has_user_settings.rb' -# Offense count: 5 # Configuration parameters: Max, CountKeywordArgs, MaxOptionalParameters. Metrics/ParameterLists: Exclude: @@ -206,32 +263,21 @@ Metrics/ParameterLists: - 'app/services/activitypub/fetch_remote_actor_service.rb' - 'app/services/activitypub/fetch_remote_status_service.rb' -# Offense count: 16 -# Configuration parameters: AllowedMethods, AllowedPatterns, Max. +# Configuration parameters: AllowedMethods, AllowedPatterns. Metrics/PerceivedComplexity: - Exclude: - - 'app/helpers/jsonld_helper.rb' - - 'app/lib/feed_manager.rb' - - 'app/lib/status_cache_hydrator.rb' - - 'app/lib/user_settings_decorator.rb' - - 'app/models/trends/links.rb' - - 'app/services/activitypub/fetch_remote_key_service.rb' - - 'app/services/activitypub/fetch_remote_status_service.rb' - - 'app/services/activitypub/process_account_service.rb' - - 'app/services/fetch_link_card_service.rb' - - 'app/services/fetch_oembed_service.rb' - - 'app/services/process_mentions_service.rb' - - 'app/services/resolve_account_service.rb' - - 'lib/mastodon/accounts_cli.rb' - - 'lib/mastodon/domains_cli.rb' - - 'lib/mastodon/maintenance_cli.rb' + Max: 28 -# Offense count: 1 Naming/AccessorMethodName: Exclude: - 'app/controllers/auth/sessions_controller.rb' -# Offense count: 7 +# Configuration parameters: ExpectMatchingDefinition, CheckDefinitionPathHierarchy, CheckDefinitionPathHierarchyRoots, Regex, IgnoreExecutableScripts, AllowedAcronyms. +# CheckDefinitionPathHierarchyRoots: lib, spec, test, src +# AllowedAcronyms: CLI, DSL, ACL, API, ASCII, CPU, CSS, DNS, EOF, GUID, HTML, HTTP, HTTPS, ID, IP, JSON, LHS, QPS, RAM, RHS, RPC, SLA, SMTP, SQL, SSH, TCP, TLS, TTL, UDP, UI, UID, UUID, URI, URL, UTF8, VM, XML, XMPP, XSRF, XSS +Naming/FileName: + Exclude: + - 'config/locales/sr-Latn.rb' + # Configuration parameters: EnforcedStyleForLeadingUnderscores. # SupportedStylesForLeadingUnderscores: disallowed, required, optional Naming/MemoizedInstanceVariableName: @@ -242,11 +288,11 @@ Naming/MemoizedInstanceVariableName: - 'app/lib/activitypub/activity.rb' - 'app/services/resolve_url_service.rb' - 'app/services/search_service.rb' + - 'config/initializers/rack_attack.rb' -# Offense count: 50 # Configuration parameters: EnforcedStyle, CheckMethodNames, CheckSymbols, AllowedIdentifiers, AllowedPatterns. # SupportedStyles: snake_case, normalcase, non_integer -# AllowedIdentifiers: capture3, iso8601, rfc1123_date, rfc822, rfc2822, rfc3339 +# AllowedIdentifiers: capture3, iso8601, rfc1123_date, rfc822, rfc2822, rfc3339, x86_64 Naming/VariableNumber: Exclude: - 'db/migrate/20180106000232_add_index_on_statuses_for_api_v1_accounts_account_id_statuses.rb' @@ -263,7 +309,6 @@ Naming/VariableNumber: - 'spec/models/user_spec.rb' - 'spec/services/activitypub/fetch_featured_collection_service_spec.rb' -# Offense count: 12 # Configuration parameters: MinSize. Performance/CollectionLiteralInLoop: Exclude: @@ -276,16 +321,15 @@ Performance/CollectionLiteralInLoop: - 'app/services/fetch_resource_service.rb' - 'app/services/suspend_account_service.rb' - 'app/services/unsuspend_account_service.rb' + - 'config/deploy.rb' - 'lib/mastodon/media_cli.rb' -# Offense count: 4 # This cop supports unsafe autocorrection (--autocorrect-all). Performance/Count: Exclude: - 'app/lib/importer/accounts_index_importer.rb' - 'app/lib/importer/tags_index_importer.rb' -# Offense count: 10 # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: SafeMultiline. Performance/DeletePrefix: @@ -301,14 +345,6 @@ Performance/DeletePrefix: - 'app/services/resolve_account_service.rb' - 'app/services/tag_search_service.rb' -# Offense count: 1 -# This cop supports unsafe autocorrection (--autocorrect-all). -# Configuration parameters: SafeMultiline. -Performance/DeleteSuffix: - Exclude: - - 'lib/tasks/repo.rake' - -# Offense count: 19 # This cop supports unsafe autocorrection (--autocorrect-all). Performance/MapCompact: Exclude: @@ -328,36 +364,36 @@ Performance/MapCompact: - 'db/migrate/20200407202420_migrate_unavailable_inboxes.rb' - 'spec/presenters/status_relationships_presenter_spec.rb' -# Offense count: 7 Performance/MethodObjectAsBlock: Exclude: - 'app/models/account_suggestions/source.rb' - 'spec/models/export_spec.rb' -# Offense count: 1 # This cop supports unsafe autocorrection (--autocorrect-all). Performance/RedundantEqualityComparisonBlock: Exclude: - 'spec/requests/link_headers_spec.rb' -# Offense count: 1 +# This cop supports unsafe autocorrection (--autocorrect-all). +# Configuration parameters: MaxKeyValuePairs. +Performance/RedundantMerge: + Exclude: + - 'config/initializers/paperclip.rb' + # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: SafeMultiline. Performance/StartWith: Exclude: - 'app/lib/extractor.rb' -# Offense count: 4 # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: OnlySumOrWithInitialValue. Performance/Sum: Exclude: - 'app/lib/activity_tracker.rb' - 'app/models/trends/history.rb' - - 'app/workers/scheduler/accounts_statuses_cleanup_scheduler.rb' - 'lib/paperclip/color_extractor.rb' -# Offense count: 15 # This cop supports unsafe autocorrection (--autocorrect-all). Performance/TimesMap: Exclude: @@ -367,7 +403,6 @@ Performance/TimesMap: - 'spec/lib/request_pool_spec.rb' - 'spec/models/account_spec.rb' -# Offense count: 4 # This cop supports unsafe autocorrection (--autocorrect-all). Performance/UnfreezeString: Exclude: @@ -376,7 +411,6 @@ Performance/UnfreezeString: - 'app/validators/status_length_validator.rb' - 'lib/tasks/mastodon.rake' -# Offense count: 27 RSpec/AnyInstance: Exclude: - 'spec/controllers/activitypub/inboxes_controller_spec.rb' @@ -397,12 +431,10 @@ RSpec/AnyInstance: - 'spec/workers/activitypub/delivery_worker_spec.rb' - 'spec/workers/web/push_notification_worker_spec.rb' -# Offense count: 1 RSpec/BeforeAfterAll: Exclude: - 'spec/requests/localization_spec.rb' -# Offense count: 558 # Configuration parameters: Prefixes, AllowedPatterns. # Prefixes: when, with, without RSpec/ContextWording: @@ -441,13 +473,13 @@ RSpec/ContextWording: - 'spec/lib/activitypub/activity/create_spec.rb' - 'spec/lib/activitypub/activity/follow_spec.rb' - 'spec/lib/activitypub/activity/reject_spec.rb' + - 'spec/lib/advanced_text_formatter_spec.rb' - 'spec/lib/emoji_formatter_spec.rb' - 'spec/lib/entity_cache_spec.rb' - 'spec/lib/feed_manager_spec.rb' - 'spec/lib/html_aware_formatter_spec.rb' - 'spec/lib/link_details_extractor_spec.rb' - 'spec/lib/ostatus/tag_manager_spec.rb' - - 'spec/lib/plain_text_formatter_spec.rb' - 'spec/lib/scope_transformer_spec.rb' - 'spec/lib/status_cache_hydrator_spec.rb' - 'spec/lib/status_reach_finder_spec.rb' @@ -513,7 +545,6 @@ RSpec/ContextWording: - 'spec/workers/move_worker_spec.rb' - 'spec/workers/scheduler/accounts_statuses_cleanup_scheduler_spec.rb' -# Offense count: 339 # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: SkipBlocks, EnforcedStyle. # SupportedStyles: described_class, explicit @@ -555,7 +586,6 @@ RSpec/DescribedClass: - 'spec/models/user_spec.rb' - 'spec/policies/account_moderation_note_policy_spec.rb' - 'spec/presenters/account_relationships_presenter_spec.rb' - - 'spec/presenters/instance_presenter_spec.rb' - 'spec/presenters/status_relationships_presenter_spec.rb' - 'spec/serializers/activitypub/note_serializer_spec.rb' - 'spec/serializers/activitypub/update_poll_serializer_spec.rb' @@ -588,7 +618,6 @@ RSpec/DescribedClass: - 'spec/services/update_account_service_spec.rb' - 'spec/validators/note_length_validator_spec.rb' -# Offense count: 32 # This cop supports unsafe autocorrection (--autocorrect-all). RSpec/EmptyExampleGroup: Exclude: @@ -611,7 +640,6 @@ RSpec/EmptyExampleGroup: - 'spec/models/list_spec.rb' - 'spec/models/login_activity_spec.rb' - 'spec/models/mute_spec.rb' - - 'spec/models/one_time_key_spec.rb' - 'spec/models/preview_card_spec.rb' - 'spec/models/preview_card_trend_spec.rb' - 'spec/models/relay_spec.rb' @@ -625,12 +653,10 @@ RSpec/EmptyExampleGroup: - 'spec/models/web/setting_spec.rb' - 'spec/services/unmute_service_spec.rb' -# Offense count: 178 # Configuration parameters: CountAsOne. RSpec/ExampleLength: Max: 22 -# Offense count: 21 # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: EnforcedStyle. # SupportedStyles: method_call, block @@ -648,81 +674,12 @@ RSpec/ExpectChange: - 'spec/services/unsuspend_account_service_spec.rb' - 'spec/workers/scheduler/accounts_statuses_cleanup_scheduler_spec.rb' -# Offense count: 5 RSpec/ExpectInHook: Exclude: - 'spec/controllers/api/v1/media_controller_spec.rb' - 'spec/controllers/settings/applications_controller_spec.rb' - 'spec/lib/status_filter_spec.rb' -# Offense count: 61 -# Configuration parameters: Include, CustomTransform, IgnoreMethods, SpecSuffixOnly. -# Include: **/*_spec*rb*, **/spec/**/* -RSpec/FilePath: - Exclude: - - 'spec/config/initializers/rack_attack_spec.rb' - - 'spec/controllers/activitypub/collections_controller_spec.rb' - - 'spec/controllers/activitypub/followers_synchronizations_controller_spec.rb' - - 'spec/controllers/activitypub/inboxes_controller_spec.rb' - - 'spec/controllers/activitypub/outboxes_controller_spec.rb' - - 'spec/controllers/activitypub/replies_controller_spec.rb' - - 'spec/controllers/admin/change_email_controller_spec.rb' - - 'spec/controllers/admin/users/roles_controller.rb' - - 'spec/controllers/api/oembed_controller_spec.rb' - - 'spec/controllers/concerns/account_controller_concern_spec.rb' - - 'spec/controllers/concerns/export_controller_concern_spec.rb' - - 'spec/controllers/concerns/localized_spec.rb' - - 'spec/controllers/concerns/rate_limit_headers_spec.rb' - - 'spec/controllers/concerns/signature_verification_spec.rb' - - 'spec/controllers/concerns/user_tracking_concern_spec.rb' - - 'spec/controllers/well_known/nodeinfo_controller_spec.rb' - - 'spec/helpers/admin/action_log_helper_spec.rb' - - 'spec/helpers/jsonld_helper_spec.rb' - - 'spec/lib/activitypub/activity/accept_spec.rb' - - 'spec/lib/activitypub/activity/add_spec.rb' - - 'spec/lib/activitypub/activity/announce_spec.rb' - - 'spec/lib/activitypub/activity/block_spec.rb' - - 'spec/lib/activitypub/activity/create_spec.rb' - - 'spec/lib/activitypub/activity/delete_spec.rb' - - 'spec/lib/activitypub/activity/flag_spec.rb' - - 'spec/lib/activitypub/activity/follow_spec.rb' - - 'spec/lib/activitypub/activity/like_spec.rb' - - 'spec/lib/activitypub/activity/move_spec.rb' - - 'spec/lib/activitypub/activity/reject_spec.rb' - - 'spec/lib/activitypub/activity/remove_spec.rb' - - 'spec/lib/activitypub/activity/undo_spec.rb' - - 'spec/lib/activitypub/activity/update_spec.rb' - - 'spec/lib/activitypub/adapter_spec.rb' - - 'spec/lib/activitypub/dereferencer_spec.rb' - - 'spec/lib/activitypub/linked_data_signature_spec.rb' - - 'spec/lib/activitypub/tag_manager_spec.rb' - - 'spec/lib/ostatus/tag_manager_spec.rb' - - 'spec/lib/sanitize_config_spec.rb' - - 'spec/serializers/activitypub/note_serializer_spec.rb' - - 'spec/serializers/activitypub/update_poll_serializer_spec.rb' - - 'spec/services/activitypub/fetch_featured_collection_service_spec.rb' - - 'spec/services/activitypub/fetch_featured_tags_collection_service_spec.rb' - - 'spec/services/activitypub/fetch_remote_account_service_spec.rb' - - 'spec/services/activitypub/fetch_remote_actor_service_spec.rb' - - 'spec/services/activitypub/fetch_remote_key_service_spec.rb' - - 'spec/services/activitypub/fetch_remote_status_service_spec.rb' - - 'spec/services/activitypub/fetch_replies_service_spec.rb' - - 'spec/services/activitypub/process_account_service_spec.rb' - - 'spec/services/activitypub/process_collection_service_spec.rb' - - 'spec/services/activitypub/process_status_update_service_spec.rb' - - 'spec/services/activitypub/synchronize_followers_service_spec.rb' - - 'spec/services/fetch_oembed_service_spec.rb' - - 'spec/services/remove_from_follwers_service_spec.rb' - - 'spec/workers/activitypub/delivery_worker_spec.rb' - - 'spec/workers/activitypub/distribute_poll_update_worker_spec.rb' - - 'spec/workers/activitypub/distribution_worker_spec.rb' - - 'spec/workers/activitypub/fetch_replies_worker_spec.rb' - - 'spec/workers/activitypub/move_distribution_worker_spec.rb' - - 'spec/workers/activitypub/processing_worker_spec.rb' - - 'spec/workers/activitypub/status_update_distribution_worker_spec.rb' - - 'spec/workers/activitypub/update_distribution_worker_spec.rb' - -# Offense count: 16 # This cop supports safe autocorrection (--autocorrect). # Configuration parameters: EnforcedStyle. # SupportedStyles: implicit, each, example @@ -738,7 +695,6 @@ RSpec/HookArgument: - 'spec/services/import_service_spec.rb' - 'spec/spec_helper.rb' -# Offense count: 101 # Configuration parameters: AssignmentOnly. RSpec/InstanceVariable: Exclude: @@ -761,7 +717,6 @@ RSpec/InstanceVariable: - 'spec/services/search_service_spec.rb' - 'spec/services/unblock_domain_service_spec.rb' -# Offense count: 15 RSpec/LeakyConstantDeclaration: Exclude: - 'spec/controllers/api/base_controller_spec.rb' @@ -771,10 +726,8 @@ RSpec/LeakyConstantDeclaration: - 'spec/lib/activitypub/adapter_spec.rb' - 'spec/lib/connection_pool/shared_connection_pool_spec.rb' - 'spec/lib/connection_pool/shared_timed_stack_spec.rb' - - 'spec/lib/settings/extend_spec.rb' - 'spec/models/concerns/remotable_spec.rb' -# Offense count: 108 RSpec/LetSetup: Exclude: - 'spec/controllers/admin/accounts_controller_spec.rb' @@ -827,7 +780,29 @@ RSpec/LetSetup: - 'spec/workers/scheduler/accounts_statuses_cleanup_scheduler_spec.rb' - 'spec/workers/scheduler/user_cleanup_scheduler_spec.rb' -# Offense count: 7 +# This cop supports safe autocorrection (--autocorrect). +RSpec/MatchArray: + Exclude: + - 'spec/controllers/activitypub/followers_synchronizations_controller_spec.rb' + - 'spec/controllers/admin/export_domain_blocks_controller_spec.rb' + - 'spec/controllers/api/v1/accounts/follower_accounts_controller_spec.rb' + - 'spec/controllers/api/v1/accounts/following_accounts_controller_spec.rb' + - 'spec/controllers/api/v1/accounts/statuses_controller_spec.rb' + - 'spec/controllers/api/v1/bookmarks_controller_spec.rb' + - 'spec/controllers/api/v1/favourites_controller_spec.rb' + - 'spec/controllers/api/v1/reports_controller_spec.rb' + - 'spec/controllers/api/v1/statuses/favourited_by_accounts_controller_spec.rb' + - 'spec/controllers/api/v1/statuses/reblogged_by_accounts_controller_spec.rb' + - 'spec/models/account_filter_spec.rb' + - 'spec/models/account_spec.rb' + - 'spec/models/account_statuses_cleanup_policy_spec.rb' + - 'spec/models/custom_emoji_filter_spec.rb' + - 'spec/models/status_spec.rb' + - 'spec/models/user_spec.rb' + - 'spec/presenters/familiar_followers_presenter_spec.rb' + - 'spec/services/activitypub/fetch_featured_collection_service_spec.rb' + - 'spec/services/update_status_service_spec.rb' + RSpec/MessageChain: Exclude: - 'spec/controllers/api/v1/media_controller_spec.rb' @@ -835,7 +810,6 @@ RSpec/MessageChain: - 'spec/models/session_activation_spec.rb' - 'spec/models/setting_spec.rb' -# Offense count: 47 # Configuration parameters: EnforcedStyle. # SupportedStyles: have_received, receive RSpec/MessageSpies: @@ -858,7 +832,6 @@ RSpec/MessageSpies: - 'spec/spec_helper.rb' - 'spec/validators/status_length_validator_spec.rb' -# Offense count: 35 RSpec/MissingExampleGroupArgument: Exclude: - 'spec/controllers/accounts_controller_spec.rb' @@ -884,16 +857,13 @@ RSpec/MissingExampleGroupArgument: - 'spec/services/notify_service_spec.rb' - 'spec/services/process_mentions_service_spec.rb' -# Offense count: 599 RSpec/MultipleExpectations: Max: 19 -# Offense count: 442 # Configuration parameters: AllowSubject. RSpec/MultipleMemoizedHelpers: Max: 21 -# Offense count: 7 # This cop supports safe autocorrection (--autocorrect). RSpec/MultipleSubjects: Exclude: @@ -905,211 +875,10 @@ RSpec/MultipleSubjects: - 'spec/controllers/follower_accounts_controller_spec.rb' - 'spec/controllers/following_accounts_controller_spec.rb' -# Offense count: 1407 -# Configuration parameters: EnforcedStyle, IgnoreSharedExamples. -# SupportedStyles: always, named_only -RSpec/NamedSubject: - Exclude: - - 'spec/controllers/admin/account_moderation_notes_controller_spec.rb' - - 'spec/controllers/admin/accounts_controller_spec.rb' - - 'spec/controllers/admin/confirmations_controller_spec.rb' - - 'spec/controllers/admin/custom_emojis_controller_spec.rb' - - 'spec/controllers/admin/domain_blocks_controller_spec.rb' - - 'spec/controllers/admin/instances_controller_spec.rb' - - 'spec/controllers/admin/invites_controller_spec.rb' - - 'spec/controllers/admin/report_notes_controller_spec.rb' - - 'spec/controllers/api/v1/accounts/notes_controller_spec.rb' - - 'spec/controllers/api/v1/accounts/pins_controller_spec.rb' - - 'spec/controllers/api/v1/admin/domain_blocks_controller_spec.rb' - - 'spec/controllers/auth/passwords_controller_spec.rb' - - 'spec/controllers/auth/registrations_controller_spec.rb' - - 'spec/controllers/home_controller_spec.rb' - - 'spec/controllers/invites_controller_spec.rb' - - 'spec/controllers/oauth/authorizations_controller_spec.rb' - - 'spec/controllers/oauth/authorized_applications_controller_spec.rb' - - 'spec/controllers/relationships_controller_spec.rb' - - 'spec/controllers/settings/featured_tags_controller_spec.rb' - - 'spec/controllers/settings/migrations_controller_spec.rb' - - 'spec/controllers/settings/sessions_controller_spec.rb' - - 'spec/controllers/settings/two_factor_authentication/confirmations_controller_spec.rb' - - 'spec/controllers/well_known/webfinger_controller_spec.rb' - - 'spec/features/log_in_spec.rb' - - 'spec/features/profile_spec.rb' - - 'spec/lib/activitypub/activity/accept_spec.rb' - - 'spec/lib/activitypub/activity/add_spec.rb' - - 'spec/lib/activitypub/activity/announce_spec.rb' - - 'spec/lib/activitypub/activity/block_spec.rb' - - 'spec/lib/activitypub/activity/create_spec.rb' - - 'spec/lib/activitypub/activity/delete_spec.rb' - - 'spec/lib/activitypub/activity/flag_spec.rb' - - 'spec/lib/activitypub/activity/follow_spec.rb' - - 'spec/lib/activitypub/activity/like_spec.rb' - - 'spec/lib/activitypub/activity/move_spec.rb' - - 'spec/lib/activitypub/activity/reject_spec.rb' - - 'spec/lib/activitypub/activity/remove_spec.rb' - - 'spec/lib/activitypub/activity/undo_spec.rb' - - 'spec/lib/activitypub/activity/update_spec.rb' - - 'spec/lib/activitypub/adapter_spec.rb' - - 'spec/lib/activitypub/dereferencer_spec.rb' - - 'spec/lib/activitypub/linked_data_signature_spec.rb' - - 'spec/lib/activitypub/tag_manager_spec.rb' - - 'spec/lib/connection_pool/shared_connection_pool_spec.rb' - - 'spec/lib/connection_pool/shared_timed_stack_spec.rb' - - 'spec/lib/delivery_failure_tracker_spec.rb' - - 'spec/lib/emoji_formatter_spec.rb' - - 'spec/lib/entity_cache_spec.rb' - - 'spec/lib/fast_ip_map_spec.rb' - - 'spec/lib/feed_manager_spec.rb' - - 'spec/lib/hashtag_normalizer_spec.rb' - - 'spec/lib/html_aware_formatter_spec.rb' - - 'spec/lib/link_details_extractor_spec.rb' - - 'spec/lib/ostatus/tag_manager_spec.rb' - - 'spec/lib/plain_text_formatter_spec.rb' - - 'spec/lib/request_pool_spec.rb' - - 'spec/lib/request_spec.rb' - - 'spec/lib/sanitize_config_spec.rb' - - 'spec/lib/status_finder_spec.rb' - - 'spec/lib/status_reach_finder_spec.rb' - - 'spec/lib/suspicious_sign_in_detector_spec.rb' - - 'spec/lib/text_formatter_spec.rb' - - 'spec/lib/vacuum/access_tokens_vacuum_spec.rb' - - 'spec/lib/vacuum/backups_vacuum_spec.rb' - - 'spec/lib/vacuum/feeds_vacuum_spec.rb' - - 'spec/lib/vacuum/media_attachments_vacuum_spec.rb' - - 'spec/lib/vacuum/preview_cards_vacuum_spec.rb' - - 'spec/lib/vacuum/statuses_vacuum_spec.rb' - - 'spec/lib/vacuum/system_keys_vacuum_spec.rb' - - 'spec/models/account/field_spec.rb' - - 'spec/models/account_migration_spec.rb' - - 'spec/models/account_spec.rb' - - 'spec/models/account_statuses_cleanup_policy_spec.rb' - - 'spec/models/account_statuses_filter_spec.rb' - - 'spec/models/admin/account_action_spec.rb' - - 'spec/models/canonical_email_block_spec.rb' - - 'spec/models/concerns/account_interactions_spec.rb' - - 'spec/models/custom_emoji_filter_spec.rb' - - 'spec/models/custom_emoji_spec.rb' - - 'spec/models/follow_spec.rb' - - 'spec/models/home_feed_spec.rb' - - 'spec/models/media_attachment_spec.rb' - - 'spec/models/notification_spec.rb' - - 'spec/models/public_feed_spec.rb' - - 'spec/models/relationship_filter_spec.rb' - - 'spec/models/remote_follow_spec.rb' - - 'spec/models/report_spec.rb' - - 'spec/models/session_activation_spec.rb' - - 'spec/models/setting_spec.rb' - - 'spec/models/status_spec.rb' - - 'spec/models/tag_spec.rb' - - 'spec/models/trends/statuses_spec.rb' - - 'spec/models/trends/tags_spec.rb' - - 'spec/models/user_role_spec.rb' - - 'spec/models/user_spec.rb' - - 'spec/models/web/push_subscription_spec.rb' - - 'spec/policies/account_moderation_note_policy_spec.rb' - - 'spec/policies/account_policy_spec.rb' - - 'spec/policies/backup_policy_spec.rb' - - 'spec/policies/custom_emoji_policy_spec.rb' - - 'spec/policies/domain_block_policy_spec.rb' - - 'spec/policies/email_domain_block_policy_spec.rb' - - 'spec/policies/instance_policy_spec.rb' - - 'spec/policies/invite_policy_spec.rb' - - 'spec/policies/relay_policy_spec.rb' - - 'spec/policies/report_note_policy_spec.rb' - - 'spec/policies/report_policy_spec.rb' - - 'spec/policies/settings_policy_spec.rb' - - 'spec/policies/status_policy_spec.rb' - - 'spec/policies/tag_policy_spec.rb' - - 'spec/policies/user_policy_spec.rb' - - 'spec/presenters/familiar_followers_presenter_spec.rb' - - 'spec/serializers/activitypub/note_serializer_spec.rb' - - 'spec/serializers/activitypub/update_poll_serializer_spec.rb' - - 'spec/serializers/rest/account_serializer_spec.rb' - - 'spec/services/account_search_service_spec.rb' - - 'spec/services/account_statuses_cleanup_service_spec.rb' - - 'spec/services/activitypub/fetch_remote_account_service_spec.rb' - - 'spec/services/activitypub/fetch_remote_actor_service_spec.rb' - - 'spec/services/activitypub/fetch_remote_status_service_spec.rb' - - 'spec/services/activitypub/fetch_replies_service_spec.rb' - - 'spec/services/activitypub/process_account_service_spec.rb' - - 'spec/services/activitypub/process_collection_service_spec.rb' - - 'spec/services/activitypub/process_status_update_service_spec.rb' - - 'spec/services/after_block_domain_from_account_service_spec.rb' - - 'spec/services/after_block_service_spec.rb' - - 'spec/services/app_sign_up_service_spec.rb' - - 'spec/services/authorize_follow_service_spec.rb' - - 'spec/services/batched_remove_status_service_spec.rb' - - 'spec/services/block_domain_service_spec.rb' - - 'spec/services/block_service_spec.rb' - - 'spec/services/bootstrap_timeline_service_spec.rb' - - 'spec/services/clear_domain_media_service_spec.rb' - - 'spec/services/delete_account_service_spec.rb' - - 'spec/services/fan_out_on_write_service_spec.rb' - - 'spec/services/favourite_service_spec.rb' - - 'spec/services/fetch_link_card_service_spec.rb' - - 'spec/services/fetch_oembed_service_spec.rb' - - 'spec/services/fetch_remote_status_service_spec.rb' - - 'spec/services/fetch_resource_service_spec.rb' - - 'spec/services/follow_service_spec.rb' - - 'spec/services/import_service_spec.rb' - - 'spec/services/mute_service_spec.rb' - - 'spec/services/notify_service_spec.rb' - - 'spec/services/post_status_service_spec.rb' - - 'spec/services/precompute_feed_service_spec.rb' - - 'spec/services/process_mentions_service_spec.rb' - - 'spec/services/purge_domain_service_spec.rb' - - 'spec/services/reblog_service_spec.rb' - - 'spec/services/reject_follow_service_spec.rb' - - 'spec/services/remove_from_followers_service_spec.rb' - - 'spec/services/remove_status_service_spec.rb' - - 'spec/services/report_service_spec.rb' - - 'spec/services/resolve_account_service_spec.rb' - - 'spec/services/resolve_url_service_spec.rb' - - 'spec/services/search_service_spec.rb' - - 'spec/services/suspend_account_service_spec.rb' - - 'spec/services/unallow_domain_service_spec.rb' - - 'spec/services/unblock_domain_service_spec.rb' - - 'spec/services/unblock_service_spec.rb' - - 'spec/services/unfollow_service_spec.rb' - - 'spec/services/unsuspend_account_service_spec.rb' - - 'spec/services/update_account_service_spec.rb' - - 'spec/services/update_status_service_spec.rb' - - 'spec/services/verify_link_service_spec.rb' - - 'spec/validators/blacklisted_email_validator_spec.rb' - - 'spec/validators/email_mx_validator_spec.rb' - - 'spec/validators/note_length_validator_spec.rb' - - 'spec/validators/reaction_validator_spec.rb' - - 'spec/validators/status_length_validator_spec.rb' - - 'spec/validators/status_pin_validator_spec.rb' - - 'spec/validators/unique_username_validator_spec.rb' - - 'spec/workers/activitypub/delivery_worker_spec.rb' - - 'spec/workers/activitypub/distribute_poll_update_worker_spec.rb' - - 'spec/workers/activitypub/distribution_worker_spec.rb' - - 'spec/workers/activitypub/fetch_replies_worker_spec.rb' - - 'spec/workers/activitypub/move_distribution_worker_spec.rb' - - 'spec/workers/activitypub/processing_worker_spec.rb' - - 'spec/workers/activitypub/status_update_distribution_worker_spec.rb' - - 'spec/workers/activitypub/update_distribution_worker_spec.rb' - - 'spec/workers/admin/domain_purge_worker_spec.rb' - - 'spec/workers/domain_block_worker_spec.rb' - - 'spec/workers/domain_clear_media_worker_spec.rb' - - 'spec/workers/feed_insert_worker_spec.rb' - - 'spec/workers/move_worker_spec.rb' - - 'spec/workers/publish_scheduled_announcement_worker_spec.rb' - - 'spec/workers/publish_scheduled_status_worker_spec.rb' - - 'spec/workers/refollow_worker_spec.rb' - - 'spec/workers/regeneration_worker_spec.rb' - - 'spec/workers/scheduler/accounts_statuses_cleanup_scheduler_spec.rb' - - 'spec/workers/scheduler/user_cleanup_scheduler_spec.rb' - - 'spec/workers/unfollow_follow_worker_spec.rb' - - 'spec/workers/web/push_notification_worker_spec.rb' - -# Offense count: 552 # Configuration parameters: AllowedGroups. RSpec/NestedGroups: Max: 6 -# Offense count: 2 # Configuration parameters: AllowedPatterns. # AllowedPatterns: ^expect_, ^assert_ RSpec/NoExpectationExample: @@ -1117,13 +886,12 @@ RSpec/NoExpectationExample: - 'spec/controllers/auth/registrations_controller_spec.rb' - 'spec/services/precompute_feed_service_spec.rb' -# Offense count: 3 RSpec/PendingWithoutReason: Exclude: + - 'spec/controllers/statuses_controller_spec.rb' - 'spec/models/account_spec.rb' - - 'spec/support/examples/lib/settings/scoped_settings.rb' + - 'spec/models/user_spec.rb' -# Offense count: 9 # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: Strict, EnforcedStyle, AllowedExplicitMatchers. # SupportedStyles: inflected, explicit @@ -1133,7 +901,6 @@ RSpec/PredicateMatcher: - 'spec/models/user_spec.rb' - 'spec/services/post_status_service_spec.rb' -# Offense count: 180 # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: Inferences. RSpec/Rails/InferredSpecType: @@ -1240,7 +1007,6 @@ RSpec/Rails/InferredSpecType: - 'spec/helpers/formatting_helper_spec.rb' - 'spec/helpers/home_helper_spec.rb' - 'spec/helpers/routing_helper_spec.rb' - - 'spec/helpers/statuses_helper_spec.rb' - 'spec/mailers/admin_mailer_spec.rb' - 'spec/mailers/notification_mailer_spec.rb' - 'spec/mailers/user_mailer_spec.rb' @@ -1258,18 +1024,15 @@ RSpec/Rails/InferredSpecType: - 'spec/models/announcement_mute_spec.rb' - 'spec/models/announcement_reaction_spec.rb' - 'spec/models/announcement_spec.rb' - - 'spec/models/appeal_spec.rb' - 'spec/models/backup_spec.rb' - 'spec/models/block_spec.rb' - 'spec/models/canonical_email_block_spec.rb' - 'spec/models/conversation_mute_spec.rb' - 'spec/models/conversation_spec.rb' - - 'spec/models/custom_emoji_category_spec.rb' - 'spec/models/custom_emoji_spec.rb' - 'spec/models/custom_filter_keyword_spec.rb' - 'spec/models/custom_filter_spec.rb' - 'spec/models/device_spec.rb' - - 'spec/models/domain_allow_spec.rb' - 'spec/models/domain_block_spec.rb' - 'spec/models/email_domain_block_spec.rb' - 'spec/models/encrypted_message_spec.rb' @@ -1282,28 +1045,22 @@ RSpec/Rails/InferredSpecType: - 'spec/models/identity_spec.rb' - 'spec/models/import_spec.rb' - 'spec/models/invite_spec.rb' - - 'spec/models/ip_block_spec.rb' - 'spec/models/list_account_spec.rb' - 'spec/models/list_spec.rb' - 'spec/models/login_activity_spec.rb' - - 'spec/models/marker_spec.rb' - 'spec/models/media_attachment_spec.rb' - 'spec/models/mention_spec.rb' - 'spec/models/mute_spec.rb' - 'spec/models/notification_spec.rb' - - 'spec/models/one_time_key_spec.rb' - - 'spec/models/poll_spec.rb' - 'spec/models/poll_vote_spec.rb' - 'spec/models/preview_card_spec.rb' - 'spec/models/preview_card_trend_spec.rb' - 'spec/models/public_feed_spec.rb' - 'spec/models/relay_spec.rb' - - 'spec/models/rule_spec.rb' - 'spec/models/scheduled_status_spec.rb' - 'spec/models/session_activation_spec.rb' - 'spec/models/setting_spec.rb' - 'spec/models/site_upload_spec.rb' - - 'spec/models/status_edit_spec.rb' - 'spec/models/status_pin_spec.rb' - 'spec/models/status_spec.rb' - 'spec/models/status_stat_spec.rb' @@ -1319,23 +1076,19 @@ RSpec/Rails/InferredSpecType: - 'spec/models/webauthn_credentials_spec.rb' - 'spec/models/webhook_spec.rb' -# Offense count: 6 RSpec/RepeatedExample: Exclude: - 'spec/policies/status_policy_spec.rb' -# Offense count: 6 RSpec/RepeatedExampleGroupBody: Exclude: - 'spec/controllers/statuses_controller_spec.rb' -# Offense count: 4 RSpec/RepeatedExampleGroupDescription: Exclude: - 'spec/controllers/admin/reports/actions_controller_spec.rb' - 'spec/policies/report_note_policy_spec.rb' -# Offense count: 12 RSpec/ScatteredSetup: Exclude: - 'spec/controllers/activitypub/followers_synchronizations_controller_spec.rb' @@ -1343,15 +1096,12 @@ RSpec/ScatteredSetup: - 'spec/controllers/admin/disputes/appeals_controller_spec.rb' - 'spec/controllers/auth/registrations_controller_spec.rb' - 'spec/services/activitypub/process_account_service_spec.rb' - - 'spec/services/fetch_resource_service_spec.rb' -# Offense count: 1 # This cop supports safe autocorrection (--autocorrect). RSpec/SharedContext: Exclude: - 'spec/services/unsuspend_account_service_spec.rb' -# Offense count: 16 RSpec/StubbedMock: Exclude: - 'spec/controllers/api/base_controller_spec.rb' @@ -1363,7 +1113,6 @@ RSpec/StubbedMock: - 'spec/lib/webfinger_resource_spec.rb' - 'spec/services/activitypub/process_collection_service_spec.rb' -# Offense count: 22 RSpec/SubjectDeclaration: Exclude: - 'spec/controllers/admin/domain_blocks_controller_spec.rb' @@ -1388,13 +1137,11 @@ RSpec/SubjectDeclaration: - 'spec/policies/user_policy_spec.rb' - 'spec/services/activitypub/process_account_service_spec.rb' -# Offense count: 5 RSpec/SubjectStub: Exclude: - 'spec/services/unallow_domain_service_spec.rb' - 'spec/validators/blacklisted_email_validator_spec.rb' -# Offense count: 119 # Configuration parameters: IgnoreNameless, IgnoreSymbolicNames. RSpec/VerifiedDoubles: Exclude: @@ -1435,7 +1182,6 @@ RSpec/VerifiedDoubles: - 'spec/workers/feed_insert_worker_spec.rb' - 'spec/workers/regeneration_worker_spec.rb' -# Offense count: 19 # This cop supports safe autocorrection (--autocorrect). # Configuration parameters: ExpectedOrder, Include. # ExpectedOrder: index, show, new, edit, create, update, destroy @@ -1462,7 +1208,6 @@ Rails/ActionOrder: - 'app/controllers/settings/applications_controller.rb' - 'app/controllers/settings/two_factor_authentication/webauthn_credentials_controller.rb' -# Offense count: 7 # This cop supports safe autocorrection (--autocorrect). # Configuration parameters: Include. # Include: app/models/**/*.rb @@ -1476,7 +1221,6 @@ Rails/ActiveRecordCallbacksOrder: - 'app/models/session_activation.rb' - 'app/models/status.rb' -# Offense count: 4 # This cop supports unsafe autocorrection (--autocorrect-all). Rails/ApplicationController: Exclude: @@ -1485,7 +1229,6 @@ Rails/ApplicationController: - 'app/controllers/well_known/nodeinfo_controller.rb' - 'app/controllers/well_known/webfinger_controller.rb' -# Offense count: 35 # Configuration parameters: Database, Include. # SupportedDatabases: mysql, postgresql # Include: db/migrate/*.rb @@ -1523,7 +1266,6 @@ Rails/BulkChangeTable: - 'db/migrate/20220303000827_add_ordered_media_attachment_ids_to_status_edits.rb' - 'db/migrate/20220824164433_add_human_identifier_to_admin_action_logs.rb' -# Offense count: 7 # This cop supports unsafe autocorrection (--autocorrect-all). Rails/CompactBlank: Exclude: @@ -1531,17 +1273,15 @@ Rails/CompactBlank: - 'app/helpers/statuses_helper.rb' - 'app/models/concerns/attachmentable.rb' - 'app/models/poll.rb' - - 'app/models/user.rb' - 'app/services/import_service.rb' + - 'config/initializers/paperclip.rb' -# Offense count: 3 # This cop supports safe autocorrection (--autocorrect). Rails/ContentTag: Exclude: - 'app/helpers/application_helper.rb' - 'app/helpers/branding_helper.rb' -# Offense count: 8 # Configuration parameters: Include. # Include: db/migrate/*.rb Rails/CreateTableWithTimestamps: @@ -1555,22 +1295,25 @@ Rails/CreateTableWithTimestamps: - 'db/migrate/20220824233535_create_status_trends.rb' - 'db/migrate/20221006061337_create_preview_card_trends.rb' -# Offense count: 4 # This cop supports unsafe autocorrection (--autocorrect-all). +# Configuration parameters: Severity. Rails/DeprecatedActiveModelErrorsMethods: Exclude: - - 'app/validators/ed25519_key_validator.rb' - - 'app/validators/ed25519_signature_validator.rb' - 'lib/mastodon/accounts_cli.rb' -# Offense count: 4 # This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: Severity. Rails/DuplicateAssociation: Exclude: - 'app/serializers/activitypub/collection_serializer.rb' - 'app/serializers/activitypub/note_serializer.rb' -# Offense count: 76 +# Configuration parameters: Include. +# Include: app/**/*.rb, config/**/*.rb, lib/**/*.rb +Rails/Exit: + Exclude: + - 'config/boot.rb' + # Configuration parameters: EnforcedStyle. # SupportedStyles: slashes, arguments Rails/FilePath: @@ -1578,8 +1321,9 @@ Rails/FilePath: - 'app/lib/themes.rb' - 'app/models/setting.rb' - 'app/validators/reaction_validator.rb' + - 'config/environments/test.rb' + - 'config/initializers/locale.rb' - 'db/migrate/20170716191202_add_hide_notifications_to_mute.rb' - - 'db/migrate/20170918125918_ids_to_bigints.rb' - 'db/migrate/20171005171936_add_disabled_to_custom_emojis.rb' - 'db/migrate/20171028221157_add_reblogs_to_follows.rb' - 'db/migrate/20171107143332_add_memorial_to_accounts.rb' @@ -1638,7 +1382,6 @@ Rails/FilePath: - 'spec/rails_helper.rb' - 'spec/spec_helper.rb' -# Offense count: 6 # Configuration parameters: Include. # Include: app/models/**/*.rb Rails/HasAndBelongsToMany: @@ -1648,7 +1391,6 @@ Rails/HasAndBelongsToMany: - 'app/models/status.rb' - 'app/models/tag.rb' -# Offense count: 15 # Configuration parameters: Include. # Include: app/models/**/*.rb Rails/HasManyOrHasOneDependent: @@ -1663,7 +1405,6 @@ Rails/HasManyOrHasOneDependent: - 'app/models/user.rb' - 'app/models/web/push_subscription.rb' -# Offense count: 4 # Configuration parameters: Include. # Include: app/helpers/**/*.rb Rails/HelperInstanceVariable: @@ -1672,7 +1413,6 @@ Rails/HelperInstanceVariable: - 'app/helpers/instance_helper.rb' - 'app/helpers/jsonld_helper.rb' -# Offense count: 3 # This cop supports safe autocorrection (--autocorrect). # Configuration parameters: Include. # Include: spec/**/*, test/**/* @@ -1680,7 +1420,6 @@ Rails/HttpPositionalArguments: Exclude: - 'spec/config/initializers/rack_attack_spec.rb' -# Offense count: 7 # Configuration parameters: Include. # Include: spec/**/*.rb, test/**/*.rb Rails/I18nLocaleAssignment: @@ -1689,26 +1428,11 @@ Rails/I18nLocaleAssignment: - 'spec/helpers/application_helper_spec.rb' - 'spec/requests/localization_spec.rb' -# Offense count: 6 Rails/I18nLocaleTexts: Exclude: - 'lib/tasks/mastodon.rake' - 'spec/helpers/flashes_helper_spec.rb' -# Offense count: 8 -# This cop supports unsafe autocorrection (--autocorrect-all). -Rails/IgnoredColumnsAssignment: - Exclude: - - 'app/models/account.rb' - - 'app/models/account_stat.rb' - - 'app/models/admin/action_log.rb' - - 'app/models/custom_filter.rb' - - 'app/models/email_domain_block.rb' - - 'app/models/report.rb' - - 'app/models/status_edit.rb' - - 'app/models/user.rb' - -# Offense count: 25 # Configuration parameters: IgnoreScopes, Include. # Include: app/models/**/*.rb Rails/InverseOf: @@ -1721,20 +1445,15 @@ Rails/InverseOf: - 'app/models/instance.rb' - 'app/models/notification.rb' - 'app/models/status.rb' - - 'app/models/user_ip.rb' -# Offense count: 13 # Configuration parameters: Include. # Include: app/controllers/**/*.rb, app/mailers/**/*.rb Rails/LexicallyScopedActionFilter: Exclude: - - 'app/controllers/admin/domain_blocks_controller.rb' - - 'app/controllers/admin/email_domain_blocks_controller.rb' - 'app/controllers/auth/passwords_controller.rb' - 'app/controllers/auth/registrations_controller.rb' - 'app/controllers/auth/sessions_controller.rb' -# Offense count: 18 # This cop supports unsafe autocorrection (--autocorrect-all). Rails/NegateInclude: Exclude: @@ -1754,7 +1473,6 @@ Rails/NegateInclude: - 'app/workers/web/push_notification_worker.rb' - 'lib/paperclip/color_extractor.rb' -# Offense count: 2 # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: Include. # Include: app/**/*.rb, config/**/*.rb, db/**/*.rb, lib/**/*.rb @@ -1762,7 +1480,16 @@ Rails/Output: Exclude: - 'lib/mastodon/ip_blocks_cli.rb' -# Offense count: 9 +Rails/OutputSafety: + Exclude: + - 'config/initializers/simple_form.rb' + +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: NotNilAndNotEmpty, NotBlank, UnlessBlank. +Rails/Present: + Exclude: + - 'config/initializers/content_security_policy.rb' + # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: Include. # Include: **/Rakefile, **/*.rake @@ -1775,7 +1502,15 @@ Rails/RakeEnvironment: - 'lib/tasks/repo.rake' - 'lib/tasks/statistics.rake' -# Offense count: 29 +# This cop supports unsafe autocorrection (--autocorrect-all). +# Configuration parameters: Include. +# Include: spec/controllers/**/*.rb, spec/requests/**/*.rb, test/controllers/**/*.rb, test/integration/**/*.rb +Rails/ResponseParsedBody: + Exclude: + - 'spec/controllers/follower_accounts_controller_spec.rb' + - 'spec/controllers/following_accounts_controller_spec.rb' + - 'spec/controllers/settings/two_factor_authentication/webauthn_credentials_controller_spec.rb' + # Configuration parameters: Include. # Include: db/**/*.rb Rails/ReversibleMigration: @@ -1794,7 +1529,6 @@ Rails/ReversibleMigration: - 'db/migrate/20180617162849_remove_unused_indexes.rb' - 'db/migrate/20220827195229_change_canonical_email_blocks_nullable.rb' -# Offense count: 141 # Configuration parameters: ForbiddenMethods, AllowedMethods. # ForbiddenMethods: decrement!, decrement_counter, increment!, increment_counter, insert, insert!, insert_all, insert_all!, toggle!, touch, touch_all, update_all, update_attribute, update_column, update_columns, update_counters, upsert, upsert_all Rails/SkipsModelValidations: @@ -1848,7 +1582,6 @@ Rails/SkipsModelValidations: - 'spec/services/follow_service_spec.rb' - 'spec/services/update_account_service_spec.rb' -# Offense count: 11 # This cop supports unsafe autocorrection (--autocorrect-all). Rails/SquishedSQLHeredocs: Exclude: @@ -1858,7 +1591,6 @@ Rails/SquishedSQLHeredocs: - 'lib/mastodon/snowflake.rb' - 'lib/tasks/tests.rake' -# Offense count: 7 Rails/TransactionExitStatement: Exclude: - 'app/lib/activitypub/activity/announce.rb' @@ -1866,7 +1598,6 @@ Rails/TransactionExitStatement: - 'app/lib/activitypub/activity/delete.rb' - 'app/services/activitypub/process_account_service.rb' -# Offense count: 4 # Configuration parameters: Include. # Include: app/models/**/*.rb Rails/UniqueValidationWithoutIndex: @@ -1876,7 +1607,6 @@ Rails/UniqueValidationWithoutIndex: - 'app/models/identity.rb' - 'app/models/webauthn_credential.rb' -# Offense count: 19 # Configuration parameters: Include. # Include: app/models/**/*.rb Rails/UnusedIgnoredColumns: @@ -1890,7 +1620,6 @@ Rails/UnusedIgnoredColumns: - 'app/models/status_edit.rb' - 'app/models/user.rb' -# Offense count: 61 # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: EnforcedStyle. # SupportedStyles: exists, where @@ -1930,24 +1659,18 @@ Rails/WhereExists: - 'spec/services/purge_domain_service_spec.rb' - 'spec/services/unallow_domain_service_spec.rb' -# Offense count: 5 +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: AllowOnConstant, AllowOnSelfClass. +Style/CaseEquality: + Exclude: + - 'config/initializers/trusted_proxies.rb' + # This cop supports unsafe autocorrection (--autocorrect-all). +# Configuration parameters: MinBranchesCount. Style/CaseLikeIf: Exclude: - - 'app/controllers/authorize_interactions_controller.rb' - 'app/controllers/concerns/signature_verification.rb' - - 'app/helpers/jsonld_helper.rb' - - 'app/models/account.rb' - - 'app/services/resolve_url_service.rb' -# Offense count: 445 -# This cop supports unsafe autocorrection (--autocorrect-all). -# Configuration parameters: EnforcedStyle. -# SupportedStyles: nested, compact -Style/ClassAndModuleChildren: - Enabled: false - -# Offense count: 2 # This cop supports safe autocorrection (--autocorrect). # Configuration parameters: AllowedMethods, AllowedPatterns. # AllowedMethods: ==, equal?, eql? @@ -1956,24 +1679,20 @@ Style/ClassEqualityComparison: - 'app/helpers/jsonld_helper.rb' - 'app/serializers/activitypub/outbox_serializer.rb' -# Offense count: 7 +Style/ClassVars: + Exclude: + - 'config/initializers/devise.rb' + Style/CombinableLoops: Exclude: - 'app/models/form/custom_emoji_batch.rb' - 'app/models/form/ip_block_batch.rb' -# Offense count: 5 # This cop supports unsafe autocorrection (--autocorrect-all). Style/ConcatArrayLiterals: Exclude: - 'app/lib/feed_manager.rb' -# Offense count: 1433 -# Configuration parameters: AllowedConstants. -Style/Documentation: - Enabled: false - -# Offense count: 10 # This cop supports safe autocorrection (--autocorrect). # Configuration parameters: AllowedVars. Style/FetchEnvVar: @@ -1981,29 +1700,444 @@ Style/FetchEnvVar: - 'app/helpers/application_helper.rb' - 'app/lib/redis_configuration.rb' - 'app/lib/translation_service.rb' + - 'config/environments/development.rb' + - 'config/environments/production.rb' + - 'config/initializers/2_whitelist_mode.rb' + - 'config/initializers/blacklists.rb' + - 'config/initializers/cache_buster.rb' + - 'config/initializers/content_security_policy.rb' + - 'config/initializers/devise.rb' + - 'config/initializers/omniauth.rb' + - 'config/initializers/paperclip.rb' + - 'config/initializers/vapid.rb' - 'lib/mastodon/premailer_webpack_strategy.rb' - 'lib/mastodon/redis_config.rb' - 'lib/tasks/repo.rake' - 'spec/features/profile_spec.rb' -# Offense count: 15 # This cop supports safe autocorrection (--autocorrect). # Configuration parameters: EnforcedStyle, MaxUnannotatedPlaceholdersAllowed, AllowedMethods, AllowedPatterns. # SupportedStyles: annotated, template, unannotated +# AllowedMethods: redirect Style/FormatStringToken: Exclude: - 'app/models/privacy_policy.rb' + - 'config/initializers/devise.rb' - 'lib/mastodon/maintenance_cli.rb' - 'lib/paperclip/color_extractor.rb' -# Offense count: 713 # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: EnforcedStyle. # SupportedStyles: always, always_true, never Style/FrozenStringLiteralComment: - Enabled: false + Exclude: + - 'app/views/accounts/show.rss.ruby' + - 'app/views/tags/show.rss.ruby' + - 'app/views/well_known/host_meta/show.xml.ruby' + - 'config/application.rb' + - 'config/boot.rb' + - 'config/environment.rb' + - 'config/environments/development.rb' + - 'config/environments/production.rb' + - 'config/environments/test.rb' + - 'config/initializers/0_post_deployment_migrations.rb' + - 'config/initializers/active_model_serializers.rb' + - 'config/initializers/application_controller_renderer.rb' + - 'config/initializers/assets.rb' + - 'config/initializers/backtrace_silencers.rb' + - 'config/initializers/cache_logging.rb' + - 'config/initializers/chewy.rb' + - 'config/initializers/content_security_policy.rb' + - 'config/initializers/cookies_serializer.rb' + - 'config/initializers/cors.rb' + - 'config/initializers/devise.rb' + - 'config/initializers/doorkeeper.rb' + - 'config/initializers/fast_blank.rb' + - 'config/initializers/ffmpeg.rb' + - 'config/initializers/filter_parameter_logging.rb' + - 'config/initializers/http_client_proxy.rb' + - 'config/initializers/httplog.rb' + - 'config/initializers/inflections.rb' + - 'config/initializers/mail_delivery_job.rb' + - 'config/initializers/makara.rb' + - 'config/initializers/mime_types.rb' + - 'config/initializers/oj.rb' + - 'config/initializers/omniauth.rb' + - 'config/initializers/open_uri_redirection.rb' + - 'config/initializers/permissions_policy.rb' + - 'config/initializers/pghero.rb' + - 'config/initializers/preload_link_headers.rb' + - 'config/initializers/premailer_rails.rb' + - 'config/initializers/rack_attack_logging.rb' + - 'config/initializers/redis.rb' + - 'config/initializers/session_store.rb' + - 'config/initializers/simple_form.rb' + - 'config/initializers/stoplight.rb' + - 'config/initializers/trusted_proxies.rb' + - 'config/initializers/twitter_regex.rb' + - 'config/initializers/webauthn.rb' + - 'config/initializers/wrap_parameters.rb' + - 'config/locales/sr-Latn.rb' + - 'config/locales/sr.rb' + - 'config/puma.rb' + - 'db/migrate/20160220174730_create_accounts.rb' + - 'db/migrate/20160220211917_create_statuses.rb' + - 'db/migrate/20160221003140_create_users.rb' + - 'db/migrate/20160221003621_create_follows.rb' + - 'db/migrate/20160222122600_create_stream_entries.rb' + - 'db/migrate/20160222143943_add_profile_fields_to_accounts.rb' + - 'db/migrate/20160223162837_add_metadata_to_statuses.rb' + - 'db/migrate/20160223164502_make_uris_nullable_in_statuses.rb' + - 'db/migrate/20160223165723_add_url_to_statuses.rb' + - 'db/migrate/20160223165855_add_url_to_accounts.rb' + - 'db/migrate/20160223171800_create_favourites.rb' + - 'db/migrate/20160224223247_create_mentions.rb' + - 'db/migrate/20160227230233_add_attachment_avatar_to_accounts.rb' + - 'db/migrate/20160305115639_add_devise_to_users.rb' + - 'db/migrate/20160306172223_create_doorkeeper_tables.rb' + - 'db/migrate/20160312193225_add_attachment_header_to_accounts.rb' + - 'db/migrate/20160314164231_add_owner_to_application.rb' + - 'db/migrate/20160316103650_add_missing_indices.rb' + - 'db/migrate/20160322193748_add_avatar_remote_url_to_accounts.rb' + - 'db/migrate/20160325130944_add_admin_to_users.rb' + - 'db/migrate/20160826155805_add_superapp_to_oauth_applications.rb' + - 'db/migrate/20160905150353_create_media_attachments.rb' + - 'db/migrate/20160919221059_add_subscription_expires_at_to_accounts.rb' + - 'db/migrate/20160920003904_remove_verify_token_from_accounts.rb' + - 'db/migrate/20160926213048_remove_owner_from_application.rb' + - 'db/migrate/20161003142332_add_confirmable_to_users.rb' + - 'db/migrate/20161003145426_create_blocks.rb' + - 'db/migrate/20161006213403_rails_settings_migration.rb' + - 'db/migrate/20161009120834_create_domain_blocks.rb' + - 'db/migrate/20161027172456_add_silenced_to_accounts.rb' + - 'db/migrate/20161104173623_create_tags.rb' + - 'db/migrate/20161105130633_create_statuses_tags_join_table.rb' + - 'db/migrate/20161116162355_add_locale_to_users.rb' + - 'db/migrate/20161119211120_create_notifications.rb' + - 'db/migrate/20161122163057_remove_unneeded_indexes.rb' + - 'db/migrate/20161123093447_add_sensitive_to_statuses.rb' + - 'db/migrate/20161128103007_create_subscriptions.rb' + - 'db/migrate/20161130142058_add_last_successful_delivery_at_to_subscriptions.rb' + - 'db/migrate/20161130185319_add_visibility_to_statuses.rb' + - 'db/migrate/20161202132159_add_in_reply_to_account_id_to_statuses.rb' + - 'db/migrate/20161203164520_add_from_account_id_to_notifications.rb' + - 'db/migrate/20161205214545_add_suspended_to_accounts.rb' + - 'db/migrate/20161221152630_add_hidden_to_stream_entries.rb' + - 'db/migrate/20161222201034_add_locked_to_accounts.rb' + - 'db/migrate/20161222204147_create_follow_requests.rb' + - 'db/migrate/20170105224407_add_shortcode_to_media_attachments.rb' + - 'db/migrate/20170109120109_create_web_settings.rb' + - 'db/migrate/20170112154826_migrate_settings.rb' + - 'db/migrate/20170114194937_add_application_to_statuses.rb' + - 'db/migrate/20170114203041_add_website_to_oauth_application.rb' + - 'db/migrate/20170119214911_create_preview_cards.rb' + - 'db/migrate/20170123162658_add_severity_to_domain_blocks.rb' + - 'db/migrate/20170123203248_add_reject_media_to_domain_blocks.rb' + - 'db/migrate/20170125145934_add_spoiler_text_to_statuses.rb' + - 'db/migrate/20170127165745_add_devise_two_factor_to_users.rb' + - 'db/migrate/20170205175257_remove_devices.rb' + - 'db/migrate/20170209184350_add_reply_to_statuses.rb' + - 'db/migrate/20170214110202_create_reports.rb' + - 'db/migrate/20170217012631_add_reblog_of_id_foreign_key_to_statuses.rb' + - 'db/migrate/20170301222600_create_mutes.rb' + - 'db/migrate/20170303212857_add_last_emailed_at_to_users.rb' + - 'db/migrate/20170304202101_add_type_to_media_attachments.rb' + - 'db/migrate/20170317193015_add_search_index_to_accounts.rb' + - 'db/migrate/20170318214217_add_header_remote_url_to_accounts.rb' + - 'db/migrate/20170322021028_add_lowercase_index_to_accounts.rb' + - 'db/migrate/20170322143850_change_primary_key_to_bigint_on_statuses.rb' + - 'db/migrate/20170322162804_add_search_index_to_tags.rb' + - 'db/migrate/20170330021336_add_counter_caches.rb' + - 'db/migrate/20170330163835_create_imports.rb' + - 'db/migrate/20170330164118_add_attachment_data_to_imports.rb' + - 'db/migrate/20170403172249_add_action_taken_by_account_id_to_reports.rb' + - 'db/migrate/20170405112956_add_index_on_mentions_status_id.rb' + - 'db/migrate/20170406215816_add_notifications_and_favourites_indices.rb' + - 'db/migrate/20170409170753_add_last_webfingered_at_to_accounts.rb' + - 'db/migrate/20170414080609_add_devise_two_factor_backupable_to_users.rb' + - 'db/migrate/20170414132105_add_language_to_statuses.rb' + - 'db/migrate/20170418160728_add_indexes_to_reports_for_accounts.rb' + - 'db/migrate/20170423005413_add_allowed_languages_to_user.rb' + - 'db/migrate/20170424003227_create_account_domain_blocks.rb' + - 'db/migrate/20170424112722_add_status_id_index_to_statuses_tags.rb' + - 'db/migrate/20170425131920_add_media_attachment_meta.rb' + - 'db/migrate/20170425202925_add_oembed_to_preview_cards.rb' + - 'db/migrate/20170427011934_re_add_owner_to_application.rb' + - 'db/migrate/20170506235850_create_conversations.rb' + - 'db/migrate/20170507000211_add_conversation_id_to_statuses.rb' + - 'db/migrate/20170507141759_optimize_index_subscriptions.rb' + - 'db/migrate/20170508230434_create_conversation_mutes.rb' + - 'db/migrate/20170516072309_add_index_accounts_on_uri.rb' + - 'db/migrate/20170520145338_change_language_filter_to_opt_out.rb' + - 'db/migrate/20170601210557_add_index_on_media_attachments_account_id.rb' + - 'db/migrate/20170604144747_add_foreign_keys_for_accounts.rb' + - 'db/migrate/20170606113804_change_tag_search_index_to_btree.rb' + - 'db/migrate/20170609145826_remove_default_language_from_statuses.rb' + - 'db/migrate/20170610000000_add_statuses_index_on_account_id_id.rb' + - 'db/migrate/20170623152212_create_session_activations.rb' + - 'db/migrate/20170624134742_add_description_to_session_activations.rb' + - 'db/migrate/20170625140443_add_access_token_id_to_session_activations.rb' + - 'db/migrate/20170711225116_fix_null_booleans.rb' + - 'db/migrate/20170713112503_make_tag_search_case_insensitive.rb' + - 'db/migrate/20170713175513_create_web_push_subscriptions.rb' + - 'db/migrate/20170713190709_add_web_push_subscription_to_session_activations.rb' + - 'db/migrate/20170714184731_add_domain_to_subscriptions.rb' + - 'db/migrate/20170716191202_add_hide_notifications_to_mute.rb' + - 'db/migrate/20170718211102_add_activitypub_to_accounts.rb' + - 'db/migrate/20170720000000_add_index_favourites_on_account_id_and_id.rb' + - 'db/migrate/20170823162448_create_status_pins.rb' + - 'db/migrate/20170824103029_add_timestamps_to_status_pins.rb' + - 'db/migrate/20170829215220_remove_status_pins_account_index.rb' + - 'db/migrate/20170901141119_truncate_preview_cards.rb' + - 'db/migrate/20170901142658_create_join_table_preview_cards_statuses.rb' + - 'db/migrate/20170905044538_add_index_id_account_id_activity_type_on_notifications.rb' + - 'db/migrate/20170905165803_add_local_to_statuses.rb' + - 'db/migrate/20170913000752_create_site_uploads.rb' + - 'db/migrate/20170917153509_create_custom_emojis.rb' + - 'db/migrate/20170918125918_ids_to_bigints.rb' + - 'db/migrate/20170920024819_status_ids_to_timestamp_ids.rb' + - 'db/migrate/20170920032311_fix_reblogs_in_feeds.rb' + - 'db/migrate/20170924022025_ids_to_bigints2.rb' + - 'db/migrate/20170927215609_add_description_to_media_attachments.rb' + - 'db/migrate/20170928082043_create_email_domain_blocks.rb' + - 'db/migrate/20171005102658_create_account_moderation_notes.rb' + - 'db/migrate/20171005171936_add_disabled_to_custom_emojis.rb' + - 'db/migrate/20171006142024_add_uri_to_custom_emojis.rb' + - 'db/migrate/20171010023049_add_foreign_key_to_account_moderation_notes.rb' + - 'db/migrate/20171010025614_change_accounts_nonnullable_in_account_moderation_notes.rb' + - 'db/migrate/20171020084748_add_visible_in_picker_to_custom_emoji.rb' + - 'db/migrate/20171028221157_add_reblogs_to_follows.rb' + - 'db/migrate/20171107143332_add_memorial_to_accounts.rb' + - 'db/migrate/20171107143624_add_disabled_to_users.rb' + - 'db/migrate/20171109012327_add_moderator_to_accounts.rb' + - 'db/migrate/20171114080328_add_index_domain_to_email_domain_blocks.rb' + - 'db/migrate/20171114231651_create_lists.rb' + - 'db/migrate/20171116161857_create_list_accounts.rb' + - 'db/migrate/20171118012443_add_moved_to_account_id_to_accounts.rb' + - 'db/migrate/20171119172437_create_admin_action_logs.rb' + - 'db/migrate/20171122120436_add_index_account_and_reblog_of_id_to_statuses.rb' + - 'db/migrate/20171125024930_create_invites.rb' + - 'db/migrate/20171125031751_add_invite_id_to_users.rb' + - 'db/migrate/20171125185353_add_index_reblog_of_id_and_account_to_statuses.rb' + - 'db/migrate/20171125190735_remove_old_reblog_index_on_statuses.rb' + - 'db/migrate/20171129172043_add_index_on_stream_entries.rb' + - 'db/migrate/20171130000000_add_embed_url_to_preview_cards.rb' + - 'db/migrate/20171201000000_change_account_id_nonnullable_in_lists.rb' + - 'db/migrate/20171212195226_remove_duplicate_indexes_in_lists.rb' + - 'db/migrate/20171226094803_more_faster_index_on_notifications.rb' + - 'db/migrate/20180106000232_add_index_on_statuses_for_api_v1_accounts_account_id_statuses.rb' + - 'db/migrate/20180109143959_add_remember_token_to_users.rb' + - 'db/migrate/20180204034416_create_identities.rb' + - 'db/migrate/20180206000000_change_user_id_nonnullable.rb' + - 'db/migrate/20180211015820_create_backups.rb' + - 'db/migrate/20180304013859_add_featured_collection_url_to_accounts.rb' + - 'db/migrate/20180310000000_change_columns_in_notifications_nonnullable.rb' + - 'db/migrate/20180402031200_add_assigned_account_id_to_reports.rb' + - 'db/migrate/20180402040909_create_report_notes.rb' + - 'db/migrate/20180410204633_add_fields_to_accounts.rb' + - 'db/migrate/20180416210259_add_uri_to_relationships.rb' + - 'db/migrate/20180506221944_add_actor_type_to_accounts.rb' + - 'db/migrate/20180510214435_add_access_token_id_to_web_push_subscriptions.rb' + - 'db/migrate/20180510230049_migrate_web_push_subscriptions.rb' + - 'db/migrate/20180528141303_fix_accounts_unique_index.rb' + - 'db/migrate/20180608213548_reject_following_blocked_users.rb' + - 'db/migrate/20180609104432_migrate_web_push_subscriptions2.rb' + - 'db/migrate/20180615122121_add_autofollow_to_invites.rb' + - 'db/migrate/20180616192031_add_chosen_languages_to_users.rb' + - 'db/migrate/20180617162849_remove_unused_indexes.rb' + - 'db/migrate/20180628181026_create_custom_filters.rb' + - 'db/migrate/20180707154237_add_whole_word_to_custom_filter.rb' + - 'db/migrate/20180711152640_create_relays.rb' + - 'db/migrate/20180808175627_create_account_pins.rb' + - 'db/migrate/20180812123222_change_relays_enabled.rb' + - 'db/migrate/20180812162710_create_status_stats.rb' + - 'db/migrate/20180812173710_copy_status_stats.rb' + - 'db/migrate/20180814171349_add_confidential_to_doorkeeper_application.rb' + - 'db/migrate/20180831171112_create_bookmarks.rb' + - 'db/migrate/20180929222014_create_account_conversations.rb' + - 'db/migrate/20181007025445_create_pghero_space_stats.rb' + - 'db/migrate/20181010141500_add_silent_to_mentions.rb' + - 'db/migrate/20181017170937_add_reject_reports_to_domain_blocks.rb' + - 'db/migrate/20181018205649_add_unread_to_account_conversations.rb' + - 'db/migrate/20181024224956_migrate_account_conversations.rb' + - 'db/migrate/20181026034033_remove_faux_remote_account_duplicates.rb' + - 'db/migrate/20181116165755_create_account_stats.rb' + - 'db/migrate/20181116173541_copy_account_stats.rb' + - 'db/migrate/20181127130500_identity_id_to_bigint.rb' + - 'db/migrate/20181127165847_add_show_replies_to_lists.rb' + - 'db/migrate/20181203003808_create_accounts_tags_join_table.rb' + - 'db/migrate/20181203021853_add_discoverable_to_accounts.rb' + - 'db/migrate/20181204193439_add_last_status_at_to_account_stats.rb' + - 'db/migrate/20181204215309_create_account_tag_stats.rb' + - 'db/migrate/20181207011115_downcase_custom_emoji_domains.rb' + - 'db/migrate/20181213184704_create_account_warnings.rb' + - 'db/migrate/20181213185533_create_account_warning_presets.rb' + - 'db/migrate/20181219235220_add_created_by_application_id_to_users.rb' + - 'db/migrate/20181226021420_add_also_known_as_to_accounts.rb' + - 'db/migrate/20190103124649_create_scheduled_statuses.rb' + - 'db/migrate/20190103124754_add_scheduled_status_id_to_media_attachments.rb' + - 'db/migrate/20190117114553_create_tombstones.rb' + - 'db/migrate/20190201012802_add_overwrite_to_imports.rb' + - 'db/migrate/20190203180359_create_featured_tags.rb' + - 'db/migrate/20190225031541_create_polls.rb' + - 'db/migrate/20190225031625_create_poll_votes.rb' + - 'db/migrate/20190226003449_add_poll_id_to_statuses.rb' + - 'db/migrate/20190304152020_add_uri_to_poll_votes.rb' + - 'db/migrate/20190306145741_add_lock_version_to_polls.rb' + - 'db/migrate/20190307234537_add_approved_to_users.rb' + - 'db/migrate/20190314181829_migrate_open_registrations_setting.rb' + - 'db/migrate/20190316190352_create_account_identity_proofs.rb' + - 'db/migrate/20190317135723_add_uri_to_reports.rb' + - 'db/migrate/20190403141604_add_comment_to_invites.rb' + - 'db/migrate/20190409054914_create_user_invite_requests.rb' + - 'db/migrate/20190420025523_add_blurhash_to_media_attachments.rb' + - 'db/migrate/20190509164208_add_by_moderator_to_tombstone.rb' + - 'db/migrate/20190511134027_add_silenced_at_suspended_at_to_accounts.rb' + - 'db/migrate/20190529143559_preserve_old_layout_for_existing_users.rb' + - 'db/migrate/20190627222225_create_custom_emoji_categories.rb' + - 'db/migrate/20190627222826_add_category_id_to_custom_emojis.rb' + - 'db/migrate/20190701022101_add_trust_level_to_accounts.rb' + - 'db/migrate/20190705002136_create_domain_allows.rb' + - 'db/migrate/20190715164535_add_instance_actor.rb' + - 'db/migrate/20190726175042_add_case_insensitive_index_to_tags.rb' + - 'db/migrate/20190729185330_add_score_to_tags.rb' + - 'db/migrate/20190805123746_add_capabilities_to_tags.rb' + - 'db/migrate/20190807135426_add_comments_to_domain_blocks.rb' + - 'db/migrate/20190815225426_add_last_status_at_to_tags.rb' + - 'db/migrate/20190819134503_add_deleted_at_to_statuses.rb' + - 'db/migrate/20190820003045_update_statuses_index.rb' + - 'db/migrate/20190823221802_add_local_index_to_statuses.rb' + - 'db/migrate/20190901035623_add_max_score_to_tags.rb' + - 'db/migrate/20190904222339_create_markers.rb' + - 'db/migrate/20190914202517_create_account_migrations.rb' + - 'db/migrate/20190915194355_create_account_aliases.rb' + - 'db/migrate/20190927232842_add_voters_count_to_polls.rb' + - 'db/migrate/20191001213028_add_lock_version_to_account_stats.rb' + - 'db/migrate/20191007013357_update_pt_locales.rb' + - 'db/migrate/20191031163205_change_list_account_follow_nullable.rb' + - 'db/migrate/20191212003415_increase_backup_size.rb' + - 'db/migrate/20191212163405_add_hide_collections_to_accounts.rb' + - 'db/migrate/20191218153258_create_announcements.rb' + - 'db/migrate/20200113125135_create_announcement_mutes.rb' + - 'db/migrate/20200114113335_create_announcement_reactions.rb' + - 'db/migrate/20200119112504_add_public_index_to_statuses.rb' + - 'db/migrate/20200126203551_add_published_at_to_announcements.rb' + - 'db/migrate/20200306035625_add_processing_to_media_attachments.rb' + - 'db/migrate/20200309150742_add_forwarded_to_reports.rb' + - 'db/migrate/20200312144258_add_title_to_account_warning_presets.rb' + - 'db/migrate/20200312162302_add_status_ids_to_announcements.rb' + - 'db/migrate/20200312185443_add_parent_id_to_email_domain_blocks.rb' + - 'db/migrate/20200317021758_add_expires_at_to_mutes.rb' + - 'db/migrate/20200407201300_create_unavailable_domains.rb' + - 'db/migrate/20200407202420_migrate_unavailable_inboxes.rb' + - 'db/migrate/20200417125749_add_storage_schema_version.rb' + - 'db/migrate/20200508212852_reset_unique_jobs_locks.rb' + - 'db/migrate/20200510110808_reset_web_app_secret.rb' + - 'db/migrate/20200510181721_remove_duplicated_indexes_pghero.rb' + - 'db/migrate/20200516180352_create_devices.rb' + - 'db/migrate/20200516183822_create_one_time_keys.rb' + - 'db/migrate/20200518083523_create_encrypted_messages.rb' + - 'db/migrate/20200521180606_encrypted_message_ids_to_timestamp_ids.rb' + - 'db/migrate/20200529214050_add_devices_url_to_accounts.rb' + - 'db/migrate/20200601222558_create_system_keys.rb' + - 'db/migrate/20200605155027_add_blurhash_to_preview_cards.rb' + - 'db/migrate/20200608113046_add_sign_in_token_to_users.rb' + - 'db/migrate/20200614002136_add_sensitized_to_accounts.rb' + - 'db/migrate/20200620164023_add_fixed_lowercase_index_to_accounts.rb' + - 'db/migrate/20200622213645_media_attachment_ids_to_timestamp_ids.rb' + - 'db/migrate/20200627125810_add_thumbnail_columns_to_media_attachments.rb' + - 'db/migrate/20200628133322_create_account_notes.rb' + - 'db/migrate/20200630190240_create_webauthn_credentials.rb' + - 'db/migrate/20200630190544_add_webauthn_id_to_users.rb' + - 'db/migrate/20200908193330_create_account_deletion_requests.rb' + - 'db/migrate/20200917192924_add_notify_to_follows.rb' + - 'db/migrate/20200917193034_add_type_to_notifications.rb' + - 'db/migrate/20200917222316_add_index_notifications_on_type.rb' + - 'db/migrate/20201008202037_create_ip_blocks.rb' + - 'db/migrate/20201008220312_add_sign_up_ip_to_users.rb' + - 'db/migrate/20201017233919_add_suspension_origin_to_accounts.rb' + - 'db/migrate/20201206004238_create_instances.rb' + - 'db/migrate/20201218054746_add_obfuscate_to_domain_blocks.rb' + - 'db/migrate/20210221045109_create_rules.rb' + - 'db/migrate/20210306164523_account_ids_to_timestamp_ids.rb' + - 'db/migrate/20210322164601_create_account_summaries.rb' + - 'db/migrate/20210323114347_create_follow_recommendations.rb' + - 'db/migrate/20210324171613_create_follow_recommendation_suppressions.rb' + - 'db/migrate/20210416200740_create_canonical_email_blocks.rb' + - 'db/migrate/20210421121431_add_case_insensitive_btree_index_to_tags.rb' + - 'db/migrate/20210425135952_add_index_on_media_attachments_account_id_status_id.rb' + - 'db/migrate/20210505174616_update_follow_recommendations_to_version_2.rb' + - 'db/migrate/20210609202149_create_login_activities.rb' + - 'db/migrate/20210616214526_create_user_ips.rb' + - 'db/migrate/20210621221010_add_skip_sign_in_token_to_users.rb' + - 'db/migrate/20210630000137_fix_canonical_email_blocks_foreign_key.rb' + - 'db/migrate/20210722120340_create_account_statuses_cleanup_policies.rb' + - 'db/migrate/20210904215403_add_edited_at_to_statuses.rb' + - 'db/migrate/20210908220918_create_status_edits.rb' + - 'db/migrate/20211031031021_create_preview_card_providers.rb' + - 'db/migrate/20211112011713_add_language_to_preview_cards.rb' + - 'db/migrate/20211115032527_add_trendable_to_preview_cards.rb' + - 'db/migrate/20211123212714_add_link_type_to_preview_cards.rb' + - 'db/migrate/20211213040746_update_account_summaries_to_version_2.rb' + - 'db/migrate/20211231080958_add_category_to_reports.rb' + - 'db/migrate/20220105163928_remove_mentions_status_id_index.rb' + - 'db/migrate/20220115125126_add_report_id_to_account_warnings.rb' + - 'db/migrate/20220115125341_fix_account_warning_actions.rb' + - 'db/migrate/20220116202951_add_deleted_at_index_on_statuses.rb' + - 'db/migrate/20220124141035_create_appeals.rb' + - 'db/migrate/20220202200743_add_trendable_to_accounts.rb' + - 'db/migrate/20220202200926_add_trendable_to_statuses.rb' + - 'db/migrate/20220210153119_add_overruled_at_to_account_warnings.rb' + - 'db/migrate/20220224010024_add_ips_to_email_domain_blocks.rb' + - 'db/migrate/20220227041951_add_last_used_at_to_oauth_access_tokens.rb' + - 'db/migrate/20220302232632_add_ordered_media_attachment_ids_to_statuses.rb' + - 'db/migrate/20220303000827_add_ordered_media_attachment_ids_to_status_edits.rb' + - 'db/migrate/20220304195405_migrate_hide_network_preference.rb' + - 'db/migrate/20220307094650_fix_featured_tags_constraints.rb' + - 'db/migrate/20220309213005_fix_reblog_deleted_at.rb' + - 'db/migrate/20220316233212_update_kurdish_locales.rb' + - 'db/migrate/20220428112511_add_index_statuses_on_account_id.rb' + - 'db/migrate/20220428112727_add_index_statuses_pins_on_status_id.rb' + - 'db/migrate/20220428114454_add_index_reports_on_assigned_account_id.rb' + - 'db/migrate/20220428114902_add_index_reports_on_action_taken_by_account_id.rb' + - 'db/migrate/20220606044941_create_webhooks.rb' + - 'db/migrate/20220611210335_create_user_roles.rb' + - 'db/migrate/20220611212541_add_role_id_to_users.rb' + - 'db/migrate/20220710102457_add_display_name_to_tags.rb' + - 'db/migrate/20220714171049_create_tag_follows.rb' + - 'db/migrate/20220824164433_add_human_identifier_to_admin_action_logs.rb' + - 'db/migrate/20220824233535_create_status_trends.rb' + - 'db/migrate/20220827195229_change_canonical_email_blocks_nullable.rb' + - 'db/migrate/20220829192633_add_languages_to_follows.rb' + - 'db/migrate/20220829192658_add_languages_to_follow_requests.rb' + - 'db/migrate/20221006061337_create_preview_card_trends.rb' + - 'db/migrate/20221012181003_add_blurhash_to_site_uploads.rb' + - 'db/migrate/20221021055441_add_index_featured_tags_on_account_id_and_tag_id.rb' + - 'db/migrate/20221025171544_add_index_ip_blocks_on_ip.rb' + - 'db/migrate/20221104133904_add_name_to_featured_tags.rb' + - 'db/post_migrate/20190519130537_remove_boosts_widening_audience.rb' + - 'db/post_migrate/20210308133107_remove_subscription_expires_at_from_accounts.rb' + - 'db/post_migrate/20220118183123_remove_rememberable_from_users.rb' + - 'db/seeds/01_web_app.rb' + - 'db/seeds/02_instance_actor.rb' + - 'db/seeds/03_roles.rb' + - 'db/seeds/04_admin.rb' + - 'lib/rails/engine_extensions.rb' + - 'lib/tasks/branding.rake' + - 'spec/fabricators_spec.rb' + +# This cop supports unsafe autocorrection (--autocorrect-all). +Style/GlobalStdStream: + Exclude: + - 'config/boot.rb' + - 'config/environments/development.rb' + - 'config/environments/production.rb' + +# Configuration parameters: AllowedVariables. +Style/GlobalVars: + Exclude: + - 'config/initializers/statsd.rb' -# Offense count: 34 # This cop supports safe autocorrection (--autocorrect). # Configuration parameters: MinBodyLength, AllowConsecutiveConditionals. Style/GuardClause: @@ -2030,6 +2164,7 @@ Style/GuardClause: - 'app/workers/redownload_header_worker.rb' - 'app/workers/redownload_media_worker.rb' - 'app/workers/remote_account_refresh_worker.rb' + - 'config/initializers/devise.rb' - 'db/migrate/20170901141119_truncate_preview_cards.rb' - 'db/post_migrate/20220704024901_migrate_settings_to_user_roles.rb' - 'lib/devise/two_factor_ldap_authenticatable.rb' @@ -2040,7 +2175,6 @@ Style/GuardClause: - 'lib/paperclip/attachment_extensions.rb' - 'lib/tasks/repo.rake' -# Offense count: 13 # This cop supports safe autocorrection (--autocorrect). # Configuration parameters: EnforcedStyle. # SupportedStyles: braces, no_braces @@ -2056,7 +2190,6 @@ Style/HashAsLastArrayItem: - 'app/services/notify_service.rb' - 'db/migrate/20181024224956_migrate_account_conversations.rb' -# Offense count: 12 # This cop supports safe autocorrection (--autocorrect). # Configuration parameters: EnforcedStyle, EnforcedShorthandSyntax, UseHashRocketsWithSymbolValues, PreferHashRocketsForNonAlnumEndingSymbols. # SupportedStyles: ruby19, hash_rockets, no_mixed_keys, ruby19_no_mixed_keys @@ -2070,29 +2203,54 @@ Style/HashSyntax: - 'spec/controllers/admin/statuses_controller_spec.rb' - 'spec/controllers/concerns/signature_verification_spec.rb' -# Offense count: 3 # This cop supports unsafe autocorrection (--autocorrect-all). Style/HashTransformValues: Exclude: - 'app/serializers/rest/web_push_subscription_serializer.rb' - 'app/services/import_service.rb' -# Offense count: 3 +# This cop supports safe autocorrection (--autocorrect). +Style/IfUnlessModifier: + Exclude: + - 'config/environments/production.rb' + - 'config/initializers/devise.rb' + - 'config/initializers/ffmpeg.rb' + # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: InverseMethods, InverseBlocks. Style/InverseMethods: Exclude: + - 'app/controllers/concerns/signature_verification.rb' + - 'app/helpers/jsonld_helper.rb' + - 'app/lib/activitypub/activity/create.rb' + - 'app/lib/activitypub/activity/move.rb' + - 'app/lib/feed_manager.rb' + - 'app/lib/link_details_extractor.rb' + - 'app/models/concerns/attachmentable.rb' + - 'app/models/concerns/remotable.rb' - 'app/models/custom_filter.rb' + - 'app/models/webhook.rb' + - 'app/services/activitypub/process_status_update_service.rb' + - 'app/services/fetch_link_card_service.rb' + - 'app/services/search_service.rb' - 'app/services/update_account_service.rb' + - 'app/workers/web/push_notification_worker.rb' + - 'lib/paperclip/color_extractor.rb' - 'spec/controllers/activitypub/replies_controller_spec.rb' -# Offense count: 1 +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: EnforcedStyle. +# SupportedStyles: line_count_dependent, lambda, literal +Style/Lambda: + Exclude: + - 'config/initializers/simple_form.rb' + - 'config/routes.rb' + # This cop supports unsafe autocorrection (--autocorrect-all). Style/MapToHash: Exclude: - 'app/models/status.rb' -# Offense count: 17 # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: EnforcedStyle. # SupportedStyles: literals, strict @@ -2106,16 +2264,28 @@ Style/MutableConstant: - 'app/services/delete_account_service.rb' - 'app/services/fetch_link_card_service.rb' - 'app/services/resolve_url_service.rb' + - 'config/initializers/twitter_regex.rb' - 'lib/mastodon/snowflake.rb' - 'spec/controllers/api/base_controller_spec.rb' -# Offense count: 10 +# This cop supports safe autocorrection (--autocorrect). +Style/NilLambda: + Exclude: + - 'config/initializers/paperclip.rb' + +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: MinDigits, Strict, AllowedNumbers, AllowedPatterns. +Style/NumericLiterals: + Exclude: + - 'config/initializers/strong_migrations.rb' + # Configuration parameters: AllowedMethods. # AllowedMethods: respond_to_missing? Style/OptionalBooleanParameter: Exclude: - 'app/helpers/admin/account_moderation_notes_helper.rb' - 'app/helpers/jsonld_helper.rb' + - 'app/lib/admin/system_check/message.rb' - 'app/lib/request.rb' - 'app/lib/webfinger.rb' - 'app/services/block_domain_service.rb' @@ -2124,24 +2294,39 @@ Style/OptionalBooleanParameter: - 'app/workers/unfollow_follow_worker.rb' - 'lib/mastodon/redis_config.rb' -# Offense count: 1 +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: PreferredDelimiters. +Style/PercentLiteralDelimiters: + Exclude: + - 'config/deploy.rb' + - 'config/initializers/doorkeeper.rb' + # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: EnforcedStyle. # SupportedStyles: short, verbose Style/PreferredHashMethods: Exclude: - - 'spec/support/matchers/model/model_have_error_on_field.rb' + - 'config/initializers/paperclip.rb' -# Offense count: 5 -# This cop supports unsafe autocorrection (--autocorrect-all). -# Configuration parameters: Methods. -Style/RedundantArgument: +# This cop supports safe autocorrection (--autocorrect). +Style/RedundantConstantBase: Exclude: - - 'app/controllers/concerns/signature_verification.rb' - - 'app/helpers/application_helper.rb' - - 'lib/tasks/emojis.rake' + - 'config/environments/production.rb' + - 'config/initializers/sidekiq.rb' + - 'config/initializers/statsd.rb' + - 'config/locales/sr-Latn.rb' + - 'config/locales/sr.rb' + +# This cop supports unsafe autocorrection (--autocorrect-all). +# Configuration parameters: SafeForConstants. +Style/RedundantFetchBlock: + Exclude: + - 'config/initializers/1_hosts.rb' + - 'config/initializers/chewy.rb' + - 'config/initializers/devise.rb' + - 'config/initializers/paperclip.rb' + - 'config/puma.rb' -# Offense count: 16 # This cop supports safe autocorrection (--autocorrect). Style/RedundantRegexpCharacterClass: Exclude: @@ -2150,10 +2335,10 @@ Style/RedundantRegexpCharacterClass: - 'app/models/domain_allow.rb' - 'app/models/domain_block.rb' - 'app/services/fetch_oembed_service.rb' + - 'config/initializers/rack_attack.rb' - 'lib/tasks/emojis.rake' - 'lib/tasks/mastodon.rake' -# Offense count: 10 # This cop supports safe autocorrection (--autocorrect). Style/RedundantRegexpEscape: Exclude: @@ -2161,10 +2346,10 @@ Style/RedundantRegexpEscape: - 'app/models/account.rb' - 'app/models/tag.rb' - 'app/services/fetch_link_card_service.rb' + - 'config/initializers/twitter_regex.rb' - 'lib/paperclip/color_extractor.rb' - 'lib/tasks/mastodon.rake' -# Offense count: 19 # This cop supports safe autocorrection (--autocorrect). # Configuration parameters: EnforcedStyle, AllowInnerSlashes. # SupportedStyles: slashes, percent_r, mixed @@ -2183,10 +2368,12 @@ Style/RegexpLiteral: - 'app/services/backup_service.rb' - 'app/services/fetch_oembed_service.rb' - 'app/services/search_service.rb' + - 'config/initializers/rack_attack.rb' + - 'config/initializers/twitter_regex.rb' + - 'config/routes.rb' - 'lib/mastodon/premailer_webpack_strategy.rb' - 'lib/tasks/mastodon.rake' -# Offense count: 2 # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: ConvertCodeThatCanStartToReturnNil, AllowedMethods, MaxChainLength. # AllowedMethods: present?, blank?, presence, try, try! @@ -2195,7 +2382,6 @@ Style/SafeNavigation: - 'app/models/concerns/account_finder_concern.rb' - 'app/models/status.rb' -# Offense count: 5 # This cop supports safe autocorrection (--autocorrect). # Configuration parameters: AllowAsExpressionSeparator. Style/Semicolon: @@ -2204,7 +2390,6 @@ Style/Semicolon: - 'spec/validators/blacklisted_email_validator_spec.rb' - 'spec/workers/scheduler/accounts_statuses_cleanup_scheduler_spec.rb' -# Offense count: 2 # This cop supports safe autocorrection (--autocorrect). # Configuration parameters: EnforcedStyle. # SupportedStyles: only_raise, only_fail, semantic @@ -2213,19 +2398,16 @@ Style/SignalException: - 'lib/devise/two_factor_ldap_authenticatable.rb' - 'lib/devise/two_factor_pam_authenticatable.rb' -# Offense count: 3 # This cop supports unsafe autocorrection (--autocorrect-all). Style/SingleArgumentDig: Exclude: - 'lib/webpacker/manifest_extensions.rb' -# Offense count: 14 # This cop supports unsafe autocorrection (--autocorrect-all). Style/SlicingWithRange: Exclude: - 'app/lib/emoji_formatter.rb' - 'app/lib/text_formatter.rb' - - 'app/lib/toc_generator.rb' - 'app/models/account_alias.rb' - 'app/models/domain_block.rb' - 'app/models/email_domain_block.rb' @@ -2236,133 +2418,75 @@ Style/SlicingWithRange: - 'lib/mastodon/premailer_webpack_strategy.rb' - 'lib/tasks/repo.rake' -# Offense count: 272 # This cop supports safe autocorrection (--autocorrect). -# Configuration parameters: EnforcedStyle, MinSize. -# SupportedStyles: percent, brackets -Style/SymbolArray: +# Configuration parameters: EnforcedStyle. +# SupportedStyles: require_parentheses, require_no_parentheses +Style/StabbyLambdaParentheses: Exclude: - - 'app/controllers/accounts_controller.rb' - - 'app/controllers/activitypub/replies_controller.rb' - - 'app/controllers/admin/accounts_controller.rb' - - 'app/controllers/admin/announcements_controller.rb' - - 'app/controllers/admin/domain_blocks_controller.rb' - - 'app/controllers/admin/email_domain_blocks_controller.rb' - - 'app/controllers/admin/relationships_controller.rb' - - 'app/controllers/admin/relays_controller.rb' - - 'app/controllers/admin/roles_controller.rb' - - 'app/controllers/admin/rules_controller.rb' - - 'app/controllers/admin/statuses_controller.rb' - - 'app/controllers/admin/trends/statuses_controller.rb' - - 'app/controllers/admin/warning_presets_controller.rb' - - 'app/controllers/admin/webhooks_controller.rb' - - 'app/controllers/api/v1/accounts/credentials_controller.rb' - - 'app/controllers/api/v1/accounts_controller.rb' - - 'app/controllers/api/v1/admin/accounts_controller.rb' - - 'app/controllers/api/v1/admin/canonical_email_blocks_controller.rb' - - 'app/controllers/api/v1/admin/domain_allows_controller.rb' - - 'app/controllers/api/v1/admin/domain_blocks_controller.rb' - - 'app/controllers/api/v1/admin/email_domain_blocks_controller.rb' - - 'app/controllers/api/v1/admin/ip_blocks_controller.rb' - - 'app/controllers/api/v1/admin/reports_controller.rb' - - 'app/controllers/api/v1/crypto/deliveries_controller.rb' - - 'app/controllers/api/v1/crypto/keys/claims_controller.rb' - - 'app/controllers/api/v1/crypto/keys/uploads_controller.rb' - - 'app/controllers/api/v1/featured_tags_controller.rb' - - 'app/controllers/api/v1/filters_controller.rb' - - 'app/controllers/api/v1/lists_controller.rb' - - 'app/controllers/api/v1/notifications_controller.rb' - - 'app/controllers/api/v1/push/subscriptions_controller.rb' - - 'app/controllers/api/v1/scheduled_statuses_controller.rb' - - 'app/controllers/api/v1/statuses/reblogged_by_accounts_controller.rb' - - 'app/controllers/api/v1/statuses_controller.rb' - - 'app/controllers/api/v2/filters/keywords_controller.rb' - - 'app/controllers/api/v2/filters/statuses_controller.rb' - - 'app/controllers/api/v2/filters_controller.rb' - - 'app/controllers/api/web/push_subscriptions_controller.rb' - - 'app/controllers/application_controller.rb' - - 'app/controllers/auth/registrations_controller.rb' - - 'app/controllers/filters_controller.rb' - - 'app/controllers/settings/applications_controller.rb' - - 'app/controllers/settings/featured_tags_controller.rb' - - 'app/controllers/settings/profiles_controller.rb' - - 'app/controllers/settings/two_factor_authentication/webauthn_credentials_controller.rb' - - 'app/controllers/statuses_controller.rb' - - 'app/lib/feed_manager.rb' - - 'app/models/account.rb' - - 'app/models/account_filter.rb' - - 'app/models/admin/status_filter.rb' - - 'app/models/announcement.rb' - - 'app/models/concerns/ldap_authenticable.rb' - - 'app/models/concerns/status_threading_concern.rb' - - 'app/models/custom_filter.rb' - - 'app/models/domain_block.rb' - - 'app/models/import.rb' - - 'app/models/list.rb' - - 'app/models/media_attachment.rb' - - 'app/models/preview_card.rb' - - 'app/models/relay.rb' - - 'app/models/report.rb' - - 'app/models/site_upload.rb' - - 'app/models/status.rb' - - 'app/serializers/initial_state_serializer.rb' - - 'app/serializers/rest/notification_serializer.rb' - - 'db/migrate/20160220174730_create_accounts.rb' - - 'db/migrate/20160221003621_create_follows.rb' - - 'db/migrate/20160223171800_create_favourites.rb' - - 'db/migrate/20160224223247_create_mentions.rb' - - 'db/migrate/20160314164231_add_owner_to_application.rb' - - 'db/migrate/20160316103650_add_missing_indices.rb' - - 'db/migrate/20160926213048_remove_owner_from_application.rb' - - 'db/migrate/20161003145426_create_blocks.rb' - - 'db/migrate/20161006213403_rails_settings_migration.rb' - - 'db/migrate/20161105130633_create_statuses_tags_join_table.rb' - - 'db/migrate/20161119211120_create_notifications.rb' - - 'db/migrate/20161128103007_create_subscriptions.rb' - - 'db/migrate/20161222204147_create_follow_requests.rb' - - 'db/migrate/20170112154826_migrate_settings.rb' - - 'db/migrate/20170301222600_create_mutes.rb' - - 'db/migrate/20170406215816_add_notifications_and_favourites_indices.rb' - - 'db/migrate/20170424003227_create_account_domain_blocks.rb' - - 'db/migrate/20170427011934_re_add_owner_to_application.rb' - - 'db/migrate/20170507141759_optimize_index_subscriptions.rb' - - 'db/migrate/20170508230434_create_conversation_mutes.rb' - - 'db/migrate/20170720000000_add_index_favourites_on_account_id_and_id.rb' - - 'db/migrate/20170823162448_create_status_pins.rb' - - 'db/migrate/20170901142658_create_join_table_preview_cards_statuses.rb' - - 'db/migrate/20170905044538_add_index_id_account_id_activity_type_on_notifications.rb' - - 'db/migrate/20170917153509_create_custom_emojis.rb' - - 'db/migrate/20170918125918_ids_to_bigints.rb' - - 'db/migrate/20171116161857_create_list_accounts.rb' - - 'db/migrate/20171122120436_add_index_account_and_reblog_of_id_to_statuses.rb' - - 'db/migrate/20171125185353_add_index_reblog_of_id_and_account_to_statuses.rb' - - 'db/migrate/20171125190735_remove_old_reblog_index_on_statuses.rb' - - 'db/migrate/20171129172043_add_index_on_stream_entries.rb' - - 'db/migrate/20171226094803_more_faster_index_on_notifications.rb' - - 'db/migrate/20180106000232_add_index_on_statuses_for_api_v1_accounts_account_id_statuses.rb' - - 'db/migrate/20180514140000_revert_index_change_on_statuses_for_api_v1_accounts_account_id_statuses.rb' - - 'db/migrate/20180808175627_create_account_pins.rb' - - 'db/migrate/20180831171112_create_bookmarks.rb' - - 'db/migrate/20180929222014_create_account_conversations.rb' - - 'db/migrate/20181007025445_create_pghero_space_stats.rb' - - 'db/migrate/20181203003808_create_accounts_tags_join_table.rb' - - 'db/migrate/20190316190352_create_account_identity_proofs.rb' - - 'db/migrate/20190511134027_add_silenced_at_suspended_at_to_accounts.rb' - - 'db/migrate/20190820003045_update_statuses_index.rb' - - 'db/migrate/20190823221802_add_local_index_to_statuses.rb' - - 'db/migrate/20190904222339_create_markers.rb' - - 'db/migrate/20200113125135_create_announcement_mutes.rb' - - 'db/migrate/20200114113335_create_announcement_reactions.rb' - - 'db/migrate/20200119112504_add_public_index_to_statuses.rb' - - 'db/migrate/20200628133322_create_account_notes.rb' - - 'db/migrate/20200917222316_add_index_notifications_on_type.rb' - - 'db/migrate/20210425135952_add_index_on_media_attachments_account_id_status_id.rb' - - 'db/migrate/20220714171049_create_tag_follows.rb' - - 'db/migrate/20221021055441_add_index_featured_tags_on_account_id_and_tag_id.rb' - - 'db/post_migrate/20190511152737_remove_suspended_silenced_account_fields.rb' - - 'db/post_migrate/20200917222734_remove_index_notifications_on_account_activity.rb' - - 'spec/controllers/api/v1/streaming_controller_spec.rb' - - 'spec/controllers/api/v2/admin/accounts_controller_spec.rb' - - 'spec/controllers/concerns/signature_verification_spec.rb' - - 'spec/fabricators/notification_fabricator.rb' - - 'spec/models/public_feed_spec.rb' + - 'config/environments/production.rb' + - 'config/initializers/content_security_policy.rb' + +# This cop supports safe autocorrection (--autocorrect). +Style/StderrPuts: + Exclude: + - 'config/boot.rb' + +# This cop supports unsafe autocorrection (--autocorrect-all). +# Configuration parameters: Mode. +Style/StringConcatenation: + Exclude: + - 'config/initializers/paperclip.rb' + +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: EnforcedStyle, ConsistentQuotesInMultiline. +# SupportedStyles: single_quotes, double_quotes +Style/StringLiterals: + Exclude: + - 'config/environments/production.rb' + - 'config/initializers/backtrace_silencers.rb' + - 'config/initializers/http_client_proxy.rb' + - 'config/initializers/rack_attack.rb' + - 'config/initializers/webauthn.rb' + - 'config/routes.rb' + +# This cop supports unsafe autocorrection (--autocorrect-all). +# Configuration parameters: AllowMethodsWithArguments, AllowedMethods, AllowedPatterns, AllowComments. +# AllowedMethods: define_method, mail, respond_to +Style/SymbolProc: + Exclude: + - 'config/initializers/omniauth.rb' + +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: EnforcedStyle, AllowSafeAssignment. +# SupportedStyles: require_parentheses, require_no_parentheses, require_parentheses_when_complex +Style/TernaryParentheses: + Exclude: + - 'config/environments/development.rb' + +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: EnforcedStyleForMultiline. +# SupportedStylesForMultiline: comma, consistent_comma, no_comma +Style/TrailingCommaInArguments: + Exclude: + - 'config/initializers/paperclip.rb' + +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: EnforcedStyleForMultiline. +# SupportedStylesForMultiline: comma, consistent_comma, no_comma +Style/TrailingCommaInHashLiteral: + Exclude: + - 'config/environments/production.rb' + - 'config/environments/test.rb' + +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: WordRegex. +# SupportedStyles: percent, brackets +Style/WordArray: + EnforcedStyle: percent + MinSize: 6 + +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns. +# URISchemes: http, https +Layout/LineLength: + Max: 701 diff --git a/.ruby-version b/.ruby-version index e4604e3afd..be94e6f53d 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -3.2.1 +3.2.2 diff --git a/.yarnclean b/.yarnclean index 0cc2b50d7b..21eb734a6c 100644 --- a/.yarnclean +++ b/.yarnclean @@ -44,3 +44,6 @@ Gruntfile.js # for specific ignore !.svgo.yml !sass-lint/**/*.yml + +# breaks lint-staged or generally anything using https://github.com/eemeli/yaml/issues/384 +!**/yaml/dist/**/doc diff --git a/CHANGELOG.md b/CHANGELOG.md index 2b826fb14a..91a2c48a1c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,71 @@ All notable changes to this project will be documented in this file. +## [4.1.2] - 2023-04-04 + +### Fixed + +- Fix crash in `tootctl` commands making use of parallelization when Elasticsearch is enabled ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/24182), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/24377)) +- Fix crash in `db:setup` when Elasticsearch is enabled ([rrgeorge](https://github.com/mastodon/mastodon/pull/24302)) +- Fix user archive takeout when using OpenStack Swift or S3 providers with no ACL support ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/24200)) +- Fix invalid/expired invites being processed on sign-up ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/24337)) + +### Security + +- Update Ruby to 3.0.6 due to ReDoS vulnerabilities ([saizai](https://github.com/mastodon/mastodon/pull/24334)) +- Fix unescaped user input in LDAP query ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/24379)) + +## [4.1.1] - 2023-03-16 + +### Added + +- Add redirection from paths with url-encoded `@` to their decoded form ([thijskh](https://github.com/mastodon/mastodon/pull/23593)) +- Add `lang` attribute to native language names in language picker in Web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23749)) +- Add headers to outgoing mails to avoid auto-replies ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23597)) +- Add support for refreshing many accounts at once with `tootctl accounts refresh` ([9p4](https://github.com/mastodon/mastodon/pull/23304)) +- Add confirmation modal when clicking to edit a post with a non-empty compose form ([PauloVilarinho](https://github.com/mastodon/mastodon/pull/23936)) +- Add support for the HAproxy PROXY protocol through the `PROXY_PROTO_V1` environment variable ([CSDUMMI](https://github.com/mastodon/mastodon/pull/24064)) +- Add `SENDFILE_HEADER` environment variable ([Gargron](https://github.com/mastodon/mastodon/pull/24123)) +- Add cache headers to static files served through Rails ([Gargron](https://github.com/mastodon/mastodon/pull/24120)) + +### Changed + +- Increase contrast of upload progress bar background ([toolmantim](https://github.com/mastodon/mastodon/pull/23836)) +- Change post auto-deletion throttling constants to better scale with server size ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23320)) +- Change order of bookmark and favourite sidebar entries in single-column UI for consistency ([TerryGarcia](https://github.com/mastodon/mastodon/pull/23701)) +- Change `ActivityPub::DeliveryWorker` retries to be spread out more ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/21956)) + +### Fixed + +- Fix “Remove all followers from the selected domains” also removing follows and notifications ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23805)) +- Fix streaming metrics format ([emilweth](https://github.com/mastodon/mastodon/pull/23519), [emilweth](https://github.com/mastodon/mastodon/pull/23520)) +- Fix case-sensitive check for previously used hashtags in hashtag autocompletion ([deanveloper](https://github.com/mastodon/mastodon/pull/23526)) +- Fix focus point of already-attached media not saving after edit ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23566)) +- Fix sidebar behavior in settings/admin UI on mobile ([wxt2005](https://github.com/mastodon/mastodon/pull/23764)) +- Fix inefficiency when searching accounts per username in admin interface ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23801)) +- Fix duplicate “Publish” button on mobile ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23804)) +- Fix server error when failing to follow back followers from `/relationships` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23787)) +- Fix server error when attempting to display the edit history of a trendable post in the admin interface ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23574)) +- Fix `tootctl accounts migrate` crashing because of a typo ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23567)) +- Fix original account being unfollowed on migration before the follow request to the new account could be sent ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/21957)) +- Fix the “Back” button in column headers sometimes leaving Mastodon ([c960657](https://github.com/mastodon/mastodon/pull/23953)) +- Fix pgBouncer resetting application name on every transaction ([Gargron](https://github.com/mastodon/mastodon/pull/23958)) +- Fix unconfirmed accounts being counted as active users ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23803)) +- Fix `/api/v1/streaming` sub-paths not being redirected ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23988)) +- Fix drag'n'drop upload area text that spans multiple lines not being centered ([vintprox](https://github.com/mastodon/mastodon/pull/24029)) +- Fix sidekiq jobs not triggering Elasticsearch index updates ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/24046)) +- Fix tags being unnecessarily stripped from plain-text short site description ([c960657](https://github.com/mastodon/mastodon/pull/23975)) +- Fix HTML entities not being un-escaped in extracted plain-text from remote posts ([c960657](https://github.com/mastodon/mastodon/pull/24019)) +- Fix dashboard crash on ElasticSearch server error ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23751)) +- Fix incorrect post links in strikes when the account is remote ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23611)) +- Fix misleading error code when receiving invalid WebAuthn credentials ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23568)) +- Fix duplicate mails being sent when the SMTP server is too slow to close the connection ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23750)) + +### Security + +- Change user backups to use expiring URLs for download when possible ([Gargron](https://github.com/mastodon/mastodon/pull/24136)) +- Add warning for object storage misconfiguration ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/24137)) + ## [4.1.0] - 2023-02-10 ### Added diff --git a/Gemfile b/Gemfile index 86a9b90937..dd4a926fd7 100644 --- a/Gemfile +++ b/Gemfile @@ -4,9 +4,8 @@ source 'https://rubygems.org' ruby '>= 2.7.0', '< 3.3.0' gem 'pkg-config', '~> 1.5' -gem 'rexml', '~> 3.2' -gem 'puma', '~> 6.1' +gem 'puma', '~> 6.2' gem 'rails', '~> 6.1.7' gem 'sprockets', '~> 3.7.2' gem 'thor', '~> 1.2' @@ -18,7 +17,7 @@ gem 'makara', '~> 0.5' gem 'pghero' gem 'dotenv-rails', '~> 2.8' -gem 'aws-sdk-s3', '~> 1.119', require: false +gem 'aws-sdk-s3', '~> 1.120', require: false gem 'fog-core', '<= 2.4.0' gem 'fog-openstack', '~> 0.3', require: false gem 'kt-paperclip', '~> 7.1', github: 'kreeti/kt-paperclip', ref: '11abf222dc31bff71160a1d138b445214f434b2b' @@ -40,7 +39,7 @@ end gem 'net-ldap', '~> 0.17' gem 'omniauth-cas', '~> 2.0' gem 'omniauth-saml', '~> 1.10' -gem 'omniauth_openid_connect', '~> 0.6.0' +gem 'omniauth_openid_connect', '~> 0.6.1' gem 'omniauth', '~> 1.9' gem 'omniauth-rails_csrf_protection', '~> 0.1' @@ -70,7 +69,7 @@ gem 'public_suffix', '~> 5.0' gem 'pundit', '~> 2.3' gem 'premailer-rails' gem 'rack-attack', '~> 6.6' -gem 'rack-cors', '~> 1.1', require: 'rack/cors' +gem 'rack-cors', '~> 2.0', require: 'rack/cors' gem 'rails-i18n', '~> 6.0' gem 'rails-settings-cached', '~> 0.6', git: 'https://github.com/mastodon/rails-settings-cached.git', branch: 'v0.6.6-aliases-true' gem 'redcarpet', '~> 3.6' @@ -88,10 +87,10 @@ gem 'simple-navigation', '~> 4.4' gem 'simple_form', '~> 5.2' gem 'sprockets-rails', '~> 3.4', require: 'sprockets/railtie' gem 'stoplight', '~> 3.0.1' -gem 'strong_migrations', '~> 0.7' +gem 'strong_migrations', '~> 0.8' gem 'tty-prompt', '~> 0.23', require: false gem 'twitter-text', '~> 3.1.0' -gem 'tzinfo-data', '~> 1.2022' +gem 'tzinfo-data', '~> 1.2023' gem 'webpacker', '~> 5.4' gem 'webpush', github: 'ClearlyClaire/webpush', ref: 'f14a4d52e201128b1b00245d11b6de80d6cfdcd9' gem 'webauthn', '~> 3.0' @@ -104,9 +103,10 @@ group :development, :test do gem 'fabrication', '~> 2.30' gem 'fuubar', '~> 2.5' gem 'i18n-tasks', '~> 1.0', require: false - gem 'pry-byebug', '~> 3.10' - gem 'pry-rails', '~> 0.3' gem 'rspec-rails', '~> 6.0' + gem 'rspec_chunked', '~> 0.6' + + gem 'rubocop-capybara', require: false gem 'rubocop-performance', require: false gem 'rubocop-rails', require: false gem 'rubocop-rspec', require: false @@ -118,11 +118,11 @@ group :production, :test do end group :test do - gem 'capybara', '~> 3.38' - gem 'climate_control', '~> 0.2' + gem 'capybara', '~> 3.39' + gem 'climate_control' gem 'faker', '~> 3.1' gem 'json-schema', '~> 3.0' - gem 'rack-test', '~> 2.0' + gem 'rack-test', '~> 2.1' gem 'rails-controller-testing', '~> 1.0' gem 'rspec_junit_formatter', '~> 0.6' gem 'rspec-sidekiq', '~> 3.1' @@ -131,16 +131,15 @@ group :test do end group :development do - gem 'active_record_query_trace', '~> 1.8' gem 'annotate', '~> 3.2' gem 'better_errors', '~> 2.9' gem 'binding_of_caller', '~> 1.0' - gem 'bullet', '~> 7.0' gem 'letter_opener', '~> 1.8' gem 'letter_opener_web', '~> 2.0' gem 'memory_profiler' gem 'brakeman', '~> 5.4', require: false gem 'bundler-audit', '~> 0.9', require: false + gem 'haml_lint', require: false gem 'capistrano', '~> 3.17' gem 'capistrano-rails', '~> 1.6' diff --git a/Gemfile.lock b/Gemfile.lock index 09f6608e7b..b1f29f354c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -30,40 +30,40 @@ GIT GEM remote: https://rubygems.org/ specs: - actioncable (6.1.7.2) - actionpack (= 6.1.7.2) - activesupport (= 6.1.7.2) + actioncable (6.1.7.3) + actionpack (= 6.1.7.3) + activesupport (= 6.1.7.3) nio4r (~> 2.0) websocket-driver (>= 0.6.1) - actionmailbox (6.1.7.2) - actionpack (= 6.1.7.2) - activejob (= 6.1.7.2) - activerecord (= 6.1.7.2) - activestorage (= 6.1.7.2) - activesupport (= 6.1.7.2) + actionmailbox (6.1.7.3) + actionpack (= 6.1.7.3) + activejob (= 6.1.7.3) + activerecord (= 6.1.7.3) + activestorage (= 6.1.7.3) + activesupport (= 6.1.7.3) mail (>= 2.7.1) - actionmailer (6.1.7.2) - actionpack (= 6.1.7.2) - actionview (= 6.1.7.2) - activejob (= 6.1.7.2) - activesupport (= 6.1.7.2) + actionmailer (6.1.7.3) + actionpack (= 6.1.7.3) + actionview (= 6.1.7.3) + activejob (= 6.1.7.3) + activesupport (= 6.1.7.3) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 2.0) - actionpack (6.1.7.2) - actionview (= 6.1.7.2) - activesupport (= 6.1.7.2) + actionpack (6.1.7.3) + actionview (= 6.1.7.3) + activesupport (= 6.1.7.3) 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.7.2) - actionpack (= 6.1.7.2) - activerecord (= 6.1.7.2) - activestorage (= 6.1.7.2) - activesupport (= 6.1.7.2) + actiontext (6.1.7.3) + actionpack (= 6.1.7.3) + activerecord (= 6.1.7.3) + activestorage (= 6.1.7.3) + activesupport (= 6.1.7.3) nokogiri (>= 1.8.5) - actionview (6.1.7.2) - activesupport (= 6.1.7.2) + actionview (6.1.7.3) + activesupport (= 6.1.7.3) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) @@ -73,29 +73,28 @@ GEM activemodel (>= 4.1, < 7.1) case_transform (>= 0.2) jsonapi-renderer (>= 0.1.1.beta1, < 0.3) - active_record_query_trace (1.8) - activejob (6.1.7.2) - activesupport (= 6.1.7.2) + activejob (6.1.7.3) + activesupport (= 6.1.7.3) globalid (>= 0.3.6) - activemodel (6.1.7.2) - activesupport (= 6.1.7.2) - activerecord (6.1.7.2) - activemodel (= 6.1.7.2) - activesupport (= 6.1.7.2) - activestorage (6.1.7.2) - actionpack (= 6.1.7.2) - activejob (= 6.1.7.2) - activerecord (= 6.1.7.2) - activesupport (= 6.1.7.2) + activemodel (6.1.7.3) + activesupport (= 6.1.7.3) + activerecord (6.1.7.3) + activemodel (= 6.1.7.3) + activesupport (= 6.1.7.3) + activestorage (6.1.7.3) + actionpack (= 6.1.7.3) + activejob (= 6.1.7.3) + activerecord (= 6.1.7.3) + activesupport (= 6.1.7.3) marcel (~> 1.0) mini_mime (>= 1.1.0) - activesupport (6.1.7.2) + activesupport (6.1.7.3) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 1.6, < 2) minitest (>= 5.1) tzinfo (~> 2.0) zeitwerk (~> 2.3) - addressable (2.8.1) + addressable (2.8.2) public_suffix (>= 2.0.2, < 6.0) aes_key_wrap (1.1.0) airbrussh (1.4.1) @@ -110,16 +109,16 @@ GEM attr_required (1.0.1) awrence (1.2.1) aws-eventstream (1.2.0) - aws-partitions (1.711.0) - aws-sdk-core (3.170.0) + aws-partitions (1.739.0) + aws-sdk-core (3.171.0) aws-eventstream (~> 1, >= 1.0.2) aws-partitions (~> 1, >= 1.651.0) aws-sigv4 (~> 1.5) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.62.0) + aws-sdk-kms (1.63.0) aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.119.1) + aws-sdk-s3 (1.120.0) aws-sdk-core (~> 3, >= 3.165.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.4) @@ -144,18 +143,14 @@ GEM bootsnap (1.16.0) msgpack (~> 1.2) brakeman (5.4.0) - browser (4.2.0) + browser (5.3.1) brpoplpush-redis_script (0.1.3) concurrent-ruby (~> 1.0, >= 1.0.5) redis (>= 1.0, < 6) builder (3.2.4) - bullet (7.0.7) - activesupport (>= 3.0.0) - uniform_notifier (~> 1.11) bundler-audit (0.9.1) bundler (>= 1.2.0, < 3) thor (~> 1.0) - byebug (11.1.3) capistrano (3.17.2) airbrussh (>= 1.0.0) i18n @@ -171,7 +166,7 @@ GEM sshkit (~> 1.3) capistrano-yarn (2.0.2) capistrano (~> 3.0) - capybara (3.38.0) + capybara (3.39.0) addressable matrix mini_mime (>= 0.1.3) @@ -205,7 +200,7 @@ GEM addressable date (3.3.3) debug_inspector (1.0.0) - devise (4.9.0) + devise (4.9.2) bcrypt (~> 3.0) orm_adapter (~> 0.1) railties (>= 4.1.0) @@ -226,7 +221,7 @@ GEM docile (1.4.0) domain_name (0.5.20190701) unf (>= 0.0.5, < 1.0.0) - doorkeeper (5.6.4) + doorkeeper (5.6.6) railties (>= 5) dotenv (2.8.1) dotenv-rails (2.8.1) @@ -310,6 +305,12 @@ GEM activesupport (>= 5.1) haml (>= 4.0.6) railties (>= 5.1) + haml_lint (0.45.0) + haml (>= 4.0, < 6.2) + parallel (~> 1.10) + rainbow + rubocop (>= 0.50.0) + sysexits (~> 1.1) hashdiff (1.0.1) hashie (5.0.0) hcaptcha (7.1.0) @@ -398,10 +399,10 @@ GEM activesupport (>= 4) railties (>= 4) request_store (~> 1.0) - loofah (2.19.1) + loofah (2.20.0) crass (~> 1.0.2) nokogiri (>= 1.5.9) - mail (2.8.0.1) + mail (2.8.1) mini_mime (>= 0.1.1) net-imap net-pop @@ -419,7 +420,7 @@ GEM mime-types-data (3.2022.0105) mini_mime (1.1.2) mini_portile2 (2.8.1) - minitest (5.17.0) + minitest (5.18.0) msgpack (1.6.0) multi_json (1.15.0) multipart-post (2.3.0) @@ -438,7 +439,7 @@ GEM net-smtp (0.3.3) net-protocol net-ssh (7.0.1) - nio4r (2.5.8) + nio4r (2.5.9) nokogiri (1.14.2) mini_portile2 (~> 2.8.0) racc (~> 1.4) @@ -461,7 +462,7 @@ GEM omniauth-saml (1.10.3) omniauth (~> 1.3, >= 1.3.2) ruby-saml (~> 1.9) - omniauth_openid_connect (0.6.0) + omniauth_openid_connect (0.6.1) omniauth (>= 1.9, < 3) openid_connect (~> 1.1) openid_connect (1.4.2) @@ -481,13 +482,13 @@ GEM orm_adapter (0.5.0) ox (2.14.14) parallel (1.22.1) - parser (3.2.1.0) + parser (3.2.2.0) ast (~> 2.4.1) parslet (2.0.0) pastel (0.8.0) tty-color (~> 0.5) - pg (1.4.5) - pghero (3.1.0) + pg (1.4.6) + pghero (3.3.1) activerecord (>= 6) pkg-config (1.5.1) posix-spawn (0.3.15) @@ -500,25 +501,17 @@ GEM net-smtp premailer (~> 1.7, >= 1.7.9) private_address_check (0.5.0) - pry (0.14.1) - coderay (~> 1.1) - method_source (~> 1.0) - pry-byebug (3.10.1) - byebug (~> 11.0) - pry (>= 0.13, < 0.15) - pry-rails (0.3.9) - pry (>= 0.10.4) public_suffix (5.0.1) - puma (6.1.0) + puma (6.2.1) nio4r (~> 2.0) pundit (2.3.0) activesupport (>= 3.0.0) raabro (1.4.0) racc (1.6.2) - rack (2.2.6.2) + rack (2.2.6.4) rack-attack (6.6.1) rack (>= 1.0, < 3) - rack-cors (1.1.1) + rack-cors (2.0.1) rack (>= 2.0.0) rack-oauth2 (1.21.3) activesupport @@ -528,22 +521,22 @@ GEM rack (>= 2.1.0) rack-proxy (0.7.6) rack - rack-test (2.0.2) + rack-test (2.1.0) rack (>= 1.3) - rails (6.1.7.2) - actioncable (= 6.1.7.2) - actionmailbox (= 6.1.7.2) - actionmailer (= 6.1.7.2) - actionpack (= 6.1.7.2) - actiontext (= 6.1.7.2) - actionview (= 6.1.7.2) - activejob (= 6.1.7.2) - activemodel (= 6.1.7.2) - activerecord (= 6.1.7.2) - activestorage (= 6.1.7.2) - activesupport (= 6.1.7.2) + rails (6.1.7.3) + actioncable (= 6.1.7.3) + actionmailbox (= 6.1.7.3) + actionmailer (= 6.1.7.3) + actionpack (= 6.1.7.3) + actiontext (= 6.1.7.3) + actionview (= 6.1.7.3) + activejob (= 6.1.7.3) + activemodel (= 6.1.7.3) + activerecord (= 6.1.7.3) + activestorage (= 6.1.7.3) + activesupport (= 6.1.7.3) bundler (>= 1.15.0) - railties (= 6.1.7.2) + railties (= 6.1.7.3) sprockets-rails (>= 2.0.0) rails-controller-testing (1.0.5) actionpack (>= 5.0.1.rc1) @@ -557,9 +550,9 @@ GEM rails-i18n (6.0.0) i18n (>= 0.7, < 2) railties (>= 6.0.0, < 7) - railties (6.1.7.2) - actionpack (= 6.1.7.2) - activesupport (= 6.1.7.2) + railties (6.1.7.3) + actionpack (= 6.1.7.3) + activesupport (= 6.1.7.3) method_source rake (>= 12.2) thor (~> 1.0) @@ -570,7 +563,7 @@ GEM rdf-normalize (0.5.1) rdf (~> 3.2) redcarpet (3.6.0) - redis (4.5.1) + redis (4.8.1) redis-namespace (1.10.0) redis (>= 4) redlock (1.3.2) @@ -608,33 +601,34 @@ GEM rspec-core (~> 3.0, >= 3.0.0) sidekiq (>= 2.4.0) rspec-support (3.12.0) + rspec_chunked (0.6) rspec_junit_formatter (0.6.0) rspec-core (>= 2, < 4, != 2.12.0) - rubocop (1.45.1) + rubocop (1.49.0) json (~> 2.3) parallel (~> 1.10) parser (>= 3.2.0.0) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 1.8, < 3.0) rexml (>= 3.2.5, < 4.0) - rubocop-ast (>= 1.24.1, < 2.0) + rubocop-ast (>= 1.28.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.24.1) - parser (>= 3.1.1.0) - rubocop-capybara (2.17.0) + rubocop-ast (1.28.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.17.1) rubocop (~> 1.41) rubocop-performance (1.16.0) rubocop (>= 1.7.0, < 2.0) rubocop-ast (>= 0.4.0) - rubocop-rails (2.17.4) + rubocop-rails (2.18.0) activesupport (>= 4.2.0) rack (>= 1.1) rubocop (>= 1.33.0, < 2.0) - rubocop-rspec (2.18.1) + rubocop-rspec (2.19.0) rubocop (~> 1.33) rubocop-capybara (~> 2.17) - ruby-progressbar (1.11.0) + ruby-progressbar (1.13.0) ruby-saml (1.13.0) nokogiri (>= 1.10.5) rexml @@ -656,9 +650,9 @@ GEM redis (>= 4.5.0, < 5) sidekiq-bulk (0.2.0) sidekiq - sidekiq-scheduler (5.0.1) + sidekiq-scheduler (5.0.2) rufus-scheduler (~> 3.2) - sidekiq (>= 4, < 8) + sidekiq (>= 6, < 8) tilt (>= 1.4.0) sidekiq-unique-jobs (7.1.29) brpoplpush-redis_script (> 0.1.1, <= 2.0.0) @@ -688,24 +682,25 @@ GEM sshkit (1.21.4) net-scp (>= 1.1.2) net-ssh (>= 2.8.0) - stackprof (0.2.23) + stackprof (0.2.24) statsd-ruby (1.5.0) stoplight (3.0.1) redlock (~> 1.0) - strong_migrations (0.7.9) - activerecord (>= 5) + strong_migrations (0.8.0) + activerecord (>= 5.2) swd (1.3.0) activesupport (>= 3) attr_required (>= 0.0.5) httpclient (>= 2.4) + sysexits (1.2.0) temple (0.10.0) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) terrapin (0.6.0) climate_control (>= 0.0.3, < 1.0) thor (1.2.1) - tilt (2.0.11) - timeout (0.3.1) + tilt (2.1.0) + timeout (0.3.2) tpm-key_attestation (0.12.0) bindata (~> 2.4) openssl (> 2.0) @@ -725,14 +720,13 @@ GEM unf (~> 0.1.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) - tzinfo-data (1.2022.7) + tzinfo-data (1.2023.3) tzinfo (>= 1.0.0) unf (0.1.4) unf_ext unf_ext (0.0.8.2) unicode-display_width (2.4.2) - uniform_notifier (1.16.0) - uri (0.12.0) + uri (0.12.1) validate_email (0.1.6) activemodel (>= 3.0) mail (>= 2.2.5) @@ -776,26 +770,24 @@ PLATFORMS DEPENDENCIES active_model_serializers (~> 0.10) - active_record_query_trace (~> 1.8) addressable (~> 2.8) annotate (~> 3.2) - aws-sdk-s3 (~> 1.119) + aws-sdk-s3 (~> 1.120) better_errors (~> 2.9) binding_of_caller (~> 1.0) blurhash (~> 0.1) bootsnap (~> 1.16.0) brakeman (~> 5.4) browser - bullet (~> 7.0) bundler-audit (~> 0.9) capistrano (~> 3.17) capistrano-rails (~> 1.6) capistrano-rbenv (~> 2.2) capistrano-yarn (~> 2.0) - capybara (~> 3.38) + capybara (~> 3.39) charlock_holmes (~> 0.7.7) chewy (~> 7.2) - climate_control (~> 0.2) + climate_control cocoon (~> 1.2) color_diff (~> 0.1) concurrent-ruby @@ -816,6 +808,7 @@ DEPENDENCIES foreman fuubar (~> 2.5) haml-rails (~> 2.0) + haml_lint hcaptcha (~> 7.1) hiredis (~> 0.6) htmlentities (~> 4.3) @@ -846,7 +839,7 @@ DEPENDENCIES omniauth-cas (~> 2.0) omniauth-rails_csrf_protection (~> 0.1) omniauth-saml (~> 1.10) - omniauth_openid_connect (~> 0.6.0) + omniauth_openid_connect (~> 0.6.1) ox (~> 2.14) parslet pg (~> 1.4) @@ -855,15 +848,13 @@ DEPENDENCIES posix-spawn premailer-rails private_address_check (~> 0.5) - pry-byebug (~> 3.10) - pry-rails (~> 0.3) public_suffix (~> 5.0) - puma (~> 6.1) + puma (~> 6.2) pundit (~> 2.3) rack (~> 2.2.6) rack-attack (~> 6.6) - rack-cors (~> 1.1) - rack-test (~> 2.0) + rack-cors (~> 2.0) + rack-test (~> 2.1) rails (~> 6.1.7) rails-controller-testing (~> 1.0) rails-i18n (~> 6.0) @@ -872,12 +863,13 @@ DEPENDENCIES redcarpet (~> 3.6) redis (~> 4.5) redis-namespace (~> 1.10) - rexml (~> 3.2) rqrcode (~> 2.1) rspec-rails (~> 6.0) rspec-sidekiq (~> 3.1) + rspec_chunked (~> 0.6) rspec_junit_formatter (~> 0.6) rubocop + rubocop-capybara rubocop-performance rubocop-rails rubocop-rspec @@ -895,11 +887,11 @@ DEPENDENCIES sprockets-rails (~> 3.4) stackprof stoplight (~> 3.0.1) - strong_migrations (~> 0.7) + strong_migrations (~> 0.8) thor (~> 1.2) tty-prompt (~> 0.23) twitter-text (~> 3.1.0) - tzinfo-data (~> 1.2022) + tzinfo-data (~> 1.2023) webauthn (~> 3.0) webmock (~> 3.18) webpacker (~> 5.4) diff --git a/app/controllers/admin/domain_blocks_controller.rb b/app/controllers/admin/domain_blocks_controller.rb index 060db11bbd..750f5c995c 100644 --- a/app/controllers/admin/domain_blocks_controller.rb +++ b/app/controllers/admin/domain_blocks_controller.rb @@ -2,7 +2,7 @@ module Admin class DomainBlocksController < BaseController - before_action :set_domain_block, only: [:show, :destroy, :edit, :update] + before_action :set_domain_block, only: [:destroy, :edit, :update] def batch authorize :domain_block, :create? diff --git a/app/controllers/admin/email_domain_blocks_controller.rb b/app/controllers/admin/email_domain_blocks_controller.rb index a0a43de192..4a3228ec30 100644 --- a/app/controllers/admin/email_domain_blocks_controller.rb +++ b/app/controllers/admin/email_domain_blocks_controller.rb @@ -2,8 +2,6 @@ module Admin class EmailDomainBlocksController < BaseController - before_action :set_email_domain_block, only: [:show, :destroy] - def index authorize :email_domain_block, :index? @@ -59,10 +57,6 @@ module Admin private - def set_email_domain_block - @email_domain_block = EmailDomainBlock.find(params[:id]) - end - def set_resolved_records Resolv::DNS.open do |dns| dns.timeouts = 5 diff --git a/app/controllers/api/v1/accounts/credentials_controller.rb b/app/controllers/api/v1/accounts/credentials_controller.rb index 94b707771f..7c7d70fd32 100644 --- a/app/controllers/api/v1/accounts/credentials_controller.rb +++ b/app/controllers/api/v1/accounts/credentials_controller.rb @@ -13,7 +13,7 @@ class Api::V1::Accounts::CredentialsController < Api::BaseController def update @account = current_account UpdateAccountService.new.call(@account, account_params, raise_error: true) - UserSettingsDecorator.new(current_user).update(user_settings_params) if user_settings_params + current_user.update(user_params) if user_params ActivityPub::UpdateDistributionWorker.perform_async(@account.id) render json: @account, serializer: REST::CredentialAccountSerializer end @@ -34,15 +34,17 @@ class Api::V1::Accounts::CredentialsController < Api::BaseController ) end - def user_settings_params + def user_params return nil if params[:source].blank? source_params = params.require(:source) { - 'setting_default_privacy' => source_params.fetch(:privacy, @account.user.setting_default_privacy), - 'setting_default_sensitive' => source_params.fetch(:sensitive, @account.user.setting_default_sensitive), - 'setting_default_language' => source_params.fetch(:language, @account.user.setting_default_language), + settings_attributes: { + default_privacy: source_params.fetch(:privacy, @account.user.setting_default_privacy), + default_sensitive: source_params.fetch(:sensitive, @account.user.setting_default_sensitive), + default_language: source_params.fetch(:language, @account.user.setting_default_language), + }, } end end diff --git a/app/controllers/api/v1/instances/translation_languages_controller.rb b/app/controllers/api/v1/instances/translation_languages_controller.rb new file mode 100644 index 0000000000..3910a499e8 --- /dev/null +++ b/app/controllers/api/v1/instances/translation_languages_controller.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +class Api::V1::Instances::TranslationLanguagesController < Api::BaseController + skip_before_action :require_authenticated_user!, unless: :whitelist_mode? + + before_action :set_languages + + def show + expires_in 1.day, public: true + render json: @languages + end + + private + + def set_languages + if TranslationService.configured? + @languages = Rails.cache.fetch('translation_service/languages', expires_in: 7.days, race_condition_ttl: 1.hour) { TranslationService.configured.languages } + @languages['und'] = @languages.delete(nil) if @languages.key?(nil) + else + @languages = {} + end + end +end diff --git a/app/controllers/api/v1/streaming_controller.rb b/app/controllers/api/v1/streaming_controller.rb index b23a60170c..0cdd00d62f 100644 --- a/app/controllers/api/v1/streaming_controller.rb +++ b/app/controllers/api/v1/streaming_controller.rb @@ -5,7 +5,7 @@ class Api::V1::StreamingController < Api::BaseController if Rails.configuration.x.streaming_api_base_url == request.host not_found else - redirect_to streaming_api_url, status: 301 + redirect_to streaming_api_url, status: 301, allow_other_host: true end end diff --git a/app/controllers/api/v1/timelines/public_controller.rb b/app/controllers/api/v1/timelines/public_controller.rb index 493fe4776a..4675af9214 100644 --- a/app/controllers/api/v1/timelines/public_controller.rb +++ b/app/controllers/api/v1/timelines/public_controller.rb @@ -40,7 +40,7 @@ class Api::V1::Timelines::PublicController < Api::BaseController only_media: truthy_param?(:only_media), allow_local_only: truthy_param?(:allow_local_only), with_replies: Setting.show_replies_in_public_timelines, - with_reblogs: Setting.show_reblogs_in_public_timelines, + with_reblogs: Setting.show_reblogs_in_public_timelines ) end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index ee3c5204d8..906761f6f7 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -18,6 +18,8 @@ class ApplicationController < ActionController::Base helper_method :current_skin helper_method :single_user_mode? helper_method :use_seamless_external_login? + helper_method :omniauth_only? + helper_method :sso_account_settings helper_method :whitelist_mode? rescue_from ActionController::ParameterMissing, Paperclip::AdapterRegistry::NoHandlerError, with: :bad_request @@ -63,7 +65,11 @@ class ApplicationController < ActionController::Base end def after_sign_out_path_for(_resource_or_scope) - new_user_session_path + if ENV['OMNIAUTH_ONLY'] == 'true' && ENV['OIDC_ENABLED'] == 'true' + '/auth/auth/openid_connect/logout' + else + new_user_session_path + end end protected @@ -116,6 +122,14 @@ class ApplicationController < ActionController::Base Devise.pam_authentication || Devise.ldap_authentication end + def omniauth_only? + ENV['OMNIAUTH_ONLY'] == 'true' + end + + def sso_account_settings + ENV.fetch('SSO_ACCOUNT_SETTINGS') + end + def current_account return @current_account if defined?(@current_account) diff --git a/app/controllers/auth/confirmations_controller.rb b/app/controllers/auth/confirmations_controller.rb index 0817a905ca..620fb621dc 100644 --- a/app/controllers/auth/confirmations_controller.rb +++ b/app/controllers/auth/confirmations_controller.rb @@ -15,12 +15,6 @@ class Auth::ConfirmationsController < Devise::ConfirmationsController skip_before_action :require_functional! - def new - super - - resource.email = current_user.unconfirmed_email || current_user.email if user_signed_in? - end - def show old_session_values = session.to_hash reset_session @@ -29,6 +23,12 @@ class Auth::ConfirmationsController < Devise::ConfirmationsController super end + def new + super + + resource.email = current_user.unconfirmed_email || current_user.email if user_signed_in? + end + def confirm_captcha check_captcha! do |message| flash.now[:alert] = message @@ -51,6 +51,7 @@ class Auth::ConfirmationsController < Devise::ConfirmationsController # step. confirmation_token = params[:confirmation_token] return if confirmation_token.nil? + @confirmation_user = User.find_first_by_auth_conditions(confirmation_token: confirmation_token) end diff --git a/app/controllers/auth/omniauth_callbacks_controller.rb b/app/controllers/auth/omniauth_callbacks_controller.rb index 3d7962de56..9e0fb942aa 100644 --- a/app/controllers/auth/omniauth_callbacks_controller.rb +++ b/app/controllers/auth/omniauth_callbacks_controller.rb @@ -33,7 +33,7 @@ class Auth::OmniauthCallbacksController < Devise::OmniauthCallbacksController def after_sign_in_path_for(resource) if resource.email_present? - root_path + stored_location_for(resource) || root_path else auth_setup_path(missing_email: '1') end diff --git a/app/controllers/auth/registrations_controller.rb b/app/controllers/auth/registrations_controller.rb index 83e784e4c3..d2f1bea938 100644 --- a/app/controllers/auth/registrations_controller.rb +++ b/app/controllers/auth/registrations_controller.rb @@ -47,7 +47,7 @@ class Auth::RegistrationsController < Devise::RegistrationsController super(hash) resource.locale = I18n.locale - resource.invite_code = params[:invite_code] if resource.invite_code.blank? + resource.invite_code = @invite&.code if resource.invite_code.blank? resource.registration_form_time = session[:registration_form_time] resource.sign_up_ip = request.remote_ip diff --git a/app/controllers/backups_controller.rb b/app/controllers/backups_controller.rb new file mode 100644 index 0000000000..5891da6f6d --- /dev/null +++ b/app/controllers/backups_controller.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +class BackupsController < ApplicationController + include RoutingHelper + + skip_before_action :require_functional! + + before_action :authenticate_user! + before_action :set_backup + + def download + case Paperclip::Attachment.default_options[:storage] + when :s3 + redirect_to @backup.dump.expiring_url(10) + when :fog + if Paperclip::Attachment.default_options.dig(:fog_credentials, :openstack_temp_url_key).present? + redirect_to @backup.dump.expiring_url(Time.now.utc + 10) + else + redirect_to full_asset_url(@backup.dump.url) + end + when :filesystem + redirect_to full_asset_url(@backup.dump.url) + end + end + + private + + def set_backup + @backup = current_user.backups.find(params[:id]) + end +end diff --git a/app/controllers/concerns/account_controller_concern.rb b/app/controllers/concerns/account_controller_concern.rb index 2f7d84df04..e9cff22ca8 100644 --- a/app/controllers/concerns/account_controller_concern.rb +++ b/app/controllers/concerns/account_controller_concern.rb @@ -10,7 +10,8 @@ module AccountControllerConcern included do before_action :set_instance_presenter - before_action :set_link_headers, if: -> { request.format.nil? || request.format == :html } + + after_action :set_link_headers, if: -> { request.format.nil? || request.format == :html } end private diff --git a/app/controllers/concerns/cache_concern.rb b/app/controllers/concerns/cache_concern.rb index 05e431b19a..a5a9ba3e1f 100644 --- a/app/controllers/concerns/cache_concern.rb +++ b/app/controllers/concerns/cache_concern.rb @@ -3,6 +3,158 @@ module CacheConcern extend ActiveSupport::Concern + module ActiveRecordCoder + EMPTY_HASH = {}.freeze + + class << self + def dump(record) + instances = InstanceTracker.new + serialized_associations = serialize_associations(record, instances) + serialized_records = instances.map { |r| serialize_record(r) } + [serialized_associations, *serialized_records] + end + + def load(payload) + instances = InstanceTracker.new + serialized_associations, *serialized_records = payload + serialized_records.each { |attrs| instances.push(deserialize_record(*attrs)) } + deserialize_associations(serialized_associations, instances) + end + + private + + # Records without associations, or which have already been visited before, + # are serialized by their id alone. + # + # Records with associations are serialized as a two-element array including + # their id and the record's association cache. + # + def serialize_associations(record, instances) + return unless record + + if (id = instances.lookup(record)) + payload = id + else + payload = instances.push(record) + + cached_associations = record.class.reflect_on_all_associations.select do |reflection| + record.association_cached?(reflection.name) + end + + unless cached_associations.empty? + serialized_associations = cached_associations.map do |reflection| + association = record.association(reflection.name) + + serialized_target = if reflection.collection? + association.target.map { |target_record| serialize_associations(target_record, instances) } + else + serialize_associations(association.target, instances) + end + + [reflection.name, serialized_target] + end + + payload = [payload, serialized_associations] + end + end + + payload + end + + def deserialize_associations(payload, instances) + return unless payload + + id, associations = payload + record = instances.fetch(id) + + associations&.each do |name, serialized_target| + begin + association = record.association(name) + rescue ActiveRecord::AssociationNotFoundError + raise AssociationMissingError, "undefined association: #{name}" + end + + target = if association.reflection.collection? + serialized_target.map! { |serialized_record| deserialize_associations(serialized_record, instances) } + else + deserialize_associations(serialized_target, instances) + end + + association.target = target + end + + record + end + + def serialize_record(record) + arguments = [record.class.name, attributes_for_database(record)] + arguments << true if record.new_record? + arguments + end + + if Rails.gem_version >= Gem::Version.new('7.0') + def attributes_for_database(record) + attributes = record.attributes_for_database + attributes.transform_values! { |attr| attr.is_a?(::ActiveModel::Type::Binary::Data) ? attr.to_s : attr } + attributes + end + else + def attributes_for_database(record) + attributes = record.instance_variable_get(:@attributes).send(:attributes).transform_values(&:value_for_database) + attributes.transform_values! { |attr| attr.is_a?(::ActiveModel::Type::Binary::Data) ? attr.to_s : attr } + attributes + end + end + + def deserialize_record(class_name, attributes_from_database, new_record = false) # rubocop:disable Style/OptionalBooleanParameter + begin + klass = Object.const_get(class_name) + rescue NameError + raise ClassMissingError, "undefined class: #{class_name}" + end + + # Ideally we'd like to call `klass.instantiate`, however it doesn't allow to pass + # wether the record was persisted or not. + attributes = klass.attributes_builder.build_from_database(attributes_from_database, EMPTY_HASH) + klass.allocate.init_with_attributes(attributes, new_record) + end + end + + class Error < StandardError + end + + class ClassMissingError < Error + end + + class AssociationMissingError < Error + end + + class InstanceTracker + def initialize + @instances = [] + @ids = {}.compare_by_identity + end + + def map(&block) + @instances.map(&block) + end + + def fetch(...) + @instances.fetch(...) + end + + def push(instance) + id = @ids[instance] = @instances.size + @instances << instance + id + end + + def lookup(instance) + @ids[instance] + end + end + end + def render_with_cache(**options) raise ArgumentError, 'only JSON render calls are supported' unless options.key?(:json) || block_given? @@ -34,8 +186,13 @@ module CacheConcern raw = raw.cache_ids.to_a if raw.is_a?(ActiveRecord::Relation) return [] if raw.empty? - cached_keys_with_value = Rails.cache.read_multi(*raw).transform_keys(&:id) - uncached_ids = raw.map(&:id) - cached_keys_with_value.keys + cached_keys_with_value = begin + Rails.cache.read_multi(*raw).transform_keys(&:id).transform_values { |r| ActiveRecordCoder.load(r) } + rescue ActiveRecordCoder::Error + {} # The serialization format may have changed, let's pretend it's a cache miss. + end + + uncached_ids = raw.map(&:id) - cached_keys_with_value.keys klass.reload_stale_associations!(cached_keys_with_value.values) if klass.respond_to?(:reload_stale_associations!) @@ -43,7 +200,7 @@ module CacheConcern uncached = klass.where(id: uncached_ids).with_includes.index_by(&:id) uncached.each_value do |item| - Rails.cache.write(item, item) + Rails.cache.write(item, ActiveRecordCoder.dump(item)) end end diff --git a/app/controllers/concerns/signature_verification.rb b/app/controllers/concerns/signature_verification.rb index b0a087d536..9317259433 100644 --- a/app/controllers/concerns/signature_verification.rb +++ b/app/controllers/concerns/signature_verification.rb @@ -138,7 +138,7 @@ module SignatureVerification end def signed_headers - signature_params.fetch('headers', signature_algorithm == 'hs2019' ? '(created)' : 'date').downcase.split(' ') + signature_params.fetch('headers', signature_algorithm == 'hs2019' ? '(created)' : 'date').downcase.split end def verify_signature_strength! diff --git a/app/controllers/media_proxy_controller.rb b/app/controllers/media_proxy_controller.rb index 3b228722f3..f29b69a24a 100644 --- a/app/controllers/media_proxy_controller.rb +++ b/app/controllers/media_proxy_controller.rb @@ -23,7 +23,7 @@ class MediaProxyController < ApplicationController redownload! if @media_attachment.needs_redownload? && !reject_media? end - redirect_to full_asset_url(@media_attachment.file.url(version)) + redirect_to full_asset_url(@media_attachment.file.url(version)), allow_other_host: true end private diff --git a/app/controllers/relationships_controller.rb b/app/controllers/relationships_controller.rb index d40770726c..52cf1e0c18 100644 --- a/app/controllers/relationships_controller.rb +++ b/app/controllers/relationships_controller.rb @@ -20,6 +20,8 @@ class RelationshipsController < ApplicationController @form.save rescue ActionController::ParameterMissing # Do nothing + rescue Mastodon::NotPermittedError, ActiveRecord::RecordNotFound + flash[:alert] = I18n.t('relationships.follow_failure') if action_from_button == 'follow' ensure redirect_to relationships_path(filter_params) end @@ -61,8 +63,8 @@ class RelationshipsController < ApplicationController 'unfollow' elsif params[:remove_from_followers] 'remove_from_followers' - elsif params[:block_domains] - 'block_domains' + elsif params[:block_domains] || params[:remove_domains_from_followers] + 'remove_domains_from_followers' end end diff --git a/app/controllers/settings/flavours_controller.rb b/app/controllers/settings/flavours_controller.rb index 62c52eee97..b179b9429f 100644 --- a/app/controllers/settings/flavours_controller.rb +++ b/app/controllers/settings/flavours_controller.rb @@ -12,27 +12,15 @@ class Settings::FlavoursController < Settings::BaseController end def show - unless Themes.instance.flavours.include?(params[:flavour]) || (params[:flavour] == current_flavour) - redirect_to action: 'show', flavour: current_flavour - end + redirect_to action: 'show', flavour: current_flavour unless Themes.instance.flavours.include?(params[:flavour]) || (params[:flavour] == current_flavour) @listing = Themes.instance.flavours @selected = params[:flavour] end def update - user_settings.update(user_settings_params) + current_user.settings.update(flavour: params.require(:flavour), skin: params.dig(:user, :setting_skin)) + current_user.save redirect_to action: 'show', flavour: params[:flavour] end - - private - - def user_settings - UserSettingsDecorator.new(current_user) - end - - def user_settings_params - { setting_flavour: params.require(:flavour), - setting_skin: params.dig(:user, :setting_skin) }.with_indifferent_access - end end diff --git a/app/controllers/settings/preferences_controller.rb b/app/controllers/settings/preferences_controller.rb index 4c13364369..281deb64d1 100644 --- a/app/controllers/settings/preferences_controller.rb +++ b/app/controllers/settings/preferences_controller.rb @@ -4,8 +4,6 @@ class Settings::PreferencesController < Settings::BaseController def show; end def update - user_settings.update(user_settings_params.to_h) - if current_user.update(user_params) I18n.locale = current_user.locale redirect_to after_update_redirect_path, notice: I18n.t('generic.changes_saved_msg') @@ -20,46 +18,7 @@ class Settings::PreferencesController < Settings::BaseController settings_preferences_path end - def user_settings - UserSettingsDecorator.new(current_user) - end - def user_params - params.require(:user).permit( - :locale, - chosen_languages: [] - ) - end - - def user_settings_params - params.require(:user).permit( - :setting_default_privacy, - :setting_default_sensitive, - :setting_default_language, - :setting_unfollow_modal, - :setting_boost_modal, - :setting_favourite_modal, - :setting_delete_modal, - :setting_auto_play_gif, - :setting_display_media, - :setting_expand_spoilers, - :setting_reduce_motion, - :setting_disable_swiping, - :setting_system_font_ui, - :setting_system_emoji_font, - :setting_noindex, - :setting_hide_followers_count, - :setting_aggregate_reblogs, - :setting_show_application, - :setting_advanced_layout, - :setting_default_content_type, - :setting_use_blurhash, - :setting_use_pending_items, - :setting_trends, - :setting_crop_images, - :setting_always_send_emails, - notification_emails: %i(follow follow_request reblog favourite mention report pending_account trending_tag trending_link trending_status appeal), - interactions: %i(must_be_follower must_be_following must_be_following_dm) - ) + params.require(:user).permit(:locale, chosen_languages: [], settings_attributes: UserSettings.keys) end end diff --git a/app/controllers/settings/two_factor_authentication/otp_authentication_controller.rb b/app/controllers/settings/two_factor_authentication/otp_authentication_controller.rb index cbba842a98..0bff01ec27 100644 --- a/app/controllers/settings/two_factor_authentication/otp_authentication_controller.rb +++ b/app/controllers/settings/two_factor_authentication/otp_authentication_controller.rb @@ -22,18 +22,9 @@ module Settings private - def confirmation_params - params.require(:form_two_factor_confirmation).permit(:otp_attempt) - end - def verify_otp_not_enabled redirect_to settings_two_factor_authentication_methods_path if current_user.otp_enabled? end - - def acceptable_code? - current_user.validate_and_consume_otp!(confirmation_params[:otp_attempt]) || - current_user.invalidate_otp_backup_code!(confirmation_params[:otp_attempt]) - end end end end diff --git a/app/controllers/settings/two_factor_authentication/webauthn_credentials_controller.rb b/app/controllers/settings/two_factor_authentication/webauthn_credentials_controller.rb index 952c14e0bb..5a9029a426 100644 --- a/app/controllers/settings/two_factor_authentication/webauthn_credentials_controller.rb +++ b/app/controllers/settings/two_factor_authentication/webauthn_credentials_controller.rb @@ -52,7 +52,7 @@ module Settings end else flash[:error] = I18n.t('webauthn_credentials.create.error') - status = :internal_server_error + status = :unprocessable_entity end else flash[:error] = t('webauthn_credentials.create.error') diff --git a/app/controllers/statuses_controller.rb b/app/controllers/statuses_controller.rb index e5221df3a2..15c0812641 100644 --- a/app/controllers/statuses_controller.rb +++ b/app/controllers/statuses_controller.rb @@ -9,11 +9,12 @@ class StatusesController < ApplicationController before_action :require_account_signature!, only: [:show, :activity], if: -> { request.format == :json && authorized_fetch_mode? } before_action :set_status before_action :set_instance_presenter - before_action :set_link_headers before_action :redirect_to_original, only: :show before_action :set_cache_headers before_action :set_body_classes, only: :embed + after_action :set_link_headers + skip_around_action :set_locale, if: -> { request.format == :json } skip_before_action :require_functional!, only: [:show, :embed], unless: :whitelist_mode? @@ -71,6 +72,6 @@ class StatusesController < ApplicationController end def redirect_to_original - redirect_to ActivityPub::TagManager.instance.url_for(@status.reblog) if @status.reblog? + redirect_to(ActivityPub::TagManager.instance.url_for(@status.reblog), allow_other_host: true) if @status.reblog? end end diff --git a/app/helpers/accounts_helper.rb b/app/helpers/accounts_helper.rb index e15aee6df1..b8277ee17e 100644 --- a/app/helpers/accounts_helper.rb +++ b/app/helpers/accounts_helper.rb @@ -28,7 +28,7 @@ module AccountsHelper end def hide_followers_count?(account) - Setting.hide_followers_count || account.user&.setting_hide_followers_count + Setting.hide_followers_count || account.user&.settings&.[]('hide_followers_count') end def account_description(account) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 0605457e81..2cac2de596 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -112,7 +112,7 @@ module ApplicationHelper def fa_icon(icon, attributes = {}) class_names = attributes[:class]&.split(' ') || [] class_names << 'fa' - class_names += icon.split(' ').map { |cl| "fa-#{cl}" } + class_names += icon.split.map { |cl| "fa-#{cl}" } content_tag(:i, nil, attributes.merge(class: class_names.join(' '))) end @@ -164,7 +164,7 @@ module ApplicationHelper end def body_classes - output = (@body_classes || '').split(' ') + output = (@body_classes || '').split output << "flavour-#{current_flavour.parameterize}" output << "skin-#{current_skin.parameterize}" output << 'system-font' if current_account&.user&.setting_system_font_ui diff --git a/app/helpers/home_helper.rb b/app/helpers/home_helper.rb index ea21960865..c5b83326db 100644 --- a/app/helpers/home_helper.rb +++ b/app/helpers/home_helper.rb @@ -8,7 +8,7 @@ module HomeHelper end def account_link_to(account, button = '', path: nil) - content_tag(:div, class: 'account') do + content_tag(:div, class: 'account account--minimal') do content_tag(:div, class: 'account__wrapper') do section = if account.nil? content_tag(:div, class: 'account__display-name') do diff --git a/app/helpers/languages_helper.rb b/app/helpers/languages_helper.rb index 5843947584..bbf0a97fc3 100644 --- a/app/helpers/languages_helper.rb +++ b/app/helpers/languages_helper.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -# rubocop:disable Metrics/ModuleLength, Style/WordArray +# rubocop:disable Metrics/ModuleLength module LanguagesHelper ISO_639_1 = { @@ -275,4 +275,4 @@ module LanguagesHelper end end -# rubocop:enable Metrics/ModuleLength, Style/WordArray +# rubocop:enable Metrics/ModuleLength diff --git a/app/javascript/flavours/glitch/actions/markers.js b/app/javascript/flavours/glitch/actions/markers.js index dfd701cbb8..f826753426 100644 --- a/app/javascript/flavours/glitch/actions/markers.js +++ b/app/javascript/flavours/glitch/actions/markers.js @@ -55,7 +55,7 @@ export const synchronouslySubmitMarkers = () => (dispatch, getState) => { client.open('POST', '/api/v1/markers', false); client.setRequestHeader('Content-Type', 'application/json'); client.setRequestHeader('Authorization', `Bearer ${accessToken}`); - client.SUBMIT(JSON.stringify(params)); + client.send(JSON.stringify(params)); } catch (e) { // Do not make the BeforeUnload handler error out } diff --git a/app/javascript/flavours/glitch/actions/server.js b/app/javascript/flavours/glitch/actions/server.js index 31d4aea100..091af0f0fe 100644 --- a/app/javascript/flavours/glitch/actions/server.js +++ b/app/javascript/flavours/glitch/actions/server.js @@ -5,6 +5,10 @@ export const SERVER_FETCH_REQUEST = 'Server_FETCH_REQUEST'; export const SERVER_FETCH_SUCCESS = 'Server_FETCH_SUCCESS'; export const SERVER_FETCH_FAIL = 'Server_FETCH_FAIL'; +export const SERVER_TRANSLATION_LANGUAGES_FETCH_REQUEST = 'SERVER_TRANSLATION_LANGUAGES_FETCH_REQUEST'; +export const SERVER_TRANSLATION_LANGUAGES_FETCH_SUCCESS = 'SERVER_TRANSLATION_LANGUAGES_FETCH_SUCCESS'; +export const SERVER_TRANSLATION_LANGUAGES_FETCH_FAIL = 'SERVER_TRANSLATION_LANGUAGES_FETCH_FAIL'; + export const EXTENDED_DESCRIPTION_REQUEST = 'EXTENDED_DESCRIPTION_REQUEST'; export const EXTENDED_DESCRIPTION_SUCCESS = 'EXTENDED_DESCRIPTION_SUCCESS'; export const EXTENDED_DESCRIPTION_FAIL = 'EXTENDED_DESCRIPTION_FAIL'; @@ -37,6 +41,29 @@ const fetchServerFail = error => ({ error, }); +export const fetchServerTranslationLanguages = () => (dispatch, getState) => { + dispatch(fetchServerTranslationLanguagesRequest()); + + api(getState) + .get('/api/v1/instance/translation_languages').then(({ data }) => { + dispatch(fetchServerTranslationLanguagesSuccess(data)); + }).catch(err => dispatch(fetchServerTranslationLanguagesFail(err))); +}; + +const fetchServerTranslationLanguagesRequest = () => ({ + type: SERVER_TRANSLATION_LANGUAGES_FETCH_REQUEST, +}); + +const fetchServerTranslationLanguagesSuccess = translationLanguages => ({ + type: SERVER_TRANSLATION_LANGUAGES_FETCH_SUCCESS, + translationLanguages, +}); + +const fetchServerTranslationLanguagesFail = error => ({ + type: SERVER_TRANSLATION_LANGUAGES_FETCH_FAIL, + error, +}); + export const fetchExtendedDescription = () => (dispatch, getState) => { dispatch(fetchExtendedDescriptionRequest()); diff --git a/app/javascript/flavours/glitch/base_polyfills.js b/app/javascript/flavours/glitch/base_polyfills.js index 12096d9021..91bc5d6dc8 100644 --- a/app/javascript/flavours/glitch/base_polyfills.js +++ b/app/javascript/flavours/glitch/base_polyfills.js @@ -1,17 +1,11 @@ import 'intl'; import 'intl/locale-data/jsonp/en'; import 'es6-symbol/implement'; -import includes from 'array-includes'; import assign from 'object-assign'; import values from 'object.values'; -import isNaN from 'is-nan'; import { decode as decodeBase64 } from './utils/base64'; import promiseFinally from 'promise.prototype.finally'; -if (!Array.prototype.includes) { - includes.shim(); -} - if (!Object.assign) { Object.assign = assign; } @@ -20,10 +14,6 @@ if (!Object.values) { values.shim(); } -if (!Number.isNaN) { - Number.isNaN = isNaN; -} - promiseFinally.shim(); if (!HTMLCanvasElement.prototype.toBlob) { diff --git a/app/javascript/flavours/glitch/components/account.jsx b/app/javascript/flavours/glitch/components/account.jsx index 7ce4b65aac..7b66d5a6ef 100644 --- a/app/javascript/flavours/glitch/components/account.jsx +++ b/app/javascript/flavours/glitch/components/account.jsx @@ -23,7 +23,6 @@ const messages = defineMessages({ block: { id: 'account.block', defaultMessage: 'Block @{name}' }, }); -export default @injectIntl class Account extends ImmutablePureComponent { static propTypes = { @@ -184,3 +183,5 @@ class Account extends ImmutablePureComponent { } } + +export default injectIntl(Account); diff --git a/app/javascript/flavours/glitch/components/admin/ReportReasonSelector.jsx b/app/javascript/flavours/glitch/components/admin/ReportReasonSelector.jsx index 771dbb452d..ecefe7a840 100644 --- a/app/javascript/flavours/glitch/components/admin/ReportReasonSelector.jsx +++ b/app/javascript/flavours/glitch/components/admin/ReportReasonSelector.jsx @@ -33,7 +33,7 @@ class Category extends React.PureComponent { const { id, text, disabled, selected, children } = this.props; return ( -
+
{selected && }
@@ -74,7 +74,7 @@ class Rule extends React.PureComponent { const { id, text, disabled, selected } = this.props; return ( -
+
{selected && } {text} @@ -84,7 +84,6 @@ class Rule extends React.PureComponent { } -export default @injectIntl class ReportReasonSelector extends React.PureComponent { static propTypes = { @@ -157,3 +156,5 @@ class ReportReasonSelector extends React.PureComponent { } } + +export default injectIntl(ReportReasonSelector); diff --git a/app/javascript/flavours/glitch/components/autosuggest_input.jsx b/app/javascript/flavours/glitch/components/autosuggest_input.jsx index 90ff298c0d..ea9fd0828a 100644 --- a/app/javascript/flavours/glitch/components/autosuggest_input.jsx +++ b/app/javascript/flavours/glitch/components/autosuggest_input.jsx @@ -180,7 +180,7 @@ export default class AutosuggestInput extends ImmutablePureComponent { } return ( -
+
{inner}
); diff --git a/app/javascript/flavours/glitch/components/autosuggest_textarea.jsx b/app/javascript/flavours/glitch/components/autosuggest_textarea.jsx index 6e6e567b93..a016e44b72 100644 --- a/app/javascript/flavours/glitch/components/autosuggest_textarea.jsx +++ b/app/javascript/flavours/glitch/components/autosuggest_textarea.jsx @@ -186,7 +186,7 @@ export default class AutosuggestTextarea extends ImmutablePureComponent { } return ( -
+
{inner}
); diff --git a/app/javascript/flavours/glitch/components/column_back_button_slim.jsx b/app/javascript/flavours/glitch/components/column_back_button_slim.jsx index b43d85b3b0..4df045b5fb 100644 --- a/app/javascript/flavours/glitch/components/column_back_button_slim.jsx +++ b/app/javascript/flavours/glitch/components/column_back_button_slim.jsx @@ -26,7 +26,7 @@ export default class ColumnBackButtonSlim extends React.PureComponent { render () { return (
-
+
diff --git a/app/javascript/flavours/glitch/components/column_header.jsx b/app/javascript/flavours/glitch/components/column_header.jsx index 3790960ddf..6fbe2955d7 100644 --- a/app/javascript/flavours/glitch/components/column_header.jsx +++ b/app/javascript/flavours/glitch/components/column_header.jsx @@ -12,7 +12,6 @@ const messages = defineMessages({ moveRight: { id: 'column_header.moveRight_settings', defaultMessage: 'Move column to the right' }, }); -export default @injectIntl class ColumnHeader extends React.PureComponent { static contextTypes = { @@ -218,3 +217,5 @@ class ColumnHeader extends React.PureComponent { } } + +export default injectIntl(ColumnHeader); diff --git a/app/javascript/flavours/glitch/components/dismissable_banner.jsx b/app/javascript/flavours/glitch/components/dismissable_banner.jsx index c4968ac3c2..9b3faf6f27 100644 --- a/app/javascript/flavours/glitch/components/dismissable_banner.jsx +++ b/app/javascript/flavours/glitch/components/dismissable_banner.jsx @@ -8,7 +8,6 @@ const messages = defineMessages({ dismiss: { id: 'dismissable_banner.dismiss', defaultMessage: 'Dismiss' }, }); -export default @injectIntl class DismissableBanner extends React.PureComponent { static propTypes = { @@ -49,3 +48,5 @@ class DismissableBanner extends React.PureComponent { } } + +export default injectIntl(DismissableBanner); diff --git a/app/javascript/flavours/glitch/components/domain.jsx b/app/javascript/flavours/glitch/components/domain.jsx index e09fa45910..85ebdbde93 100644 --- a/app/javascript/flavours/glitch/components/domain.jsx +++ b/app/javascript/flavours/glitch/components/domain.jsx @@ -8,7 +8,6 @@ const messages = defineMessages({ unblockDomain: { id: 'account.unblock_domain', defaultMessage: 'Unblock domain {domain}' }, }); -export default @injectIntl class Account extends ImmutablePureComponent { static propTypes = { @@ -40,3 +39,5 @@ class Account extends ImmutablePureComponent { } } + +export default injectIntl(Account); diff --git a/app/javascript/flavours/glitch/components/dropdown_menu.jsx b/app/javascript/flavours/glitch/components/dropdown_menu.jsx index f4b6e059fc..7fb75b59ea 100644 --- a/app/javascript/flavours/glitch/components/dropdown_menu.jsx +++ b/app/javascript/flavours/glitch/components/dropdown_menu.jsx @@ -119,7 +119,7 @@ class DropdownMenu extends React.PureComponent { return (
  • - + {text}
  • diff --git a/app/javascript/flavours/glitch/components/edited_timestamp/index.jsx b/app/javascript/flavours/glitch/components/edited_timestamp/index.jsx index c973bda58f..6d73fa68c8 100644 --- a/app/javascript/flavours/glitch/components/edited_timestamp/index.jsx +++ b/app/javascript/flavours/glitch/components/edited_timestamp/index.jsx @@ -16,8 +16,6 @@ const mapDispatchToProps = (dispatch, { statusId }) => ({ }); -export default @connect(null, mapDispatchToProps) -@injectIntl class EditedTimestamp extends React.PureComponent { static propTypes = { @@ -68,3 +66,5 @@ class EditedTimestamp extends React.PureComponent { } } + +export default connect(null, mapDispatchToProps)(injectIntl(EditedTimestamp)); diff --git a/app/javascript/flavours/glitch/components/error_boundary.jsx b/app/javascript/flavours/glitch/components/error_boundary.jsx index 8518dfc866..234a53417f 100644 --- a/app/javascript/flavours/glitch/components/error_boundary.jsx +++ b/app/javascript/flavours/glitch/components/error_boundary.jsx @@ -72,7 +72,7 @@ export default class ErrorBoundary extends React.PureComponent { } return ( -
    +

    diff --git a/app/javascript/flavours/glitch/components/gifv.jsx b/app/javascript/flavours/glitch/components/gifv.jsx index 9ec201c6cc..1ce7e7c29b 100644 --- a/app/javascript/flavours/glitch/components/gifv.jsx +++ b/app/javascript/flavours/glitch/components/gifv.jsx @@ -46,7 +46,7 @@ export default class GIFV extends React.PureComponent { width={width} height={height} role='button' - tabIndex='0' + tabIndex={0} aria-label={alt} title={alt} lang={lang} @@ -57,7 +57,7 @@ export default class GIFV extends React.PureComponent {

    +
    @@ -67,3 +66,5 @@ class PictureInPicturePlaceholder extends React.PureComponent { } } + +export default connect()(PictureInPicturePlaceholder); diff --git a/app/javascript/flavours/glitch/components/poll.jsx b/app/javascript/flavours/glitch/components/poll.jsx index 8b799309bf..fb37612d9c 100644 --- a/app/javascript/flavours/glitch/components/poll.jsx +++ b/app/javascript/flavours/glitch/components/poll.jsx @@ -31,7 +31,6 @@ const makeEmojiMap = record => record.get('emojis').reduce((obj, emoji) => { return obj; }, {}); -export default @injectIntl class Poll extends ImmutablePureComponent { static contextTypes = { @@ -155,7 +154,7 @@ class Poll extends ImmutablePureComponent { {!showResults && ( { return relativeTime; }; -export default @injectIntl class RelativeTimestamp extends React.Component { static propTypes = { @@ -197,3 +196,5 @@ class RelativeTimestamp extends React.Component { } } + +export default injectIntl(RelativeTimestamp); diff --git a/app/javascript/flavours/glitch/components/scrollable_list.jsx b/app/javascript/flavours/glitch/components/scrollable_list.jsx index ae1ba3037a..fc7dc989d0 100644 --- a/app/javascript/flavours/glitch/components/scrollable_list.jsx +++ b/app/javascript/flavours/glitch/components/scrollable_list.jsx @@ -20,7 +20,6 @@ const mapStateToProps = (state, { scrollKey }) => { }; }; -export default @connect(mapStateToProps, null, null, { forwardRef: true }) class ScrollableList extends PureComponent { static contextTypes = { @@ -352,3 +351,5 @@ class ScrollableList extends PureComponent { } } + +export default connect(mapStateToProps, null, null, { forwardRef: true })(ScrollableList); diff --git a/app/javascript/flavours/glitch/components/server_banner.jsx b/app/javascript/flavours/glitch/components/server_banner.jsx index 36e0ff2381..ba84064a8b 100644 --- a/app/javascript/flavours/glitch/components/server_banner.jsx +++ b/app/javascript/flavours/glitch/components/server_banner.jsx @@ -18,8 +18,6 @@ const mapStateToProps = state => ({ server: state.getIn(['server', 'server']), }); -export default @connect(mapStateToProps) -@injectIntl class ServerBanner extends React.PureComponent { static propTypes = { @@ -91,3 +89,5 @@ class ServerBanner extends React.PureComponent { } } + +export default connect(mapStateToProps)(injectIntl(ServerBanner)); diff --git a/app/javascript/flavours/glitch/components/spoilers.jsx b/app/javascript/flavours/glitch/components/spoilers.jsx index 75e4ec3a1a..d1d8758072 100644 --- a/app/javascript/flavours/glitch/components/spoilers.jsx +++ b/app/javascript/flavours/glitch/components/spoilers.jsx @@ -38,7 +38,7 @@ class Spoilers extends React.PureComponent {

    {spoilerText} {' '} -

    , diff --git a/app/javascript/flavours/glitch/components/status.jsx b/app/javascript/flavours/glitch/components/status.jsx index b57bc50b06..26b3cea2ce 100644 --- a/app/javascript/flavours/glitch/components/status.jsx +++ b/app/javascript/flavours/glitch/components/status.jsx @@ -56,7 +56,6 @@ export const defaultMediaVisibility = (status, settings) => { return (displayMedia !== 'hide_all' && !status.get('sensitive') || displayMedia === 'show_all'); }; -export default @injectIntl class Status extends ImmutablePureComponent { static contextTypes = { @@ -566,7 +565,7 @@ class Status extends ImmutablePureComponent { if (hidden) { return ( -
    +
    {status.getIn(['account', 'display_name']) || status.getIn(['account', 'username'])} {status.get('content')}
    @@ -583,7 +582,7 @@ class Status extends ImmutablePureComponent { return ( -
    +
    : {matchedFilters.join(', ')}. {' '}
    -
    @@ -66,7 +65,7 @@ class Header extends ImmutablePureComponent { } else { action_buttons = (
    -
    @@ -102,3 +101,5 @@ class Header extends ImmutablePureComponent { } } + +export default injectIntl(Header); diff --git a/app/javascript/flavours/glitch/features/account/components/action_bar.jsx b/app/javascript/flavours/glitch/features/account/components/action_bar.jsx index d53080d4f7..e32bc01416 100644 --- a/app/javascript/flavours/glitch/features/account/components/action_bar.jsx +++ b/app/javascript/flavours/glitch/features/account/components/action_bar.jsx @@ -8,7 +8,6 @@ import { me, isStaff } from 'flavours/glitch/initial_state'; import { profileLink, accountAdminLink } from 'flavours/glitch/utils/backend_links'; import Icon from 'flavours/glitch/components/icon'; -export default @injectIntl class ActionBar extends React.PureComponent { static propTypes = { @@ -83,3 +82,5 @@ class ActionBar extends React.PureComponent { } } + +export default injectIntl(ActionBar); diff --git a/app/javascript/flavours/glitch/features/account/components/featured_tags.jsx b/app/javascript/flavours/glitch/features/account/components/featured_tags.jsx index d646b08b29..42e0a8d2f7 100644 --- a/app/javascript/flavours/glitch/features/account/components/featured_tags.jsx +++ b/app/javascript/flavours/glitch/features/account/components/featured_tags.jsx @@ -10,7 +10,6 @@ const messages = defineMessages({ empty: { id: 'account.featured_tags.last_status_never', defaultMessage: 'No posts' }, }); -export default @injectIntl class FeaturedTags extends ImmutablePureComponent { static contextTypes = { @@ -51,3 +50,5 @@ class FeaturedTags extends ImmutablePureComponent { } } + +export default injectIntl(FeaturedTags); diff --git a/app/javascript/flavours/glitch/features/account/components/header.jsx b/app/javascript/flavours/glitch/features/account/components/header.jsx index c11a472e75..6f918abcf2 100644 --- a/app/javascript/flavours/glitch/features/account/components/header.jsx +++ b/app/javascript/flavours/glitch/features/account/components/header.jsx @@ -76,7 +76,6 @@ const dateFormatOptions = { minute: '2-digit', }; -export default @injectIntl class Header extends ImmutablePureComponent { static contextTypes = { @@ -403,3 +402,5 @@ class Header extends ImmutablePureComponent { } } + +export default injectIntl(Header); diff --git a/app/javascript/flavours/glitch/features/account/components/profile_column_header.jsx b/app/javascript/flavours/glitch/features/account/components/profile_column_header.jsx index 17c08e375a..62a459fffb 100644 --- a/app/javascript/flavours/glitch/features/account/components/profile_column_header.jsx +++ b/app/javascript/flavours/glitch/features/account/components/profile_column_header.jsx @@ -7,7 +7,6 @@ const messages = defineMessages({ profile: { id: 'column_header.profile', defaultMessage: 'Profile' }, }); -export default @injectIntl class ProfileColumnHeader extends React.PureComponent { static propTypes = { @@ -31,3 +30,5 @@ class ProfileColumnHeader extends React.PureComponent { } } + +export default injectIntl(ProfileColumnHeader); diff --git a/app/javascript/flavours/glitch/features/account/navigation.jsx b/app/javascript/flavours/glitch/features/account/navigation.jsx index edae38ce5f..b8b8e54deb 100644 --- a/app/javascript/flavours/glitch/features/account/navigation.jsx +++ b/app/javascript/flavours/glitch/features/account/navigation.jsx @@ -19,7 +19,6 @@ const mapStateToProps = (state, { match: { params: { acct } } }) => { }; }; -export default @connect(mapStateToProps) class AccountNavigation extends React.PureComponent { static propTypes = { @@ -50,3 +49,5 @@ class AccountNavigation extends React.PureComponent { } } + +export default connect(mapStateToProps)(AccountNavigation); diff --git a/app/javascript/flavours/glitch/features/account_gallery/index.jsx b/app/javascript/flavours/glitch/features/account_gallery/index.jsx index afd6e5161c..6914bcba70 100644 --- a/app/javascript/flavours/glitch/features/account_gallery/index.jsx +++ b/app/javascript/flavours/glitch/features/account_gallery/index.jsx @@ -58,7 +58,6 @@ class LoadMoreMedia extends ImmutablePureComponent { } -export default @connect(mapStateToProps) class AccountGallery extends ImmutablePureComponent { static propTypes = { @@ -223,3 +222,5 @@ class AccountGallery extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(AccountGallery); diff --git a/app/javascript/flavours/glitch/features/account_timeline/components/limited_account_hint.jsx b/app/javascript/flavours/glitch/features/account_timeline/components/limited_account_hint.jsx index dc2b3e3e61..c622b76072 100644 --- a/app/javascript/flavours/glitch/features/account_timeline/components/limited_account_hint.jsx +++ b/app/javascript/flavours/glitch/features/account_timeline/components/limited_account_hint.jsx @@ -14,7 +14,6 @@ const mapDispatchToProps = (dispatch, { accountId }) => ({ }); -export default @connect(() => {}, mapDispatchToProps) class LimitedAccountHint extends React.PureComponent { static propTypes = { @@ -34,3 +33,5 @@ class LimitedAccountHint extends React.PureComponent { } } + +export default connect(() => {}, mapDispatchToProps)(LimitedAccountHint); diff --git a/app/javascript/flavours/glitch/features/account_timeline/index.jsx b/app/javascript/flavours/glitch/features/account_timeline/index.jsx index 9151c1990e..38361b1ca6 100644 --- a/app/javascript/flavours/glitch/features/account_timeline/index.jsx +++ b/app/javascript/flavours/glitch/features/account_timeline/index.jsx @@ -62,7 +62,6 @@ RemoteHint.propTypes = { url: PropTypes.string.isRequired, }; -export default @connect(mapStateToProps) class AccountTimeline extends ImmutablePureComponent { static propTypes = { @@ -207,3 +206,5 @@ class AccountTimeline extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(AccountTimeline); diff --git a/app/javascript/flavours/glitch/features/audio/index.jsx b/app/javascript/flavours/glitch/features/audio/index.jsx index 05c3beef96..556a74ac48 100644 --- a/app/javascript/flavours/glitch/features/audio/index.jsx +++ b/app/javascript/flavours/glitch/features/audio/index.jsx @@ -22,7 +22,6 @@ const messages = defineMessages({ const TICK_SIZE = 10; const PADDING = 180; -export default @injectIntl class Audio extends React.PureComponent { static propTypes = { @@ -477,7 +476,7 @@ class Audio extends React.PureComponent { } return ( -
    +
    @@ -550,7 +549,7 @@ class Audio extends React.PureComponent {
    @@ -575,3 +574,5 @@ class Audio extends React.PureComponent { } } + +export default injectIntl(Audio); diff --git a/app/javascript/flavours/glitch/features/blocks/index.jsx b/app/javascript/flavours/glitch/features/blocks/index.jsx index 4461bd14d8..461dac2ec0 100644 --- a/app/javascript/flavours/glitch/features/blocks/index.jsx +++ b/app/javascript/flavours/glitch/features/blocks/index.jsx @@ -22,8 +22,6 @@ const mapStateToProps = state => ({ isLoading: state.getIn(['user_lists', 'blocks', 'isLoading'], true), }); -export default @connect(mapStateToProps) -@injectIntl class Blocks extends ImmutablePureComponent { static propTypes = { @@ -77,3 +75,5 @@ class Blocks extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(injectIntl(Blocks)); diff --git a/app/javascript/flavours/glitch/features/bookmarked_statuses/index.jsx b/app/javascript/flavours/glitch/features/bookmarked_statuses/index.jsx index 8e25bc6fd9..90d8fd0ef1 100644 --- a/app/javascript/flavours/glitch/features/bookmarked_statuses/index.jsx +++ b/app/javascript/flavours/glitch/features/bookmarked_statuses/index.jsx @@ -22,8 +22,6 @@ const mapStateToProps = state => ({ hasMore: !!state.getIn(['status_lists', 'bookmarks', 'next']), }); -export default @connect(mapStateToProps) -@injectIntl class Bookmarks extends ImmutablePureComponent { static propTypes = { @@ -106,3 +104,5 @@ class Bookmarks extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(injectIntl(Bookmarks)); diff --git a/app/javascript/flavours/glitch/features/closed_registrations_modal/index.jsx b/app/javascript/flavours/glitch/features/closed_registrations_modal/index.jsx index bdaa9885c8..1f17ea9cfd 100644 --- a/app/javascript/flavours/glitch/features/closed_registrations_modal/index.jsx +++ b/app/javascript/flavours/glitch/features/closed_registrations_modal/index.jsx @@ -9,7 +9,6 @@ const mapStateToProps = state => ({ message: state.getIn(['server', 'server', 'registrations', 'message']), }); -export default @connect(mapStateToProps) class ClosedRegistrationsModal extends ImmutablePureComponent { componentDidMount () { @@ -73,3 +72,5 @@ class ClosedRegistrationsModal extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(ClosedRegistrationsModal); diff --git a/app/javascript/flavours/glitch/features/community_timeline/components/column_settings.jsx b/app/javascript/flavours/glitch/features/community_timeline/components/column_settings.jsx index 69a4699acd..0ea874e959 100644 --- a/app/javascript/flavours/glitch/features/community_timeline/components/column_settings.jsx +++ b/app/javascript/flavours/glitch/features/community_timeline/components/column_settings.jsx @@ -10,7 +10,6 @@ const messages = defineMessages({ settings: { id: 'home.settings', defaultMessage: 'Column settings' }, }); -export default @injectIntl class ColumnSettings extends React.PureComponent { static propTypes = { @@ -39,3 +38,5 @@ class ColumnSettings extends React.PureComponent { } } + +export default injectIntl(ColumnSettings); diff --git a/app/javascript/flavours/glitch/features/community_timeline/index.jsx b/app/javascript/flavours/glitch/features/community_timeline/index.jsx index b9a59fdc70..8f3e10fe9b 100644 --- a/app/javascript/flavours/glitch/features/community_timeline/index.jsx +++ b/app/javascript/flavours/glitch/features/community_timeline/index.jsx @@ -32,8 +32,6 @@ const mapStateToProps = (state, { columnId }) => { }; }; -export default @connect(mapStateToProps) -@injectIntl class CommunityTimeline extends React.PureComponent { static defaultProps = { @@ -162,3 +160,5 @@ class CommunityTimeline extends React.PureComponent { } } + +export default connect(mapStateToProps)(injectIntl(CommunityTimeline)); diff --git a/app/javascript/flavours/glitch/features/compose/components/action_bar.jsx b/app/javascript/flavours/glitch/features/compose/components/action_bar.jsx index 1843fdacbd..af1f02efc9 100644 --- a/app/javascript/flavours/glitch/features/compose/components/action_bar.jsx +++ b/app/javascript/flavours/glitch/features/compose/components/action_bar.jsx @@ -21,7 +21,6 @@ const messages = defineMessages({ bookmarks: { id: 'navigation_bar.bookmarks', defaultMessage: 'Bookmarks' }, }); -export default @injectIntl class ActionBar extends React.PureComponent { static propTypes = { @@ -66,3 +65,5 @@ class ActionBar extends React.PureComponent { } } + +export default injectIntl(ActionBar); diff --git a/app/javascript/flavours/glitch/features/compose/components/compose_form.jsx b/app/javascript/flavours/glitch/features/compose/components/compose_form.jsx index 3ed10697d3..48bcd38c55 100644 --- a/app/javascript/flavours/glitch/features/compose/components/compose_form.jsx +++ b/app/javascript/flavours/glitch/features/compose/components/compose_form.jsx @@ -33,7 +33,6 @@ const messages = defineMessages({ spoiler_placeholder: { id: 'compose_form.spoiler_placeholder', defaultMessage: 'Write your warning here' }, }); -export default @injectIntl class ComposeForm extends ImmutablePureComponent { static contextTypes = { @@ -391,3 +390,5 @@ class ComposeForm extends ImmutablePureComponent { } } + +export default injectIntl(ComposeForm); diff --git a/app/javascript/flavours/glitch/features/compose/components/dropdown_menu.jsx b/app/javascript/flavours/glitch/features/compose/components/dropdown_menu.jsx index 1ea0df536c..1ccccad31a 100644 --- a/app/javascript/flavours/glitch/features/compose/components/dropdown_menu.jsx +++ b/app/javascript/flavours/glitch/features/compose/components/dropdown_menu.jsx @@ -169,7 +169,7 @@ export default class ComposerOptionsDropdownContent extends React.PureComponent onClick={this.handleClick} onKeyDown={this.handleKeyDown} role='option' - tabIndex='0' + tabIndex={0} key={name} data-index={i} ref={active ? this.setFocusRef : null} diff --git a/app/javascript/flavours/glitch/features/compose/components/emoji_picker_dropdown.jsx b/app/javascript/flavours/glitch/features/compose/components/emoji_picker_dropdown.jsx index bbbc3af627..02693da943 100644 --- a/app/javascript/flavours/glitch/features/compose/components/emoji_picker_dropdown.jsx +++ b/app/javascript/flavours/glitch/features/compose/components/emoji_picker_dropdown.jsx @@ -147,8 +147,7 @@ class ModifierPicker extends React.PureComponent { } -@injectIntl -class EmojiPickerMenu extends React.PureComponent { +class EmojiPickerMenuImpl extends React.PureComponent { static propTypes = { custom_emojis: ImmutablePropTypes.list, @@ -311,7 +310,8 @@ class EmojiPickerMenu extends React.PureComponent { } -export default @injectIntl +const EmojiPickerMenu = injectIntl(EmojiPickerMenuImpl); + class EmojiPickerDropdown extends React.PureComponent { static propTypes = { @@ -415,3 +415,5 @@ class EmojiPickerDropdown extends React.PureComponent { } } + +export default injectIntl(EmojiPickerDropdown); diff --git a/app/javascript/flavours/glitch/features/compose/components/header.jsx b/app/javascript/flavours/glitch/features/compose/components/header.jsx index dcbdafa576..764fcec5ed 100644 --- a/app/javascript/flavours/glitch/features/compose/components/header.jsx +++ b/app/javascript/flavours/glitch/features/compose/components/header.jsx @@ -45,7 +45,6 @@ const messages = defineMessages({ }, }); -export default @injectIntl class Header extends ImmutablePureComponent { static propTypes = { @@ -134,3 +133,5 @@ class Header extends ImmutablePureComponent { } } + +export default injectIntl(Header); diff --git a/app/javascript/flavours/glitch/features/compose/components/language_dropdown.jsx b/app/javascript/flavours/glitch/features/compose/components/language_dropdown.jsx index 03fb899f88..05614de011 100644 --- a/app/javascript/flavours/glitch/features/compose/components/language_dropdown.jsx +++ b/app/javascript/flavours/glitch/features/compose/components/language_dropdown.jsx @@ -209,7 +209,7 @@ class LanguageDropdownMenu extends React.PureComponent { const { value } = this.props; return ( -
    +
    {lang[2]} ({lang[1]})
    ); @@ -237,7 +237,6 @@ class LanguageDropdownMenu extends React.PureComponent { } -export default @injectIntl class LanguageDropdown extends React.PureComponent { static propTypes = { @@ -325,3 +324,5 @@ class LanguageDropdown extends React.PureComponent { } } + +export default injectIntl(LanguageDropdown); diff --git a/app/javascript/flavours/glitch/features/compose/components/options.jsx b/app/javascript/flavours/glitch/features/compose/components/options.jsx index e09e13bcb9..19ead2f217 100644 --- a/app/javascript/flavours/glitch/features/compose/components/options.jsx +++ b/app/javascript/flavours/glitch/features/compose/components/options.jsx @@ -83,8 +83,11 @@ const messages = defineMessages({ }, }); -@connect((state, { name }) => ({ checked: state.getIn(['compose', 'advanced_options', name]) })) -class ToggleOption extends ImmutablePureComponent { +const mapStateToProps = (state, { name }) => ({ + checked: state.getIn(['compose', 'advanced_options', name]), +}); + +class ToggleOptionImpl extends ImmutablePureComponent { static propTypes = { name: PropTypes.string.isRequired, @@ -113,7 +116,8 @@ class ToggleOption extends ImmutablePureComponent { } -export default @injectIntl +const ToggleOption = connect(mapStateToProps)(ToggleOptionImpl); + class ComposerOptions extends ImmutablePureComponent { static propTypes = { @@ -315,3 +319,5 @@ class ComposerOptions extends ImmutablePureComponent { } } + +export default injectIntl(ComposerOptions); diff --git a/app/javascript/flavours/glitch/features/compose/components/poll_form.jsx b/app/javascript/flavours/glitch/features/compose/components/poll_form.jsx index cb6b577bf8..cbd53c4d5e 100644 --- a/app/javascript/flavours/glitch/features/compose/components/poll_form.jsx +++ b/app/javascript/flavours/glitch/features/compose/components/poll_form.jsx @@ -21,8 +21,7 @@ const messages = defineMessages({ days: { id: 'intervals.full.days', defaultMessage: '{number, plural, one {# day} other {# days}}' }, }); -@injectIntl -class Option extends React.PureComponent { +class OptionIntl extends React.PureComponent { static propTypes = { title: PropTypes.string.isRequired, @@ -92,8 +91,8 @@ class Option extends React.PureComponent { } -export default -@injectIntl +const Option = injectIntl(OptionIntl); + class PollForm extends ImmutablePureComponent { static propTypes = { @@ -168,3 +167,5 @@ class PollForm extends ImmutablePureComponent { } } + +export default injectIntl(PollForm); diff --git a/app/javascript/flavours/glitch/features/compose/components/privacy_dropdown.jsx b/app/javascript/flavours/glitch/features/compose/components/privacy_dropdown.jsx index 02cf722891..4bfbb5b8ca 100644 --- a/app/javascript/flavours/glitch/features/compose/components/privacy_dropdown.jsx +++ b/app/javascript/flavours/glitch/features/compose/components/privacy_dropdown.jsx @@ -16,7 +16,6 @@ const messages = defineMessages({ change_privacy: { id: 'privacy.change', defaultMessage: 'Adjust status privacy' }, }); -export default @injectIntl class PrivacyDropdown extends React.PureComponent { static propTypes = { @@ -86,3 +85,5 @@ class PrivacyDropdown extends React.PureComponent { } } + +export default injectIntl(PrivacyDropdown); diff --git a/app/javascript/flavours/glitch/features/compose/components/publisher.jsx b/app/javascript/flavours/glitch/features/compose/components/publisher.jsx index 59254990b1..3128303c62 100644 --- a/app/javascript/flavours/glitch/features/compose/components/publisher.jsx +++ b/app/javascript/flavours/glitch/features/compose/components/publisher.jsx @@ -26,7 +26,6 @@ const messages = defineMessages({ saveChanges: { id: 'compose_form.save_changes', defaultMessage: 'Save changes' }, }); -export default @injectIntl class Publisher extends ImmutablePureComponent { static propTypes = { @@ -97,3 +96,5 @@ class Publisher extends ImmutablePureComponent { } } + +export default injectIntl(Publisher); diff --git a/app/javascript/flavours/glitch/features/compose/components/reply_indicator.jsx b/app/javascript/flavours/glitch/features/compose/components/reply_indicator.jsx index d18afac991..149841962a 100644 --- a/app/javascript/flavours/glitch/features/compose/components/reply_indicator.jsx +++ b/app/javascript/flavours/glitch/features/compose/components/reply_indicator.jsx @@ -20,7 +20,6 @@ const messages = defineMessages({ }); -export default @injectIntl class ReplyIndicator extends ImmutablePureComponent { static propTypes = { @@ -84,3 +83,5 @@ class ReplyIndicator extends ImmutablePureComponent { } } + +export default injectIntl(ReplyIndicator); diff --git a/app/javascript/flavours/glitch/features/compose/components/search.jsx b/app/javascript/flavours/glitch/features/compose/components/search.jsx index 6241e2a0ab..cb6afca8d3 100644 --- a/app/javascript/flavours/glitch/features/compose/components/search.jsx +++ b/app/javascript/flavours/glitch/features/compose/components/search.jsx @@ -45,7 +45,6 @@ class SearchPopout extends React.PureComponent { } // The component. -export default @injectIntl class Search extends React.PureComponent { static contextTypes = { @@ -148,7 +147,7 @@ class Search extends React.PureComponent { onBlur={this.handleBlur} /> -
    +
    @@ -166,3 +165,5 @@ class Search extends React.PureComponent { } } + +export default injectIntl(Search); diff --git a/app/javascript/flavours/glitch/features/compose/components/search_results.jsx b/app/javascript/flavours/glitch/features/compose/components/search_results.jsx index 23ff609365..bf009d13a8 100644 --- a/app/javascript/flavours/glitch/features/compose/components/search_results.jsx +++ b/app/javascript/flavours/glitch/features/compose/components/search_results.jsx @@ -14,7 +14,6 @@ const messages = defineMessages({ dismissSuggestion: { id: 'suggestions.dismiss', defaultMessage: 'Dismiss suggestion' }, }); -export default @injectIntl class SearchResults extends ImmutablePureComponent { static propTypes = { @@ -139,3 +138,5 @@ class SearchResults extends ImmutablePureComponent { } } + +export default injectIntl(SearchResults); diff --git a/app/javascript/flavours/glitch/features/compose/components/textarea_icons.jsx b/app/javascript/flavours/glitch/features/compose/components/textarea_icons.jsx index d8ee5c81b0..73281fc746 100644 --- a/app/javascript/flavours/glitch/features/compose/components/textarea_icons.jsx +++ b/app/javascript/flavours/glitch/features/compose/components/textarea_icons.jsx @@ -27,7 +27,6 @@ const iconMap = [ ['threaded_mode', 'comments', messages.threadedMode], ]; -export default @injectIntl class TextareaIcons extends ImmutablePureComponent { static propTypes = { @@ -58,3 +57,5 @@ class TextareaIcons extends ImmutablePureComponent { } } + +export default injectIntl(TextareaIcons); diff --git a/app/javascript/flavours/glitch/features/compose/components/upload.jsx b/app/javascript/flavours/glitch/features/compose/components/upload.jsx index 63582c6367..7d5784561c 100644 --- a/app/javascript/flavours/glitch/features/compose/components/upload.jsx +++ b/app/javascript/flavours/glitch/features/compose/components/upload.jsx @@ -43,7 +43,7 @@ export default class Upload extends ImmutablePureComponent { const y = ((focusY / -2) + .5) * 100; return ( -
    +
    {({ scale }) => (
    diff --git a/app/javascript/flavours/glitch/features/compose/index.jsx b/app/javascript/flavours/glitch/features/compose/index.jsx index 241caa03b3..5547a12102 100644 --- a/app/javascript/flavours/glitch/features/compose/index.jsx +++ b/app/javascript/flavours/glitch/features/compose/index.jsx @@ -39,8 +39,6 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ }, }); -export default @connect(mapStateToProps, mapDispatchToProps) -@injectIntl class Compose extends React.PureComponent { static propTypes = { @@ -114,3 +112,5 @@ class Compose extends React.PureComponent { } } + +export default connect(mapStateToProps, mapDispatchToProps)(injectIntl(Compose)); diff --git a/app/javascript/flavours/glitch/features/direct_timeline/components/column_settings.jsx b/app/javascript/flavours/glitch/features/direct_timeline/components/column_settings.jsx index 18c3c7e21e..79e98ec6fc 100644 --- a/app/javascript/flavours/glitch/features/direct_timeline/components/column_settings.jsx +++ b/app/javascript/flavours/glitch/features/direct_timeline/components/column_settings.jsx @@ -10,7 +10,6 @@ const messages = defineMessages({ settings: { id: 'home.settings', defaultMessage: 'Column settings' }, }); -export default @injectIntl class ColumnSettings extends React.PureComponent { static propTypes = { @@ -40,3 +39,5 @@ class ColumnSettings extends React.PureComponent { } } + +export default injectIntl(ColumnSettings); diff --git a/app/javascript/flavours/glitch/features/direct_timeline/components/conversation.jsx b/app/javascript/flavours/glitch/features/direct_timeline/components/conversation.jsx index ad2a68ebdc..63a331086b 100644 --- a/app/javascript/flavours/glitch/features/direct_timeline/components/conversation.jsx +++ b/app/javascript/flavours/glitch/features/direct_timeline/components/conversation.jsx @@ -24,7 +24,6 @@ const messages = defineMessages({ unmuteConversation: { id: 'status.unmute_conversation', defaultMessage: 'Unmute conversation' }, }); -export default @injectIntl class Conversation extends ImmutablePureComponent { static contextTypes = { @@ -183,7 +182,7 @@ class Conversation extends ImmutablePureComponent { return ( -
    +
    @@ -230,3 +229,5 @@ class Conversation extends ImmutablePureComponent { } } + +export default injectIntl(Conversation); diff --git a/app/javascript/flavours/glitch/features/direct_timeline/components/conversations_list.jsx b/app/javascript/flavours/glitch/features/direct_timeline/components/conversations_list.jsx index ae72179e21..2bfe6fbf12 100644 --- a/app/javascript/flavours/glitch/features/direct_timeline/components/conversations_list.jsx +++ b/app/javascript/flavours/glitch/features/direct_timeline/components/conversations_list.jsx @@ -55,10 +55,10 @@ export default class ConversationsList extends ImmutablePureComponent { }, 300, { leading: true }); render () { - const { conversations, onLoadMore, ...other } = this.props; + const { conversations, isLoading, onLoadMore, ...other } = this.props; return ( - + {conversations.map(item => ( ({ conversationsMode: state.getIn(['settings', 'direct', 'conversations']), }); -export default @connect(mapStateToProps) -@injectIntl class DirectTimeline extends React.PureComponent { static propTypes = { @@ -110,8 +108,10 @@ class DirectTimeline extends React.PureComponent { trackScroll={!pinned} scrollKey={`direct_timeline-${columnId}`} timelineId='direct' + bindToDocument={!multiColumn} onLoadMore={this.handleLoadMore} prepend={
    } + alwaysPrepend emptyMessage={} /> ); @@ -121,8 +121,10 @@ class DirectTimeline extends React.PureComponent { trackScroll={!pinned} scrollKey={`direct_timeline-${columnId}`} timelineId='direct' + bindToDocument={!multiColumn} onLoadMore={this.handleLoadMoreTimeline} prepend={
    } + alwaysPrepend emptyMessage={} /> ); @@ -154,3 +156,5 @@ class DirectTimeline extends React.PureComponent { } } + +export default connect(mapStateToProps)(injectIntl(DirectTimeline)); diff --git a/app/javascript/flavours/glitch/features/directory/components/account_card.jsx b/app/javascript/flavours/glitch/features/directory/components/account_card.jsx index 3fddb5b81c..663710b063 100644 --- a/app/javascript/flavours/glitch/features/directory/components/account_card.jsx +++ b/app/javascript/flavours/glitch/features/directory/components/account_card.jsx @@ -93,9 +93,6 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ }); -export default -@injectIntl -@connect(makeMapStateToProps, mapDispatchToProps) class AccountCard extends ImmutablePureComponent { static propTypes = { @@ -246,3 +243,5 @@ class AccountCard extends ImmutablePureComponent { } } + +export default injectIntl(connect(makeMapStateToProps, mapDispatchToProps)(AccountCard)); diff --git a/app/javascript/flavours/glitch/features/directory/index.jsx b/app/javascript/flavours/glitch/features/directory/index.jsx index 07875b3e1c..4278a4e719 100644 --- a/app/javascript/flavours/glitch/features/directory/index.jsx +++ b/app/javascript/flavours/glitch/features/directory/index.jsx @@ -29,8 +29,6 @@ const mapStateToProps = state => ({ domain: state.getIn(['meta', 'domain']), }); -export default @connect(mapStateToProps) -@injectIntl class Directory extends React.PureComponent { static contextTypes = { @@ -176,3 +174,5 @@ class Directory extends React.PureComponent { } } + +export default connect(mapStateToProps)(injectIntl(Directory)); diff --git a/app/javascript/flavours/glitch/features/domain_blocks/index.jsx b/app/javascript/flavours/glitch/features/domain_blocks/index.jsx index cb0b55c637..1ab7c36633 100644 --- a/app/javascript/flavours/glitch/features/domain_blocks/index.jsx +++ b/app/javascript/flavours/glitch/features/domain_blocks/index.jsx @@ -23,8 +23,6 @@ const mapStateToProps = state => ({ hasMore: !!state.getIn(['domain_lists', 'blocks', 'next']), }); -export default @connect(mapStateToProps) -@injectIntl class Blocks extends ImmutablePureComponent { static propTypes = { @@ -81,3 +79,5 @@ class Blocks extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(injectIntl(Blocks)); diff --git a/app/javascript/flavours/glitch/features/emoji/emoji.js b/app/javascript/flavours/glitch/features/emoji/emoji.js index 4f33200b6c..24c5814c41 100644 --- a/app/javascript/flavours/glitch/features/emoji/emoji.js +++ b/app/javascript/flavours/glitch/features/emoji/emoji.js @@ -50,7 +50,7 @@ const emojifyTextNode = (node, customEmojis) => { if (shortname in customEmojis) { const filename = autoPlayGif ? customEmojis[shortname].url : customEmojis[shortname].static_url; replacement = document.createElement('img'); - replacement.setAttribute('draggable', false); + replacement.setAttribute('draggable', 'false'); replacement.setAttribute('class', 'emojione custom-emoji'); replacement.setAttribute('alt', shortname); replacement.setAttribute('title', shortname); @@ -65,7 +65,7 @@ const emojifyTextNode = (node, customEmojis) => { const { filename, shortCode } = unicodeMapping[match]; const title = shortCode ? `:${shortCode}:` : ''; replacement = document.createElement('img'); - replacement.setAttribute('draggable', false); + replacement.setAttribute('draggable', 'false'); replacement.setAttribute('class', 'emojione'); replacement.setAttribute('alt', match); replacement.setAttribute('title', title); diff --git a/app/javascript/flavours/glitch/features/explore/index.jsx b/app/javascript/flavours/glitch/features/explore/index.jsx index 4cbc5294bb..3587de1dba 100644 --- a/app/javascript/flavours/glitch/features/explore/index.jsx +++ b/app/javascript/flavours/glitch/features/explore/index.jsx @@ -24,8 +24,6 @@ const mapStateToProps = state => ({ isSearching: state.getIn(['search', 'submitted']) || !showTrends, }); -export default @connect(mapStateToProps) -@injectIntl class Explore extends React.PureComponent { static contextTypes = { @@ -90,7 +88,9 @@ class Explore extends React.PureComponent { - + + + @@ -105,3 +105,5 @@ class Explore extends React.PureComponent { } } + +export default connect(mapStateToProps)(injectIntl(Explore)); diff --git a/app/javascript/flavours/glitch/features/explore/links.jsx b/app/javascript/flavours/glitch/features/explore/links.jsx index 092f86b29b..425934c4ab 100644 --- a/app/javascript/flavours/glitch/features/explore/links.jsx +++ b/app/javascript/flavours/glitch/features/explore/links.jsx @@ -13,7 +13,6 @@ const mapStateToProps = state => ({ isLoading: state.getIn(['trends', 'links', 'isLoading']), }); -export default @connect(mapStateToProps) class Links extends React.PureComponent { static propTypes = { @@ -68,3 +67,5 @@ class Links extends React.PureComponent { } } + +export default connect(mapStateToProps)(Links); diff --git a/app/javascript/flavours/glitch/features/explore/results.jsx b/app/javascript/flavours/glitch/features/explore/results.jsx index 892980d954..0d6c0e8f1d 100644 --- a/app/javascript/flavours/glitch/features/explore/results.jsx +++ b/app/javascript/flavours/glitch/features/explore/results.jsx @@ -42,8 +42,6 @@ const renderStatuses = (results, onLoadMore) => appendLoadMore('statuses', resul )), onLoadMore); -export default @connect(mapStateToProps) -@injectIntl class Results extends React.PureComponent { static propTypes = { @@ -124,3 +122,5 @@ class Results extends React.PureComponent { } } + +export default connect(mapStateToProps)(injectIntl(Results)); diff --git a/app/javascript/flavours/glitch/features/explore/statuses.jsx b/app/javascript/flavours/glitch/features/explore/statuses.jsx index 21768dd242..381c50c5d5 100644 --- a/app/javascript/flavours/glitch/features/explore/statuses.jsx +++ b/app/javascript/flavours/glitch/features/explore/statuses.jsx @@ -14,7 +14,6 @@ const mapStateToProps = state => ({ hasMore: !!state.getIn(['status_lists', 'trending', 'next']), }); -export default @connect(mapStateToProps) class Statuses extends React.PureComponent { static propTypes = { @@ -62,3 +61,5 @@ class Statuses extends React.PureComponent { } } + +export default connect(mapStateToProps)(Statuses); diff --git a/app/javascript/flavours/glitch/features/explore/suggestions.jsx b/app/javascript/flavours/glitch/features/explore/suggestions.jsx index 1c9b992662..e1b84098a0 100644 --- a/app/javascript/flavours/glitch/features/explore/suggestions.jsx +++ b/app/javascript/flavours/glitch/features/explore/suggestions.jsx @@ -12,7 +12,6 @@ const mapStateToProps = state => ({ isLoading: state.getIn(['suggestions', 'isLoading']), }); -export default @connect(mapStateToProps) class Suggestions extends React.PureComponent { static propTypes = { @@ -54,3 +53,5 @@ class Suggestions extends React.PureComponent { } } + +export default connect(mapStateToProps)(Suggestions); diff --git a/app/javascript/flavours/glitch/features/explore/tags.jsx b/app/javascript/flavours/glitch/features/explore/tags.jsx index 938036b642..e0fdd1d912 100644 --- a/app/javascript/flavours/glitch/features/explore/tags.jsx +++ b/app/javascript/flavours/glitch/features/explore/tags.jsx @@ -13,7 +13,6 @@ const mapStateToProps = state => ({ isLoadingHashtags: state.getIn(['trends', 'tags', 'isLoading']), }); -export default @connect(mapStateToProps) class Tags extends React.PureComponent { static propTypes = { @@ -60,3 +59,5 @@ class Tags extends React.PureComponent { } } + +export default connect(mapStateToProps)(Tags); diff --git a/app/javascript/flavours/glitch/features/favourited_statuses/index.jsx b/app/javascript/flavours/glitch/features/favourited_statuses/index.jsx index 0667c205b6..60d281f974 100644 --- a/app/javascript/flavours/glitch/features/favourited_statuses/index.jsx +++ b/app/javascript/flavours/glitch/features/favourited_statuses/index.jsx @@ -22,8 +22,6 @@ const mapStateToProps = state => ({ hasMore: !!state.getIn(['status_lists', 'favourites', 'next']), }); -export default @connect(mapStateToProps) -@injectIntl class Favourites extends ImmutablePureComponent { static propTypes = { @@ -106,3 +104,5 @@ class Favourites extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(injectIntl(Favourites)); diff --git a/app/javascript/flavours/glitch/features/favourites/index.jsx b/app/javascript/flavours/glitch/features/favourites/index.jsx index ba58ed43b3..21ce7fcc7e 100644 --- a/app/javascript/flavours/glitch/features/favourites/index.jsx +++ b/app/javascript/flavours/glitch/features/favourites/index.jsx @@ -22,8 +22,6 @@ const mapStateToProps = (state, props) => ({ accountIds: state.getIn(['user_lists', 'favourited_by', props.params.statusId]), }); -export default @connect(mapStateToProps) -@injectIntl class Favourites extends ImmutablePureComponent { static propTypes = { @@ -101,3 +99,5 @@ class Favourites extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(injectIntl(Favourites)); diff --git a/app/javascript/flavours/glitch/features/filters/added_to_filter.jsx b/app/javascript/flavours/glitch/features/filters/added_to_filter.jsx index becb170cd2..2f3f98c813 100644 --- a/app/javascript/flavours/glitch/features/filters/added_to_filter.jsx +++ b/app/javascript/flavours/glitch/features/filters/added_to_filter.jsx @@ -10,7 +10,6 @@ const mapStateToProps = (state, { filterId }) => ({ filter: state.getIn(['filters', filterId]), }); -export default @connect(mapStateToProps) class AddedToFilter extends React.PureComponent { static propTypes = { @@ -100,3 +99,5 @@ class AddedToFilter extends React.PureComponent { } } + +export default connect(mapStateToProps)(AddedToFilter); diff --git a/app/javascript/flavours/glitch/features/filters/select_filter.jsx b/app/javascript/flavours/glitch/features/filters/select_filter.jsx index 57adb59ccc..a33892f83f 100644 --- a/app/javascript/flavours/glitch/features/filters/select_filter.jsx +++ b/app/javascript/flavours/glitch/features/filters/select_filter.jsx @@ -22,8 +22,6 @@ const mapStateToProps = (state, { contextType }) => ({ ]), }); -export default @connect(mapStateToProps) -@injectIntl class SelectFilter extends React.PureComponent { static propTypes = { @@ -67,7 +65,7 @@ class SelectFilter extends React.PureComponent { } return ( -
    +
    {filter[1]} {warning}
    ); @@ -75,7 +73,7 @@ class SelectFilter extends React.PureComponent { renderCreateNew (name) { return ( -
    +
    ); @@ -190,3 +188,5 @@ class SelectFilter extends React.PureComponent { } } + +export default connect(mapStateToProps)(injectIntl(SelectFilter)); diff --git a/app/javascript/flavours/glitch/features/follow_recommendations/components/account.jsx b/app/javascript/flavours/glitch/features/follow_recommendations/components/account.jsx index 81d39bd49b..e56af7364b 100644 --- a/app/javascript/flavours/glitch/features/follow_recommendations/components/account.jsx +++ b/app/javascript/flavours/glitch/features/follow_recommendations/components/account.jsx @@ -32,8 +32,6 @@ const getFirstSentence = str => { return arr[0]; }; -export default @connect(makeMapStateToProps) -@injectIntl class Account extends ImmutablePureComponent { static propTypes = { @@ -83,3 +81,5 @@ class Account extends ImmutablePureComponent { } } + +export default connect(makeMapStateToProps)(injectIntl(Account)); diff --git a/app/javascript/flavours/glitch/features/follow_recommendations/index.jsx b/app/javascript/flavours/glitch/features/follow_recommendations/index.jsx index 11396d2a3a..70f2191f11 100644 --- a/app/javascript/flavours/glitch/features/follow_recommendations/index.jsx +++ b/app/javascript/flavours/glitch/features/follow_recommendations/index.jsx @@ -19,7 +19,6 @@ const mapStateToProps = state => ({ isLoading: state.getIn(['suggestions', 'isLoading']), }); -export default @connect(mapStateToProps) class FollowRecommendations extends ImmutablePureComponent { static contextTypes = { @@ -114,3 +113,5 @@ class FollowRecommendations extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(FollowRecommendations); diff --git a/app/javascript/flavours/glitch/features/follow_requests/components/account_authorize.jsx b/app/javascript/flavours/glitch/features/follow_requests/components/account_authorize.jsx index cbe7a10329..af8a534fa4 100644 --- a/app/javascript/flavours/glitch/features/follow_requests/components/account_authorize.jsx +++ b/app/javascript/flavours/glitch/features/follow_requests/components/account_authorize.jsx @@ -13,7 +13,6 @@ const messages = defineMessages({ reject: { id: 'follow_request.reject', defaultMessage: 'Reject' }, }); -export default @injectIntl class AccountAuthorize extends ImmutablePureComponent { static propTypes = { @@ -47,3 +46,5 @@ class AccountAuthorize extends ImmutablePureComponent { } } + +export default injectIntl(AccountAuthorize); diff --git a/app/javascript/flavours/glitch/features/follow_requests/index.jsx b/app/javascript/flavours/glitch/features/follow_requests/index.jsx index aa60bd7b8d..a9a35f54b8 100644 --- a/app/javascript/flavours/glitch/features/follow_requests/index.jsx +++ b/app/javascript/flavours/glitch/features/follow_requests/index.jsx @@ -25,8 +25,6 @@ const mapStateToProps = state => ({ domain: state.getIn(['meta', 'domain']), }); -export default @connect(mapStateToProps) -@injectIntl class FollowRequests extends ImmutablePureComponent { static propTypes = { @@ -90,3 +88,5 @@ class FollowRequests extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(injectIntl(FollowRequests)); diff --git a/app/javascript/flavours/glitch/features/followed_tags/index.jsx b/app/javascript/flavours/glitch/features/followed_tags/index.jsx index 73203636c0..a5abb151f3 100644 --- a/app/javascript/flavours/glitch/features/followed_tags/index.jsx +++ b/app/javascript/flavours/glitch/features/followed_tags/index.jsx @@ -22,8 +22,6 @@ const mapStateToProps = state => ({ hasMore: !!state.getIn(['followed_tags', 'next']), }); -export default @connect(mapStateToProps) -@injectIntl class FollowedTags extends ImmutablePureComponent { static propTypes = { @@ -87,3 +85,5 @@ class FollowedTags extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(injectIntl(FollowedTags)); diff --git a/app/javascript/flavours/glitch/features/followers/index.jsx b/app/javascript/flavours/glitch/features/followers/index.jsx index 10fd76865f..2565772d13 100644 --- a/app/javascript/flavours/glitch/features/followers/index.jsx +++ b/app/javascript/flavours/glitch/features/followers/index.jsx @@ -53,7 +53,6 @@ RemoteHint.propTypes = { url: PropTypes.string.isRequired, }; -export default @connect(mapStateToProps) class Followers extends ImmutablePureComponent { static propTypes = { @@ -172,3 +171,5 @@ class Followers extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(Followers); diff --git a/app/javascript/flavours/glitch/features/following/index.jsx b/app/javascript/flavours/glitch/features/following/index.jsx index 5af4e60b6b..2c05e33109 100644 --- a/app/javascript/flavours/glitch/features/following/index.jsx +++ b/app/javascript/flavours/glitch/features/following/index.jsx @@ -53,7 +53,6 @@ RemoteHint.propTypes = { url: PropTypes.string.isRequired, }; -export default @connect(mapStateToProps) class Following extends ImmutablePureComponent { static propTypes = { @@ -172,3 +171,5 @@ class Following extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(Following); diff --git a/app/javascript/flavours/glitch/features/getting_started/components/announcements.jsx b/app/javascript/flavours/glitch/features/getting_started/components/announcements.jsx index fb90244473..29288076b7 100644 --- a/app/javascript/flavours/glitch/features/getting_started/components/announcements.jsx +++ b/app/javascript/flavours/glitch/features/getting_started/components/announcements.jsx @@ -355,7 +355,6 @@ class Announcement extends ImmutablePureComponent { } -export default @injectIntl class Announcements extends ImmutablePureComponent { static propTypes = { @@ -419,7 +418,7 @@ class Announcements extends ImmutablePureComponent {
    - + {announcements.map((announcement, idx) => ( { const NAVIGATION_PANEL_BREAKPOINT = 600 + (285 * 2) + (10 * 2); -export default @connect(makeMapStateToProps, mapDispatchToProps) - @injectIntl class GettingStarted extends ImmutablePureComponent { static contextTypes = { @@ -202,3 +200,5 @@ class GettingStarted extends ImmutablePureComponent { } } + +export default connect(makeMapStateToProps, mapDispatchToProps)(injectIntl(GettingStarted)); diff --git a/app/javascript/flavours/glitch/features/getting_started_misc/index.jsx b/app/javascript/flavours/glitch/features/getting_started_misc/index.jsx index 613b43df7f..fb4ec2fce0 100644 --- a/app/javascript/flavours/glitch/features/getting_started_misc/index.jsx +++ b/app/javascript/flavours/glitch/features/getting_started_misc/index.jsx @@ -16,17 +16,18 @@ 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' }, - info: { id: 'navigation_bar.info', defaultMessage: 'Extended information' }, show_me_around: { id: 'getting_started.onboarding', defaultMessage: 'Show me around' }, pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned posts' }, - info: { id: 'navigation_bar.info', defaultMessage: 'Extended information' }, keyboard_shortcuts: { id: 'navigation_bar.keyboard_shortcuts', defaultMessage: 'Keyboard shortcuts' }, featured_users: { id: 'navigation_bar.featured_users', defaultMessage: 'Featured users' }, }); -export default @connect() -@injectIntl -class gettingStartedMisc extends ImmutablePureComponent { +class GettingStartedMisc extends ImmutablePureComponent { + + static contextTypes = { + router: PropTypes.object.isRequired, + identity: PropTypes.object, + }; static propTypes = { intl: PropTypes.object.isRequired, @@ -43,8 +44,7 @@ class gettingStartedMisc extends ImmutablePureComponent { render () { const { intl } = this.props; - - let i = 1; + const { signedIn } = this.context.identity; return ( @@ -52,18 +52,19 @@ class gettingStartedMisc extends ImmutablePureComponent {
    - - - - - - - - - + {signedIn && ()} + {signedIn && ()} + {signedIn && ()} + {signedIn && ()} + {signedIn && ()} + {signedIn && ()} + + {signedIn && ()}
    ); } } + +export default connect()(injectIntl(GettingStartedMisc)); diff --git a/app/javascript/flavours/glitch/features/hashtag_timeline/components/column_settings.jsx b/app/javascript/flavours/glitch/features/hashtag_timeline/components/column_settings.jsx index ac7863ed38..f140f2d013 100644 --- a/app/javascript/flavours/glitch/features/hashtag_timeline/components/column_settings.jsx +++ b/app/javascript/flavours/glitch/features/hashtag_timeline/components/column_settings.jsx @@ -12,7 +12,6 @@ const messages = defineMessages({ noOptions: { id: 'hashtag.column_settings.select.no_options_message', defaultMessage: 'No suggestions found' }, }); -export default @injectIntl class ColumnSettings extends React.PureComponent { static propTypes = { @@ -131,3 +130,5 @@ class ColumnSettings extends React.PureComponent { } } + +export default injectIntl(ColumnSettings); diff --git a/app/javascript/flavours/glitch/features/hashtag_timeline/index.jsx b/app/javascript/flavours/glitch/features/hashtag_timeline/index.jsx index 54a67804ee..fe5afa2406 100644 --- a/app/javascript/flavours/glitch/features/hashtag_timeline/index.jsx +++ b/app/javascript/flavours/glitch/features/hashtag_timeline/index.jsx @@ -26,8 +26,6 @@ const mapStateToProps = (state, props) => ({ tag: state.getIn(['tags', props.params.id]), }); -export default @connect(mapStateToProps) -@injectIntl class HashtagTimeline extends React.PureComponent { disconnects = []; @@ -193,8 +191,12 @@ class HashtagTimeline extends React.PureComponent { if (tag) { const following = tag.get('following'); + const classes = classNames('column-header__button', { + active: following, + }); + followButton = ( - ); @@ -235,3 +237,5 @@ class HashtagTimeline extends React.PureComponent { } } + +export default connect(mapStateToProps)(injectIntl(HashtagTimeline)); diff --git a/app/javascript/flavours/glitch/features/home_timeline/components/column_settings.jsx b/app/javascript/flavours/glitch/features/home_timeline/components/column_settings.jsx index df615db651..1eeeaa378a 100644 --- a/app/javascript/flavours/glitch/features/home_timeline/components/column_settings.jsx +++ b/app/javascript/flavours/glitch/features/home_timeline/components/column_settings.jsx @@ -10,7 +10,6 @@ const messages = defineMessages({ settings: { id: 'home.settings', defaultMessage: 'Column settings' }, }); -export default @injectIntl class ColumnSettings extends React.PureComponent { static propTypes = { @@ -48,3 +47,5 @@ class ColumnSettings extends React.PureComponent { } } + +export default injectIntl(ColumnSettings); diff --git a/app/javascript/flavours/glitch/features/home_timeline/index.jsx b/app/javascript/flavours/glitch/features/home_timeline/index.jsx index b2bfd3f173..71619394b6 100644 --- a/app/javascript/flavours/glitch/features/home_timeline/index.jsx +++ b/app/javascript/flavours/glitch/features/home_timeline/index.jsx @@ -31,8 +31,6 @@ const mapStateToProps = state => ({ regex: state.getIn(['settings', 'home', 'regex', 'body']), }); -export default @connect(mapStateToProps) -@injectIntl class HomeTimeline extends React.PureComponent { static contextTypes = { @@ -176,3 +174,5 @@ class HomeTimeline extends React.PureComponent { } } + +export default connect(mapStateToProps)(injectIntl(HomeTimeline)); diff --git a/app/javascript/flavours/glitch/features/interaction_modal/index.jsx b/app/javascript/flavours/glitch/features/interaction_modal/index.jsx index 3a54105a36..20e4959e6f 100644 --- a/app/javascript/flavours/glitch/features/interaction_modal/index.jsx +++ b/app/javascript/flavours/glitch/features/interaction_modal/index.jsx @@ -74,7 +74,6 @@ class Copypaste extends React.PureComponent { } -export default @connect(mapStateToProps, mapDispatchToProps) class InteractionModal extends React.PureComponent { static propTypes = { @@ -159,3 +158,5 @@ class InteractionModal extends React.PureComponent { } } + +export default connect(mapStateToProps, mapDispatchToProps)(InteractionModal); diff --git a/app/javascript/flavours/glitch/features/keyboard_shortcuts/index.jsx b/app/javascript/flavours/glitch/features/keyboard_shortcuts/index.jsx index 2bc0116d4d..7160e7efbf 100644 --- a/app/javascript/flavours/glitch/features/keyboard_shortcuts/index.jsx +++ b/app/javascript/flavours/glitch/features/keyboard_shortcuts/index.jsx @@ -15,8 +15,6 @@ const mapStateToProps = state => ({ collapseEnabled: state.getIn(['local_settings', 'collapsed', 'enabled']), }); -export default @connect(mapStateToProps) -@injectIntl class KeyboardShortcuts extends ImmutablePureComponent { static propTypes = { @@ -147,3 +145,5 @@ class KeyboardShortcuts extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(injectIntl(KeyboardShortcuts)); diff --git a/app/javascript/flavours/glitch/features/list_adder/components/account.jsx b/app/javascript/flavours/glitch/features/list_adder/components/account.jsx index 1369aac074..034ed0edc9 100644 --- a/app/javascript/flavours/glitch/features/list_adder/components/account.jsx +++ b/app/javascript/flavours/glitch/features/list_adder/components/account.jsx @@ -18,8 +18,6 @@ const makeMapStateToProps = () => { }; -export default @connect(makeMapStateToProps) -@injectIntl class Account extends ImmutablePureComponent { static propTypes = { @@ -41,3 +39,5 @@ class Account extends ImmutablePureComponent { } } + +export default connect(makeMapStateToProps)(injectIntl(Account)); diff --git a/app/javascript/flavours/glitch/features/list_adder/components/list.jsx b/app/javascript/flavours/glitch/features/list_adder/components/list.jsx index 4666ca47b8..1957bbe420 100644 --- a/app/javascript/flavours/glitch/features/list_adder/components/list.jsx +++ b/app/javascript/flavours/glitch/features/list_adder/components/list.jsx @@ -13,7 +13,7 @@ const messages = defineMessages({ add: { id: 'lists.account.add', defaultMessage: 'Add to list' }, }); -const MapStateToProps = (state, { listId, added }) => ({ +const mapStateToProps = (state, { listId, added }) => ({ list: state.get('lists').get(listId), added: typeof added === 'undefined' ? state.getIn(['listAdder', 'lists', 'items']).includes(listId) : added, }); @@ -23,8 +23,6 @@ const mapDispatchToProps = (dispatch, { listId }) => ({ onAdd: () => dispatch(addToListAdder(listId)), }); -export default @connect(MapStateToProps, mapDispatchToProps) -@injectIntl class List extends ImmutablePureComponent { static propTypes = { @@ -67,3 +65,5 @@ class List extends ImmutablePureComponent { } } + +export default connect(mapStateToProps, mapDispatchToProps)(injectIntl(List)); diff --git a/app/javascript/flavours/glitch/features/list_adder/index.jsx b/app/javascript/flavours/glitch/features/list_adder/index.jsx index cb8a15e8c7..45d5589f96 100644 --- a/app/javascript/flavours/glitch/features/list_adder/index.jsx +++ b/app/javascript/flavours/glitch/features/list_adder/index.jsx @@ -28,8 +28,6 @@ const mapDispatchToProps = dispatch => ({ onReset: () => dispatch(resetListAdder()), }); -export default @connect(mapStateToProps, mapDispatchToProps) -@injectIntl class ListAdder extends ImmutablePureComponent { static propTypes = { @@ -71,3 +69,5 @@ class ListAdder extends ImmutablePureComponent { } } + +export default connect(mapStateToProps, mapDispatchToProps)(injectIntl(ListAdder)); diff --git a/app/javascript/flavours/glitch/features/list_editor/components/edit_list_form.jsx b/app/javascript/flavours/glitch/features/list_editor/components/edit_list_form.jsx index 418c2a3e74..b4886ef0ed 100644 --- a/app/javascript/flavours/glitch/features/list_editor/components/edit_list_form.jsx +++ b/app/javascript/flavours/glitch/features/list_editor/components/edit_list_form.jsx @@ -19,8 +19,6 @@ const mapDispatchToProps = dispatch => ({ onSubmit: () => dispatch(submitListEditor(false)), }); -export default @connect(mapStateToProps, mapDispatchToProps) -@injectIntl class ListForm extends React.PureComponent { static propTypes = { @@ -68,3 +66,5 @@ class ListForm extends React.PureComponent { } } + +export default connect(mapStateToProps, mapDispatchToProps)(injectIntl(ListForm)); diff --git a/app/javascript/flavours/glitch/features/list_editor/components/search.jsx b/app/javascript/flavours/glitch/features/list_editor/components/search.jsx index 94782ba69a..3b66bc325d 100644 --- a/app/javascript/flavours/glitch/features/list_editor/components/search.jsx +++ b/app/javascript/flavours/glitch/features/list_editor/components/search.jsx @@ -51,7 +51,7 @@ export default class Search extends React.PureComponent { /> -
    +
    diff --git a/app/javascript/flavours/glitch/features/list_editor/index.jsx b/app/javascript/flavours/glitch/features/list_editor/index.jsx index c2ca070532..44951d1c64 100644 --- a/app/javascript/flavours/glitch/features/list_editor/index.jsx +++ b/app/javascript/flavours/glitch/features/list_editor/index.jsx @@ -22,8 +22,6 @@ const mapDispatchToProps = dispatch => ({ onReset: () => dispatch(resetListEditor()), }); -export default @connect(mapStateToProps, mapDispatchToProps) -@injectIntl class ListEditor extends ImmutablePureComponent { static propTypes = { @@ -62,7 +60,7 @@ class ListEditor extends ImmutablePureComponent { {accountIds.map(accountId => )}
    - {showSearch &&
    } + {showSearch &&
    } {({ x }) => @@ -77,3 +75,5 @@ class ListEditor extends ImmutablePureComponent { } } + +export default connect(mapStateToProps, mapDispatchToProps)(injectIntl(ListEditor)); diff --git a/app/javascript/flavours/glitch/features/list_timeline/index.jsx b/app/javascript/flavours/glitch/features/list_timeline/index.jsx index 3f15035480..a32383b130 100644 --- a/app/javascript/flavours/glitch/features/list_timeline/index.jsx +++ b/app/javascript/flavours/glitch/features/list_timeline/index.jsx @@ -31,8 +31,6 @@ const mapStateToProps = (state, props) => ({ hasUnread: state.getIn(['timelines', `list:${props.params.id}`, 'unread']) > 0, }); -export default @connect(mapStateToProps) -@injectIntl class ListTimeline extends React.PureComponent { static contextTypes = { @@ -179,11 +177,11 @@ class ListTimeline extends React.PureComponent { multiColumn={multiColumn} >
    - -
    @@ -222,3 +220,5 @@ class ListTimeline extends React.PureComponent { } } + +export default connect(mapStateToProps)(injectIntl(ListTimeline)); diff --git a/app/javascript/flavours/glitch/features/lists/components/new_list_form.jsx b/app/javascript/flavours/glitch/features/lists/components/new_list_form.jsx index e78a6a3bc3..be94ff5595 100644 --- a/app/javascript/flavours/glitch/features/lists/components/new_list_form.jsx +++ b/app/javascript/flavours/glitch/features/lists/components/new_list_form.jsx @@ -20,8 +20,6 @@ const mapDispatchToProps = dispatch => ({ onSubmit: () => dispatch(submitListEditor(true)), }); -export default @connect(mapStateToProps, mapDispatchToProps) -@injectIntl class NewListForm extends React.PureComponent { static propTypes = { @@ -76,3 +74,5 @@ class NewListForm extends React.PureComponent { } } + +export default connect(mapStateToProps, mapDispatchToProps)(injectIntl(NewListForm)); diff --git a/app/javascript/flavours/glitch/features/lists/index.jsx b/app/javascript/flavours/glitch/features/lists/index.jsx index 8773be5e6d..dce0dcd8f8 100644 --- a/app/javascript/flavours/glitch/features/lists/index.jsx +++ b/app/javascript/flavours/glitch/features/lists/index.jsx @@ -32,8 +32,6 @@ const mapStateToProps = state => ({ lists: getOrderedLists(state), }); -export default @connect(mapStateToProps) -@injectIntl class Lists extends ImmutablePureComponent { static propTypes = { @@ -87,3 +85,5 @@ class Lists extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(injectIntl(Lists)); diff --git a/app/javascript/flavours/glitch/features/local_settings/navigation/index.jsx b/app/javascript/flavours/glitch/features/local_settings/navigation/index.jsx index cc1f3df6d9..fe08e5d7b0 100644 --- a/app/javascript/flavours/glitch/features/local_settings/navigation/index.jsx +++ b/app/javascript/flavours/glitch/features/local_settings/navigation/index.jsx @@ -19,7 +19,6 @@ const messages = defineMessages({ close: { id: 'settings.close', defaultMessage: 'Close' }, }); -export default @injectIntl class LocalSettingsNavigation extends React.PureComponent { static propTypes = { @@ -90,3 +89,5 @@ class LocalSettingsNavigation extends React.PureComponent { } } + +export default injectIntl(LocalSettingsNavigation); diff --git a/app/javascript/flavours/glitch/features/local_settings/navigation/item/index.jsx b/app/javascript/flavours/glitch/features/local_settings/navigation/item/index.jsx index a4d1b40fad..9ac6d9b73d 100644 --- a/app/javascript/flavours/glitch/features/local_settings/navigation/item/index.jsx +++ b/app/javascript/flavours/glitch/features/local_settings/navigation/item/index.jsx @@ -60,7 +60,7 @@ export default class LocalSettingsPage extends React.PureComponent { ({ isLoading: state.getIn(['user_lists', 'mutes', 'isLoading'], true), }); -export default @connect(mapStateToProps) -@injectIntl class Mutes extends ImmutablePureComponent { static propTypes = { @@ -82,3 +80,5 @@ class Mutes extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(injectIntl(Mutes)); diff --git a/app/javascript/flavours/glitch/features/notifications/components/admin_report.jsx b/app/javascript/flavours/glitch/features/notifications/components/admin_report.jsx index 556df8f66b..9b55fe4e98 100644 --- a/app/javascript/flavours/glitch/features/notifications/components/admin_report.jsx +++ b/app/javascript/flavours/glitch/features/notifications/components/admin_report.jsx @@ -91,7 +91,7 @@ export default class AdminReport extends ImmutablePureComponent { return ( -
    +
    diff --git a/app/javascript/flavours/glitch/features/notifications/components/admin_signup.jsx b/app/javascript/flavours/glitch/features/notifications/components/admin_signup.jsx index ead2a9701b..d982108e92 100644 --- a/app/javascript/flavours/glitch/features/notifications/components/admin_signup.jsx +++ b/app/javascript/flavours/glitch/features/notifications/components/admin_signup.jsx @@ -78,7 +78,7 @@ export default class NotificationFollow extends ImmutablePureComponent { // Renders. return ( -
    +
    diff --git a/app/javascript/flavours/glitch/features/notifications/components/clear_column_button.jsx b/app/javascript/flavours/glitch/features/notifications/components/clear_column_button.jsx index ee77cfb8e3..cd150314b7 100644 --- a/app/javascript/flavours/glitch/features/notifications/components/clear_column_button.jsx +++ b/app/javascript/flavours/glitch/features/notifications/components/clear_column_button.jsx @@ -11,7 +11,7 @@ export default class ClearColumnButton extends React.Component { render () { return ( - + ); } diff --git a/app/javascript/flavours/glitch/features/notifications/components/filter_bar.jsx b/app/javascript/flavours/glitch/features/notifications/components/filter_bar.jsx index c1de0f90ea..7f36fb8135 100644 --- a/app/javascript/flavours/glitch/features/notifications/components/filter_bar.jsx +++ b/app/javascript/flavours/glitch/features/notifications/components/filter_bar.jsx @@ -12,7 +12,6 @@ const tooltips = defineMessages({ statuses: { id: 'notifications.filter.statuses', defaultMessage: 'Updates from people you follow' }, }); -export default @injectIntl class FilterBar extends React.PureComponent { static propTypes = { @@ -108,3 +107,5 @@ class FilterBar extends React.PureComponent { } } + +export default injectIntl(FilterBar); diff --git a/app/javascript/flavours/glitch/features/notifications/components/follow.jsx b/app/javascript/flavours/glitch/features/notifications/components/follow.jsx index 434d6609da..e9ef70911e 100644 --- a/app/javascript/flavours/glitch/features/notifications/components/follow.jsx +++ b/app/javascript/flavours/glitch/features/notifications/components/follow.jsx @@ -78,7 +78,7 @@ export default class NotificationFollow extends ImmutablePureComponent { // Renders. return ( -
    +
    diff --git a/app/javascript/flavours/glitch/features/notifications/components/follow_request.jsx b/app/javascript/flavours/glitch/features/notifications/components/follow_request.jsx index a3fdf8a61b..2b985bc085 100644 --- a/app/javascript/flavours/glitch/features/notifications/components/follow_request.jsx +++ b/app/javascript/flavours/glitch/features/notifications/components/follow_request.jsx @@ -17,7 +17,6 @@ const messages = defineMessages({ reject: { id: 'follow_request.reject', defaultMessage: 'Reject' }, }); -export default @injectIntl class FollowRequest extends ImmutablePureComponent { static propTypes = { @@ -96,7 +95,7 @@ class FollowRequest extends ImmutablePureComponent { return ( -
    +
    @@ -130,3 +129,5 @@ class FollowRequest extends ImmutablePureComponent { } } + +export default injectIntl(FollowRequest); diff --git a/app/javascript/flavours/glitch/features/notifications/components/grant_permission_button.jsx b/app/javascript/flavours/glitch/features/notifications/components/grant_permission_button.jsx index 798e4c7872..5b2db48fdb 100644 --- a/app/javascript/flavours/glitch/features/notifications/components/grant_permission_button.jsx +++ b/app/javascript/flavours/glitch/features/notifications/components/grant_permission_button.jsx @@ -10,7 +10,7 @@ export default class GrantPermissionButton extends React.PureComponent { render () { return ( - ); diff --git a/app/javascript/flavours/glitch/features/notifications/components/notifications_permission_banner.jsx b/app/javascript/flavours/glitch/features/notifications/components/notifications_permission_banner.jsx index 7b6ab0c7da..5a12191a51 100644 --- a/app/javascript/flavours/glitch/features/notifications/components/notifications_permission_banner.jsx +++ b/app/javascript/flavours/glitch/features/notifications/components/notifications_permission_banner.jsx @@ -12,8 +12,6 @@ const messages = defineMessages({ close: { id: 'lightbox.close', defaultMessage: 'Close' }, }); -export default @connect() -@injectIntl class NotificationsPermissionBanner extends React.PureComponent { static propTypes = { @@ -46,3 +44,5 @@ class NotificationsPermissionBanner extends React.PureComponent { } } + +export default connect()(injectIntl(NotificationsPermissionBanner)); diff --git a/app/javascript/flavours/glitch/features/notifications/components/overlay.jsx b/app/javascript/flavours/glitch/features/notifications/components/overlay.jsx index 21d3f8acf1..554a7a668e 100644 --- a/app/javascript/flavours/glitch/features/notifications/components/overlay.jsx +++ b/app/javascript/flavours/glitch/features/notifications/components/overlay.jsx @@ -15,7 +15,6 @@ const messages = defineMessages({ markForDeletion: { id: 'notification.markForDeletion', defaultMessage: 'Mark for deletion' }, }); -export default @injectIntl class NotificationOverlay extends ImmutablePureComponent { static propTypes = { @@ -56,3 +55,5 @@ class NotificationOverlay extends ImmutablePureComponent { } } + +export default injectIntl(NotificationOverlay); diff --git a/app/javascript/flavours/glitch/features/notifications/components/report.jsx b/app/javascript/flavours/glitch/features/notifications/components/report.jsx index 46a3072504..9110735a14 100644 --- a/app/javascript/flavours/glitch/features/notifications/components/report.jsx +++ b/app/javascript/flavours/glitch/features/notifications/components/report.jsx @@ -13,7 +13,6 @@ const messages = defineMessages({ violation: { id: 'report_notification.categories.violation', defaultMessage: 'Rule violation' }, }); -export default @injectIntl class Report extends ImmutablePureComponent { static propTypes = { @@ -60,3 +59,5 @@ class Report extends ImmutablePureComponent { } } + +export default injectIntl(Report); diff --git a/app/javascript/flavours/glitch/features/notifications/index.jsx b/app/javascript/flavours/glitch/features/notifications/index.jsx index fff3656174..2de073077b 100644 --- a/app/javascript/flavours/glitch/features/notifications/index.jsx +++ b/app/javascript/flavours/glitch/features/notifications/index.jsx @@ -92,8 +92,6 @@ const mapDispatchToProps = dispatch => ({ dispatch, }); -export default @connect(mapStateToProps, mapDispatchToProps) -@injectIntl class Notifications extends React.PureComponent { static contextTypes = { @@ -380,3 +378,5 @@ class Notifications extends React.PureComponent { } } + +export default connect(mapStateToProps, mapDispatchToProps)(injectIntl(Notifications)); diff --git a/app/javascript/flavours/glitch/features/picture_in_picture/components/footer.jsx b/app/javascript/flavours/glitch/features/picture_in_picture/components/footer.jsx index bc312d5305..51fe023d32 100644 --- a/app/javascript/flavours/glitch/features/picture_in_picture/components/footer.jsx +++ b/app/javascript/flavours/glitch/features/picture_in_picture/components/footer.jsx @@ -38,8 +38,6 @@ const makeMapStateToProps = () => { return mapStateToProps; }; -export default @connect(makeMapStateToProps) -@injectIntl class Footer extends ImmutablePureComponent { static contextTypes = { @@ -215,3 +213,5 @@ class Footer extends ImmutablePureComponent { } } + +export default connect(makeMapStateToProps)(injectIntl(Footer)); diff --git a/app/javascript/flavours/glitch/features/picture_in_picture/components/header.jsx b/app/javascript/flavours/glitch/features/picture_in_picture/components/header.jsx index 26f2da3743..b9b90f1d8f 100644 --- a/app/javascript/flavours/glitch/features/picture_in_picture/components/header.jsx +++ b/app/javascript/flavours/glitch/features/picture_in_picture/components/header.jsx @@ -17,8 +17,6 @@ const mapStateToProps = (state, { accountId }) => ({ account: state.getIn(['accounts', accountId]), }); -export default @connect(mapStateToProps) -@injectIntl class Header extends ImmutablePureComponent { static propTypes = { @@ -45,3 +43,5 @@ class Header extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(injectIntl(Header)); diff --git a/app/javascript/flavours/glitch/features/picture_in_picture/index.jsx b/app/javascript/flavours/glitch/features/picture_in_picture/index.jsx index d445b6d586..e6fb64ff99 100644 --- a/app/javascript/flavours/glitch/features/picture_in_picture/index.jsx +++ b/app/javascript/flavours/glitch/features/picture_in_picture/index.jsx @@ -13,7 +13,6 @@ const mapStateToProps = state => ({ left: state.getIn(['local_settings', 'media', 'pop_in_position']) === 'left', }); -export default @connect(mapStateToProps) class PictureInPicture extends React.Component { static propTypes = { @@ -86,3 +85,5 @@ class PictureInPicture extends React.Component { } } + +export default connect(mapStateToProps)(PictureInPicture); diff --git a/app/javascript/flavours/glitch/features/pinned_accounts_editor/index.jsx b/app/javascript/flavours/glitch/features/pinned_accounts_editor/index.jsx index 43ae0ec2fe..834de652f5 100644 --- a/app/javascript/flavours/glitch/features/pinned_accounts_editor/index.jsx +++ b/app/javascript/flavours/glitch/features/pinned_accounts_editor/index.jsx @@ -21,8 +21,6 @@ const mapDispatchToProps = dispatch => ({ onReset: () => dispatch(resetPinnedAccountsEditor()), }); -export default @connect(mapStateToProps, mapDispatchToProps) -@injectIntl class PinnedAccountsEditor extends ImmutablePureComponent { static propTypes = { @@ -61,7 +59,7 @@ class PinnedAccountsEditor extends ImmutablePureComponent { {accountIds.map(accountId => )}
    - {showSearch &&
    } + {showSearch &&
    } {({ x }) => @@ -76,3 +74,5 @@ class PinnedAccountsEditor extends ImmutablePureComponent { } } + +export default connect(mapStateToProps, mapDispatchToProps)(injectIntl(PinnedAccountsEditor)); diff --git a/app/javascript/flavours/glitch/features/pinned_statuses/index.jsx b/app/javascript/flavours/glitch/features/pinned_statuses/index.jsx index b7bd46fbe3..41be2f7f33 100644 --- a/app/javascript/flavours/glitch/features/pinned_statuses/index.jsx +++ b/app/javascript/flavours/glitch/features/pinned_statuses/index.jsx @@ -19,8 +19,6 @@ const mapStateToProps = state => ({ hasMore: !!state.getIn(['status_lists', 'pins', 'next']), }); -export default @connect(mapStateToProps) -@injectIntl class PinnedStatuses extends ImmutablePureComponent { static propTypes = { @@ -63,3 +61,5 @@ class PinnedStatuses extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(injectIntl(PinnedStatuses)); diff --git a/app/javascript/flavours/glitch/features/privacy_policy/index.jsx b/app/javascript/flavours/glitch/features/privacy_policy/index.jsx index 4618d9e32e..a43befa73e 100644 --- a/app/javascript/flavours/glitch/features/privacy_policy/index.jsx +++ b/app/javascript/flavours/glitch/features/privacy_policy/index.jsx @@ -10,7 +10,6 @@ const messages = defineMessages({ title: { id: 'privacy_policy.title', defaultMessage: 'Privacy Policy' }, }); -export default @injectIntl class PrivacyPolicy extends React.PureComponent { static propTypes = { @@ -59,3 +58,5 @@ class PrivacyPolicy extends React.PureComponent { } } + +export default injectIntl(PrivacyPolicy); diff --git a/app/javascript/flavours/glitch/features/public_timeline/components/column_settings.jsx b/app/javascript/flavours/glitch/features/public_timeline/components/column_settings.jsx index cfe821cfc1..a44d5c784d 100644 --- a/app/javascript/flavours/glitch/features/public_timeline/components/column_settings.jsx +++ b/app/javascript/flavours/glitch/features/public_timeline/components/column_settings.jsx @@ -9,7 +9,6 @@ const messages = defineMessages({ filter_regex: { id: 'home.column_settings.filter_regex', defaultMessage: 'Filter out by regular expressions' }, }); -export default @injectIntl class ColumnSettings extends React.PureComponent { static propTypes = { @@ -40,3 +39,5 @@ class ColumnSettings extends React.PureComponent { } } + +export default injectIntl(ColumnSettings); diff --git a/app/javascript/flavours/glitch/features/public_timeline/index.jsx b/app/javascript/flavours/glitch/features/public_timeline/index.jsx index 810643f970..737e5723f4 100644 --- a/app/javascript/flavours/glitch/features/public_timeline/index.jsx +++ b/app/javascript/flavours/glitch/features/public_timeline/index.jsx @@ -35,8 +35,6 @@ const mapStateToProps = (state, { columnId }) => { }; }; -export default @connect(mapStateToProps) -@injectIntl class PublicTimeline extends React.PureComponent { static defaultProps = { @@ -166,3 +164,5 @@ class PublicTimeline extends React.PureComponent { } } + +export default connect(mapStateToProps)(injectIntl(PublicTimeline)); diff --git a/app/javascript/flavours/glitch/features/reblogs/index.jsx b/app/javascript/flavours/glitch/features/reblogs/index.jsx index 46b1ed4e54..34fe24d3fe 100644 --- a/app/javascript/flavours/glitch/features/reblogs/index.jsx +++ b/app/javascript/flavours/glitch/features/reblogs/index.jsx @@ -22,8 +22,6 @@ const mapStateToProps = (state, props) => ({ accountIds: state.getIn(['user_lists', 'reblogged_by', props.params.statusId]), }); -export default @connect(mapStateToProps) -@injectIntl class Reblogs extends ImmutablePureComponent { static propTypes = { @@ -102,3 +100,5 @@ class Reblogs extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(injectIntl(Reblogs)); diff --git a/app/javascript/flavours/glitch/features/report/category.jsx b/app/javascript/flavours/glitch/features/report/category.jsx index 55c43577bb..43e311f3d0 100644 --- a/app/javascript/flavours/glitch/features/report/category.jsx +++ b/app/javascript/flavours/glitch/features/report/category.jsx @@ -24,8 +24,6 @@ const mapStateToProps = state => ({ rules: state.getIn(['server', 'server', 'rules'], ImmutableList()), }); -export default @connect(mapStateToProps) -@injectIntl class Category extends React.PureComponent { static propTypes = { @@ -102,3 +100,5 @@ class Category extends React.PureComponent { } } + +export default connect(mapStateToProps)(injectIntl(Category)); diff --git a/app/javascript/flavours/glitch/features/report/comment.jsx b/app/javascript/flavours/glitch/features/report/comment.jsx index ec261afcbc..afcb7afa4f 100644 --- a/app/javascript/flavours/glitch/features/report/comment.jsx +++ b/app/javascript/flavours/glitch/features/report/comment.jsx @@ -8,7 +8,6 @@ const messages = defineMessages({ placeholder: { id: 'report.placeholder', defaultMessage: 'Type or paste additional comments' }, }); -export default @injectIntl class Comment extends React.PureComponent { static propTypes = { @@ -81,3 +80,5 @@ class Comment extends React.PureComponent { } } + +export default injectIntl(Comment); diff --git a/app/javascript/flavours/glitch/features/report/components/option.jsx b/app/javascript/flavours/glitch/features/report/components/option.jsx index 6ecfc7a248..7827a6b3b3 100644 --- a/app/javascript/flavours/glitch/features/report/components/option.jsx +++ b/app/javascript/flavours/glitch/features/report/components/option.jsx @@ -40,7 +40,7 @@ export default class Option extends React.PureComponent { ({ rules: state.getIn(['server', 'server', 'rules']), }); -export default @connect(mapStateToProps) class Rules extends React.PureComponent { static propTypes = { @@ -62,3 +61,5 @@ class Rules extends React.PureComponent { } } + +export default connect(mapStateToProps)(Rules); diff --git a/app/javascript/flavours/glitch/features/report/statuses.jsx b/app/javascript/flavours/glitch/features/report/statuses.jsx index 47d5ee8639..a687917ce6 100644 --- a/app/javascript/flavours/glitch/features/report/statuses.jsx +++ b/app/javascript/flavours/glitch/features/report/statuses.jsx @@ -13,7 +13,6 @@ const mapStateToProps = (state, { accountId }) => ({ isLoading: state.getIn(['timelines', `account:${accountId}:with_replies`, 'isLoading']), }); -export default @connect(mapStateToProps) class Statuses extends React.PureComponent { static propTypes = { @@ -59,3 +58,5 @@ class Statuses extends React.PureComponent { } } + +export default connect(mapStateToProps)(Statuses); diff --git a/app/javascript/flavours/glitch/features/report/thanks.jsx b/app/javascript/flavours/glitch/features/report/thanks.jsx index 454979f9fa..30c88e2f29 100644 --- a/app/javascript/flavours/glitch/features/report/thanks.jsx +++ b/app/javascript/flavours/glitch/features/report/thanks.jsx @@ -12,7 +12,6 @@ import { const mapStateToProps = () => ({}); -export default @connect(mapStateToProps) class Thanks extends React.PureComponent { static propTypes = { @@ -82,3 +81,5 @@ class Thanks extends React.PureComponent { } } + +export default connect(mapStateToProps)(Thanks); diff --git a/app/javascript/flavours/glitch/features/status/components/action_bar.jsx b/app/javascript/flavours/glitch/features/status/components/action_bar.jsx index 9957ecdf4c..3dcf565546 100644 --- a/app/javascript/flavours/glitch/features/status/components/action_bar.jsx +++ b/app/javascript/flavours/glitch/features/status/components/action_bar.jsx @@ -40,7 +40,6 @@ const messages = defineMessages({ openOriginalPage: { id: 'account.open_original_page', defaultMessage: 'Open original page' }, }); -export default @injectIntl class ActionBar extends React.PureComponent { static contextTypes = { @@ -235,3 +234,5 @@ class ActionBar extends React.PureComponent { } } + +export default injectIntl(ActionBar); diff --git a/app/javascript/flavours/glitch/features/status/components/detailed_status.jsx b/app/javascript/flavours/glitch/features/status/components/detailed_status.jsx index dd30959296..3d7ab7d729 100644 --- a/app/javascript/flavours/glitch/features/status/components/detailed_status.jsx +++ b/app/javascript/flavours/glitch/features/status/components/detailed_status.jsx @@ -21,7 +21,6 @@ import AnimatedNumber from 'flavours/glitch/components/animated_number'; import PictureInPicturePlaceholder from 'flavours/glitch/components/picture_in_picture_placeholder'; import EditedTimestamp from 'flavours/glitch/components/edited_timestamp'; -export default @injectIntl class DetailedStatus extends ImmutablePureComponent { static contextTypes = { @@ -336,3 +335,5 @@ class DetailedStatus extends ImmutablePureComponent { } } + +export default injectIntl(DetailedStatus); diff --git a/app/javascript/flavours/glitch/features/status/index.jsx b/app/javascript/flavours/glitch/features/status/index.jsx index 38ba6b9ac0..afeb3ae45d 100644 --- a/app/javascript/flavours/glitch/features/status/index.jsx +++ b/app/javascript/flavours/glitch/features/status/index.jsx @@ -172,8 +172,6 @@ const titleFromStatus = status => { return `${prefix}: "${truncate(text, 30)}"`; }; -export default @injectIntl -@connect(makeMapStateToProps) class Status extends ImmutablePureComponent { static contextTypes = { @@ -690,7 +688,7 @@ class Status extends ImmutablePureComponent { {ancestors} -
    +
    ({ }); -export default @connect(mapStateToProps, mapDispatchToProps) -@injectIntl class SubscribedLanguagesModal extends ImmutablePureComponent { static propTypes = { @@ -123,3 +121,5 @@ class SubscribedLanguagesModal extends ImmutablePureComponent { } } + +export default connect(mapStateToProps, mapDispatchToProps)(injectIntl(SubscribedLanguagesModal)); diff --git a/app/javascript/flavours/glitch/features/ui/components/actions_modal.jsx b/app/javascript/flavours/glitch/features/ui/components/actions_modal.jsx index c6e3ee37c7..9a9b1a3f1f 100644 --- a/app/javascript/flavours/glitch/features/ui/components/actions_modal.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/actions_modal.jsx @@ -36,7 +36,7 @@ export default class ActionsModal extends ImmutablePureComponent { if (!contents) { contents = ( - {icon && } + {icon && }
    {text}
    {meta}
    diff --git a/app/javascript/flavours/glitch/features/ui/components/audio_modal.jsx b/app/javascript/flavours/glitch/features/ui/components/audio_modal.jsx index ff7687c1e9..0aeabd94c3 100644 --- a/app/javascript/flavours/glitch/features/ui/components/audio_modal.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/audio_modal.jsx @@ -11,7 +11,6 @@ const mapStateToProps = (state, { statusId }) => ({ accountStaticAvatar: state.getIn(['accounts', state.getIn(['statuses', statusId, 'account']), 'avatar_static']), }); -export default @connect(mapStateToProps, null, null, { forwardRef: true }) class AudioModal extends ImmutablePureComponent { static propTypes = { @@ -59,3 +58,5 @@ class AudioModal extends ImmutablePureComponent { } } + +export default connect(mapStateToProps, null, null, { forwardRef: true })(AudioModal); diff --git a/app/javascript/flavours/glitch/features/ui/components/block_modal.jsx b/app/javascript/flavours/glitch/features/ui/components/block_modal.jsx index 6c9d2043ca..a9506aa69f 100644 --- a/app/javascript/flavours/glitch/features/ui/components/block_modal.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/block_modal.jsx @@ -36,8 +36,6 @@ const mapDispatchToProps = dispatch => { }; }; -export default @connect(makeMapStateToProps, mapDispatchToProps) -@injectIntl class BlockModal extends React.PureComponent { static propTypes = { @@ -101,3 +99,5 @@ class BlockModal extends React.PureComponent { } } + +export default connect(makeMapStateToProps, mapDispatchToProps)(injectIntl(BlockModal)); diff --git a/app/javascript/flavours/glitch/features/ui/components/boost_modal.jsx b/app/javascript/flavours/glitch/features/ui/components/boost_modal.jsx index a65b84e209..d9523a26ed 100644 --- a/app/javascript/flavours/glitch/features/ui/components/boost_modal.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/boost_modal.jsx @@ -35,8 +35,6 @@ const mapDispatchToProps = dispatch => { }; }; -export default @connect(mapStateToProps, mapDispatchToProps) -@injectIntl class BoostModal extends ImmutablePureComponent { static contextTypes = { @@ -137,3 +135,5 @@ class BoostModal extends ImmutablePureComponent { } } + +export default connect(mapStateToProps, mapDispatchToProps)(injectIntl(BoostModal)); diff --git a/app/javascript/flavours/glitch/features/ui/components/bundle_column_error.jsx b/app/javascript/flavours/glitch/features/ui/components/bundle_column_error.jsx index 88304dc361..eaabbc4608 100644 --- a/app/javascript/flavours/glitch/features/ui/components/bundle_column_error.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/bundle_column_error.jsx @@ -92,7 +92,6 @@ class CopyButton extends React.PureComponent { } -export default @injectIntl class BundleColumnError extends React.PureComponent { static propTypes = { @@ -160,3 +159,5 @@ class BundleColumnError extends React.PureComponent { } } + +export default injectIntl(BundleColumnError); diff --git a/app/javascript/flavours/glitch/features/ui/components/column_link.jsx b/app/javascript/flavours/glitch/features/ui/components/column_link.jsx index dcdac077fe..4fffa54f4c 100644 --- a/app/javascript/flavours/glitch/features/ui/components/column_link.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/column_link.jsx @@ -32,7 +32,7 @@ const ColumnLink = ({ icon, text, to, onClick, href, method, badge, transparent, return onClick(e); }; return ( - + {iconElement} {text} {badgeElement} diff --git a/app/javascript/flavours/glitch/features/ui/components/compare_history_modal.jsx b/app/javascript/flavours/glitch/features/ui/components/compare_history_modal.jsx index 4e74feb029..cc3a16d170 100644 --- a/app/javascript/flavours/glitch/features/ui/components/compare_history_modal.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/compare_history_modal.jsx @@ -24,7 +24,6 @@ const mapDispatchToProps = dispatch => ({ }); -export default @connect(mapStateToProps, mapDispatchToProps) class CompareHistoryModal extends React.PureComponent { static propTypes = { @@ -100,3 +99,5 @@ class CompareHistoryModal extends React.PureComponent { } } + +export default connect(mapStateToProps, mapDispatchToProps)(CompareHistoryModal); diff --git a/app/javascript/flavours/glitch/features/ui/components/compose_panel.jsx b/app/javascript/flavours/glitch/features/ui/components/compose_panel.jsx index 34c194c99d..1dedf92cad 100644 --- a/app/javascript/flavours/glitch/features/ui/components/compose_panel.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/compose_panel.jsx @@ -8,7 +8,6 @@ import LinkFooter from './link_footer'; import ServerBanner from 'flavours/glitch/components/server_banner'; import { mountCompose, unmountCompose } from 'flavours/glitch/actions/compose'; -export default @connect() class ComposePanel extends React.PureComponent { static contextTypes = { @@ -56,3 +55,5 @@ class ComposePanel extends React.PureComponent { } } + +export default connect()(ComposePanel); diff --git a/app/javascript/flavours/glitch/features/ui/components/confirmation_modal.jsx b/app/javascript/flavours/glitch/features/ui/components/confirmation_modal.jsx index 94935de5d8..08f55c1253 100644 --- a/app/javascript/flavours/glitch/features/ui/components/confirmation_modal.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/confirmation_modal.jsx @@ -3,7 +3,6 @@ import PropTypes from 'prop-types'; import { injectIntl, FormattedMessage } from 'react-intl'; import Button from 'flavours/glitch/components/button'; -export default @injectIntl class ConfirmationModal extends React.PureComponent { static propTypes = { @@ -86,3 +85,5 @@ class ConfirmationModal extends React.PureComponent { } } + +export default injectIntl(ConfirmationModal); diff --git a/app/javascript/flavours/glitch/features/ui/components/deprecated_settings_modal.jsx b/app/javascript/flavours/glitch/features/ui/components/deprecated_settings_modal.jsx index 37f52b014b..5a1c1ee1b5 100644 --- a/app/javascript/flavours/glitch/features/ui/components/deprecated_settings_modal.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/deprecated_settings_modal.jsx @@ -13,7 +13,6 @@ const messages = defineMessages({ user_setting_disable_swiping: { id: 'settings.swipe_to_change_columns', defaultMessage: 'Allow swiping to change columns (Mobile only)' }, }); -export default @injectIntl class DeprecatedSettingsModal extends React.PureComponent { static propTypes = { @@ -84,3 +83,5 @@ class DeprecatedSettingsModal extends React.PureComponent { } } + +export default injectIntl(DeprecatedSettingsModal); diff --git a/app/javascript/flavours/glitch/features/ui/components/disabled_account_banner.jsx b/app/javascript/flavours/glitch/features/ui/components/disabled_account_banner.jsx index 35933bedbd..0ba79d6489 100644 --- a/app/javascript/flavours/glitch/features/ui/components/disabled_account_banner.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/disabled_account_banner.jsx @@ -28,8 +28,6 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ }, }); -export default @injectIntl -@connect(mapStateToProps, mapDispatchToProps) class DisabledAccountBanner extends React.PureComponent { static propTypes = { @@ -90,3 +88,5 @@ class DisabledAccountBanner extends React.PureComponent { } } + +export default injectIntl(connect(mapStateToProps, mapDispatchToProps)(DisabledAccountBanner)); diff --git a/app/javascript/flavours/glitch/features/ui/components/doodle_modal.jsx b/app/javascript/flavours/glitch/features/ui/components/doodle_modal.jsx index c8ea33a0e3..162957ad89 100644 --- a/app/javascript/flavours/glitch/features/ui/components/doodle_modal.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/doodle_modal.jsx @@ -145,7 +145,6 @@ const mapDispatchToProps = dispatch => ({ * - Ctrl + left mouse button: pick background * - Right mouse button: pick background */ -export default @connect(mapStateToProps, mapDispatchToProps) class DoodleModal extends ImmutablePureComponent { static propTypes = { @@ -612,3 +611,5 @@ class DoodleModal extends ImmutablePureComponent { } } + +export default connect(mapStateToProps, mapDispatchToProps)(DoodleModal); diff --git a/app/javascript/flavours/glitch/features/ui/components/embed_modal.jsx b/app/javascript/flavours/glitch/features/ui/components/embed_modal.jsx index 92bfa79c41..4f1173fd56 100644 --- a/app/javascript/flavours/glitch/features/ui/components/embed_modal.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/embed_modal.jsx @@ -9,7 +9,6 @@ const messages = defineMessages({ close: { id: 'lightbox.close', defaultMessage: 'Close' }, }); -export default @injectIntl class EmbedModal extends ImmutablePureComponent { static propTypes = { @@ -95,3 +94,5 @@ class EmbedModal extends ImmutablePureComponent { } } + +export default injectIntl(EmbedModal); diff --git a/app/javascript/flavours/glitch/features/ui/components/favourite_modal.jsx b/app/javascript/flavours/glitch/features/ui/components/favourite_modal.jsx index 78cbfeb511..fa6f117925 100644 --- a/app/javascript/flavours/glitch/features/ui/components/favourite_modal.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/favourite_modal.jsx @@ -17,7 +17,6 @@ const messages = defineMessages({ favourite: { id: 'status.favourite', defaultMessage: 'Favourite' }, }); -export default @injectIntl class FavouriteModal extends ImmutablePureComponent { static contextTypes = { @@ -99,3 +98,5 @@ class FavouriteModal extends ImmutablePureComponent { } } + +export default injectIntl(FavouriteModal); diff --git a/app/javascript/flavours/glitch/features/ui/components/filter_modal.jsx b/app/javascript/flavours/glitch/features/ui/components/filter_modal.jsx index d2482e7334..2d49312e51 100644 --- a/app/javascript/flavours/glitch/features/ui/components/filter_modal.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/filter_modal.jsx @@ -13,8 +13,6 @@ const messages = defineMessages({ close: { id: 'lightbox.close', defaultMessage: 'Close' }, }); -export default @connect(undefined) -@injectIntl class FilterModal extends ImmutablePureComponent { static propTypes = { @@ -132,3 +130,5 @@ class FilterModal extends ImmutablePureComponent { } } + +export default connect(injectIntl(FilterModal)); diff --git a/app/javascript/flavours/glitch/features/ui/components/focal_point_modal.jsx b/app/javascript/flavours/glitch/features/ui/components/focal_point_modal.jsx index 8e624adb3e..a5637d31cb 100644 --- a/app/javascript/flavours/glitch/features/ui/components/focal_point_modal.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/focal_point_modal.jsx @@ -99,8 +99,6 @@ class ImageLoader extends React.PureComponent { } -export default @connect(mapStateToProps, mapDispatchToProps, null, { forwardRef: true }) -@(component => injectIntl(component, { withRef: true })) class FocalPointModal extends ImmutablePureComponent { static propTypes = { @@ -416,3 +414,7 @@ class FocalPointModal extends ImmutablePureComponent { } } + +export default connect(mapStateToProps, mapDispatchToProps, null, { + forwardRef: true, +})(injectIntl(FocalPointModal, { withRef: true })); diff --git a/app/javascript/flavours/glitch/features/ui/components/follow_requests_column_link.jsx b/app/javascript/flavours/glitch/features/ui/components/follow_requests_column_link.jsx index 301392a52a..f3e3b78ed9 100644 --- a/app/javascript/flavours/glitch/features/ui/components/follow_requests_column_link.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/follow_requests_column_link.jsx @@ -15,8 +15,6 @@ const mapStateToProps = state => ({ count: state.getIn(['user_lists', 'follow_requests', 'items'], ImmutableList()).size, }); -export default @injectIntl -@connect(mapStateToProps) class FollowRequestsColumnLink extends React.Component { static propTypes = { @@ -49,3 +47,5 @@ class FollowRequestsColumnLink extends React.Component { } } + +export default injectIntl(connect(mapStateToProps)(FollowRequestsColumnLink)); diff --git a/app/javascript/flavours/glitch/features/ui/components/header.jsx b/app/javascript/flavours/glitch/features/ui/components/header.jsx index d9ad949611..f7bab24871 100644 --- a/app/javascript/flavours/glitch/features/ui/components/header.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/header.jsx @@ -23,8 +23,6 @@ const mapDispatchToProps = (dispatch) => ({ }, }); -export default @connect(null, mapDispatchToProps) -@withRouter class Header extends React.PureComponent { static contextTypes = { @@ -86,3 +84,5 @@ class Header extends React.PureComponent { } } + +export default withRouter(connect(null, mapDispatchToProps)(Header)); diff --git a/app/javascript/flavours/glitch/features/ui/components/image_modal.jsx b/app/javascript/flavours/glitch/features/ui/components/image_modal.jsx index a792b9be77..5198b88092 100644 --- a/app/javascript/flavours/glitch/features/ui/components/image_modal.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/image_modal.jsx @@ -9,7 +9,6 @@ const messages = defineMessages({ close: { id: 'lightbox.close', defaultMessage: 'Close' }, }); -export default @injectIntl class ImageModal extends React.PureComponent { static propTypes = { @@ -57,3 +56,5 @@ class ImageModal extends React.PureComponent { } } + +export default injectIntl(ImageModal); diff --git a/app/javascript/flavours/glitch/features/ui/components/link_footer.jsx b/app/javascript/flavours/glitch/features/ui/components/link_footer.jsx index 0d1d4040f7..e813a72b0e 100644 --- a/app/javascript/flavours/glitch/features/ui/components/link_footer.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/link_footer.jsx @@ -24,8 +24,6 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ }, }); -export default @injectIntl -@connect(null, mapDispatchToProps) class LinkFooter extends React.PureComponent { static contextTypes = { @@ -100,3 +98,5 @@ class LinkFooter extends React.PureComponent { } } + +export default injectIntl(connect(null, mapDispatchToProps)(LinkFooter)); diff --git a/app/javascript/flavours/glitch/features/ui/components/list_panel.jsx b/app/javascript/flavours/glitch/features/ui/components/list_panel.jsx index dff8300656..489f3a1b46 100644 --- a/app/javascript/flavours/glitch/features/ui/components/list_panel.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/list_panel.jsx @@ -20,8 +20,6 @@ const mapStateToProps = state => ({ lists: getOrderedLists(state), }); -export default @withRouter -@connect(mapStateToProps) class ListPanel extends ImmutablePureComponent { static propTypes = { @@ -53,3 +51,5 @@ class ListPanel extends ImmutablePureComponent { } } + +export default withRouter(connect(mapStateToProps)(ListPanel)); diff --git a/app/javascript/flavours/glitch/features/ui/components/media_modal.jsx b/app/javascript/flavours/glitch/features/ui/components/media_modal.jsx index 9c67ed8087..fd2bd43cf5 100644 --- a/app/javascript/flavours/glitch/features/ui/components/media_modal.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/media_modal.jsx @@ -25,8 +25,6 @@ const mapStateToProps = (state, { statusId }) => ({ language: state.getIn(['statuses', statusId, 'language']), }); -export default @connect(mapStateToProps, null, null, { forwardRef: true }) -@injectIntl class MediaModal extends ImmutablePureComponent { static contextTypes = { @@ -142,8 +140,8 @@ class MediaModal extends ImmutablePureComponent { const index = this.getIndex(); - const leftNav = media.size > 1 && ; - const rightNav = media.size > 1 && ; + const leftNav = media.size > 1 && ; + const rightNav = media.size > 1 && ; const content = media.map((image) => { const width = image.getIn(['meta', 'original', 'width']) || null; @@ -259,3 +257,5 @@ class MediaModal extends ImmutablePureComponent { } } + +export default connect(mapStateToProps, null, null, { forwardRef: true })(injectIntl(MediaModal)); diff --git a/app/javascript/flavours/glitch/features/ui/components/modal_root.jsx b/app/javascript/flavours/glitch/features/ui/components/modal_root.jsx index d04a2d53ac..c133f2b6a5 100644 --- a/app/javascript/flavours/glitch/features/ui/components/modal_root.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/modal_root.jsx @@ -81,7 +81,7 @@ export default class ModalRoot extends React.PureComponent { document.documentElement.style.marginRight = `${getScrollbarWidth()}px`; } else { document.body.classList.remove('with-modals--active'); - document.documentElement.style.marginRight = 0; + document.documentElement.style.marginRight = '0'; } } diff --git a/app/javascript/flavours/glitch/features/ui/components/mute_modal.jsx b/app/javascript/flavours/glitch/features/ui/components/mute_modal.jsx index f8bb9a3642..a74ebfb052 100644 --- a/app/javascript/flavours/glitch/features/ui/components/mute_modal.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/mute_modal.jsx @@ -43,8 +43,6 @@ const mapDispatchToProps = dispatch => { }; }; -export default @connect(mapStateToProps, mapDispatchToProps) -@injectIntl class MuteModal extends React.PureComponent { static propTypes = { @@ -138,3 +136,5 @@ class MuteModal extends React.PureComponent { } } + +export default connect(mapStateToProps, mapDispatchToProps)(injectIntl(MuteModal)); diff --git a/app/javascript/flavours/glitch/features/ui/components/navigation_panel.jsx b/app/javascript/flavours/glitch/features/ui/components/navigation_panel.jsx index 3b46c6eec0..6e8744ef07 100644 --- a/app/javascript/flavours/glitch/features/ui/components/navigation_panel.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/navigation_panel.jsx @@ -29,7 +29,6 @@ const messages = defineMessages({ app_settings: { id: 'navigation_bar.app_settings', defaultMessage: 'App settings' }, }); -export default @injectIntl class NavigationPanel extends React.Component { static contextTypes = { @@ -78,8 +77,8 @@ class NavigationPanel extends React.Component { {signedIn && ( - + @@ -102,3 +101,5 @@ class NavigationPanel extends React.Component { } } + +export default injectIntl(NavigationPanel); diff --git a/app/javascript/flavours/glitch/features/ui/components/onboarding_modal.jsx b/app/javascript/flavours/glitch/features/ui/components/onboarding_modal.jsx index d972fe3b5b..29eb91a6ba 100644 --- a/app/javascript/flavours/glitch/features/ui/components/onboarding_modal.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/onboarding_modal.jsx @@ -170,8 +170,6 @@ const mapStateToProps = state => ({ domain: state.getIn(['meta', 'domain']), }); -export default @connect(mapStateToProps) -@injectIntl class OnboardingModal extends React.PureComponent { static propTypes = { @@ -301,7 +299,7 @@ class OnboardingModal extends React.PureComponent {
    { return mapStateToProps; }; -export default @connect(makeMapStateToProps) -@injectIntl class ReportModal extends ImmutablePureComponent { static propTypes = { @@ -219,3 +217,5 @@ class ReportModal extends ImmutablePureComponent { } } + +export default connect(makeMapStateToProps)(injectIntl(ReportModal)); diff --git a/app/javascript/flavours/glitch/features/ui/components/video_modal.jsx b/app/javascript/flavours/glitch/features/ui/components/video_modal.jsx index c1f8377176..4cde0ebad6 100644 --- a/app/javascript/flavours/glitch/features/ui/components/video_modal.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/video_modal.jsx @@ -11,7 +11,6 @@ const mapStateToProps = (state, { statusId }) => ({ language: state.getIn(['statuses', statusId, 'language']), }); -export default @connect(mapStateToProps, null, null, { forwardRef: true }) class VideoModal extends ImmutablePureComponent { static contextTypes = { @@ -72,3 +71,5 @@ class VideoModal extends ImmutablePureComponent { } } + +export default connect(mapStateToProps, null, null, { forwardRef: true })(VideoModal); diff --git a/app/javascript/flavours/glitch/features/ui/components/zoomable_image.jsx b/app/javascript/flavours/glitch/features/ui/components/zoomable_image.jsx index 82ba6e692a..47401cfe4c 100644 --- a/app/javascript/flavours/glitch/features/ui/components/zoomable_image.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/zoomable_image.jsx @@ -91,7 +91,6 @@ const normalizeWheel = event => { }; }; -export default @injectIntl class ZoomableImage extends React.PureComponent { static propTypes = { @@ -451,3 +450,5 @@ class ZoomableImage extends React.PureComponent { } } + +export default injectIntl(ZoomableImage); diff --git a/app/javascript/flavours/glitch/features/ui/index.jsx b/app/javascript/flavours/glitch/features/ui/index.jsx index 9255e346e4..fa35f689d7 100644 --- a/app/javascript/flavours/glitch/features/ui/index.jsx +++ b/app/javascript/flavours/glitch/features/ui/index.jsx @@ -10,7 +10,7 @@ import { debounce } from 'lodash'; import { uploadCompose, resetCompose, changeComposeSpoilerness } from 'flavours/glitch/actions/compose'; import { expandHomeTimeline } from 'flavours/glitch/actions/timelines'; import { expandNotifications, notificationsSetVisibility } from 'flavours/glitch/actions/notifications'; -import { fetchServer } from 'flavours/glitch/actions/server'; +import { fetchServer, fetchServerTranslationLanguages } from 'flavours/glitch/actions/server'; import { clearHeight } from 'flavours/glitch/actions/height_cache'; import { changeLayout } from 'flavours/glitch/actions/app'; import { synchronouslySubmitMarkers, submitMarkers, fetchMarkers } from 'flavours/glitch/actions/markers'; @@ -244,9 +244,6 @@ class SwitchingColumnsArea extends React.PureComponent { } -export default @connect(mapStateToProps) -@injectIntl -@withRouter class UI extends React.Component { static contextTypes = { @@ -419,6 +416,7 @@ class UI extends React.Component { this.props.dispatch(fetchMarkers()); this.props.dispatch(expandHomeTimeline()); this.props.dispatch(expandNotifications()); + this.props.dispatch(fetchServerTranslationLanguages()); setTimeout(() => this.props.dispatch(fetchServer()), 3000); } @@ -682,3 +680,5 @@ class UI extends React.Component { } } + +export default connect(mapStateToProps)(injectIntl(withRouter(UI))); diff --git a/app/javascript/flavours/glitch/features/video/index.jsx b/app/javascript/flavours/glitch/features/video/index.jsx index 9ab56b439e..28a8bb1fd7 100644 --- a/app/javascript/flavours/glitch/features/video/index.jsx +++ b/app/javascript/flavours/glitch/features/video/index.jsx @@ -93,7 +93,6 @@ export const fileNameFromURL = str => { return pathname.slice(index + 1); }; -export default @injectIntl class Video extends React.PureComponent { static propTypes = { @@ -601,7 +600,7 @@ class Video extends React.PureComponent { preload={preload} loop role='button' - tabIndex='0' + tabIndex={0} aria-label={alt} title={alt} lang={lang} @@ -630,7 +629,7 @@ class Video extends React.PureComponent { @@ -646,7 +645,7 @@ class Video extends React.PureComponent {
    @@ -673,3 +672,5 @@ class Video extends React.PureComponent { } } + +export default injectIntl(Video); diff --git a/app/javascript/flavours/glitch/initial_state.js b/app/javascript/flavours/glitch/initial_state.js index c4b249db81..8b135006d8 100644 --- a/app/javascript/flavours/glitch/initial_state.js +++ b/app/javascript/flavours/glitch/initial_state.js @@ -55,7 +55,7 @@ * @property {boolean=} delete_modal * @property {boolean=} disable_swiping * @property {string=} disabled_account_id - * @property {boolean} display_media + * @property {string} display_media * @property {string} domain * @property {boolean=} expand_spoilers * @property {boolean} limited_federation_mode @@ -140,7 +140,6 @@ export const unfollowModal = getMeta('unfollow_modal'); export const useBlurhash = getMeta('use_blurhash'); export const usePendingItems = getMeta('use_pending_items'); export const version = getMeta('version'); -export const translationEnabled = getMeta('translation_enabled'); export const languages = initialState?.languages; export const statusPageUrl = getMeta('status_page_url'); diff --git a/app/javascript/flavours/glitch/load_polyfills.js b/app/javascript/flavours/glitch/load_polyfills.js index f5a897f754..7909dc4ea3 100644 --- a/app/javascript/flavours/glitch/load_polyfills.js +++ b/app/javascript/flavours/glitch/load_polyfills.js @@ -12,10 +12,8 @@ function importExtraPolyfills() { function loadPolyfills() { const needsBasePolyfills = !( - Array.prototype.includes && HTMLCanvasElement.prototype.toBlob && window.Intl && - Number.isNaN && Object.assign && Object.values && window.Symbol && diff --git a/app/javascript/flavours/glitch/locales/af.json b/app/javascript/flavours/glitch/locales/af.json index 0967ef424b..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/af.json +++ b/app/javascript/flavours/glitch/locales/af.json @@ -1 +1,206 @@ -{} +{ + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", + "settings.content_warnings": "Content warnings", + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." +} diff --git a/app/javascript/flavours/glitch/locales/an.json b/app/javascript/flavours/glitch/locales/an.json index 0967ef424b..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/an.json +++ b/app/javascript/flavours/glitch/locales/an.json @@ -1 +1,206 @@ -{} +{ + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", + "settings.content_warnings": "Content warnings", + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." +} diff --git a/app/javascript/flavours/glitch/locales/ar.json b/app/javascript/flavours/glitch/locales/ar.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/ar.json +++ b/app/javascript/flavours/glitch/locales/ar.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/ast.json b/app/javascript/flavours/glitch/locales/ast.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/ast.json +++ b/app/javascript/flavours/glitch/locales/ast.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/be.json b/app/javascript/flavours/glitch/locales/be.json index 0967ef424b..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/be.json +++ b/app/javascript/flavours/glitch/locales/be.json @@ -1 +1,206 @@ -{} +{ + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", + "settings.content_warnings": "Content warnings", + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." +} diff --git a/app/javascript/flavours/glitch/locales/bg.json b/app/javascript/flavours/glitch/locales/bg.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/bg.json +++ b/app/javascript/flavours/glitch/locales/bg.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/bn.json b/app/javascript/flavours/glitch/locales/bn.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/bn.json +++ b/app/javascript/flavours/glitch/locales/bn.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/br.json b/app/javascript/flavours/glitch/locales/br.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/br.json +++ b/app/javascript/flavours/glitch/locales/br.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/bs.json b/app/javascript/flavours/glitch/locales/bs.json index 0967ef424b..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/bs.json +++ b/app/javascript/flavours/glitch/locales/bs.json @@ -1 +1,206 @@ -{} +{ + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", + "settings.content_warnings": "Content warnings", + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." +} diff --git a/app/javascript/flavours/glitch/locales/ca.json b/app/javascript/flavours/glitch/locales/ca.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/ca.json +++ b/app/javascript/flavours/glitch/locales/ca.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/ckb.json b/app/javascript/flavours/glitch/locales/ckb.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/ckb.json +++ b/app/javascript/flavours/glitch/locales/ckb.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/co.json b/app/javascript/flavours/glitch/locales/co.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/co.json +++ b/app/javascript/flavours/glitch/locales/co.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/cs.json b/app/javascript/flavours/glitch/locales/cs.json index 09ad531400..91fec35d64 100644 --- a/app/javascript/flavours/glitch/locales/cs.json +++ b/app/javascript/flavours/glitch/locales/cs.json @@ -1,5 +1,15 @@ { "about.fork_disclaimer": "Glitch-soc je svobodný software s otevřeným zdrojovým kódem založený na Mastodonu.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", "advanced_options.icon_title": "Pokročilá nastavení", "advanced_options.local-only.long": "Neposílat na jiné servery", "advanced_options.local-only.short": "Lokální příspěvek", @@ -8,15 +18,33 @@ "advanced_options.threaded_mode.short": "Režim vlákna", "advanced_options.threaded_mode.tooltip": "Režim vlákna je zapnutý", "boost_modal.missing_description": "Příspěvek obsahuje obrázky bez popisků", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", "column.subheading": "Různé", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", "compose.attach": "Připojit...", "compose.attach.doodle": "Něco namalovat", "compose.attach.upload": "Nahrát soubor", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", "compose.content-type.plain": "Prostý text", "compose_form.poll.multiple_choices": "Povolit více odpovědí", "compose_form.poll.single_choice": "Povolit jednu odpověď", "compose_form.spoiler": "Přidat varování o obsahu", "confirmation_modal.do_not_ask_again": "Příště se už neptat", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", "content-type.change": "Formát příspěvku", "direct.group_by_conversations": "Seskupit do konverzací", "endorsed_accounts_editor.endorsed_accounts": "Vybrané účty", @@ -25,17 +53,20 @@ "home.column_settings.advanced": "Pokročilé", "home.column_settings.filter_regex": "Filtrovat podle regulárních výrazů", "home.column_settings.show_direct": "Zobrazit přímé zprávy", + "home.settings": "Column settings", "keyboard_shortcuts.bookmark": "Přidat do záložek", "keyboard_shortcuts.secondary_toot": "Odeslat příspěvek s druhotným nastavením soukromí", "keyboard_shortcuts.toggle_collapse": "Sbalit/rozbalit příspěvek", "layout.auto": "Automatické", + "layout.desktop": "Desktop", "layout.hint.auto": "Vybrat rozložení automaticky v závislosti na nastavení “Povolit pokročilé webové rozhraní” a velikosti obrazovky.", "layout.hint.desktop": "Použít vícesloupcové rozložení nezávisle na nastavení “Povolit pokročilé webové rozhraní” a velikosti obrazovky.", "layout.hint.single": "Použít jednosloupcové rozložení nezávisle na nastavení “Povolit pokročilé webové rozhraní” a velikosti obrazovky.", + "layout.single": "Mobile", "media_gallery.sensitive": "Citlivý obsah", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", "navigation_bar.app_settings": "Nastavení aplikace", "navigation_bar.featured_users": "Vybraní uživatelé", - "navigation_bar.info": "Rozšířené informace", "navigation_bar.keyboard_shortcuts": "Klávesové zkratky", "navigation_bar.misc": "Různé", "notification.markForDeletion": "Označit pro smazání", @@ -54,18 +85,28 @@ "onboarding.page_one.federation": "{domain} je 'instance' Mastodonu. Mastodon je síť nezávislých serverů, které jsou spolu propojené do jedné velké sociální sítě. Těmto serverům říkáme instance.", "onboarding.page_one.handle": "Jste na instanci {domain}, takže celá adresa vašeho profilu je {handle}", "onboarding.page_one.welcome": "Vítá vás {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", "onboarding.page_six.almost_done": "Skoro hotovo...", "onboarding.page_six.appetoot": "Veselé mastodonění!", "onboarding.page_six.apps_available": "Jsou dostupné {apps} pro iOS, Android i jiné platformy.", "onboarding.page_six.github": "Na serveru {domain} běží Glitchsoc. Glitchsoc je přátelský {fork} programu {Mastodon}, a je kompatibilní s jakoukoliv jinou mastodoní instancí nebo aplikací. Glitchsoc je zcela svobodný a má otevřený zdrojový kód. Na stránce {github} můžete hlásit chyby, žádat o nové funkce, nebo ke kódu vlastnoručně přispět.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", "onboarding.page_six.various_app": "mobilní aplikace", "onboarding.page_three.profile": "Upravte si svůj profil a nastavte si profilový obrázek, jméno, a krátký text o sobě. Naleznete tam i další možnosti nastavení.", "onboarding.page_three.search": "Pomocí vyhledávací lišty můžete hledat lidi nebo hashtagy. Pokud hledáte někoho z jiné instance, musíte použít celou adresu jeho profilu.", "onboarding.page_two.compose": "Příspěvky se píší v levém sloupci. Pomocí ikon pod příspěvkem k němu můžete připojit obrázky, změnit úroveň soukromí nebo přidat varování o obsahu.", "onboarding.skip": "Přeskočit", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", "settings.always_show_spoilers_field": "Vždy zobrazit pole pro varování o obsahu", "settings.auto_collapse": "Automaticky sbalit", "settings.auto_collapse_all": "Všechno", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", "settings.auto_collapse_lengthy": "Dlouhé příspěvky", "settings.auto_collapse_media": "Příspěvky s přílohami", "settings.auto_collapse_notifications": "Oznámení", @@ -137,6 +178,7 @@ "settings.status_icons_media": "Indikace obrázků a anket", "settings.status_icons_reply": "Indikace odpovědi", "settings.status_icons_visibility": "Indikace úrovně soukromí", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", "settings.tag_misleading_links": "Označit zavádějící odkazy", "settings.tag_misleading_links.hint": "Zobrazit skutečný cíl u každého odkazu, který ho explicitně nezmiňuje", "settings.wide_view": "Široké sloupce (pouze v režimu Desktop)", @@ -149,5 +191,16 @@ "status.in_reply_to": "Tento příspěvek je odpověď", "status.is_poll": "Tento příspěvek je anketa", "status.local_only": "Viditelné pouze z vaší instance", - "status.uncollapse": "Rozbalit" + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Rozbalit", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/cy.json b/app/javascript/flavours/glitch/locales/cy.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/cy.json +++ b/app/javascript/flavours/glitch/locales/cy.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/da.json b/app/javascript/flavours/glitch/locales/da.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/da.json +++ b/app/javascript/flavours/glitch/locales/da.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/de.json b/app/javascript/flavours/glitch/locales/de.json index a8f189bf42..5851daaf70 100644 --- a/app/javascript/flavours/glitch/locales/de.json +++ b/app/javascript/flavours/glitch/locales/de.json @@ -67,7 +67,6 @@ "moved_to_warning": "Dieses Konto ist als verschoben zu {moved_to_link} markiert und akzeptiert daher keine neuen Follower.", "navigation_bar.app_settings": "App-Einstellungen", "navigation_bar.featured_users": "Empfohlene Nutzer", - "navigation_bar.info": "Erweiterte Informationen", "navigation_bar.keyboard_shortcuts": "Tastaturkürzel", "navigation_bar.misc": "Sonstiges", "notification.markForDeletion": "Zum Entfernen auswählen", @@ -98,12 +97,18 @@ "onboarding.page_three.search": "Benutze die Suchleiste, um Leute zu finden und Hashtags anzusehen, wie etwa {illustration} und {introductions}. Um nach einer Person zu suchen, die nicht auf dieser Instanz ist, benutze deren vollständigen Nutzername.", "onboarding.page_two.compose": "Schreibe Posts in der Verfassen-Spalte. Mit den Symbolen unten kannst du Bilder hochladen, Privatsphäre-Einstellungen ändern, und Inhaltswarnungen hinzufügen.", "onboarding.skip": "Überspringen", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", "settings.always_show_spoilers_field": "Das Inhaltswarnungs-Feld immer aktivieren", "settings.auto_collapse": "Automatisches Einklappen", "settings.auto_collapse_all": "Alles", + "settings.auto_collapse_height": "Höhe (in Pixeln), ab der ein Toot als lang gilt", "settings.auto_collapse_lengthy": "Lange Toots", "settings.auto_collapse_media": "Toots mit Anhängen", - "settings.auto_collapse_height": "Höhe (in Pixeln), ab der ein Toot als lang gilt", "settings.auto_collapse_notifications": "Benachrichtigungen", "settings.auto_collapse_reblogs": "Geteilte Toots", "settings.auto_collapse_replies": "Antworten", diff --git a/app/javascript/flavours/glitch/locales/defaultMessages.json b/app/javascript/flavours/glitch/locales/defaultMessages.json index d7aec67ac3..fe943f97f9 100644 --- a/app/javascript/flavours/glitch/locales/defaultMessages.json +++ b/app/javascript/flavours/glitch/locales/defaultMessages.json @@ -335,6 +335,35 @@ ], "path": "app/javascript/flavours/glitch/features/compose/components/poll_form.json" }, + { + "descriptors": [ + { + "defaultMessage": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", + "id": "search_popout.tips.full_text" + }, + { + "defaultMessage": "Simple text returns matching display names, usernames and hashtags", + "id": "search_popout.tips.text" + }, + { + "defaultMessage": "Advanced search format", + "id": "search_popout.search_format" + }, + { + "defaultMessage": "hashtag", + "id": "search_popout.tips.hashtag" + }, + { + "defaultMessage": "user", + "id": "search_popout.tips.user" + }, + { + "defaultMessage": "status", + "id": "search_popout.tips.status" + } + ], + "path": "app/javascript/flavours/glitch/features/compose/components/search.json" + }, { "descriptors": [ { @@ -405,10 +434,6 @@ "defaultMessage": "Miscellaneous options", "id": "column.subheading" }, - { - "defaultMessage": "Extended information", - "id": "navigation_bar.info" - }, { "defaultMessage": "Show me around", "id": "getting_started.onboarding" @@ -802,6 +827,10 @@ "defaultMessage": "Toots with media", "id": "settings.auto_collapse_media" }, + { + "defaultMessage": "Height (in pixels) for a toot to be considered lengthy", + "id": "settings.auto_collapse_height" + }, { "defaultMessage": "Image backgrounds", "id": "settings.image_backgrounds" diff --git a/app/javascript/flavours/glitch/locales/el.json b/app/javascript/flavours/glitch/locales/el.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/el.json +++ b/app/javascript/flavours/glitch/locales/el.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/en-GB.json b/app/javascript/flavours/glitch/locales/en-GB.json index 0967ef424b..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/en-GB.json +++ b/app/javascript/flavours/glitch/locales/en-GB.json @@ -1 +1,206 @@ -{} +{ + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", + "settings.content_warnings": "Content warnings", + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." +} diff --git a/app/javascript/flavours/glitch/locales/en.json b/app/javascript/flavours/glitch/locales/en.json index 7c21f69c3c..81d88ca65f 100644 --- a/app/javascript/flavours/glitch/locales/en.json +++ b/app/javascript/flavours/glitch/locales/en.json @@ -67,7 +67,6 @@ "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", "navigation_bar.app_settings": "App settings", "navigation_bar.featured_users": "Featured users", - "navigation_bar.info": "Extended information", "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", "navigation_bar.misc": "Misc", "notification.markForDeletion": "Mark for deletion", @@ -98,12 +97,18 @@ "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", "settings.always_show_spoilers_field": "Always enable the Content Warning field", "settings.auto_collapse": "Automatic collapsing", "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", "settings.auto_collapse_lengthy": "Lengthy toots", "settings.auto_collapse_media": "Toots with media", - "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", "settings.auto_collapse_notifications": "Notifications", "settings.auto_collapse_reblogs": "Boosts", "settings.auto_collapse_replies": "Replies", diff --git a/app/javascript/flavours/glitch/locales/eo.json b/app/javascript/flavours/glitch/locales/eo.json index 87fe6c657f..88396f186c 100644 --- a/app/javascript/flavours/glitch/locales/eo.json +++ b/app/javascript/flavours/glitch/locales/eo.json @@ -1,52 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", "account.add_account_note": "Aldoni noton por @{name}", + "account.disclaimer_full": "Subaj informoj povas nekomplete prezenti la profilon de la uzanto.", + "account.follows": "Sekvatoj", + "account.joined": "Kuniĝis {date}", + "account.suspended_disclaimer_full": "Ĉi tiu uzanto estis suspendita de moderiganto.", + "account.view_full_profile": "Vidi plenan profilon", "account_note.cancel": "Nuligi", "account_note.edit": "Redakti", + "account_note.glitch_placeholder": "No comment provided", "account_note.save": "Konservi", + "advanced_options.icon_title": "Pliaj opcioj", + "advanced_options.local-only.long": "Ne afiŝi al aliaj instancoj", + "advanced_options.local-only.short": "Nur loka", + "advanced_options.local-only.tooltip": "Ĉi tiu afiŝo estas nur-loka", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Stelumita per", + "column.heading": "Misc", "column.reblogged_by": "Diskonigita de", "column.subheading": "Diversaj agordoj", "column_header.profile": "Profilo", "column_subheading.lists": "Listoj", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Montri nur-lokajn afiŝojn", "compose.attach": "Aldoni…", "compose.attach.doodle": "Desegni ion", "compose.attach.upload": "Alŝuti dosieron", "compose.content-type.html": "HTML", "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plata teksto", + "compose_form.poll.multiple_choices": "Permesi multajn elekteblojn", + "compose_form.poll.single_choice": "Permesi unu elekteblon", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", "confirmations.unfilter.author": "Aŭtoro", "confirmations.unfilter.confirm": "Montri", "confirmations.unfilter.edit_filter": "Redakti filtrilon", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", "navigation_bar.keyboard_shortcuts": "Fulmoklavoj", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", "notification_purge.btn_all": "Selekti ĉiujn", "notification_purge.btn_apply": "Forigi selektajn", "notification_purge.btn_invert": "Inverti selekton", "notification_purge.btn_none": "Elekti neniun", + "notification_purge.start": "Enter notification cleaning mode", "notifications.marked_clear": "Forigi selektajn sciigojn", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", "onboarding.next": "Sekva", - "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "{domain} estas \"instanco\" de Mastodon. Mastodon estas reto de sendependaj serviloj, ke kuniĝas por fari unu pli grandan socian reton. Ni nomas tiujn servilojn \"instancoj\".", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "La administranto de via instanco estas {admin}.", "onboarding.page_six.almost_done": "Preskaŭ finita…", + "onboarding.page_six.appetoot": "Bon Appetoot!", "onboarding.page_six.apps_available": "Estas {apps} disponeblaj por iOS, Android kaj aliaj sistemoj.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", "onboarding.page_six.various_app": "poŝtelefonaj aplikaĵoj", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", "settings.auto_collapse_all": "Ĉiuj", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", "settings.auto_collapse_lengthy": "Longaj afiŝoj", "settings.auto_collapse_media": "Afiŝoj kun aŭdovidaĵoj", "settings.auto_collapse_notifications": "Sciigoj", "settings.auto_collapse_reblogs": "Diskonigoj", "settings.auto_collapse_replies": "Respondoj", "settings.close": "Fermi", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", "settings.content_warnings.regexp": "Regula esprimo", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", "settings.shared_settings_link": "preferoj de uzanto", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", "settings.side_arm": "Duaranga butono por afiŝi:", "settings.side_arm.none": "Neniu", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", "settings.status_icons": "Ikonoj sur la afiŝoj", "settings.status_icons_language": "Indikilo de lingvo", + "settings.status_icons_local_only": "Local-only indicator", "settings.status_icons_media": "Indikilo de aŭdovidaĵojn kaj balotenketo", "settings.status_icons_reply": "Indikilo de respondoj", "settings.status_icons_visibility": "Indikilo de privateco de afiŝo", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Videbla nur el via instanco", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", "web_app_crash.change_your_settings": "Ŝanĝi viajn {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", "web_app_crash.reload": "Reŝarĝi", "web_app_crash.reload_page": "{reload} la nunan paĝon", - "web_app_crash.settings": "agordojn" + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "agordojn", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/es-AR.json b/app/javascript/flavours/glitch/locales/es-AR.json index fc5a2e9040..a802363f5c 100644 --- a/app/javascript/flavours/glitch/locales/es-AR.json +++ b/app/javascript/flavours/glitch/locales/es-AR.json @@ -1,4 +1,15 @@ { + "about.fork_disclaimer": "Glitch-soc es software gratuito, de código abierto, bifurcado de Mastodon.", + "account.add_account_note": "Añadir nota para @{name}", + "account.disclaimer_full": "La información aquí presentada puede reflejar de manera incompleta el perfil del usuario.", + "account.follows": "Sigue", + "account.joined": "Unido el {date}", + "account.suspended_disclaimer_full": "Este usuario ha sido suspendido por un moderador.", + "account.view_full_profile": "Ver perfil completo", + "account_note.cancel": "Cancelar", + "account_note.edit": "Editar", + "account_note.glitch_placeholder": "No se proporcionó comentario alguno", + "account_note.save": "Guardar", "advanced_options.icon_title": "Opciones avanzadas", "advanced_options.local-only.long": "No publicar a otras instancias", "advanced_options.local-only.short": "Local", @@ -6,36 +17,96 @@ "advanced_options.threaded_mode.long": "Al publicar abre automáticamente una respuesta", "advanced_options.threaded_mode.short": "Modo hilo", "advanced_options.threaded_mode.tooltip": "Modo hilo habilitado", + "boost_modal.missing_description": "Esta publicación contiene medios sin descripción", + "column.favourited_by": "Marcado como favorito por", + "column.heading": "Misc", + "column.reblogged_by": "Impulsado por", + "column.subheading": "Opciones misceláneas", + "column_header.profile": "Perfil", + "column_subheading.lists": "Listas", + "column_subheading.navigation": "Navegación", + "community.column_settings.allow_local_only": "Mostrar sólo toots locales", "compose.attach": "Adjuntar...", "compose.attach.doodle": "Dibujar algo", "compose.attach.upload": "Subir un archivo", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Texto plano", + "compose_form.poll.multiple_choices": "Permitir múltiples opciones", + "compose_form.poll.single_choice": "Permitir sólo una opción", + "compose_form.spoiler": "Esconder el texto detrás de la advertencia", + "confirmation_modal.do_not_ask_again": "No preguntar por la confirmación de nuevo", + "confirmations.deprecated_settings.confirm": "Usar las preferencias de Mastodon", + "confirmations.deprecated_settings.message": "Algunas de las {app_settings} de glitch-soc, específicas para el dispositivo que estás usando han sido reemplazadas en las {preferences} de Mastodon y serán sobreescritas:", + "confirmations.missing_media_description.confirm": "Enviar de todos modos", + "confirmations.missing_media_description.edit": "Editar medios", + "confirmations.missing_media_description.message": "Al menos a un adjunto le falta una descripción. Considera describir toda la multimedia para los débiles visuales antes de mandar el toot.", "confirmations.unfilter.author": "Publicado por", "confirmations.unfilter.confirm": "Mostrar", "confirmations.unfilter.edit_filter": "Editar filtro", "confirmations.unfilter.filters": "Coincidencia con {count, plural, one {filtro} other {filtros}}", + "content-type.change": "Tipo de contenido", + "direct.group_by_conversations": "Agrupar por conversación", + "endorsed_accounts_editor.endorsed_accounts": "Cuentas destacadas", "favourite_modal.combo": "Puedes presionar {combo} para omitir esto la próxima vez", "getting_started.onboarding": "Paseo inicial", + "home.column_settings.advanced": "Avanzado", + "home.column_settings.filter_regex": "Filtrar por expresiones regulares", "home.column_settings.show_direct": "Mostrar mensajes directos", + "home.settings": "Configuraciones de columna", + "keyboard_shortcuts.bookmark": "a marcadores", + "keyboard_shortcuts.secondary_toot": "para enviar un toot usando lac onfiguración de privacidad secundaria", + "keyboard_shortcuts.toggle_collapse": "para colapsar/descolapsar toots", "layout.auto": "Automático", "layout.desktop": "Escritorio", "layout.hint.auto": "Seleccionar un diseño automáticamente basado en \"Habilitar interface web avanzada\" y tamaño de pantalla", "layout.hint.desktop": "Utiliza el diseño multi-columna sin importar \"Habilitar interface web avanzada\" o tamaño de pantalla", "layout.hint.single": "Utiliza el diseño de una columna sin importar \"Habilitar interface web avanzada\" o tamaño de pantalla", + "layout.single": "Móvil", "media_gallery.sensitive": "Sensible", + "moved_to_warning": "Esta cuenta está marcada como movida a {moved_to_link}, y por lo tanto no aceptará nuevos seguimientos.", "navigation_bar.app_settings": "Ajustes de aplicación", + "navigation_bar.featured_users": "Usuarios destacados", + "navigation_bar.keyboard_shortcuts": "Atajos de teclado", + "navigation_bar.misc": "Misc", "notification.markForDeletion": "Marcar para borrar", "notification_purge.btn_all": "Seleccionar\ntodo", "notification_purge.btn_apply": "Borrar\nselección", "notification_purge.btn_invert": "Invertir\nselección", "notification_purge.btn_none": "Seleccionar\nnada", + "notification_purge.start": "Entrar en modo de limpieza de notificaciones", "notifications.marked_clear": "Limpiar notificaciones seleccionadas", "notifications.marked_clear_confirmation": "¿Deseas borrar permanentemente todas las notificaciones seleccionadas?", + "onboarding.done": "Hecho", + "onboarding.next": "Siguiente", + "onboarding.page_five.public_timelines": "La línea de tiempo local muestra mensajes públicos de todos en {domain}. La línea de tiempo federada muestra mensajes públicos de todos aquellos que en {domain} siguen a otros servidores. Estas son las líneas cronológicas públicas, una gran manera de descubrir gente nueva.", + "onboarding.page_four.home": "La línea de tiempo principal muestra los mensajes de la gente que sigues.", + "onboarding.page_four.notifications": "La columna de notificaciones muestra cuando alguien interactúa contigo.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "Estás en {domain}, así que tu alias completo es {handle}", "onboarding.page_one.welcome": "¡Bienvenidx a {domain}!", + "onboarding.page_six.admin": "El administrador de tu instancia es {admin}.", + "onboarding.page_six.almost_done": "Casi listo...", + "onboarding.page_six.appetoot": "¡A tootear!", + "onboarding.page_six.apps_available": "Hay {apps} disponibles para iOS, Android y otras plataformas.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "normas de la comunidad", + "onboarding.page_six.read_guidelines": "¡Por favor lee las {guidelines} de {domain}!", + "onboarding.page_six.various_app": "aplicaciones para móviles", + "onboarding.page_three.profile": "Edita tu perfil para cambiar tu avatar, biografía y nombre para mostrar. Ahí, también encontrarás otras preferencias.", + "onboarding.page_three.search": "Usa la barra de búsqueda para encontrar gente y mirar las etiquetas (hashtags), como {illustration} y {introductions}. Para buscar a una persona que no esté en esta instancia, utiliza su alias completo.", + "onboarding.page_two.compose": "Escribe mensajes desde la columna de composición. Puedes subir imágenes, cambiar la configuración de privacidad y añadir advertencias de contenido con los iconos de abajo.", + "onboarding.skip": "Saltar", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", "settings.always_show_spoilers_field": "Siempre mostrar el campo de advertencia de contenido", "settings.auto_collapse": "Colapsar automáticamente", "settings.auto_collapse_all": "Todo", + "settings.auto_collapse_height": "Altura (en pixeles) para que un toot sea considerado largo", "settings.auto_collapse_lengthy": "Toots largos", "settings.auto_collapse_media": "Toots con medios", "settings.auto_collapse_notifications": "Notificaciones", @@ -50,11 +121,21 @@ "settings.content_warnings": "Content warnings", "settings.content_warnings.regexp": "Regexp (expresión regular)", "settings.content_warnings_filter": "No descolapsar estas advertencias de contenido:", + "settings.content_warnings_media_outside": "Mostrar archivos adjuntos fuera de las advertencias de contenido", + "settings.content_warnings_media_outside_hint": "Reproduce el comportamiento normal de Mastodon teniendo al tener el interruptor de advertencia de contenido activado, no afectando los archivos adjuntos", + "settings.content_warnings_shared_state": "Mostrar/ocultar el contenido de todas las copias a la vez", + "settings.content_warnings_shared_state_hint": "Reproduce el comportamiento normal de Mastodon al hacer que el botón Advertencia de contenido afecte a todas las copias de un mensaje a la vez. Esto evitará el colapso automático de cualquier copia de un toot con CW desplegado", + "settings.content_warnings_unfold_opts": "Opciones de Auto-desplegado", + "settings.deprecated_setting": "Esta configuración ahora está controlada desde {settings_page_link} de Mastodon", "settings.enable_collapsed": "Habilitar toots colapsados", + "settings.enable_collapsed_hint": "Las publicaciones colapsadas tienen partes de su contenido ocultas para ocupar menos espacio en pantalla. Esto es distinto de la función Advertencia de Contenido", "settings.enable_content_warnings_auto_unfold": "Descolapsar automáticamente advertencias de contenido", + "settings.general": "General", "settings.hicolor_privacy_icons": "Íconos de privacidad más visibles", + "settings.hicolor_privacy_icons.hint": "Mostrar iconos de privacidad en colores brillantes y fácilmente distinguibles", "settings.image_backgrounds": "Fondos de imágenes", "settings.image_backgrounds_media": "Vista previa de medios de toots colapsados", + "settings.image_backgrounds_media_hint": "Si la publicación tiene algún archivo adjunto, utilice el primero como fondo", "settings.image_backgrounds_users": "Darle fondo de imagen a toots colapsados", "settings.inline_preview_cards": "Vista previa para enlaces externos", "settings.layout": "Diseño", @@ -69,6 +150,10 @@ "settings.notifications.tab_badge": "Marcador de notificaciones no leídas", "settings.notifications.tab_badge.hint": "Muestra un marcador de notificaciones sin leer en el ícono de notificaciones cuando dicha columna no está abierta", "settings.notifications_opts": "Opciones de notificaciones", + "settings.pop_in_left": "Izquierda", + "settings.pop_in_player": "Habilitar reproductor emergente", + "settings.pop_in_position": "Posición del reproductor:", + "settings.pop_in_right": "Derecha", "settings.preferences": "Preferences", "settings.prepend_cw_re": "Anteponer \"re: \" a las advertencias de contenido al responder", "settings.preselect_on_reply": "Preseleccionar nombres de usuarix al responder", @@ -77,6 +162,7 @@ "settings.rewrite_mentions_acct": "Reescribir con nombre de usuarix y dominio (para cuentas remotas)", "settings.rewrite_mentions_no": "No reescribir menciones", "settings.rewrite_mentions_username": "Reescribir con nombre de usuarix", + "settings.shared_settings_link": "preferencias de usuario", "settings.show_action_bar": "Mostrar botones de acción en toots colapsados", "settings.show_content_type_choice": "Mostrar selección de tipo de contenido al crear toots", "settings.show_reply_counter": "Mostrar un conteo estimado de respuestas", @@ -86,10 +172,35 @@ "settings.side_arm_reply_mode.copy": "Copiar opción de privacidad del toot al que estás respondiendo", "settings.side_arm_reply_mode.keep": "Conservar opción de privacidad", "settings.side_arm_reply_mode.restrict": "Restringir la opción de privacidad a la misma del toot al que estás respondiendo", + "settings.status_icons": "Iconos del toot", + "settings.status_icons_language": "Indicador de lenguaje", + "settings.status_icons_local_only": "Indicador de sólo local", + "settings.status_icons_media": "Indicadores de medios y encuestas", + "settings.status_icons_reply": "Indicador de respuesta", + "settings.status_icons_visibility": "Indicador de privacidad de toot", "settings.swipe_to_change_columns": "Permitir deslizar para cambiar columnas (Sólo en móvil)", "settings.tag_misleading_links": "Marcar enlaces engañosos", "settings.tag_misleading_links.hint": "Añadir una indicación visual indicando el destino de los enlace que no los mencionen explícitamente", "settings.wide_view": "Vista amplia (solo modo de escritorio)", + "settings.wide_view_hint": "Expande las columnas para llenar mejor el espacio disponible.", "status.collapse": "Colapsar", - "status.uncollapse": "Descolapsar" + "status.has_audio": "Contiene archivos de audio", + "status.has_pictures": "Contiene imágenes adjuntas", + "status.has_preview_card": "Contiene una tarjeta de vista previa adjunta", + "status.has_video": "Contiene videos adjuntos", + "status.in_reply_to": "Esta publicación es una respuesta", + "status.is_poll": "Esta publicación es una encuesta", + "status.local_only": "Sólo visible para tu instancia", + "status.sensitive_toggle": "Haga clic para ver", + "status.uncollapse": "Descolapsar", + "web_app_crash.change_your_settings": "Cambiar las {settings}", + "web_app_crash.content": "Puedes probar lo siguiente:", + "web_app_crash.debug_info": "Información de depuración", + "web_app_crash.disable_addons": "Desactivar complementos del navegador o herramientas de traducción integradas", + "web_app_crash.issue_tracker": "rastreador de problemas", + "web_app_crash.reload": "Recargar", + "web_app_crash.reload_page": "{reload} la página actual", + "web_app_crash.report_issue": "Reportar un bug en el {issuetracker}", + "web_app_crash.settings": "configuraciones", + "web_app_crash.title": "Lo sentimos, pero algo salió mal con la app de Mastodon." } diff --git a/app/javascript/flavours/glitch/locales/es-MX.json b/app/javascript/flavours/glitch/locales/es-MX.json index fc5a2e9040..a1cadec419 100644 --- a/app/javascript/flavours/glitch/locales/es-MX.json +++ b/app/javascript/flavours/glitch/locales/es-MX.json @@ -1,4 +1,15 @@ { + "about.fork_disclaimer": "Glitch-soc es software gratuito, de código abierto, bifurcado de Mastodon.", + "account.add_account_note": "Añadir nota para @{name}", + "account.disclaimer_full": "La información aquí presentada puede reflejar de manera incompleta el perfil del usuario.", + "account.follows": "Seguir", + "account.joined": "Unido {date}", + "account.suspended_disclaimer_full": "Este usuario ha sido suspendido por un moderador.", + "account.view_full_profile": "Ver perfil completo", + "account_note.cancel": "Cancelar", + "account_note.edit": "Editar", + "account_note.glitch_placeholder": "No se proporcionó comentario alguno", + "account_note.save": "Guardar", "advanced_options.icon_title": "Opciones avanzadas", "advanced_options.local-only.long": "No publicar a otras instancias", "advanced_options.local-only.short": "Local", @@ -6,36 +17,96 @@ "advanced_options.threaded_mode.long": "Al publicar abre automáticamente una respuesta", "advanced_options.threaded_mode.short": "Modo hilo", "advanced_options.threaded_mode.tooltip": "Modo hilo habilitado", + "boost_modal.missing_description": "Esta publicación contiene medios sin descripción", + "column.favourited_by": "Marcado como favorito por", + "column.heading": "Misc", + "column.reblogged_by": "Impulsado por", + "column.subheading": "Opciones misceláneas", + "column_header.profile": "Perfil", + "column_subheading.lists": "Listas", + "column_subheading.navigation": "Navegación", + "community.column_settings.allow_local_only": "Mostrar sólo toots locales", "compose.attach": "Adjuntar...", "compose.attach.doodle": "Dibujar algo", "compose.attach.upload": "Subir un archivo", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Texto plano", + "compose_form.poll.multiple_choices": "Permitir múltiples opciones", + "compose_form.poll.single_choice": "Permitir sólo una opción", + "compose_form.spoiler": "Esconder el texto detrás de la advertencia", + "confirmation_modal.do_not_ask_again": "No preguntar por la confirmación de nuevo", + "confirmations.deprecated_settings.confirm": "Usar las preferencias de Mastodon", + "confirmations.deprecated_settings.message": "Algunas de las {app_settings} de glitch-soc, específicas para el dispositivo que estás usando han sido reemplazadas en las {preferences} de Mastodon y serán sobreescritas:", + "confirmations.missing_media_description.confirm": "Enviar de todos modos", + "confirmations.missing_media_description.edit": "Editar medios", + "confirmations.missing_media_description.message": "Al menos a un adjunto le falta una descripción. Considera describir toda la multimedia para los débiles visuales antes de mandar el toot.", "confirmations.unfilter.author": "Publicado por", "confirmations.unfilter.confirm": "Mostrar", "confirmations.unfilter.edit_filter": "Editar filtro", "confirmations.unfilter.filters": "Coincidencia con {count, plural, one {filtro} other {filtros}}", + "content-type.change": "Tipo de contenido", + "direct.group_by_conversations": "Agrupar por conversación", + "endorsed_accounts_editor.endorsed_accounts": "Cuentas destacadas", "favourite_modal.combo": "Puedes presionar {combo} para omitir esto la próxima vez", "getting_started.onboarding": "Paseo inicial", + "home.column_settings.advanced": "Avanzado", + "home.column_settings.filter_regex": "Filtrar por expresiones regulares", "home.column_settings.show_direct": "Mostrar mensajes directos", + "home.settings": "Configuraciones de columna", + "keyboard_shortcuts.bookmark": "a marcadores", + "keyboard_shortcuts.secondary_toot": "para enviar un toot usando lac onfiguración de privacidad secundaria", + "keyboard_shortcuts.toggle_collapse": "para colapsar/descolapsar toots", "layout.auto": "Automático", "layout.desktop": "Escritorio", "layout.hint.auto": "Seleccionar un diseño automáticamente basado en \"Habilitar interface web avanzada\" y tamaño de pantalla", "layout.hint.desktop": "Utiliza el diseño multi-columna sin importar \"Habilitar interface web avanzada\" o tamaño de pantalla", "layout.hint.single": "Utiliza el diseño de una columna sin importar \"Habilitar interface web avanzada\" o tamaño de pantalla", + "layout.single": "Móvil", "media_gallery.sensitive": "Sensible", + "moved_to_warning": "Esta cuenta está marcada como movida a {moved_to_link}, y por lo tanto no aceptará nuevos seguimientos.", "navigation_bar.app_settings": "Ajustes de aplicación", + "navigation_bar.featured_users": "Usuarios destacados", + "navigation_bar.keyboard_shortcuts": "Atajos de teclado", + "navigation_bar.misc": "Misc", "notification.markForDeletion": "Marcar para borrar", "notification_purge.btn_all": "Seleccionar\ntodo", "notification_purge.btn_apply": "Borrar\nselección", "notification_purge.btn_invert": "Invertir\nselección", "notification_purge.btn_none": "Seleccionar\nnada", + "notification_purge.start": "Entrar en modo de limpieza de notificaciones", "notifications.marked_clear": "Limpiar notificaciones seleccionadas", "notifications.marked_clear_confirmation": "¿Deseas borrar permanentemente todas las notificaciones seleccionadas?", + "onboarding.done": "Hecho", + "onboarding.next": "Siguiente", + "onboarding.page_five.public_timelines": "La línea de tiempo local muestra mensajes públicos de todos en {domain}. La línea de tiempo federada muestra mensajes públicos de todos aquellos que en {domain} siguen a otros servidores. Estas son las líneas cronológicas públicas, una gran manera de descubrir gente nueva.", + "onboarding.page_four.home": "La línea de tiempo principal muestra los mensajes de la gente que sigues.", + "onboarding.page_four.notifications": "La columna de notificaciones muestra cuando alguien interactúa contigo.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "Estás en {domain}, así que tu alias completo es {handle}", "onboarding.page_one.welcome": "¡Bienvenidx a {domain}!", + "onboarding.page_six.admin": "El administrador de tu instancia es {admin}.", + "onboarding.page_six.almost_done": "Casi listo...", + "onboarding.page_six.appetoot": "¡A tootear!", + "onboarding.page_six.apps_available": "Hay {apps} disponibles para iOS, Android y otras plataformas.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "normas de la comunidad", + "onboarding.page_six.read_guidelines": "¡Por favor lee las {guidelines} de {domain}!", + "onboarding.page_six.various_app": "aplicaciones para móviles", + "onboarding.page_three.profile": "Edita tu perfil para cambiar tu avatar, biografía y nombre para mostrar. Ahí, también encontrarás otras preferencias.", + "onboarding.page_three.search": "Usa la barra de búsqueda para encontrar gente y mirar las etiquetas (hashtags), como {illustration} y {introductions}. Para buscar a una persona que no esté en esta instancia, utiliza su alias completo.", + "onboarding.page_two.compose": "Escribe mensajes desde la columna de composición. Puedes subir imágenes, cambiar la configuración de privacidad y añadir advertencias de contenido con los iconos de abajo.", + "onboarding.skip": "Saltar", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", "settings.always_show_spoilers_field": "Siempre mostrar el campo de advertencia de contenido", "settings.auto_collapse": "Colapsar automáticamente", "settings.auto_collapse_all": "Todo", + "settings.auto_collapse_height": "Altura (en pixeles) para que un toot sea considerado largo", "settings.auto_collapse_lengthy": "Toots largos", "settings.auto_collapse_media": "Toots con medios", "settings.auto_collapse_notifications": "Notificaciones", @@ -50,11 +121,21 @@ "settings.content_warnings": "Content warnings", "settings.content_warnings.regexp": "Regexp (expresión regular)", "settings.content_warnings_filter": "No descolapsar estas advertencias de contenido:", + "settings.content_warnings_media_outside": "Mostrar archivos adjuntos fuera de las advertencias de contenido", + "settings.content_warnings_media_outside_hint": "Reproduce el comportamiento normal de Mastodon teniendo al tener el interruptor de advertencia de contenido activado, no afectando los archivos adjuntos", + "settings.content_warnings_shared_state": "Mostrar/ocultar el contenido de todas las copias a la vez", + "settings.content_warnings_shared_state_hint": "Reproduce el comportamiento normal de Mastodon al hacer que el botón Advertencia de contenido afecte a todas las copias de un mensaje a la vez. Esto evitará el colapso automático de cualquier copia de un toot con CW desplegado", + "settings.content_warnings_unfold_opts": "Opciones de Auto-desplegado", + "settings.deprecated_setting": "Esta configuración ahora está controlada desde {settings_page_link} de Mastodon", "settings.enable_collapsed": "Habilitar toots colapsados", + "settings.enable_collapsed_hint": "Las publicaciones colapsadas tienen partes de su contenido ocultas para ocupar menos espacio en pantalla. Esto es distinto de la función Advertencia de Contenido", "settings.enable_content_warnings_auto_unfold": "Descolapsar automáticamente advertencias de contenido", + "settings.general": "General", "settings.hicolor_privacy_icons": "Íconos de privacidad más visibles", + "settings.hicolor_privacy_icons.hint": "Mostrar iconos de privacidad en colores brillantes y fácilmente distinguibles", "settings.image_backgrounds": "Fondos de imágenes", "settings.image_backgrounds_media": "Vista previa de medios de toots colapsados", + "settings.image_backgrounds_media_hint": "Si la publicación tiene algún archivo adjunto, utilice el primero como fondo", "settings.image_backgrounds_users": "Darle fondo de imagen a toots colapsados", "settings.inline_preview_cards": "Vista previa para enlaces externos", "settings.layout": "Diseño", @@ -69,6 +150,10 @@ "settings.notifications.tab_badge": "Marcador de notificaciones no leídas", "settings.notifications.tab_badge.hint": "Muestra un marcador de notificaciones sin leer en el ícono de notificaciones cuando dicha columna no está abierta", "settings.notifications_opts": "Opciones de notificaciones", + "settings.pop_in_left": "Izquierda", + "settings.pop_in_player": "Habilitar reproductor emergente", + "settings.pop_in_position": "Posición del reproductor:", + "settings.pop_in_right": "Derecha", "settings.preferences": "Preferences", "settings.prepend_cw_re": "Anteponer \"re: \" a las advertencias de contenido al responder", "settings.preselect_on_reply": "Preseleccionar nombres de usuarix al responder", @@ -77,6 +162,7 @@ "settings.rewrite_mentions_acct": "Reescribir con nombre de usuarix y dominio (para cuentas remotas)", "settings.rewrite_mentions_no": "No reescribir menciones", "settings.rewrite_mentions_username": "Reescribir con nombre de usuarix", + "settings.shared_settings_link": "preferencias de usuario", "settings.show_action_bar": "Mostrar botones de acción en toots colapsados", "settings.show_content_type_choice": "Mostrar selección de tipo de contenido al crear toots", "settings.show_reply_counter": "Mostrar un conteo estimado de respuestas", @@ -86,10 +172,35 @@ "settings.side_arm_reply_mode.copy": "Copiar opción de privacidad del toot al que estás respondiendo", "settings.side_arm_reply_mode.keep": "Conservar opción de privacidad", "settings.side_arm_reply_mode.restrict": "Restringir la opción de privacidad a la misma del toot al que estás respondiendo", + "settings.status_icons": "Iconos del toot", + "settings.status_icons_language": "Indicador de lenguaje", + "settings.status_icons_local_only": "Indicador de sólo local", + "settings.status_icons_media": "Indicadores de medios y encuestas", + "settings.status_icons_reply": "Indicador de respuesta", + "settings.status_icons_visibility": "Indicador de privacidad de toot", "settings.swipe_to_change_columns": "Permitir deslizar para cambiar columnas (Sólo en móvil)", "settings.tag_misleading_links": "Marcar enlaces engañosos", "settings.tag_misleading_links.hint": "Añadir una indicación visual indicando el destino de los enlace que no los mencionen explícitamente", "settings.wide_view": "Vista amplia (solo modo de escritorio)", + "settings.wide_view_hint": "Expande las columnas para llenar mejor el espacio disponible.", "status.collapse": "Colapsar", - "status.uncollapse": "Descolapsar" + "status.has_audio": "Contiene archivos de audio", + "status.has_pictures": "Contiene imágenes adjuntas", + "status.has_preview_card": "Contiene una tarjeta de vista previa adjunta", + "status.has_video": "Contiene videos adjuntos", + "status.in_reply_to": "Esta publicación es una respuesta", + "status.is_poll": "Esta publicación es una encuesta", + "status.local_only": "Sólo visible para tu instancia", + "status.sensitive_toggle": "Haga clic para ver", + "status.uncollapse": "Descolapsar", + "web_app_crash.change_your_settings": "Cambiar las {settings}", + "web_app_crash.content": "Puedes probar lo siguiente:", + "web_app_crash.debug_info": "Información de depuración", + "web_app_crash.disable_addons": "Desactivar complementos del navegador o herramientas de traducción integradas", + "web_app_crash.issue_tracker": "rastreador de problemas", + "web_app_crash.reload": "Recargar", + "web_app_crash.reload_page": "{reload} la página actual", + "web_app_crash.report_issue": "Reportar un bug en el {issuetracker}", + "web_app_crash.settings": "configuraciones", + "web_app_crash.title": "Lo sentimos, pero algo salió mal con la app de Mastodon." } diff --git a/app/javascript/flavours/glitch/locales/es.json b/app/javascript/flavours/glitch/locales/es.json index b85c05c4b3..0838496d2d 100644 --- a/app/javascript/flavours/glitch/locales/es.json +++ b/app/javascript/flavours/glitch/locales/es.json @@ -1,56 +1,112 @@ { + "about.fork_disclaimer": "Glitch-soc es software gratuito, de código abierto, bifurcado de Mastodon.", + "account.add_account_note": "Añadir nota para @{name}", + "account.disclaimer_full": "La información aquí presentada puede reflejar de manera incompleta el perfil del usuario.", "account.follows": "Sigue", + "account.joined": "Unido el {date}", "account.suspended_disclaimer_full": "Este usuario ha sido suspendido por un moderador.", "account.view_full_profile": "Ver perfil completo", "account_note.cancel": "Cancelar", "account_note.edit": "Editar", + "account_note.glitch_placeholder": "No se proporcionó comentario alguno", "account_note.save": "Guardar", "advanced_options.icon_title": "Opciones avanzadas", "advanced_options.local-only.long": "No publicar a otras instancias", - "advanced_options.local-only.short": "Local", - "advanced_options.local-only.tooltip": "Esta publicación es local", - "advanced_options.threaded_mode.long": "Al publicar abre automáticamente una respuesta", + "advanced_options.local-only.short": "Sólo local", + "advanced_options.local-only.tooltip": "Esta publicación es sólo local", + "advanced_options.threaded_mode.long": "Abre automáticamente una respuesta al publicar", "advanced_options.threaded_mode.short": "Modo hilo", "advanced_options.threaded_mode.tooltip": "Modo hilo habilitado", "boost_modal.missing_description": "Esta publicación contiene medios sin descripción", "column.favourited_by": "Marcado como favorito por", + "column.heading": "Misc", "column.reblogged_by": "Impulsado por", + "column.subheading": "Opciones misceláneas", "column_header.profile": "Perfil", "column_subheading.lists": "Listas", "column_subheading.navigation": "Navegación", + "community.column_settings.allow_local_only": "Mostrar sólo toots locales", "compose.attach": "Adjuntar...", "compose.attach.doodle": "Dibujar algo", "compose.attach.upload": "Subir un archivo", "compose.content-type.html": "HTML", "compose.content-type.markdown": "Markdown", - "compose.content-type.plain": "Sin formato", - "confirmations.unfilter.author": "Publicado por", + "compose.content-type.plain": "Texto plano", + "compose_form.poll.multiple_choices": "Permitir múltiples opciones", + "compose_form.poll.single_choice": "Permitir sólo una opción", + "compose_form.spoiler": "Esconder el texto detrás de la advertencia", + "confirmation_modal.do_not_ask_again": "No preguntar por la confirmación de nuevo", + "confirmations.deprecated_settings.confirm": "Usar las preferencias de Mastodon", + "confirmations.deprecated_settings.message": "Algunas de las {app_settings} de glitch-soc, específicas para el dispositivo que estás usando han sido reemplazadas en las {preferences} de Mastodon y serán sobreescritas:", + "confirmations.missing_media_description.confirm": "Enviar de todos modos", + "confirmations.missing_media_description.edit": "Editar medios", + "confirmations.missing_media_description.message": "Al menos a un adjunto le falta una descripción. Considera describir toda la multimedia para los débiles visuales antes de mandar el toot.", + "confirmations.unfilter.author": "Autor", "confirmations.unfilter.confirm": "Mostrar", "confirmations.unfilter.edit_filter": "Editar filtro", - "confirmations.unfilter.filters": "Coincidencia con {count, plural, one {filtro} other {filtros}}", + "confirmations.unfilter.filters": "Coincidiendo {count, plural, one {filtro} other {filtros}}", + "content-type.change": "Tipo de contenido", + "direct.group_by_conversations": "Agrupar por conversación", + "endorsed_accounts_editor.endorsed_accounts": "Cuentas destacadas", "favourite_modal.combo": "Puedes presionar {combo} para omitir esto la próxima vez", "getting_started.onboarding": "Paseo inicial", + "home.column_settings.advanced": "Avanzado", + "home.column_settings.filter_regex": "Filtrar por expresiones regulares", "home.column_settings.show_direct": "Mostrar mensajes directos", + "home.settings": "Configuraciones de columna", + "keyboard_shortcuts.bookmark": "a marcadores", + "keyboard_shortcuts.secondary_toot": "para enviar un toot usando lac onfiguración de privacidad secundaria", + "keyboard_shortcuts.toggle_collapse": "para colapsar/descolapsar toots", "layout.auto": "Automático", "layout.desktop": "Escritorio", - "layout.hint.auto": "Seleccionar un diseño automáticamente basado en \"Habilitar interface web avanzada\" y tamaño de pantalla", - "layout.hint.desktop": "Utiliza el diseño multi-columna sin importar \"Habilitar interface web avanzada\" o tamaño de pantalla", - "layout.hint.single": "Utiliza el diseño de una columna sin importar \"Habilitar interface web avanzada\" o tamaño de pantalla", + "layout.hint.auto": "Seleccionar un diseño automáticamente basado en \"Habilitar interface web avanzada\" y el tamaño de la pantalla.", + "layout.hint.desktop": "Utiliza el diseño multi-columna sin importar \"Habilitar interface web avanzada\" o el tamaño de la pantalla.", + "layout.hint.single": "Utiliza el diseño de una columna sin importar \"Habilitar interface web avanzada\" o el tamaño de la pantalla.", + "layout.single": "Móvil", "media_gallery.sensitive": "Sensible", - "navigation_bar.app_settings": "Ajustes de aplicación", - "notification.markForDeletion": "Marcar para borrar", + "moved_to_warning": "Esta cuenta está marcada como movida a {moved_to_link}, y por lo tanto no aceptará nuevos seguimientos.", + "navigation_bar.app_settings": "Ajustes de la aplicación", + "navigation_bar.featured_users": "Usuarios destacados", + "navigation_bar.keyboard_shortcuts": "Atajos de teclado", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Marcar para borrado", "notification_purge.btn_all": "Seleccionar\ntodo", "notification_purge.btn_apply": "Borrar\nselección", "notification_purge.btn_invert": "Invertir\nselección", - "notification_purge.btn_none": "Seleccionar\nnada", - "notifications.marked_clear": "Limpiar notificaciones seleccionadas", - "notifications.marked_clear_confirmation": "¿Deseas borrar permanentemente todas las notificaciones seleccionadas?", - "onboarding.page_one.federation": "{domain} es una \"instancia\" de Mastodon. Mastodon es una red de servidores independientes que se unen para crear una red social más grande. A estos servidores los llamamos instancias.", - "onboarding.page_one.welcome": "¡Bienvenidx a {domain}!", + "notification_purge.btn_none": "Seleccionar\nninguno", + "notification_purge.start": "Entrar en modo de limpieza de notificaciones", + "notifications.marked_clear": "Limpiar las notificaciones seleccionadas", + "notifications.marked_clear_confirmation": "¿Estás seguro de borrar permanentemente todas las notificaciones seleccionadas?", + "onboarding.done": "Hecho", + "onboarding.next": "Siguiente", + "onboarding.page_five.public_timelines": "La línea de tiempo local muestra mensajes públicos de todos en {domain}. La línea de tiempo federada muestra mensajes públicos de todos aquellos que en {domain} siguen a otros servidores. Estas son las líneas cronológicas públicas, una gran manera de descubrir gente nueva.", + "onboarding.page_four.home": "La línea de tiempo principal muestra los mensajes de la gente que sigues.", + "onboarding.page_four.notifications": "La columna de notificaciones muestra cuando alguien interactúa contigo.", + "onboarding.page_one.federation": "{domain} es una \"instancia\" de Mastodon. Mastodon es una red de servidores independientes uniéndose para crear una red social más grande. A estos servidores los llamamos instancias.", + "onboarding.page_one.handle": "Estás en {domain}, así que tu alias completo es {handle}", + "onboarding.page_one.welcome": "¡Bienvenido a {domain}!", + "onboarding.page_six.admin": "El administrador de tu instancia es {admin}.", + "onboarding.page_six.almost_done": "Casi listo...", + "onboarding.page_six.appetoot": "¡A tootear!", + "onboarding.page_six.apps_available": "Hay {apps} disponibles para iOS, Android y otras plataformas.", "onboarding.page_six.github": "{domain} usa Glitchsoc. Glitchsoc es una bifurcación {fork} amigable de {Mastodon}, y es compatible con cualquier instancia o aplicación de Mastodon. Glitchsoc es completamente gratuito y de código abierto. Puedes reportar errores, solicitar funciones o contribuir al código en {github}.", + "onboarding.page_six.guidelines": "normas de la comunidad", + "onboarding.page_six.read_guidelines": "¡Por favor lee las {guidelines} de {domain}!", + "onboarding.page_six.various_app": "aplicaciones para móviles", + "onboarding.page_three.profile": "Edita tu perfil para cambiar tu avatar, biografía y nombre para mostrar. Ahí, también encontrarás otras preferencias.", + "onboarding.page_three.search": "Usa la barra de búsqueda para encontrar gente y mirar las etiquetas (hashtags), como {illustration} y {introductions}. Para buscar a una persona que no esté en esta instancia, utiliza su alias completo.", + "onboarding.page_two.compose": "Escribe mensajes desde la columna de composición. Puedes subir imágenes, cambiar la configuración de privacidad y añadir advertencias de contenido con los iconos de abajo.", + "onboarding.skip": "Saltar", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", "settings.always_show_spoilers_field": "Siempre mostrar el campo de advertencia de contenido", "settings.auto_collapse": "Colapsar automáticamente", "settings.auto_collapse_all": "Todo", + "settings.auto_collapse_height": "Altura (en pixeles) para que un toot sea considerado largo", "settings.auto_collapse_lengthy": "Publicaciones largas", "settings.auto_collapse_media": "Publicaciones multimedia", "settings.auto_collapse_notifications": "Notificaciones", @@ -65,11 +121,21 @@ "settings.content_warnings": "Advertencias de contenido", "settings.content_warnings.regexp": "Regexp (expresión regular)", "settings.content_warnings_filter": "No descolapsar estas advertencias de contenido:", + "settings.content_warnings_media_outside": "Mostrar archivos adjuntos fuera de las advertencias de contenido", + "settings.content_warnings_media_outside_hint": "Reproduce el comportamiento normal de Mastodon teniendo al tener el interruptor de advertencia de contenido activado, no afectando los archivos adjuntos", + "settings.content_warnings_shared_state": "Mostrar/ocultar el contenido de todas las copias a la vez", + "settings.content_warnings_shared_state_hint": "Reproduce el comportamiento normal de Mastodon al hacer que el botón Advertencia de contenido afecte a todas las copias de un mensaje a la vez. Esto evitará el colapso automático de cualquier copia de un toot con CW desplegado", + "settings.content_warnings_unfold_opts": "Opciones de Auto-desplegado", + "settings.deprecated_setting": "Esta configuración ahora está controlada desde {settings_page_link} de Mastodon", "settings.enable_collapsed": "Habilitar publicaciones colapsadas", + "settings.enable_collapsed_hint": "Las publicaciones colapsadas tienen partes de su contenido ocultas para ocupar menos espacio en pantalla. Esto es distinto de la función Advertencia de Contenido", "settings.enable_content_warnings_auto_unfold": "Desplegar automáticamente advertencias de contenido", + "settings.general": "General", "settings.hicolor_privacy_icons": "Íconos de privacidad más visibles", + "settings.hicolor_privacy_icons.hint": "Mostrar iconos de privacidad en colores brillantes y fácilmente distinguibles", "settings.image_backgrounds": "Fondos de imágenes", "settings.image_backgrounds_media": "Vista previa de medios de publicaciones colapsadas", + "settings.image_backgrounds_media_hint": "Si la publicación tiene algún archivo adjunto, utilice el primero como fondo", "settings.image_backgrounds_users": "Darle fondo de imagen a publicaciones colapsadas", "settings.inline_preview_cards": "Vista previa para enlaces externos", "settings.layout": "Diseño", @@ -84,14 +150,19 @@ "settings.notifications.tab_badge": "Marcador de notificaciones no leídas", "settings.notifications.tab_badge.hint": "Muestra un marcador de notificaciones sin leer en el ícono de notificaciones cuando dicha columna no está abierta", "settings.notifications_opts": "Opciones de notificaciones", - "settings.preferences": "Preferencias de usuarix", + "settings.pop_in_left": "Izquierda", + "settings.pop_in_player": "Habilitar reproductor emergente", + "settings.pop_in_position": "Posición del reproductor:", + "settings.pop_in_right": "Derecha", + "settings.preferences": "Preferencias del usuario", "settings.prepend_cw_re": "Anteponer \"re: \" a las advertencias de contenido al responder", - "settings.preselect_on_reply": "Preseleccionar nombres de usuarix al responder", - "settings.preselect_on_reply_hint": "Al responder a conversaciones con múltiples participantes, preselecciona los nombres de usuarix subsecuentes del/la primerx", + "settings.preselect_on_reply": "Preseleccionar nombres de usuarios al responder", + "settings.preselect_on_reply_hint": "Al responder a conversaciones con múltiples participantes, preselecciona los nombres de usuario subsecuentes al primero", "settings.rewrite_mentions": "Reescribir menciones in publicaciones mostradas", - "settings.rewrite_mentions_acct": "Reescribir con nombre de usuarix y dominio (para cuentas remotas)", + "settings.rewrite_mentions_acct": "Reescribir con el nombre de usuario y dominio (para las cuentas remotas)", "settings.rewrite_mentions_no": "No reescribir menciones", - "settings.rewrite_mentions_username": "Reescribir con nombre de usuarix", + "settings.rewrite_mentions_username": "Reescribir con nombre de usuario", + "settings.shared_settings_link": "preferencias de usuario", "settings.show_action_bar": "Mostrar botones de acción en publicaciones colapsadas", "settings.show_content_type_choice": "Mostrar selección de tipo de contenido al crear publicaciones", "settings.show_reply_counter": "Mostrar un conteo estimado de respuestas", @@ -101,12 +172,35 @@ "settings.side_arm_reply_mode.copy": "Copiar opción de privacidad de la publicación a la que estás respondiendo", "settings.side_arm_reply_mode.keep": "Conservar opción de privacidad", "settings.side_arm_reply_mode.restrict": "Restringir la opción de privacidad a la misma de la publicación a la que estás respondiendo", + "settings.status_icons": "Iconos del toot", + "settings.status_icons_language": "Indicador de lenguaje", + "settings.status_icons_local_only": "Indicador de sólo local", + "settings.status_icons_media": "Indicadores de medios y encuestas", + "settings.status_icons_reply": "Indicador de respuesta", + "settings.status_icons_visibility": "Indicador de privacidad de toot", "settings.swipe_to_change_columns": "Permitir deslizar para cambiar columnas (Sólo en móvil)", "settings.tag_misleading_links": "Marcar enlaces engañosos", "settings.tag_misleading_links.hint": "Añadir una indicación visual indicando el destino de los enlace que no los mencionen explícitamente", "settings.wide_view": "Vista amplia (solo modo de escritorio)", + "settings.wide_view_hint": "Expande las columnas para llenar mejor el espacio disponible.", "status.collapse": "Colapsar", + "status.has_audio": "Contiene archivos de audio", + "status.has_pictures": "Contiene imágenes adjuntas", + "status.has_preview_card": "Contiene una tarjeta de vista previa adjunta", + "status.has_video": "Contiene videos adjuntos", "status.in_reply_to": "Esta publicación es una respuesta", "status.is_poll": "Esta publicación es una encuesta", - "status.uncollapse": "Descolapsar" + "status.local_only": "Sólo visible para tu instancia", + "status.sensitive_toggle": "Haga clic para ver", + "status.uncollapse": "Descolapsar", + "web_app_crash.change_your_settings": "Cambiar las {settings}", + "web_app_crash.content": "Puedes probar lo siguiente:", + "web_app_crash.debug_info": "Información de depuración", + "web_app_crash.disable_addons": "Desactivar complementos del navegador o herramientas de traducción integradas", + "web_app_crash.issue_tracker": "rastreador de problemas", + "web_app_crash.reload": "Recargar", + "web_app_crash.reload_page": "{reload} la página actual", + "web_app_crash.report_issue": "Reportar un bug en el {issuetracker}", + "web_app_crash.settings": "configuraciones", + "web_app_crash.title": "Lo sentimos, pero algo salió mal con la app de Mastodon." } diff --git a/app/javascript/flavours/glitch/locales/et.json b/app/javascript/flavours/glitch/locales/et.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/et.json +++ b/app/javascript/flavours/glitch/locales/et.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/eu.json b/app/javascript/flavours/glitch/locales/eu.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/eu.json +++ b/app/javascript/flavours/glitch/locales/eu.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/fa.json b/app/javascript/flavours/glitch/locales/fa.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/fa.json +++ b/app/javascript/flavours/glitch/locales/fa.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/fi.json b/app/javascript/flavours/glitch/locales/fi.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/fi.json +++ b/app/javascript/flavours/glitch/locales/fi.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/fo.json b/app/javascript/flavours/glitch/locales/fo.json index 0967ef424b..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/fo.json +++ b/app/javascript/flavours/glitch/locales/fo.json @@ -1 +1,206 @@ -{} +{ + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", + "settings.content_warnings": "Content warnings", + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." +} diff --git a/app/javascript/flavours/glitch/locales/fr-QC.json b/app/javascript/flavours/glitch/locales/fr-QC.json index 383d933b4b..8ae47b49ff 100644 --- a/app/javascript/flavours/glitch/locales/fr-QC.json +++ b/app/javascript/flavours/glitch/locales/fr-QC.json @@ -67,7 +67,6 @@ "moved_to_warning": "Ce compte a déménagé vers {moved_to_link} et ne peut donc plus accepter de nouveaux abonné·e·s.", "navigation_bar.app_settings": "Paramètres de l'application", "navigation_bar.featured_users": "Utilisateurs mis en avant", - "navigation_bar.info": "Informations détaillées", "navigation_bar.keyboard_shortcuts": "Raccourcis clavier", "navigation_bar.misc": "Autres", "notification.markForDeletion": "Ajouter aux éléments à supprimer", @@ -98,9 +97,16 @@ "onboarding.page_three.search": "Utilisez la barre de recherche pour trouver des personnes et regarder les hashtags comme {illustration} et {introductions}. Pour chercher une personne n'étant pas sur cette instance, utilisez son nom d'utilisateur complet.", "onboarding.page_two.compose": "Écrivez des posts depuis la colonne de rédaction. Vous pouvez téléverser des images, changer la confidentialité et ajouter des avertissements de contenu avec les boutons ci-dessous.", "onboarding.skip": "Passer", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", "settings.always_show_spoilers_field": "Toujours activer le champ de rédaction de l'avertissement de contenu", "settings.auto_collapse": "Repliage automatique", "settings.auto_collapse_all": "Tout", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", "settings.auto_collapse_lengthy": "Posts longs", "settings.auto_collapse_media": "Posts avec média", "settings.auto_collapse_notifications": "Notifications", diff --git a/app/javascript/flavours/glitch/locales/fr.json b/app/javascript/flavours/glitch/locales/fr.json index 383d933b4b..8ae47b49ff 100644 --- a/app/javascript/flavours/glitch/locales/fr.json +++ b/app/javascript/flavours/glitch/locales/fr.json @@ -67,7 +67,6 @@ "moved_to_warning": "Ce compte a déménagé vers {moved_to_link} et ne peut donc plus accepter de nouveaux abonné·e·s.", "navigation_bar.app_settings": "Paramètres de l'application", "navigation_bar.featured_users": "Utilisateurs mis en avant", - "navigation_bar.info": "Informations détaillées", "navigation_bar.keyboard_shortcuts": "Raccourcis clavier", "navigation_bar.misc": "Autres", "notification.markForDeletion": "Ajouter aux éléments à supprimer", @@ -98,9 +97,16 @@ "onboarding.page_three.search": "Utilisez la barre de recherche pour trouver des personnes et regarder les hashtags comme {illustration} et {introductions}. Pour chercher une personne n'étant pas sur cette instance, utilisez son nom d'utilisateur complet.", "onboarding.page_two.compose": "Écrivez des posts depuis la colonne de rédaction. Vous pouvez téléverser des images, changer la confidentialité et ajouter des avertissements de contenu avec les boutons ci-dessous.", "onboarding.skip": "Passer", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", "settings.always_show_spoilers_field": "Toujours activer le champ de rédaction de l'avertissement de contenu", "settings.auto_collapse": "Repliage automatique", "settings.auto_collapse_all": "Tout", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", "settings.auto_collapse_lengthy": "Posts longs", "settings.auto_collapse_media": "Posts avec média", "settings.auto_collapse_notifications": "Notifications", diff --git a/app/javascript/flavours/glitch/locales/fy.json b/app/javascript/flavours/glitch/locales/fy.json index 0967ef424b..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/fy.json +++ b/app/javascript/flavours/glitch/locales/fy.json @@ -1 +1,206 @@ -{} +{ + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", + "settings.content_warnings": "Content warnings", + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." +} diff --git a/app/javascript/flavours/glitch/locales/ga.json b/app/javascript/flavours/glitch/locales/ga.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/ga.json +++ b/app/javascript/flavours/glitch/locales/ga.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/gd.json b/app/javascript/flavours/glitch/locales/gd.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/gd.json +++ b/app/javascript/flavours/glitch/locales/gd.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/gl.json b/app/javascript/flavours/glitch/locales/gl.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/gl.json +++ b/app/javascript/flavours/glitch/locales/gl.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/he.json b/app/javascript/flavours/glitch/locales/he.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/he.json +++ b/app/javascript/flavours/glitch/locales/he.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/hi.json b/app/javascript/flavours/glitch/locales/hi.json index f6eb75f841..3af3b73e24 100644 --- a/app/javascript/flavours/glitch/locales/hi.json +++ b/app/javascript/flavours/glitch/locales/hi.json @@ -1,6 +1,7 @@ { "about.fork_disclaimer": "ग्लिच-सोक एक मुफ्त और ओपन सोर्स सॉफ़्टवेर है जो मैस्टोडॉन से फोर्क किया गया है", "account.add_account_note": "@{name} के लिए कोई नोट लिखें", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", "account.follows": "फ़ॉलोज़", "account.joined": "ज़ोईन करने की {date}", "account.suspended_disclaimer_full": "यह यूज़र एक मॉडरेटर द्वारा सस्पेंड कर दिया गया है", @@ -11,8 +12,195 @@ "account_note.save": "सेव", "advanced_options.icon_title": "एडवांस्ड ऑप्शन्स", "advanced_options.local-only.long": "दूसरे इंस्टेंसों में पोस्ट ना करें", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/hr.json b/app/javascript/flavours/glitch/locales/hr.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/hr.json +++ b/app/javascript/flavours/glitch/locales/hr.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/hu.json b/app/javascript/flavours/glitch/locales/hu.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/hu.json +++ b/app/javascript/flavours/glitch/locales/hu.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/hy.json b/app/javascript/flavours/glitch/locales/hy.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/hy.json +++ b/app/javascript/flavours/glitch/locales/hy.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/id.json b/app/javascript/flavours/glitch/locales/id.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/id.json +++ b/app/javascript/flavours/glitch/locales/id.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/ig.json b/app/javascript/flavours/glitch/locales/ig.json index 0967ef424b..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/ig.json +++ b/app/javascript/flavours/glitch/locales/ig.json @@ -1 +1,206 @@ -{} +{ + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", + "settings.content_warnings": "Content warnings", + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." +} diff --git a/app/javascript/flavours/glitch/locales/io.json b/app/javascript/flavours/glitch/locales/io.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/io.json +++ b/app/javascript/flavours/glitch/locales/io.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/is.json b/app/javascript/flavours/glitch/locales/is.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/is.json +++ b/app/javascript/flavours/glitch/locales/is.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/it.json b/app/javascript/flavours/glitch/locales/it.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/it.json +++ b/app/javascript/flavours/glitch/locales/it.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/ja.json b/app/javascript/flavours/glitch/locales/ja.json index 610cd75255..5a5365b13d 100644 --- a/app/javascript/flavours/glitch/locales/ja.json +++ b/app/javascript/flavours/glitch/locales/ja.json @@ -1,7 +1,9 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", "account.add_account_note": "@{name}のメモを追加", "account.disclaimer_full": "このユーザー情報は不正確な可能性があります。", "account.follows": "フォロー", + "account.joined": "Joined {date}", "account.suspended_disclaimer_full": "このユーザーはモデレータにより停止されました。", "account.view_full_profile": "正確な情報を見る", "account_note.cancel": "キャンセル", @@ -16,16 +18,26 @@ "advanced_options.threaded_mode.short": "スレッドモード", "advanced_options.threaded_mode.tooltip": "スレッドモードを有効にする", "boost_modal.missing_description": "このトゥートには少なくとも1つの画像に説明が付与されていません", + "column.favourited_by": "Favourited by", + "column.heading": "その他", + "column.reblogged_by": "Boosted by", + "column.subheading": "その他のオプション", + "column_header.profile": "Profile", + "column_subheading.lists": "リスト", + "column_subheading.navigation": "ナビゲーション", "community.column_settings.allow_local_only": "ローカル限定投稿を表示する", "compose.attach": "添付...", "compose.attach.doodle": "お絵描きをする", "compose.attach.upload": "ファイルをアップロード", + "compose.content-type.html": "HTML", "compose.content-type.markdown": "マークダウン", "compose.content-type.plain": "プレーンテキスト", "compose_form.poll.multiple_choices": "複数回答を許可", "compose_form.poll.single_choice": "単一回答を許可", "compose_form.spoiler": "本文は警告の後ろに隠す", "confirmation_modal.do_not_ask_again": "もう1度尋ねない", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", "confirmations.missing_media_description.confirm": "このまま投稿", "confirmations.missing_media_description.edit": "メディアを編集", "confirmations.missing_media_description.message": "少なくとも1つの画像に視覚障害者のための画像説明が付与されていません。すべての画像に対して説明を付与することを望みます。", @@ -34,35 +46,67 @@ "confirmations.unfilter.edit_filter": "フィルターを編集", "confirmations.unfilter.filters": "適用されたフィルター", "content-type.change": "コンテンツ形式を変更", + "direct.group_by_conversations": "Group by conversation", "endorsed_accounts_editor.endorsed_accounts": "紹介しているユーザー", "favourite_modal.combo": "次からは {combo} を押せば、これをスキップできます。", "getting_started.onboarding": "解説を表示", "home.column_settings.advanced": "高度", "home.column_settings.filter_regex": "正規表現でフィルター", "home.column_settings.show_direct": "DMを表示", + "home.settings": "Column settings", "keyboard_shortcuts.bookmark": "ブックマーク", "keyboard_shortcuts.secondary_toot": "セカンダリートゥートの公開範囲でトゥートする", "keyboard_shortcuts.toggle_collapse": "折りたたむ/折りたたみを解除", "layout.auto": "自動", "layout.desktop": "デスクトップ", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", "layout.single": "モバイル", + "media_gallery.sensitive": "Sensitive", "moved_to_warning": "このアカウント{moved_to_link}に引っ越したため、新しいフォロワーを受け入れていません。", "navigation_bar.app_settings": "アプリ設定", "navigation_bar.featured_users": "紹介しているアカウント", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", "navigation_bar.misc": "その他", "notification.markForDeletion": "選択", "notification_purge.btn_all": "すべて\n選択", "notification_purge.btn_apply": "選択したものを\n削除", "notification_purge.btn_invert": "選択を\n反転", "notification_purge.btn_none": "選択\n解除", + "notification_purge.start": "Enter notification cleaning mode", "notifications.marked_clear": "選択した通知を削除する", "notifications.marked_clear_confirmation": "削除した全ての通知を完全に削除してもよろしいですか?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain}はMastodonのインスタンスです。Mastodonとは、独立したサーバが連携して作るソーシャルネットワークです。これらのサーバーをインスタンスと呼びます。", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", "onboarding.page_one.welcome": "{domain}へようこそ!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain}はGlitchsocを使用しています。Glitchsocは{Mastodon}のフレンドリーな{fork}で、どんなMastodonアプリやインスタンスとも互換性があります。Glitchsocは完全に無料で、オープンソースです。{github}でバグ報告や機能要望あるいは貢獻をすることが可能です。", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", "settings.always_show_spoilers_field": "常にコンテンツワーニング設定を表示する(指定がない場合は通常投稿)", "settings.auto_collapse": "自動折りたたみ", "settings.auto_collapse_all": "すべて", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", "settings.auto_collapse_lengthy": "長いトゥート", "settings.auto_collapse_media": "メディア付きトゥート", "settings.auto_collapse_notifications": "通知", @@ -77,13 +121,21 @@ "settings.content_warnings": "コンテンツワーニング", "settings.content_warnings.regexp": "正規表現", "settings.content_warnings_filter": "説明に指定した文字が含まれているものを自動で展開しないようにする", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", "settings.enable_collapsed": "トゥート折りたたみを有効にする", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", "settings.enable_content_warnings_auto_unfold": "コンテンツワーニング指定されている投稿を常に表示する", "settings.general": "一般", "settings.hicolor_privacy_icons": "ハイカラーの公開範囲アイコン", "settings.hicolor_privacy_icons.hint": "公開範囲アイコンを明るく表示し見分けやすい色にします", "settings.image_backgrounds": "画像背景", "settings.image_backgrounds_media": "折りたまれたメディア付きトゥートをプレビュー", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", "settings.image_backgrounds_users": "折りたまれたトゥートの背景を変更する", "settings.inline_preview_cards": "外部リンクに埋め込みプレビューを有効にする", "settings.layout": "レイアウト", @@ -91,9 +143,12 @@ "settings.media": "メディア", "settings.media_fullwidth": "全幅メディアプレビュー", "settings.media_letterbox": "メディアをレターボックス式で表示", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", "settings.media_reveal_behind_cw": "既定で警告指定されているトゥートの閲覧注意メディアを表示する", "settings.notifications.favicon_badge": "通知アイコンに未読件数を表示する", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", "settings.notifications.tab_badge": "未読の通知があるとき、通知アイコンにマークを表示する", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", "settings.notifications_opts": "通知の設定", "settings.pop_in_left": "左", "settings.pop_in_player": "ポップインプレイヤーを有効化する", @@ -102,10 +157,12 @@ "settings.preferences": "ユーザー設定", "settings.prepend_cw_re": "返信するとき警告に \"re: \"を付加する", "settings.preselect_on_reply": "返信するときユーザー名を事前選択する", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", "settings.rewrite_mentions": "表示されたトゥートの返信先表示を書き換える", "settings.rewrite_mentions_acct": "ユーザー名とドメイン名(アカウントがリモートの場合)を表示するように書き換える", "settings.rewrite_mentions_no": "書き換えない", "settings.rewrite_mentions_username": "ユーザー名を表示するように書き換える", + "settings.shared_settings_link": "user preferences", "settings.show_action_bar": "アクションバーを表示", "settings.show_content_type_choice": "トゥートを書くときコンテンツ形式の選択ボタンを表示する", "settings.show_reply_counter": "投稿に対するリプライの数を表示する", @@ -115,10 +172,35 @@ "settings.side_arm_reply_mode.copy": "返信先の投稿範囲を利用する", "settings.side_arm_reply_mode.keep": "セカンダリートゥートボタンの設定を維持する", "settings.side_arm_reply_mode.restrict": "返信先の投稿範囲に制限する", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", "settings.swipe_to_change_columns": "スワイプでカラムを切り替え可能にする(モバイルのみ)", "settings.tag_misleading_links": "誤解を招くリンクにタグをつける", "settings.tag_misleading_links.hint": "明示的に言及していないすべてのリンクに、リンクターゲットホストを含む視覚的な表示を追加します", "settings.wide_view": "ワイドビュー(デスクトップ レイアウトのみ)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", "status.collapse": "折りたたむ", - "status.uncollapse": "折りたたみを解除" + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "折りたたみを解除", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/ka.json b/app/javascript/flavours/glitch/locales/ka.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/ka.json +++ b/app/javascript/flavours/glitch/locales/ka.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/kab.json b/app/javascript/flavours/glitch/locales/kab.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/kab.json +++ b/app/javascript/flavours/glitch/locales/kab.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/kk.json b/app/javascript/flavours/glitch/locales/kk.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/kk.json +++ b/app/javascript/flavours/glitch/locales/kk.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/kn.json b/app/javascript/flavours/glitch/locales/kn.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/kn.json +++ b/app/javascript/flavours/glitch/locales/kn.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/ko.json b/app/javascript/flavours/glitch/locales/ko.json index ceaccf8b41..2b4f22c193 100644 --- a/app/javascript/flavours/glitch/locales/ko.json +++ b/app/javascript/flavours/glitch/locales/ko.json @@ -67,7 +67,6 @@ "moved_to_warning": "이 계정은 {moved_to_link}로 이동한 것으로 표시되었고, 새 팔로우를 받지 않는 것 같습니다.", "navigation_bar.app_settings": "앱 설정", "navigation_bar.featured_users": "추천된 계정들", - "navigation_bar.info": "추가 정보", "navigation_bar.keyboard_shortcuts": "키보드 단축기", "navigation_bar.misc": "다양한 옵션들", "notification.markForDeletion": "삭제하기 위해 표시", @@ -98,12 +97,18 @@ "onboarding.page_three.search": "검색창을 사용해 사람들과 해시태그를 찾아보세요. 예를 들면 {illustration}이라든지 {introcustions} 같은 것으로요. 이 인스턴스에 있지 않은 사람을 찾으려면, 전체 핸들을 사용하세요.", "onboarding.page_two.compose": "작성 컬럼에서 게시물을 작성하세요. 그림을 업로드 할 수 있고, 공개설정을 바꿀 수도 있으며, 아래 아이콘을 통해 열람주의 텍스트를 설정할 수 있습니다.", "onboarding.skip": "건너뛰기", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", "settings.always_show_spoilers_field": "열람주의 항목을 언제나 활성화", "settings.auto_collapse": "자동으로 접기", "settings.auto_collapse_all": "모두", + "settings.auto_collapse_height": "길이가 긴 것으로 간주할 툿의 높이 (픽셀 단위)", "settings.auto_collapse_lengthy": "긴 글", "settings.auto_collapse_media": "미디어 포함 글", - "settings.auto_collapse_height": "길이가 긴 것으로 간주할 툿의 높이 (픽셀 단위)", "settings.auto_collapse_notifications": "알림", "settings.auto_collapse_reblogs": "부스트", "settings.auto_collapse_replies": "답글", diff --git a/app/javascript/flavours/glitch/locales/ku.json b/app/javascript/flavours/glitch/locales/ku.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/ku.json +++ b/app/javascript/flavours/glitch/locales/ku.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/kw.json b/app/javascript/flavours/glitch/locales/kw.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/kw.json +++ b/app/javascript/flavours/glitch/locales/kw.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/la.json b/app/javascript/flavours/glitch/locales/la.json index 0967ef424b..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/la.json +++ b/app/javascript/flavours/glitch/locales/la.json @@ -1 +1,206 @@ -{} +{ + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", + "settings.content_warnings": "Content warnings", + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." +} diff --git a/app/javascript/flavours/glitch/locales/lt.json b/app/javascript/flavours/glitch/locales/lt.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/lt.json +++ b/app/javascript/flavours/glitch/locales/lt.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/lv.json b/app/javascript/flavours/glitch/locales/lv.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/lv.json +++ b/app/javascript/flavours/glitch/locales/lv.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/mk.json b/app/javascript/flavours/glitch/locales/mk.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/mk.json +++ b/app/javascript/flavours/glitch/locales/mk.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/ml.json b/app/javascript/flavours/glitch/locales/ml.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/ml.json +++ b/app/javascript/flavours/glitch/locales/ml.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/mr.json b/app/javascript/flavours/glitch/locales/mr.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/mr.json +++ b/app/javascript/flavours/glitch/locales/mr.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/ms.json b/app/javascript/flavours/glitch/locales/ms.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/ms.json +++ b/app/javascript/flavours/glitch/locales/ms.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/my.json b/app/javascript/flavours/glitch/locales/my.json index 0967ef424b..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/my.json +++ b/app/javascript/flavours/glitch/locales/my.json @@ -1 +1,206 @@ -{} +{ + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", + "settings.content_warnings": "Content warnings", + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." +} diff --git a/app/javascript/flavours/glitch/locales/nl.json b/app/javascript/flavours/glitch/locales/nl.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/nl.json +++ b/app/javascript/flavours/glitch/locales/nl.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/nn.json b/app/javascript/flavours/glitch/locales/nn.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/nn.json +++ b/app/javascript/flavours/glitch/locales/nn.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/no.json b/app/javascript/flavours/glitch/locales/no.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/no.json +++ b/app/javascript/flavours/glitch/locales/no.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/oc.json b/app/javascript/flavours/glitch/locales/oc.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/oc.json +++ b/app/javascript/flavours/glitch/locales/oc.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/pa.json b/app/javascript/flavours/glitch/locales/pa.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/pa.json +++ b/app/javascript/flavours/glitch/locales/pa.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/pl.json b/app/javascript/flavours/glitch/locales/pl.json index 09acd098eb..d28c62693f 100644 --- a/app/javascript/flavours/glitch/locales/pl.json +++ b/app/javascript/flavours/glitch/locales/pl.json @@ -1,4 +1,15 @@ { + "about.fork_disclaimer": "Glitch-soc jest wolnym i otwartym oprogramowaniem wywodzącym się z Mastodonu.", + "account.add_account_note": "Dodaj notatkę dla @{name}", + "account.disclaimer_full": "Poniższe informacje mogą niekompletnie odzwierciedlać profil tego użytkownika.", + "account.follows": "Obserwuje", + "account.joined": "Konto utworzono {date}", + "account.suspended_disclaimer_full": "Użytkownik został zawieszony przez moderatora.", + "account.view_full_profile": "Pokaż pełny profil", + "account_note.cancel": "Anuluj", + "account_note.edit": "Edytuj", + "account_note.glitch_placeholder": "Brak komentarza", + "account_note.save": "Zapisz", "advanced_options.icon_title": "Ustawienia zaawansowane", "advanced_options.local-only.long": "Nie wysyłaj na inne instancje", "advanced_options.local-only.short": "Tylko lokalnie", @@ -6,17 +17,58 @@ "advanced_options.threaded_mode.long": "Przechodzi do tworzenia odpowiedzi po publikacji wpisu", "advanced_options.threaded_mode.short": "Tryb wątków", "advanced_options.threaded_mode.tooltip": "Włączono tryb wątków", + "boost_modal.missing_description": "Ten wpis zawiera multimedialne załączniki bez opisu", + "column.favourited_by": "Polubiony przez", + "column.heading": "Różne", + "column.reblogged_by": "Podbity przez", + "column.subheading": "Różne opcje", + "column_header.profile": "Profil", + "column_subheading.lists": "Listy", + "column_subheading.navigation": "Nawigacja", + "community.column_settings.allow_local_only": "Pokazuj wyłącznie wpisy lokalne", "compose.attach": "Załącz coś", "compose.attach.doodle": "Narysuj coś", "compose.attach.upload": "Wyślij plik", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Czysty tekst", + "compose_form.poll.multiple_choices": "Pozwól na wybór wielokrotny", + "compose_form.poll.single_choice": "Pozwól na tylko jeden wybór", "compose_form.spoiler": "Ukryj tekst za ostrzeżeniem", + "confirmation_modal.do_not_ask_again": "Więcej nie pytaj się o potwierdzenie", + "confirmations.deprecated_settings.confirm": "Użyj preferencji Mastodonu", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Zignoruj i wyślij", + "confirmations.missing_media_description.edit": "Edytuj załącznik multimedialny", + "confirmations.missing_media_description.message": "Co najmniej jednemu załącznikowi multimedialnemu brakuje opisu. Z uwagi na osoby z zaburzeniami widzenia rozważ opisanie wszystkich załączników przed opublikowaniem wpisu.", + "confirmations.unfilter.author": "Autor", + "confirmations.unfilter.confirm": "Pokaż", + "confirmations.unfilter.edit_filter": "Edytuj filtr", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Typ zawartości", + "direct.group_by_conversations": "Grupuj rozmowami", + "endorsed_accounts_editor.endorsed_accounts": "Wybrane konta", "favourite_modal.combo": "Możesz nacisnąć {combo}, aby pominąć to następnym razem", "getting_started.onboarding": "Rozejrzyj się", + "home.column_settings.advanced": "Zaawansowane", + "home.column_settings.filter_regex": "Filtruj, używając wyrażeń regularnych", "home.column_settings.show_direct": "Pokaż wiadomości bezpośrednie", + "home.settings": "Ustawienia kolumn", + "keyboard_shortcuts.bookmark": "aby dodać do ulubionych", + "keyboard_shortcuts.secondary_toot": "aby opublikować wpis używając dodatkowych ustawień prywatności", + "keyboard_shortcuts.toggle_collapse": "aby zwinąć/rozwinąć wpisy", "layout.auto": "Automatyczny", "layout.desktop": "Desktopowy", + "layout.hint.auto": "Automatycznie wybierz układ na podstawie ustawienia „Włącz zaawansowany interfejs użytkownika” i rozmiaru ekranu.", + "layout.hint.desktop": "Użyj układu wielokolumnowego niezależnie od ustawienia „Włącz zaawansowany interfejs użytkownika” i rozmiaru ekranu.", + "layout.hint.single": "Użyj układu jednokolumnowego niezależnie od ustawienia „Włącz zaawansowany interfejs użytkownika” i rozmiaru ekranu.", + "layout.single": "Mobilny", "media_gallery.sensitive": "Zawartość wrażliwa", + "moved_to_warning": "To konto oznaczone jest jako przeniesione do {moved_to_link} i może z tego powodu nie akceptować nowych obserwujących.", "navigation_bar.app_settings": "Ustawienia aplikacji", + "navigation_bar.featured_users": "Użytkownicy wyróżnieni", + "navigation_bar.keyboard_shortcuts": "Skróty klawiszowe", + "navigation_bar.misc": "Różne", "notification.markForDeletion": "Oznacz do usunięcia", "notification_purge.btn_all": "Zaznacz\nwszystkie", "notification_purge.btn_apply": "Usuń\nzaznaczone", @@ -25,11 +77,36 @@ "notification_purge.start": "Przejdź do trybu usuwania powiadomień", "notifications.marked_clear": "Usuń zaznaczone powiadomienia", "notifications.marked_clear_confirmation": "Czy na pewno chcesz bezpowrtonie usunąć wszystkie powiadomienia?", + "onboarding.done": "Zakończ", + "onboarding.next": "Następny", + "onboarding.page_five.public_timelines": "Lokalna oś czasu pokazuje publiczne posty wszystkich użytkowników {domain}. Globalna oś czasu pokazuje publiczne posty wszystkich użytkowników obserwowanych przez osoby z {domain}. Te publiczne osi czasu są dobrą metodą na poznawanie nowych ludzi.", + "onboarding.page_four.home": "Domowa oś czasowa pokazuje wpisy ludzi, których obserwujesz.", + "onboarding.page_four.notifications": "Kolumna powiadomień pokazuje interakcje innych z tobą.", "onboarding.page_one.federation": "{domain} jest 'instancją' Mastodona. Mastodon to sieć działających niezależnie serwerów tworzących jedną sieć społecznościową. Te serwery nazywane są instancjami.", + "onboarding.page_one.handle": "Jesteś na serwerze {domain}, więc twój pełny adres to {handle}", "onboarding.page_one.welcome": "Witamy na {domain}!", + "onboarding.page_six.admin": "Administratorem twojego serwera jest {admin}.", + "onboarding.page_six.almost_done": "Prawie gotowe…", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "Na Android, iOS i inne systemy są dostępne {apps}.", "onboarding.page_six.github": "{domain} jest oparty na Glitchsoc. Glitchsoc jest {forkiem} {Mastodon}a kompatybilnym z każdym klientem i aplikacją Mastodona. Glitchsoc jest całkowicie wolnym i otwartoźródłowym oprogramowaniem. Możesz zgłaszać błędy i sugestie funkcji oraz współtworzyć projekt na {github}.", + "onboarding.page_six.guidelines": "wytyczne społeczności", + "onboarding.page_six.read_guidelines": "Proszę przeczytać {guidelines} {domain}!", + "onboarding.page_six.various_app": "aplikacje mobilne", + "onboarding.page_three.profile": "Edytuj Twój profil, aby zmienić awatar, biogram i widoczną nazwę. Znajdziesz tam również inne ustawienia.", + "onboarding.page_three.search": "Użyj paska wyszukiwania aby znaleźć osoby i hasztagi, takie jak {illustration} i {introductions}. Aby znaleźć osobę niebędącą na tym serwerze użyj jej pełnego adresu.", + "onboarding.page_two.compose": "Twórz nowe wpisy w lewej kolumnie. Możesz wysłać zdjęcia, zmienić ustawienia prywatności i ukryć wpis za ostrzeżeniem używając poniższych ikon.", + "onboarding.skip": "Pomiń", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Zawsze pokazuj pole ostrzeżenia o zawartości", "settings.auto_collapse": "Automatyczne zwijanie", "settings.auto_collapse_all": "Wszystko", + "settings.auto_collapse_height": "Wysokość (w pikselach) powyżej której wpis będzie uznawany za długi", "settings.auto_collapse_lengthy": "Długie wpisy", "settings.auto_collapse_media": "Wpisy z zawartością multimedialną", "settings.auto_collapse_notifications": "Powiadomienia", @@ -37,19 +114,93 @@ "settings.auto_collapse_replies": "Odpowiedzi", "settings.close": "Zamknij", "settings.collapsed_statuses": "Zwijanie wpisów", + "settings.compose_box_opts": "Pole edycji", + "settings.confirm_before_clearing_draft": "Wymuś potwierdzenie przez nadpisaniem aktualnie edytowanego wpisu", + "settings.confirm_boost_missing_media_description": "Wymuś potwierdzenie przed podbiciem wpisów z brakującym opisem załączników multimedialnych", + "settings.confirm_missing_media_description": "Wymuś potwierdzenie przed opublikowaniem wpisu z brakującymi opisami załączników multimedialnych", "settings.content_warnings": "Content warnings", + "settings.content_warnings.regexp": "Wyrażenie regularne", + "settings.content_warnings_filter": "Ostrzeżenia o zawartości nieodkrywane automatycznie:", + "settings.content_warnings_media_outside": "Wyświetlaj załączniki multimedialne poza ostrzeżeniem o zawartości", + "settings.content_warnings_media_outside_hint": "Nie ukrywaj załączników multimedialnych, gdy wpis jest ukryty za ostrzeżeniem, tak jak robi to niezmodyfikowany Mastodon", + "settings.content_warnings_shared_state": "Pokaż/ukryj zawartość wszystkich kopii jednocześnie", + "settings.content_warnings_shared_state_hint": "Zachowaj się tak, jak niezmodyfikowany Mastodon, tj. wymuś działanie przycisku ostrzeżenia o zawartości na wszystkie kopie danego wpisu. Włączenie tego ustawienia spowoduje wyłączenie automatycznego zwijania kopii wpisów z odkrytym ostrzeżeniem o zawartości.", + "settings.content_warnings_unfold_opts": "Opcje automatycznego odkrywania", + "settings.deprecated_setting": "To ustawienie jest teraz kontrolowane przez {settings_page_link}", "settings.enable_collapsed": "Włącz zwijanie wpisów", + "settings.enable_collapsed_hint": "Zwinięte wpisy są częściowo ukryte, przez co zajmują mniej miejsca. Ta opcja różni się od ukrywania wpisów za ostrzeżeniem", + "settings.enable_content_warnings_auto_unfold": "Automatycznie odkrywaj wpisy ukryte za ostrzeżeniem", "settings.general": "Ogólne", + "settings.hicolor_privacy_icons": "Ikony ustawień prywatności o jaskrawych kolorach", + "settings.hicolor_privacy_icons.hint": "Wyświetl ikony ustawień prywatności używając łatwo rozróżnialnych kolorów", "settings.image_backgrounds": "Obrazy w tle", "settings.image_backgrounds_media": "Wyświetlaj zawartość multimedialną zwiniętych wpisów", + "settings.image_backgrounds_media_hint": "Jeśli wpis ma co najmniej jeden załącznik multimedialny, użyj pierwszego z nich, jako tła.", "settings.image_backgrounds_users": "Nadaj tło zwiniętym wpisom", + "settings.inline_preview_cards": "Karty podglądu zewnętrznych linków w tekście", "settings.layout": "Układ", + "settings.layout_opts": "Opcje układu", "settings.media": "Zawartość multimedialna", "settings.media_fullwidth": "Podgląd zawartości multimedialnej o pełnej szerokości", + "settings.media_letterbox": "Dopasuj proporcje multimedialnych załączników", + "settings.media_letterbox_hint": "Przeskaluj multimedialne załączniki w sposób umożliwiający zachowanie proporcji.", + "settings.media_reveal_behind_cw": "Domyślnie odkrywaj załączniki multimedialne wpisów ukrytych za ostrzeżeniem", + "settings.notifications.favicon_badge": "Znacznik nieprzeczytanych powiadomień ikony ulubionych", + "settings.notifications.favicon_badge.hint": "Dodaj znacznik nieprzeczytanych powiadomień do ikony ulubionych.", + "settings.notifications.tab_badge": "Znacznik nieprzeczytanych powiadomień", + "settings.notifications.tab_badge.hint": "Dodaj znacznik nieprzeczytanych powiadomień do ikon kolumn, gdy kolumna powiadomień jest zamknięta.", + "settings.notifications_opts": "Opcje powiadomień", + "settings.pop_in_left": "Po lewej", + "settings.pop_in_player": "Włącz odtwarzacz w wyskakującym okienku", + "settings.pop_in_position": "Pozycja wyskakującego okienka:", + "settings.pop_in_right": "Po prawej", "settings.preferences": "Preferencje użytkownika", + "settings.prepend_cw_re": "Dodaj „re: ” na początku ostrzeżenia o zawartości podczas odpowiadania na wpis z ostrzeżeniem", + "settings.preselect_on_reply": "Automatycznie wybierz adresy podczas odpowiadania", + "settings.preselect_on_reply_hint": "Podczas odpowiadania w rozmowie z kilkoma uczestnikami automatycznie wybierz adresy inne niż pierwszy.", + "settings.rewrite_mentions": "Przerabianie nawiązań w wyświetlonych statusach", + "settings.rewrite_mentions_acct": "Przerób na pełny adres, gdy konto jest z innego serwera", + "settings.rewrite_mentions_no": "Nie przerabiaj", + "settings.rewrite_mentions_username": "Przerób na nazwę użytkownika", + "settings.shared_settings_link": "ustawienia użytkownika", + "settings.show_action_bar": "Pokazuj przyciski akcji pod zwiniętymi wpisami", + "settings.show_content_type_choice": "Podczas tworzenia wpisów umożliw wybór typu zawartości", + "settings.show_reply_counter": "Wyświetl szacowaną ilości odpowiedzi", "settings.side_arm": "Drugi przycisk wysyłania", "settings.side_arm.none": "Żaden", + "settings.side_arm_reply_mode": "Podczas odpowiadania na wpis, dodatkowy przycisk publikowania powinien:", + "settings.side_arm_reply_mode.copy": "Powielić ustawienia prywatności wpisu, na który publikowana jest odpowiedź", + "settings.side_arm_reply_mode.keep": "Zachować wcześniej ustawiony tryb prywatności", + "settings.side_arm_reply_mode.restrict": "Ograniczyć ustawienia prywatności do tych używanych przez wpis, na który publikowana jest odpowiedź", + "settings.status_icons": "Ikony wpisów", + "settings.status_icons_language": "Wskaźnik języka", + "settings.status_icons_local_only": "Wskaźnik wpisu lokalnego", + "settings.status_icons_media": "Wskaźniki załączników multimedialnych i ankiet", + "settings.status_icons_reply": "Wskaźnik odpowiedzi", + "settings.status_icons_visibility": "Wskaźnik ustawień prywatności wpisu", + "settings.swipe_to_change_columns": "W wypadku wersji mobilnej pozwól na zmianę kolumny przez przesunięcie palcem", + "settings.tag_misleading_links": "Oznacz mylące linki", + "settings.tag_misleading_links.hint": "Dodaj oznaczenie domeny do każdego linku, który nie ma jej w swojej treści", "settings.wide_view": "Szeroki widok (tylko w trybie desktopowym)", + "settings.wide_view_hint": "Wykorzystaj więcej dostępnego miejsca, rozciągając kolumny.", "status.collapse": "Zwiń", - "status.uncollapse": "Rozwiń" + "status.has_audio": "Posiada załączone pliki dźwiękowe", + "status.has_pictures": "Posiada załączone obrazki", + "status.has_preview_card": "Posiada załączoną kartę podglądu", + "status.has_video": "Posiada załączone wideo", + "status.in_reply_to": "Ten wpis jest odpowiedzią", + "status.is_poll": "Ten wpis zawiera ankietę", + "status.local_only": "Widoczne tylko na twoim serwerze", + "status.sensitive_toggle": "Kliknij, aby zobaczyć", + "status.uncollapse": "Rozwiń", + "web_app_crash.change_your_settings": "Zmień swoje {settings}", + "web_app_crash.content": "Możesz spróbować:", + "web_app_crash.debug_info": "Informacje pomocne w debugowaniu", + "web_app_crash.disable_addons": "Wyłączyć dodatki Twojej przeglądarki lub wbudowane narzędzia do tłumaczenia", + "web_app_crash.issue_tracker": "stronie śledzenia błędów", + "web_app_crash.reload": "Odświeżyć", + "web_app_crash.reload_page": "{reload} tą stronę", + "web_app_crash.report_issue": "Zgłosić błąd na {issuetracker}", + "web_app_crash.settings": "ustawienia", + "web_app_crash.title": "Przepraszamy, ale coś jest nie tak z tą stroną Mastodonu." } diff --git a/app/javascript/flavours/glitch/locales/pt-BR.json b/app/javascript/flavours/glitch/locales/pt-BR.json index c739478196..d2fefcbff8 100644 --- a/app/javascript/flavours/glitch/locales/pt-BR.json +++ b/app/javascript/flavours/glitch/locales/pt-BR.json @@ -67,7 +67,6 @@ "moved_to_warning": "Esta conta foi como movida para {moved_to_link} e, portanto, pode não aceitar novos seguidores.", "navigation_bar.app_settings": "Configurações do aplicativo", "navigation_bar.featured_users": "Usuários em destaque", - "navigation_bar.info": "Informação estendida", "navigation_bar.keyboard_shortcuts": "Atalhos de teclado", "navigation_bar.misc": "Diversos", "notification.markForDeletion": "Marcar para exclusão", @@ -98,12 +97,18 @@ "onboarding.page_three.search": "Use a barra de busca para encontrar pessoas e procure hashtags, tais como {illustration} e {introductions}. Para procurar uma pessoa que não esteja neste caso, use o identificador completo.", "onboarding.page_two.compose": "Escreva as postagens a partir da coluna de composição. Você pode enviar imagens, alterar as configurações de privacidade e adicionar avisos de conteúdo com os ícones abaixo.", "onboarding.skip": "Pular", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", "settings.always_show_spoilers_field": "Sempre ativar o campo Aviso de Conteúdo", "settings.auto_collapse": "Colapso automático", "settings.auto_collapse_all": "Tudo", + "settings.auto_collapse_height": "Altura (em pixels) para um toot ser considerado longo", "settings.auto_collapse_lengthy": "Toots longos", "settings.auto_collapse_media": "Toots com mídia", - "settings.auto_collapse_height": "Altura (em pixels) para um toot ser considerado longo", "settings.auto_collapse_notifications": "Notificações", "settings.auto_collapse_reblogs": "Impulsos", "settings.auto_collapse_replies": "Respostas", diff --git a/app/javascript/flavours/glitch/locales/pt-PT.json b/app/javascript/flavours/glitch/locales/pt-PT.json index fc3cdc6218..9fc3d05b4b 100644 --- a/app/javascript/flavours/glitch/locales/pt-PT.json +++ b/app/javascript/flavours/glitch/locales/pt-PT.json @@ -18,8 +18,189 @@ "advanced_options.threaded_mode.short": "Modo de fio", "advanced_options.threaded_mode.tooltip": "Modo de fio ativado", "boost_modal.missing_description": "Este post contém alguns media sem descrição", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/ro.json b/app/javascript/flavours/glitch/locales/ro.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/ro.json +++ b/app/javascript/flavours/glitch/locales/ro.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/ru.json b/app/javascript/flavours/glitch/locales/ru.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/ru.json +++ b/app/javascript/flavours/glitch/locales/ru.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/sa.json b/app/javascript/flavours/glitch/locales/sa.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/sa.json +++ b/app/javascript/flavours/glitch/locales/sa.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/sc.json b/app/javascript/flavours/glitch/locales/sc.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/sc.json +++ b/app/javascript/flavours/glitch/locales/sc.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/sco.json b/app/javascript/flavours/glitch/locales/sco.json index 0967ef424b..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/sco.json +++ b/app/javascript/flavours/glitch/locales/sco.json @@ -1 +1,206 @@ -{} +{ + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", + "settings.content_warnings": "Content warnings", + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." +} diff --git a/app/javascript/flavours/glitch/locales/si.json b/app/javascript/flavours/glitch/locales/si.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/si.json +++ b/app/javascript/flavours/glitch/locales/si.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/sk.json b/app/javascript/flavours/glitch/locales/sk.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/sk.json +++ b/app/javascript/flavours/glitch/locales/sk.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/sl.json b/app/javascript/flavours/glitch/locales/sl.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/sl.json +++ b/app/javascript/flavours/glitch/locales/sl.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/sq.json b/app/javascript/flavours/glitch/locales/sq.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/sq.json +++ b/app/javascript/flavours/glitch/locales/sq.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/sr-Latn.json b/app/javascript/flavours/glitch/locales/sr-Latn.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/sr-Latn.json +++ b/app/javascript/flavours/glitch/locales/sr-Latn.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/sr.json b/app/javascript/flavours/glitch/locales/sr.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/sr.json +++ b/app/javascript/flavours/glitch/locales/sr.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/sv.json b/app/javascript/flavours/glitch/locales/sv.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/sv.json +++ b/app/javascript/flavours/glitch/locales/sv.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/szl.json b/app/javascript/flavours/glitch/locales/szl.json index 807ed82077..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/szl.json +++ b/app/javascript/flavours/glitch/locales/szl.json @@ -67,7 +67,6 @@ "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", "navigation_bar.app_settings": "App settings", "navigation_bar.featured_users": "Featured users", - "navigation_bar.info": "Extended information", "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", "navigation_bar.misc": "Misc", "notification.markForDeletion": "Mark for deletion", @@ -98,9 +97,16 @@ "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", "settings.always_show_spoilers_field": "Always enable the Content Warning field", "settings.auto_collapse": "Automatic collapsing", "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", "settings.auto_collapse_lengthy": "Lengthy toots", "settings.auto_collapse_media": "Toots with media", "settings.auto_collapse_notifications": "Notifications", @@ -124,7 +130,6 @@ "settings.enable_collapsed": "Enable collapsed toots", "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", - "settings.filters": "Filters", "settings.general": "General", "settings.hicolor_privacy_icons": "High color privacy icons", "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", diff --git a/app/javascript/flavours/glitch/locales/ta.json b/app/javascript/flavours/glitch/locales/ta.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/ta.json +++ b/app/javascript/flavours/glitch/locales/ta.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/tai.json b/app/javascript/flavours/glitch/locales/tai.json index 807ed82077..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/tai.json +++ b/app/javascript/flavours/glitch/locales/tai.json @@ -67,7 +67,6 @@ "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", "navigation_bar.app_settings": "App settings", "navigation_bar.featured_users": "Featured users", - "navigation_bar.info": "Extended information", "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", "navigation_bar.misc": "Misc", "notification.markForDeletion": "Mark for deletion", @@ -98,9 +97,16 @@ "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", "settings.always_show_spoilers_field": "Always enable the Content Warning field", "settings.auto_collapse": "Automatic collapsing", "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", "settings.auto_collapse_lengthy": "Lengthy toots", "settings.auto_collapse_media": "Toots with media", "settings.auto_collapse_notifications": "Notifications", @@ -124,7 +130,6 @@ "settings.enable_collapsed": "Enable collapsed toots", "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", - "settings.filters": "Filters", "settings.general": "General", "settings.hicolor_privacy_icons": "High color privacy icons", "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", diff --git a/app/javascript/flavours/glitch/locales/te.json b/app/javascript/flavours/glitch/locales/te.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/te.json +++ b/app/javascript/flavours/glitch/locales/te.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/th.json b/app/javascript/flavours/glitch/locales/th.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/th.json +++ b/app/javascript/flavours/glitch/locales/th.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/tr.json b/app/javascript/flavours/glitch/locales/tr.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/tr.json +++ b/app/javascript/flavours/glitch/locales/tr.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/tt.json b/app/javascript/flavours/glitch/locales/tt.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/tt.json +++ b/app/javascript/flavours/glitch/locales/tt.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/ug.json b/app/javascript/flavours/glitch/locales/ug.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/ug.json +++ b/app/javascript/flavours/glitch/locales/ug.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/uk.json b/app/javascript/flavours/glitch/locales/uk.json index b215846591..1304732f4a 100644 --- a/app/javascript/flavours/glitch/locales/uk.json +++ b/app/javascript/flavours/glitch/locales/uk.json @@ -1,29 +1,112 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", "advanced_options.local-only.long": "Не дмухати це на інші сервери", "advanced_options.local-only.short": "Лише локальне", "advanced_options.local-only.tooltip": "Цей дмух лише локальний", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", "compose.attach": "Вкласти...", "compose.attach.doodle": "Помалювати", "compose.attach.upload": "Завантажити сюди файл", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", "favourite_modal.combo": "Ви можете натиснути {combo}, щоб пропустити це наступного разу", "getting_started.onboarding": "Шо тут", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", "home.column_settings.show_direct": "Показати прямі повідомлення", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", "layout.auto": "Автоматичний", "layout.desktop": "Настільний", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", "media_gallery.sensitive": "Чутливі", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", "navigation_bar.app_settings": "Налаштування програми", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", "notification.markForDeletion": "Позначити для видалення", "notification_purge.btn_all": "Вибрати\nвсе", "notification_purge.btn_apply": "Очистити\nвибір", "notification_purge.btn_invert": "Інвертувати\nвибір", "notification_purge.btn_none": "Вибрати\nнічого", + "notification_purge.start": "Enter notification cleaning mode", "notifications.marked_clear": "Очистити вибрані сповіщення", "notifications.marked_clear_confirmation": "Ви впевнені, що хочете незворотньо очистити всі вибрані сповіщення?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} є сервером of Mastodon. Mastodon — мережа незалежних серверів, які працюють разом великою соціяльною мережою. Сервери Mastodon також називають „інстансами“.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", "onboarding.page_one.welcome": "Ласкаво просимо до {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} використовує Glitchsoc. Glitchsoc — дружній {fork} {Mastodon}, сумісний з будь-яким сервером Mastodon або програмою для нього. Glitchsoc повністю вільний та відкритий. Повідомляти про баги, просити фічі, або працювати з кодом можна на {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", "settings.auto_collapse": "Автоматичне згортання", "settings.auto_collapse_all": "Все", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", "settings.auto_collapse_lengthy": "Довгі дмухи", "settings.auto_collapse_media": "Дмухи з медіафайлами", "settings.auto_collapse_notifications": "Сповіщення", @@ -31,18 +114,93 @@ "settings.auto_collapse_replies": "Відповіді", "settings.close": "Закрити", "settings.collapsed_statuses": "Згорнуті дмухи", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", "settings.enable_collapsed": "Увімкути згорнутання дмухів", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", "settings.general": "Основне", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", "settings.image_backgrounds": "Картинки на тлі", "settings.image_backgrounds_media": "Підглядати медіа зі схованих дмухів", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", "settings.image_backgrounds_users": "Давати схованим дмухам тло-картинку", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", "settings.media": "Медіа", "settings.media_fullwidth": "Показувати медіа повною шириною", "settings.media_letterbox": "Обрізати медіа", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", "settings.preferences": "Користувацькі налаштування", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", "settings.show_action_bar": "Показувати кнопки у згорнутих дмухах", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", "settings.wide_view": "Широкий вид (тільки в режимі для комп'ютерів)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", "status.collapse": "Згорнути", - "status.uncollapse": "Розгорнути" + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Розгорнути", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/ur.json b/app/javascript/flavours/glitch/locales/ur.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/ur.json +++ b/app/javascript/flavours/glitch/locales/ur.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/vi.json b/app/javascript/flavours/glitch/locales/vi.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/vi.json +++ b/app/javascript/flavours/glitch/locales/vi.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/whitelist_an.json b/app/javascript/flavours/glitch/locales/whitelist_an.json new file mode 100644 index 0000000000..0d4f101c7a --- /dev/null +++ b/app/javascript/flavours/glitch/locales/whitelist_an.json @@ -0,0 +1,2 @@ +[ +] diff --git a/app/javascript/flavours/glitch/locales/whitelist_be.json b/app/javascript/flavours/glitch/locales/whitelist_be.json new file mode 100644 index 0000000000..0d4f101c7a --- /dev/null +++ b/app/javascript/flavours/glitch/locales/whitelist_be.json @@ -0,0 +1,2 @@ +[ +] diff --git a/app/javascript/flavours/glitch/locales/whitelist_bs.json b/app/javascript/flavours/glitch/locales/whitelist_bs.json new file mode 100644 index 0000000000..0d4f101c7a --- /dev/null +++ b/app/javascript/flavours/glitch/locales/whitelist_bs.json @@ -0,0 +1,2 @@ +[ +] diff --git a/app/javascript/flavours/glitch/locales/whitelist_en-GB.json b/app/javascript/flavours/glitch/locales/whitelist_en-GB.json new file mode 100644 index 0000000000..0d4f101c7a --- /dev/null +++ b/app/javascript/flavours/glitch/locales/whitelist_en-GB.json @@ -0,0 +1,2 @@ +[ +] diff --git a/app/javascript/flavours/glitch/locales/whitelist_fo.json b/app/javascript/flavours/glitch/locales/whitelist_fo.json new file mode 100644 index 0000000000..0d4f101c7a --- /dev/null +++ b/app/javascript/flavours/glitch/locales/whitelist_fo.json @@ -0,0 +1,2 @@ +[ +] diff --git a/app/javascript/flavours/glitch/locales/whitelist_fr-QC.json b/app/javascript/flavours/glitch/locales/whitelist_fr-QC.json new file mode 100644 index 0000000000..0d4f101c7a --- /dev/null +++ b/app/javascript/flavours/glitch/locales/whitelist_fr-QC.json @@ -0,0 +1,2 @@ +[ +] diff --git a/app/javascript/flavours/glitch/locales/whitelist_fy.json b/app/javascript/flavours/glitch/locales/whitelist_fy.json new file mode 100644 index 0000000000..0d4f101c7a --- /dev/null +++ b/app/javascript/flavours/glitch/locales/whitelist_fy.json @@ -0,0 +1,2 @@ +[ +] diff --git a/app/javascript/flavours/glitch/locales/whitelist_ig.json b/app/javascript/flavours/glitch/locales/whitelist_ig.json new file mode 100644 index 0000000000..0d4f101c7a --- /dev/null +++ b/app/javascript/flavours/glitch/locales/whitelist_ig.json @@ -0,0 +1,2 @@ +[ +] diff --git a/app/javascript/flavours/glitch/locales/whitelist_la.json b/app/javascript/flavours/glitch/locales/whitelist_la.json new file mode 100644 index 0000000000..0d4f101c7a --- /dev/null +++ b/app/javascript/flavours/glitch/locales/whitelist_la.json @@ -0,0 +1,2 @@ +[ +] diff --git a/app/javascript/flavours/glitch/locales/whitelist_my.json b/app/javascript/flavours/glitch/locales/whitelist_my.json new file mode 100644 index 0000000000..0d4f101c7a --- /dev/null +++ b/app/javascript/flavours/glitch/locales/whitelist_my.json @@ -0,0 +1,2 @@ +[ +] diff --git a/app/javascript/flavours/glitch/locales/whitelist_sco.json b/app/javascript/flavours/glitch/locales/whitelist_sco.json new file mode 100644 index 0000000000..0d4f101c7a --- /dev/null +++ b/app/javascript/flavours/glitch/locales/whitelist_sco.json @@ -0,0 +1,2 @@ +[ +] diff --git a/app/javascript/flavours/glitch/locales/zgh.json b/app/javascript/flavours/glitch/locales/zgh.json index 807ed82077..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/zgh.json +++ b/app/javascript/flavours/glitch/locales/zgh.json @@ -67,7 +67,6 @@ "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", "navigation_bar.app_settings": "App settings", "navigation_bar.featured_users": "Featured users", - "navigation_bar.info": "Extended information", "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", "navigation_bar.misc": "Misc", "notification.markForDeletion": "Mark for deletion", @@ -98,9 +97,16 @@ "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", "settings.always_show_spoilers_field": "Always enable the Content Warning field", "settings.auto_collapse": "Automatic collapsing", "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", "settings.auto_collapse_lengthy": "Lengthy toots", "settings.auto_collapse_media": "Toots with media", "settings.auto_collapse_notifications": "Notifications", @@ -124,7 +130,6 @@ "settings.enable_collapsed": "Enable collapsed toots", "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", - "settings.filters": "Filters", "settings.general": "General", "settings.hicolor_privacy_icons": "High color privacy icons", "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", diff --git a/app/javascript/flavours/glitch/locales/zh-CN.json b/app/javascript/flavours/glitch/locales/zh-CN.json index 9b5a7713f1..46a66c9603 100644 --- a/app/javascript/flavours/glitch/locales/zh-CN.json +++ b/app/javascript/flavours/glitch/locales/zh-CN.json @@ -1,7 +1,9 @@ { + "about.fork_disclaimer": "Glitch-soc是从Mastodon派生的免费开源软件。", "account.add_account_note": "为 @{name} 添加备注", "account.disclaimer_full": "以下信息可能无法完整代表你的个人资料。", "account.follows": "正在关注", + "account.joined": "在 {date} 加入", "account.suspended_disclaimer_full": "该用户已被封禁。", "account.view_full_profile": "查看完整资料", "account_note.cancel": "取消", @@ -27,11 +29,15 @@ "compose.attach": "附上...", "compose.attach.doodle": "画点什么", "compose.attach.upload": "上传文件", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", "compose.content-type.plain": "纯文本", "compose_form.poll.multiple_choices": "允许多选", "compose_form.poll.single_choice": "允许单选", "compose_form.spoiler": "隐藏为内容警告", "confirmation_modal.do_not_ask_again": "下次不显示确认窗口", + "confirmations.deprecated_settings.confirm": "使用 Mastodon 偏好设置", + "confirmations.deprecated_settings.message": "您正使用的glitch-soc的特定于此设备的 {app_settings} 已被Mastodon {preferences} 替换,并将被覆盖:", "confirmations.missing_media_description.confirm": "确认", "confirmations.missing_media_description.edit": "编辑", "confirmations.missing_media_description.message": "你没有为一种或多种媒体撰写描述。请考虑为视障人士添加描述。", @@ -40,6 +46,7 @@ "confirmations.unfilter.edit_filter": "编辑过滤器", "confirmations.unfilter.filters": "应用 {count, plural, one {过滤器} other {过滤器}}", "content-type.change": "内容类型 ", + "direct.group_by_conversations": "以对话分组", "endorsed_accounts_editor.endorsed_accounts": "推荐用户", "favourite_modal.combo": "下次你可以按 {combo} 跳过这个", "getting_started.onboarding": "参观一下", @@ -60,6 +67,7 @@ "moved_to_warning": "此帐户已被标记为移至 {moved_to_link},并且似乎没有收到新关注者。", "navigation_bar.app_settings": "应用选项", "navigation_bar.featured_users": "推荐用户", + "navigation_bar.keyboard_shortcuts": "键盘快捷键", "navigation_bar.misc": "杂项", "notification.markForDeletion": "标记以删除", "notification_purge.btn_all": "全选", @@ -89,9 +97,16 @@ "onboarding.page_three.search": "使用搜索栏查找用户并查看标签,例如 #illustration 和 #introductions。要查找不在此实例中的用户,请使用他们的完整用户名。", "onboarding.page_two.compose": "在撰写框中撰写嘟文。你可以使用下方图标上传图像、更改隐私设置和添加内容警告。", "onboarding.skip": "跳过", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", "settings.always_show_spoilers_field": "始终显示内容警告框", "settings.auto_collapse": "自动折叠", "settings.auto_collapse_all": "所有", + "settings.auto_collapse_height": "嘟文被视作长嘟文的临界高度(像素)", "settings.auto_collapse_lengthy": "长嘟文", "settings.auto_collapse_media": "带媒体文件的嘟文", "settings.auto_collapse_notifications": "通知", @@ -106,13 +121,21 @@ "settings.content_warnings": "内容警告", "settings.content_warnings.regexp": "正则表达式", "settings.content_warnings_filter": "不会自动展开的内容警告:", + "settings.content_warnings_media_outside": "在内容警告外显示媒体附件", + "settings.content_warnings_media_outside_hint": "通过让内容警告开关不影响媒体附件来复制上游Mastodon行为", + "settings.content_warnings_shared_state": "一次显示/隐藏所有副本的内容", + "settings.content_warnings_shared_state_hint": "通过让内容警告按钮同时影响所有帖子的副本来重现上游Mastodon行为。这将防止任何展开内容警告的嘟文自动折叠。", + "settings.content_warnings_unfold_opts": "自动展开设置项", + "settings.deprecated_setting": "此设置现在被 Mastodon 的 {settings_page_link} 控制", "settings.enable_collapsed": "启用折叠嘟文", + "settings.enable_collapsed_hint": "让折叠的帖子隐藏部分内容以占用较少的屏幕空间。这与“内容警告”功能不同。", "settings.enable_content_warnings_auto_unfold": "自动展开内容警告", "settings.general": "一般", "settings.hicolor_privacy_icons": "彩色隐私图标 ", "settings.hicolor_privacy_icons.hint": "以明亮且易于区分的颜色显示隐私图标", "settings.image_backgrounds": "图片背景", "settings.image_backgrounds_media": "预览折叠嘟文的媒体文件", + "settings.image_backgrounds_media_hint": "如果帖子有任何媒体附件,则使用第一个作为背景", "settings.image_backgrounds_users": "为折叠嘟文附加图片背景", "settings.inline_preview_cards": "外部链接的内嵌预览卡片", "settings.layout": "布局:", @@ -139,6 +162,7 @@ "settings.rewrite_mentions_acct": "重写为用户名和域名(当帐户为远程时)", "settings.rewrite_mentions_no": "不要重写", "settings.rewrite_mentions_username": "重写为用户名", + "settings.shared_settings_link": "用户偏好设置", "settings.show_action_bar": "在折叠的嘟文中显示操作按钮", "settings.show_content_type_choice": "允许你在撰写嘟文时选择格式类型", "settings.show_reply_counter": "显示回复的大致数量", @@ -148,6 +172,12 @@ "settings.side_arm_reply_mode.copy": "复制被回复嘟文的隐私设置", "settings.side_arm_reply_mode.keep": "保留辅助发嘟按钮以设置隐私", "settings.side_arm_reply_mode.restrict": "将隐私设置限制为正在回复的那条嘟文", + "settings.status_icons": "嘟文图标", + "settings.status_icons_language": "语言指示器", + "settings.status_icons_local_only": "仅本地指示器", + "settings.status_icons_media": "媒体和投票指示器", + "settings.status_icons_reply": "回复指示器", + "settings.status_icons_visibility": "嘟文隐私状态指示器", "settings.swipe_to_change_columns": "允许滑动以在列之间切换(仅限移动模式)", "settings.tag_misleading_links": "标记误导性链接", "settings.tag_misleading_links.hint": "将带有目标网页链接的视觉指示添加到每个未明确的链接", diff --git a/app/javascript/flavours/glitch/locales/zh-HK.json b/app/javascript/flavours/glitch/locales/zh-HK.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/zh-HK.json +++ b/app/javascript/flavours/glitch/locales/zh-HK.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/locales/zh-TW.json b/app/javascript/flavours/glitch/locales/zh-TW.json index 4d243f94c2..6fd7dc2693 100644 --- a/app/javascript/flavours/glitch/locales/zh-TW.json +++ b/app/javascript/flavours/glitch/locales/zh-TW.json @@ -1,6 +1,206 @@ { + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "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.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_height": "Height (in pixels) for a toot to be considered lengthy", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", "settings.content_warnings": "Content warnings", - "settings.preferences": "Preferences" + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "Preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." } diff --git a/app/javascript/flavours/glitch/packs/public.jsx b/app/javascript/flavours/glitch/packs/public.jsx index b256fdbd56..335a0710d6 100644 --- a/app/javascript/flavours/glitch/packs/public.jsx +++ b/app/javascript/flavours/glitch/packs/public.jsx @@ -96,11 +96,12 @@ function main() { const datetime = new Date(content.getAttribute('datetime')); const now = new Date(); - content.title = dateTimeFormat.format(datetime); + const timeGiven = content.getAttribute('datetime').includes('T'); + content.title = timeGiven ? dateTimeFormat.format(datetime) : dateFormat.format(datetime); content.textContent = timeAgoString({ formatMessage: ({ id, defaultMessage }, values) => (new IntlMessageFormat(messages[id] || defaultMessage, locale)).format(values), formatDate: (date, options) => (new Intl.DateTimeFormat(locale, options)).format(date), - }, datetime, now, now.getFullYear(), content.getAttribute('datetime').includes('T')); + }, datetime, now, now.getFullYear(), timeGiven); }); const reactComponents = document.querySelectorAll('[data-component]'); @@ -183,10 +184,10 @@ function main() { if (sidebar.classList.contains('visible')) { document.body.style.overflow = null; - toggleButton.setAttribute('aria-expanded', false); + toggleButton.setAttribute('aria-expanded', 'false'); } else { document.body.style.overflow = 'hidden'; - toggleButton.setAttribute('aria-expanded', true); + toggleButton.setAttribute('aria-expanded', 'true'); } toggleButton.classList.toggle('active'); diff --git a/app/javascript/flavours/glitch/packs/settings.js b/app/javascript/flavours/glitch/packs/settings.js index 31c88b2b56..55a8ae1c65 100644 --- a/app/javascript/flavours/glitch/packs/settings.js +++ b/app/javascript/flavours/glitch/packs/settings.js @@ -1,6 +1,5 @@ import 'packs/public-path'; import loadPolyfills from 'flavours/glitch/load_polyfills'; -import ready from 'flavours/glitch/ready'; import loadKeyboardExtensions from 'flavours/glitch/load_keyboard_extensions'; import 'cocoon-js-vanilla'; @@ -13,10 +12,10 @@ function main() { if (sidebar.classList.contains('visible')) { document.body.style.overflow = null; - toggleButton.setAttribute('aria-expanded', false); + toggleButton.setAttribute('aria-expanded', 'false'); } else { document.body.style.overflow = 'hidden'; - toggleButton.setAttribute('aria-expanded', true); + toggleButton.setAttribute('aria-expanded', 'true'); } toggleButton.classList.toggle('active'); diff --git a/app/javascript/flavours/glitch/performance.js b/app/javascript/flavours/glitch/performance.js index 450a90626e..2b7e1bda84 100644 --- a/app/javascript/flavours/glitch/performance.js +++ b/app/javascript/flavours/glitch/performance.js @@ -12,6 +12,7 @@ if (process.env.NODE_ENV === 'development') { // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1331135 performance.setResourceTimingBufferSize(Infinity); } + // eslint-disable-next-line import/no-extraneous-dependencies marky = require('marky'); // allows us to easily do e.g. ReactPerf.printWasted() while debugging //window.ReactPerf = require('react-addons-perf'); diff --git a/app/javascript/flavours/glitch/reducers/server.js b/app/javascript/flavours/glitch/reducers/server.js index cc5798fb34..af0cfc7a90 100644 --- a/app/javascript/flavours/glitch/reducers/server.js +++ b/app/javascript/flavours/glitch/reducers/server.js @@ -2,6 +2,9 @@ import { SERVER_FETCH_REQUEST, SERVER_FETCH_SUCCESS, SERVER_FETCH_FAIL, + SERVER_TRANSLATION_LANGUAGES_FETCH_REQUEST, + SERVER_TRANSLATION_LANGUAGES_FETCH_SUCCESS, + SERVER_TRANSLATION_LANGUAGES_FETCH_FAIL, EXTENDED_DESCRIPTION_REQUEST, EXTENDED_DESCRIPTION_SUCCESS, EXTENDED_DESCRIPTION_FAIL, @@ -35,6 +38,12 @@ export default function server(state = initialState, action) { return state.set('server', fromJS(action.server)).setIn(['server', 'isLoading'], false); case SERVER_FETCH_FAIL: return state.setIn(['server', 'isLoading'], false); + case SERVER_TRANSLATION_LANGUAGES_FETCH_REQUEST: + return state.setIn(['translationLanguages', 'isLoading'], true); + case SERVER_TRANSLATION_LANGUAGES_FETCH_SUCCESS: + return state.setIn(['translationLanguages', 'items'], fromJS(action.translationLanguages)).setIn(['translationLanguages', 'isLoading'], false); + case SERVER_TRANSLATION_LANGUAGES_FETCH_FAIL: + return state.setIn(['translationLanguages', 'isLoading'], false); case EXTENDED_DESCRIPTION_REQUEST: return state.setIn(['extendedDescription', 'isLoading'], true); case EXTENDED_DESCRIPTION_SUCCESS: diff --git a/app/javascript/flavours/glitch/styles/accounts.scss b/app/javascript/flavours/glitch/styles/accounts.scss index abe2e8616f..b1faf07c27 100644 --- a/app/javascript/flavours/glitch/styles/accounts.scss +++ b/app/javascript/flavours/glitch/styles/accounts.scss @@ -36,10 +36,6 @@ @media screen and (max-width: 600px) { height: 200px; } - - @media screen and (max-width: $no-gap-breakpoint) { - display: none; - } } &__bar { diff --git a/app/javascript/flavours/glitch/styles/components/columns.scss b/app/javascript/flavours/glitch/styles/components/columns.scss index fd4bb95b5f..907f820d6c 100644 --- a/app/javascript/flavours/glitch/styles/components/columns.scss +++ b/app/javascript/flavours/glitch/styles/components/columns.scss @@ -650,6 +650,7 @@ $ui-header-height: 55px; .follow_requests-unlocked_explanation { background: darken($ui-base-color, 4%); contain: initial; + flex-grow: 0; } .error-column { diff --git a/app/javascript/flavours/glitch/styles/components/compose_form.scss b/app/javascript/flavours/glitch/styles/components/compose_form.scss index 3f1f8728af..f77e7ed6af 100644 --- a/app/javascript/flavours/glitch/styles/components/compose_form.scss +++ b/app/javascript/flavours/glitch/styles/components/compose_form.scss @@ -168,8 +168,7 @@ white-space: pre-wrap; p, - pre, - blockquote { + pre { margin-bottom: 20px; white-space: pre-wrap; @@ -178,79 +177,6 @@ } } - h1, - h2, - h3, - h4, - h5 { - margin-top: 20px; - margin-bottom: 20px; - } - - h1, - h2 { - font-weight: 700; - font-size: 18px; - } - - h2 { - font-size: 16px; - } - - h3, - h4, - h5 { - font-weight: 500; - } - - blockquote { - padding-left: 10px; - border-left: 3px solid $inverted-text-color; - color: $inverted-text-color; - white-space: normal; - - p:last-child { - margin-bottom: 0; - } - } - - b, - strong { - font-weight: 700; - } - - em, - i { - font-style: italic; - } - - sub { - font-size: smaller; - vertical-align: sub; - } - - sup { - font-size: smaller; - vertical-align: super; - } - - ul, - ol { - margin-left: 1em; - - p { - margin: 0; - } - } - - ul { - list-style-type: disc; - } - - ol { - list-style-type: decimal; - } - a { color: $lighter-text-color; text-decoration: none; diff --git a/app/javascript/flavours/glitch/styles/components/drawer.scss b/app/javascript/flavours/glitch/styles/components/drawer.scss index 9de5a4435b..ec8a3da9e5 100644 --- a/app/javascript/flavours/glitch/styles/components/drawer.scss +++ b/app/javascript/flavours/glitch/styles/components/drawer.scss @@ -50,12 +50,14 @@ } .drawer--header { + flex: none; + font-size: 16px; + background: lighten($ui-base-color, 8%); + margin-bottom: 10px; display: flex; flex-direction: row; - margin-bottom: 10px; - flex: none; - background: lighten($ui-base-color, 8%); - font-size: 16px; + border-radius: 4px; + overflow: hidden; & > * { display: block; @@ -179,6 +181,7 @@ position: relative; overflow: hidden; display: flex; + border-radius: 4px; } .drawer__inner { @@ -215,7 +218,6 @@ width: 85%; height: 100%; pointer-events: none; - user-drag: none; user-select: none; } diff --git a/app/javascript/flavours/glitch/styles/components/misc.scss b/app/javascript/flavours/glitch/styles/components/misc.scss index 2cd9b75037..86b8b99c1b 100644 --- a/app/javascript/flavours/glitch/styles/components/misc.scss +++ b/app/javascript/flavours/glitch/styles/components/misc.scss @@ -1628,6 +1628,7 @@ button.icon-button.active i.fa-retweet { display: flex; align-items: center; justify-content: center; + text-align: center; color: $secondary-text-color; font-size: 18px; font-weight: 500; diff --git a/app/javascript/flavours/glitch/styles/components/privacy_policy.scss b/app/javascript/flavours/glitch/styles/components/privacy_policy.scss index c99e99131d..93123075ee 100644 --- a/app/javascript/flavours/glitch/styles/components/privacy_policy.scss +++ b/app/javascript/flavours/glitch/styles/components/privacy_policy.scss @@ -26,11 +26,13 @@ img { margin-top: 2em; margin-bottom: 2em; + max-width: 100%; } video { margin-top: 2em; margin-bottom: 2em; + max-width: 100%; } figure { diff --git a/app/javascript/flavours/glitch/styles/index.scss b/app/javascript/flavours/glitch/styles/index.scss index fbb02c7884..1cb913c8b8 100644 --- a/app/javascript/flavours/glitch/styles/index.scss +++ b/app/javascript/flavours/glitch/styles/index.scss @@ -21,3 +21,4 @@ @import 'accessibility'; @import 'rtl'; @import 'dashboard'; +@import 'rich_text'; diff --git a/app/javascript/flavours/glitch/styles/rich_text.scss b/app/javascript/flavours/glitch/styles/rich_text.scss new file mode 100644 index 0000000000..e608183534 --- /dev/null +++ b/app/javascript/flavours/glitch/styles/rich_text.scss @@ -0,0 +1,99 @@ +.status__content__text, +.e-content, +.reply-indicator__content { + pre, + blockquote { + margin-bottom: 20px; + white-space: pre-wrap; + unicode-bidi: plaintext; + + &:last-child { + margin-bottom: 0; + } + } + + blockquote { + padding-left: 10px; + border-left: 3px solid $darker-text-color; + color: $darker-text-color; + white-space: normal; + + p:last-child { + margin-bottom: 0; + } + } + + & > ul, + & > ol { + margin-bottom: 20px; + } + + h1, + h2, + h3, + h4, + h5 { + margin-top: 20px; + margin-bottom: 20px; + } + + h1, + h2 { + font-weight: 700; + font-size: 1.2em; + } + + h2 { + font-size: 1.1em; + } + + h3, + h4, + h5 { + font-weight: 500; + } + + b, + strong { + font-weight: 700; + } + + em, + i { + font-style: italic; + } + + sub { + font-size: smaller; + vertical-align: sub; + } + + sup { + font-size: smaller; + vertical-align: super; + } + + ul, + ol { + margin-left: 2em; + + p { + margin: 0; + } + } + + ul { + list-style-type: disc; + } + + ol { + list-style-type: decimal; + } +} + +.reply-indicator__content { + blockquote { + border-left-color: $inverted-text-color; + color: $inverted-text-color; + } +} diff --git a/app/javascript/hooks/useHovering.ts b/app/javascript/hooks/useHovering.ts new file mode 100644 index 0000000000..2062e70d26 --- /dev/null +++ b/app/javascript/hooks/useHovering.ts @@ -0,0 +1,17 @@ +import { useCallback, useState } from 'react'; + +export const useHovering = (animate?: boolean) => { + const [hovering, setHovering] = useState(animate ?? false); + + const handleMouseEnter = useCallback(() => { + if (animate) return; + setHovering(true); + }, [animate]); + + const handleMouseLeave = useCallback(() => { + if (animate) return; + setHovering(false); + }, [animate]); + + return { hovering, handleMouseEnter, handleMouseLeave }; +}; diff --git a/app/javascript/mastodon/actions/compose.js b/app/javascript/mastodon/actions/compose.js index ef08edbf89..e1db44359c 100644 --- a/app/javascript/mastodon/actions/compose.js +++ b/app/javascript/mastodon/actions/compose.js @@ -4,7 +4,6 @@ import { defineMessages } from 'react-intl'; import api from 'mastodon/api'; import { search as emojiSearch } from 'mastodon/features/emoji/emoji_mart_search_light'; import { tagHistory } from 'mastodon/settings'; -import resizeImage from 'mastodon/utils/resize_image'; import { showAlert, showAlertForError } from './alerts'; import { useEmoji } from './emojis'; import { importFetchedAccounts, importFetchedStatus } from './importer'; @@ -276,46 +275,42 @@ export function uploadCompose(files) { dispatch(uploadComposeRequest()); - for (const [i, f] of Array.from(files).entries()) { + for (const [i, file] of Array.from(files).entries()) { if (media.size + i > 3) break; - resizeImage(f).then(file => { - const data = new FormData(); - data.append('file', file); - // Account for disparity in size of original image and resized data - total += file.size - f.size; + const data = new FormData(); + data.append('file', file); - return api(getState).post('/api/v2/media', data, { - onUploadProgress: function({ loaded }){ - progress[i] = loaded; - dispatch(uploadComposeProgress(progress.reduce((a, v) => a + v, 0), total)); - }, - }).then(({ status, data }) => { - // If server-side processing of the media attachment has not completed yet, - // poll the server until it is, before showing the media attachment as uploaded + api(getState).post('/api/v2/media', data, { + onUploadProgress: function({ loaded }){ + progress[i] = loaded; + dispatch(uploadComposeProgress(progress.reduce((a, v) => a + v, 0), total)); + }, + }).then(({ status, data }) => { + // If server-side processing of the media attachment has not completed yet, + // poll the server until it is, before showing the media attachment as uploaded - if (status === 200) { - dispatch(uploadComposeSuccess(data, f)); - } else if (status === 202) { - dispatch(uploadComposeProcessing()); + if (status === 200) { + dispatch(uploadComposeSuccess(data, file)); + } else if (status === 202) { + dispatch(uploadComposeProcessing()); - let tryCount = 1; + let tryCount = 1; - const poll = () => { - api(getState).get(`/api/v1/media/${data.id}`).then(response => { - if (response.status === 200) { - dispatch(uploadComposeSuccess(response.data, f)); - } else if (response.status === 206) { - const retryAfter = (Math.log2(tryCount) || 1) * 1000; - tryCount += 1; - setTimeout(() => poll(), retryAfter); - } - }).catch(error => dispatch(uploadComposeFail(error))); - }; + const poll = () => { + api(getState).get(`/api/v1/media/${data.id}`).then(response => { + if (response.status === 200) { + dispatch(uploadComposeSuccess(response.data, file)); + } else if (response.status === 206) { + const retryAfter = (Math.log2(tryCount) || 1) * 1000; + tryCount += 1; + setTimeout(() => poll(), retryAfter); + } + }).catch(error => dispatch(uploadComposeFail(error))); + }; - poll(); - } - }); + poll(); + } }).catch(error => dispatch(uploadComposeFail(error))); } }; diff --git a/app/javascript/mastodon/actions/markers.js b/app/javascript/mastodon/actions/markers.js index 16ec7fe774..ca246dce78 100644 --- a/app/javascript/mastodon/actions/markers.js +++ b/app/javascript/mastodon/actions/markers.js @@ -55,7 +55,7 @@ export const synchronouslySubmitMarkers = () => (dispatch, getState) => { client.open('POST', '/api/v1/markers', false); client.setRequestHeader('Content-Type', 'application/json'); client.setRequestHeader('Authorization', `Bearer ${accessToken}`); - client.SUBMIT(JSON.stringify(params)); + client.send(JSON.stringify(params)); } catch (e) { // Do not make the BeforeUnload handler error out } diff --git a/app/javascript/mastodon/actions/picture_in_picture.js b/app/javascript/mastodon/actions/picture_in_picture.js index 33d8d57d47..6b9ff7709e 100644 --- a/app/javascript/mastodon/actions/picture_in_picture.js +++ b/app/javascript/mastodon/actions/picture_in_picture.js @@ -23,6 +23,7 @@ export const PICTURE_IN_PICTURE_REMOVE = 'PICTURE_IN_PICTURE_REMOVE'; * @return {object} */ export const deployPictureInPicture = (statusId, accountId, playerType, props) => { + // @ts-expect-error return (dispatch, getState) => { // Do not open a player for a toot that does not exist if (getState().hasIn(['statuses', statusId])) { diff --git a/app/javascript/mastodon/actions/search.js b/app/javascript/mastodon/actions/search.js index 666c6c223b..56608f28ba 100644 --- a/app/javascript/mastodon/actions/search.js +++ b/app/javascript/mastodon/actions/search.js @@ -14,6 +14,9 @@ export const SEARCH_EXPAND_REQUEST = 'SEARCH_EXPAND_REQUEST'; export const SEARCH_EXPAND_SUCCESS = 'SEARCH_EXPAND_SUCCESS'; export const SEARCH_EXPAND_FAIL = 'SEARCH_EXPAND_FAIL'; +export const SEARCH_RESULT_CLICK = 'SEARCH_RESULT_CLICK'; +export const SEARCH_RESULT_FORGET = 'SEARCH_RESULT_FORGET'; + export function changeSearch(value) { return { type: SEARCH_CHANGE, @@ -27,7 +30,7 @@ export function clearSearch() { }; } -export function submitSearch() { +export function submitSearch(type) { return (dispatch, getState) => { const value = getState().getIn(['search', 'value']); const signedIn = !!getState().getIn(['meta', 'me']); @@ -44,6 +47,7 @@ export function submitSearch() { q: value, resolve: signedIn, limit: 5, + type, }, }).then(response => { if (response.data.accounts) { @@ -130,3 +134,42 @@ export const expandSearchFail = error => ({ export const showSearch = () => ({ type: SEARCH_SHOW, }); + +export const openURL = routerHistory => (dispatch, getState) => { + const value = getState().getIn(['search', 'value']); + const signedIn = !!getState().getIn(['meta', 'me']); + + if (!signedIn) { + return; + } + + dispatch(fetchSearchRequest()); + + api(getState).get('/api/v2/search', { params: { q: value, resolve: true } }).then(response => { + if (response.data.accounts?.length > 0) { + dispatch(importFetchedAccounts(response.data.accounts)); + routerHistory.push(`/@${response.data.accounts[0].acct}`); + } else if (response.data.statuses?.length > 0) { + dispatch(importFetchedStatuses(response.data.statuses)); + routerHistory.push(`/@${response.data.statuses[0].account.acct}/${response.data.statuses[0].id}`); + } + + dispatch(fetchSearchSuccess(response.data, value)); + }).catch(err => { + dispatch(fetchSearchFail(err)); + }); +}; + +export const clickSearchResult = (q, type) => ({ + type: SEARCH_RESULT_CLICK, + + result: { + type, + q, + }, +}); + +export const forgetSearchResult = q => ({ + type: SEARCH_RESULT_FORGET, + q, +}); diff --git a/app/javascript/mastodon/actions/server.js b/app/javascript/mastodon/actions/server.js index 31d4aea100..091af0f0fe 100644 --- a/app/javascript/mastodon/actions/server.js +++ b/app/javascript/mastodon/actions/server.js @@ -5,6 +5,10 @@ export const SERVER_FETCH_REQUEST = 'Server_FETCH_REQUEST'; export const SERVER_FETCH_SUCCESS = 'Server_FETCH_SUCCESS'; export const SERVER_FETCH_FAIL = 'Server_FETCH_FAIL'; +export const SERVER_TRANSLATION_LANGUAGES_FETCH_REQUEST = 'SERVER_TRANSLATION_LANGUAGES_FETCH_REQUEST'; +export const SERVER_TRANSLATION_LANGUAGES_FETCH_SUCCESS = 'SERVER_TRANSLATION_LANGUAGES_FETCH_SUCCESS'; +export const SERVER_TRANSLATION_LANGUAGES_FETCH_FAIL = 'SERVER_TRANSLATION_LANGUAGES_FETCH_FAIL'; + export const EXTENDED_DESCRIPTION_REQUEST = 'EXTENDED_DESCRIPTION_REQUEST'; export const EXTENDED_DESCRIPTION_SUCCESS = 'EXTENDED_DESCRIPTION_SUCCESS'; export const EXTENDED_DESCRIPTION_FAIL = 'EXTENDED_DESCRIPTION_FAIL'; @@ -37,6 +41,29 @@ const fetchServerFail = error => ({ error, }); +export const fetchServerTranslationLanguages = () => (dispatch, getState) => { + dispatch(fetchServerTranslationLanguagesRequest()); + + api(getState) + .get('/api/v1/instance/translation_languages').then(({ data }) => { + dispatch(fetchServerTranslationLanguagesSuccess(data)); + }).catch(err => dispatch(fetchServerTranslationLanguagesFail(err))); +}; + +const fetchServerTranslationLanguagesRequest = () => ({ + type: SERVER_TRANSLATION_LANGUAGES_FETCH_REQUEST, +}); + +const fetchServerTranslationLanguagesSuccess = translationLanguages => ({ + type: SERVER_TRANSLATION_LANGUAGES_FETCH_SUCCESS, + translationLanguages, +}); + +const fetchServerTranslationLanguagesFail = error => ({ + type: SERVER_TRANSLATION_LANGUAGES_FETCH_FAIL, + error, +}); + export const fetchExtendedDescription = () => (dispatch, getState) => { dispatch(fetchExtendedDescriptionRequest()); diff --git a/app/javascript/mastodon/actions/streaming.js b/app/javascript/mastodon/actions/streaming.js index 84709083fa..4d4ea83e45 100644 --- a/app/javascript/mastodon/actions/streaming.js +++ b/app/javascript/mastodon/actions/streaming.js @@ -46,6 +46,7 @@ export const connectTimelineStream = (timelineId, channelName, params = {}, opti connectStream(channelName, params, (dispatch, getState) => { const locale = getState().getIn(['meta', 'locale']); + // @ts-expect-error let pollingId; /** @@ -61,9 +62,10 @@ export const connectTimelineStream = (timelineId, channelName, params = {}, opti onConnect() { dispatch(connectTimeline(timelineId)); + // @ts-expect-error if (pollingId) { - clearTimeout(pollingId); - pollingId = null; + // @ts-ignore + clearTimeout(pollingId); pollingId = null; } if (options.fillGaps) { @@ -75,31 +77,38 @@ export const connectTimelineStream = (timelineId, channelName, params = {}, opti dispatch(disconnectTimeline(timelineId)); if (options.fallback) { + // @ts-expect-error pollingId = setTimeout(() => useFallback(options.fallback), randomUpTo(40000)); } }, - onReceive (data) { - switch(data.event) { + onReceive(data) { + switch (data.event) { case 'update': + // @ts-expect-error dispatch(updateTimeline(timelineId, JSON.parse(data.payload), options.accept)); break; case 'status.update': + // @ts-expect-error dispatch(updateStatus(JSON.parse(data.payload))); break; case 'delete': dispatch(deleteFromTimelines(data.payload)); break; case 'notification': + // @ts-expect-error dispatch(updateNotifications(JSON.parse(data.payload), messages, locale)); break; case 'conversation': + // @ts-expect-error dispatch(updateConversations(JSON.parse(data.payload))); break; case 'announcement': + // @ts-expect-error dispatch(updateAnnouncements(JSON.parse(data.payload))); break; case 'announcement.reaction': + // @ts-expect-error dispatch(updateAnnouncementsReaction(JSON.parse(data.payload))); break; case 'announcement.delete': @@ -115,7 +124,9 @@ export const connectTimelineStream = (timelineId, channelName, params = {}, opti * @param {function(): void} done */ const refreshHomeTimelineAndNotification = (dispatch, done) => { + // @ts-expect-error dispatch(expandHomeTimeline({}, () => + // @ts-expect-error dispatch(expandNotifications({}, () => dispatch(fetchAnnouncements(done)))))); }; @@ -124,6 +135,7 @@ const refreshHomeTimelineAndNotification = (dispatch, done) => { * @return {function(): void} */ export const connectUserStream = () => + // @ts-expect-error connectTimelineStream('home', 'user', {}, { fallback: refreshHomeTimelineAndNotification, fillGaps: fillHomeTimelineGaps }); /** diff --git a/app/javascript/mastodon/api.js b/app/javascript/mastodon/api.js index 6bbddbef66..42b64d6cc5 100644 --- a/app/javascript/mastodon/api.js +++ b/app/javascript/mastodon/api.js @@ -36,7 +36,7 @@ const setCSRFHeader = () => { ready(setCSRFHeader); /** - * @param {() => import('immutable').Map} getState + * @param {() => import('immutable').Map} getState * @returns {import('axios').RawAxiosRequestHeaders} */ const authorizationHeaderFromState = getState => { @@ -52,7 +52,7 @@ const authorizationHeaderFromState = getState => { }; /** - * @param {() => import('immutable').Map} getState + * @param {() => import('immutable').Map} getState * @returns {import('axios').AxiosInstance} */ export default function api(getState) { diff --git a/app/javascript/mastodon/base_polyfills.js b/app/javascript/mastodon/base_polyfills.js index 12096d9021..91bc5d6dc8 100644 --- a/app/javascript/mastodon/base_polyfills.js +++ b/app/javascript/mastodon/base_polyfills.js @@ -1,17 +1,11 @@ import 'intl'; import 'intl/locale-data/jsonp/en'; import 'es6-symbol/implement'; -import includes from 'array-includes'; import assign from 'object-assign'; import values from 'object.values'; -import isNaN from 'is-nan'; import { decode as decodeBase64 } from './utils/base64'; import promiseFinally from 'promise.prototype.finally'; -if (!Array.prototype.includes) { - includes.shim(); -} - if (!Object.assign) { Object.assign = assign; } @@ -20,10 +14,6 @@ if (!Object.values) { values.shim(); } -if (!Number.isNaN) { - Number.isNaN = isNaN; -} - promiseFinally.shim(); if (!HTMLCanvasElement.prototype.toBlob) { diff --git a/app/javascript/mastodon/components/account.jsx b/app/javascript/mastodon/components/account.jsx index 7706c3f88a..a8a47ecacb 100644 --- a/app/javascript/mastodon/components/account.jsx +++ b/app/javascript/mastodon/components/account.jsx @@ -1,4 +1,4 @@ -import React, { Fragment } from 'react'; +import React from 'react'; import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; import Avatar from './avatar'; @@ -10,6 +10,10 @@ import { me } from '../initial_state'; import RelativeTimestamp from './relative_timestamp'; import Skeleton from 'mastodon/components/skeleton'; import { Link } from 'react-router-dom'; +import { counterRenderer } from 'mastodon/components/common_counter'; +import ShortNumber from 'mastodon/components/short_number'; +import Icon from 'mastodon/components/icon'; +import classNames from 'classnames'; const messages = defineMessages({ follow: { id: 'account.follow', defaultMessage: 'Follow' }, @@ -23,7 +27,26 @@ const messages = defineMessages({ block: { id: 'account.block', defaultMessage: 'Block @{name}' }, }); -export default @injectIntl +class VerifiedBadge extends React.PureComponent { + + static propTypes = { + link: PropTypes.string.isRequired, + verifiedAt: PropTypes.string.isRequired, + }; + + render () { + const { link } = this.props; + + return ( + + + + + ); + } + +} + class Account extends ImmutablePureComponent { static propTypes = { @@ -35,6 +58,7 @@ class Account extends ImmutablePureComponent { onMuteNotifications: PropTypes.func.isRequired, intl: PropTypes.object.isRequired, hidden: PropTypes.bool, + minimal: PropTypes.bool, actionIcon: PropTypes.string, actionTitle: PropTypes.string, defaultAction: PropTypes.string, @@ -70,15 +94,19 @@ class Account extends ImmutablePureComponent { }; render () { - const { account, intl, hidden, onActionClick, actionIcon, actionTitle, defaultAction, size } = this.props; + const { account, intl, hidden, onActionClick, actionIcon, actionTitle, defaultAction, size, minimal } = this.props; if (!account) { return ( -
    +
    -
    - +
    + +
    + + +
    @@ -87,10 +115,10 @@ class Account extends ImmutablePureComponent { if (hidden) { return ( - + <> {account.get('display_name')} {account.get('username')} - + ); } @@ -118,10 +146,10 @@ class Account extends ImmutablePureComponent { hidingNotificationsButton = ; } buttons = ( - + <> {hidingNotificationsButton} - + ); } else if (defaultAction === 'mute') { buttons = ; @@ -132,26 +160,44 @@ class Account extends ImmutablePureComponent { } } - let mute_expires_at; + let muteTimeRemaining; + if (account.get('mute_expires_at')) { - mute_expires_at =
    ; + muteTimeRemaining = <>· ; + } + + let verification; + + const firstVerifiedField = account.get('fields').find(item => !!item.get('verified_at')); + + if (firstVerifiedField) { + verification = <>· ; } return ( -
    +
    -
    - {mute_expires_at} - +
    + +
    + +
    + + {!minimal && <> {verification} {muteTimeRemaining}} +
    -
    - {buttons} -
    + {!minimal && ( +
    + {buttons} +
    + )}
    ); } } + +export default injectIntl(Account); diff --git a/app/javascript/mastodon/components/admin/ReportReasonSelector.jsx b/app/javascript/mastodon/components/admin/ReportReasonSelector.jsx index 1f91d25175..cd14dac4e3 100644 --- a/app/javascript/mastodon/components/admin/ReportReasonSelector.jsx +++ b/app/javascript/mastodon/components/admin/ReportReasonSelector.jsx @@ -33,7 +33,7 @@ class Category extends React.PureComponent { const { id, text, disabled, selected, children } = this.props; return ( -
    +
    {selected && }
    @@ -74,7 +74,7 @@ class Rule extends React.PureComponent { const { id, text, disabled, selected } = this.props; return ( -
    +
    {selected && } {text} @@ -84,7 +84,6 @@ class Rule extends React.PureComponent { } -export default @injectIntl class ReportReasonSelector extends React.PureComponent { static propTypes = { @@ -157,3 +156,5 @@ class ReportReasonSelector extends React.PureComponent { } } + +export default injectIntl(ReportReasonSelector); diff --git a/app/javascript/mastodon/components/autosuggest_input.jsx b/app/javascript/mastodon/components/autosuggest_input.jsx index f9616c5817..a68e2a01b4 100644 --- a/app/javascript/mastodon/components/autosuggest_input.jsx +++ b/app/javascript/mastodon/components/autosuggest_input.jsx @@ -180,7 +180,7 @@ export default class AutosuggestInput extends ImmutablePureComponent { } return ( -
    +
    {inner}
    ); diff --git a/app/javascript/mastodon/components/autosuggest_textarea.jsx b/app/javascript/mastodon/components/autosuggest_textarea.jsx index c044912983..a627bc1ec2 100644 --- a/app/javascript/mastodon/components/autosuggest_textarea.jsx +++ b/app/javascript/mastodon/components/autosuggest_textarea.jsx @@ -186,7 +186,7 @@ export default class AutosuggestTextarea extends ImmutablePureComponent { } return ( -
    +
    {inner}
    ); diff --git a/app/javascript/mastodon/components/avatar.jsx b/app/javascript/mastodon/components/avatar.jsx deleted file mode 100644 index 013454ccf4..0000000000 --- a/app/javascript/mastodon/components/avatar.jsx +++ /dev/null @@ -1,62 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import { autoPlayGif } from '../initial_state'; -import classNames from 'classnames'; - -export default class Avatar extends React.PureComponent { - - static propTypes = { - account: ImmutablePropTypes.map, - size: PropTypes.number.isRequired, - style: PropTypes.object, - inline: PropTypes.bool, - animate: PropTypes.bool, - }; - - static defaultProps = { - animate: autoPlayGif, - size: 20, - inline: false, - }; - - state = { - hovering: false, - }; - - handleMouseEnter = () => { - if (this.props.animate) return; - this.setState({ hovering: true }); - }; - - handleMouseLeave = () => { - if (this.props.animate) return; - this.setState({ hovering: false }); - }; - - render () { - const { account, size, animate, inline } = this.props; - const { hovering } = this.state; - - const style = { - ...this.props.style, - width: `${size}px`, - height: `${size}px`, - }; - - let src; - - if (hovering || animate) { - src = account?.get('avatar'); - } else { - src = account?.get('avatar_static'); - } - - return ( -
    - {src && {account?.get('acct')}} -
    - ); - } - -} diff --git a/app/javascript/mastodon/components/avatar.tsx b/app/javascript/mastodon/components/avatar.tsx new file mode 100644 index 0000000000..e64a8af742 --- /dev/null +++ b/app/javascript/mastodon/components/avatar.tsx @@ -0,0 +1,49 @@ +import * as React from 'react'; +import classNames from 'classnames'; +import { autoPlayGif } from '../initial_state'; +import { useHovering } from '../../hooks/useHovering'; +import type { Account } from '../../types/resources'; + +type Props = { + account: Account; + size: number; + style?: React.CSSProperties; + inline?: boolean; + animate?: boolean; +}; + +export const Avatar: React.FC = ({ + account, + animate = autoPlayGif, + size = 20, + inline = false, + style: styleFromParent, +}) => { + const { hovering, handleMouseEnter, handleMouseLeave } = useHovering(animate); + + const style = { + ...styleFromParent, + width: `${size}px`, + height: `${size}px`, + }; + + const src = + hovering || animate + ? account?.get('avatar') + : account?.get('avatar_static'); + + return ( +
    + {src && {account?.get('acct')}} +
    + ); +}; + +export default Avatar; diff --git a/app/javascript/mastodon/components/blurhash.jsx b/app/javascript/mastodon/components/blurhash.jsx index 2af5cfc568..07cd31b6ca 100644 --- a/app/javascript/mastodon/components/blurhash.jsx +++ b/app/javascript/mastodon/components/blurhash.jsx @@ -44,6 +44,7 @@ function Blurhash({ const ctx = canvas.getContext('2d'); const imageData = new ImageData(pixels, width, height); + // @ts-expect-error ctx.putImageData(imageData, 0, 0); } catch (err) { console.error('Blurhash decoding failure', { err, hash }); diff --git a/app/javascript/mastodon/components/column_back_button.jsx b/app/javascript/mastodon/components/column_back_button.jsx index 5bbf11652b..5c5226b7ea 100644 --- a/app/javascript/mastodon/components/column_back_button.jsx +++ b/app/javascript/mastodon/components/column_back_button.jsx @@ -15,10 +15,10 @@ export default class ColumnBackButton extends React.PureComponent { }; handleClick = () => { - if (window.history && window.history.length === 1) { - this.context.router.history.push('/'); - } else { + if (window.history && window.history.state) { this.context.router.history.goBack(); + } else { + this.context.router.history.push('/'); } }; diff --git a/app/javascript/mastodon/components/column_back_button_slim.jsx b/app/javascript/mastodon/components/column_back_button_slim.jsx index cc8bfb1515..46ac23736b 100644 --- a/app/javascript/mastodon/components/column_back_button_slim.jsx +++ b/app/javascript/mastodon/components/column_back_button_slim.jsx @@ -8,7 +8,7 @@ export default class ColumnBackButtonSlim extends ColumnBackButton { render () { return (
    -
    +
    diff --git a/app/javascript/mastodon/components/column_header.jsx b/app/javascript/mastodon/components/column_header.jsx index 38f6ad60ff..afc526f27f 100644 --- a/app/javascript/mastodon/components/column_header.jsx +++ b/app/javascript/mastodon/components/column_header.jsx @@ -12,7 +12,6 @@ const messages = defineMessages({ moveRight: { id: 'column_header.moveRight_settings', defaultMessage: 'Move column to the right' }, }); -export default @injectIntl class ColumnHeader extends React.PureComponent { static contextTypes = { @@ -43,14 +42,6 @@ class ColumnHeader extends React.PureComponent { animating: false, }; - historyBack = () => { - if (window.history && window.history.length === 1) { - this.context.router.history.push('/'); - } else { - this.context.router.history.goBack(); - } - }; - handleToggleClick = (e) => { e.stopPropagation(); this.setState({ collapsed: !this.state.collapsed, animating: true }); @@ -69,7 +60,11 @@ class ColumnHeader extends React.PureComponent { }; handleBackClick = () => { - this.historyBack(); + if (window.history && window.history.state) { + this.context.router.history.goBack(); + } else { + this.context.router.history.push('/'); + } }; handleTransitionEnd = () => { @@ -213,3 +208,5 @@ class ColumnHeader extends React.PureComponent { } } + +export default injectIntl(ColumnHeader); diff --git a/app/javascript/mastodon/components/dismissable_banner.jsx b/app/javascript/mastodon/components/dismissable_banner.jsx index 47ca7e4bc7..242021e764 100644 --- a/app/javascript/mastodon/components/dismissable_banner.jsx +++ b/app/javascript/mastodon/components/dismissable_banner.jsx @@ -8,7 +8,6 @@ const messages = defineMessages({ dismiss: { id: 'dismissable_banner.dismiss', defaultMessage: 'Dismiss' }, }); -export default @injectIntl class DismissableBanner extends React.PureComponent { static propTypes = { @@ -49,3 +48,5 @@ class DismissableBanner extends React.PureComponent { } } + +export default injectIntl(DismissableBanner); diff --git a/app/javascript/mastodon/components/domain.jsx b/app/javascript/mastodon/components/domain.jsx index e09fa45910..85ebdbde93 100644 --- a/app/javascript/mastodon/components/domain.jsx +++ b/app/javascript/mastodon/components/domain.jsx @@ -8,7 +8,6 @@ const messages = defineMessages({ unblockDomain: { id: 'account.unblock_domain', defaultMessage: 'Unblock domain {domain}' }, }); -export default @injectIntl class Account extends ImmutablePureComponent { static propTypes = { @@ -40,3 +39,5 @@ class Account extends ImmutablePureComponent { } } + +export default injectIntl(Account); diff --git a/app/javascript/mastodon/components/dropdown_menu.jsx b/app/javascript/mastodon/components/dropdown_menu.jsx index c04c513fbe..eaaa72fd83 100644 --- a/app/javascript/mastodon/components/dropdown_menu.jsx +++ b/app/javascript/mastodon/components/dropdown_menu.jsx @@ -119,7 +119,7 @@ class DropdownMenu extends React.PureComponent { return (
  • - + {text}
  • diff --git a/app/javascript/mastodon/components/edited_timestamp/index.jsx b/app/javascript/mastodon/components/edited_timestamp/index.jsx index b30d885723..1513f93619 100644 --- a/app/javascript/mastodon/components/edited_timestamp/index.jsx +++ b/app/javascript/mastodon/components/edited_timestamp/index.jsx @@ -16,8 +16,6 @@ const mapDispatchToProps = (dispatch, { statusId }) => ({ }); -export default @connect(null, mapDispatchToProps) -@injectIntl class EditedTimestamp extends React.PureComponent { static propTypes = { @@ -68,3 +66,5 @@ class EditedTimestamp extends React.PureComponent { } } + +export default connect(null, mapDispatchToProps)(injectIntl(EditedTimestamp)); diff --git a/app/javascript/mastodon/components/gifv.jsx b/app/javascript/mastodon/components/gifv.jsx index 9ec201c6cc..1ce7e7c29b 100644 --- a/app/javascript/mastodon/components/gifv.jsx +++ b/app/javascript/mastodon/components/gifv.jsx @@ -46,7 +46,7 @@ export default class GIFV extends React.PureComponent { width={width} height={height} role='button' - tabIndex='0' + tabIndex={0} aria-label={alt} title={alt} lang={lang} @@ -57,7 +57,7 @@ export default class GIFV extends React.PureComponent {
    diff --git a/app/javascript/mastodon/components/icon_button.jsx b/app/javascript/mastodon/components/icon_button.jsx index 0036923730..989cae4401 100644 --- a/app/javascript/mastodon/components/icon_button.jsx +++ b/app/javascript/mastodon/components/icon_button.jsx @@ -23,7 +23,7 @@ export default class IconButton extends React.PureComponent { inverted: PropTypes.bool, animate: PropTypes.bool, overlay: PropTypes.bool, - tabIndex: PropTypes.string, + tabIndex: PropTypes.number, counter: PropTypes.number, obfuscateCount: PropTypes.bool, href: PropTypes.string, @@ -36,7 +36,7 @@ export default class IconButton extends React.PureComponent { disabled: false, animate: false, overlay: false, - tabIndex: '0', + tabIndex: 0, ariaHidden: false, }; diff --git a/app/javascript/mastodon/components/inline_account.jsx b/app/javascript/mastodon/components/inline_account.jsx index a1b4955904..31dc63f93f 100644 --- a/app/javascript/mastodon/components/inline_account.jsx +++ b/app/javascript/mastodon/components/inline_account.jsx @@ -14,7 +14,6 @@ const makeMapStateToProps = () => { return mapStateToProps; }; -export default @connect(makeMapStateToProps) class InlineAccount extends React.PureComponent { static propTypes = { @@ -32,3 +31,5 @@ class InlineAccount extends React.PureComponent { } } + +export default connect(makeMapStateToProps)(InlineAccount); diff --git a/app/javascript/mastodon/components/intersection_observer_article.jsx b/app/javascript/mastodon/components/intersection_observer_article.jsx index c2feb003a8..77957a21da 100644 --- a/app/javascript/mastodon/components/intersection_observer_article.jsx +++ b/app/javascript/mastodon/components/intersection_observer_article.jsx @@ -113,7 +113,7 @@ export default class IntersectionObserverArticle extends React.Component { aria-setsize={listLength} style={{ height: `${this.height || cachedHeight}px`, opacity: 0, overflow: 'hidden' }} data-id={id} - tabIndex='0' + tabIndex={0} > {children && React.cloneElement(children, { hidden: true })} @@ -121,7 +121,7 @@ export default class IntersectionObserverArticle extends React.Component { } return ( -
    +
    {children && React.cloneElement(children, { hidden: false })}
    ); diff --git a/app/javascript/mastodon/components/load_gap.jsx b/app/javascript/mastodon/components/load_gap.jsx index c50b245fcd..2c91d37be7 100644 --- a/app/javascript/mastodon/components/load_gap.jsx +++ b/app/javascript/mastodon/components/load_gap.jsx @@ -7,7 +7,6 @@ const messages = defineMessages({ load_more: { id: 'status.load_more', defaultMessage: 'Load more' }, }); -export default @injectIntl class LoadGap extends React.PureComponent { static propTypes = { @@ -32,3 +31,5 @@ class LoadGap extends React.PureComponent { } } + +export default injectIntl(LoadGap); diff --git a/app/javascript/mastodon/components/media_gallery.jsx b/app/javascript/mastodon/components/media_gallery.jsx index f869bd62d1..5be0070a33 100644 --- a/app/javascript/mastodon/components/media_gallery.jsx +++ b/app/javascript/mastodon/components/media_gallery.jsx @@ -223,7 +223,6 @@ class Item extends React.PureComponent { } -export default @injectIntl class MediaGallery extends React.PureComponent { static propTypes = { @@ -369,3 +368,5 @@ class MediaGallery extends React.PureComponent { } } + +export default injectIntl(MediaGallery); diff --git a/app/javascript/mastodon/components/navigation_portal.jsx b/app/javascript/mastodon/components/navigation_portal.jsx index 45407be43e..a100dc04a6 100644 --- a/app/javascript/mastodon/components/navigation_portal.jsx +++ b/app/javascript/mastodon/components/navigation_portal.jsx @@ -15,7 +15,6 @@ const DefaultNavigation = () => ( ); -export default @withRouter class NavigationPortal extends React.PureComponent { render () { @@ -33,3 +32,4 @@ class NavigationPortal extends React.PureComponent { } } +export default withRouter(NavigationPortal); diff --git a/app/javascript/mastodon/components/picture_in_picture_placeholder.jsx b/app/javascript/mastodon/components/picture_in_picture_placeholder.jsx index 0effddef98..6322b1c668 100644 --- a/app/javascript/mastodon/components/picture_in_picture_placeholder.jsx +++ b/app/javascript/mastodon/components/picture_in_picture_placeholder.jsx @@ -6,7 +6,6 @@ import { connect } from 'react-redux'; import { debounce } from 'lodash'; import { FormattedMessage } from 'react-intl'; -export default @connect() class PictureInPicturePlaceholder extends React.PureComponent { static propTypes = { @@ -59,7 +58,7 @@ class PictureInPicturePlaceholder extends React.PureComponent { const { height } = this.state; return ( -
    +
    @@ -67,3 +66,5 @@ class PictureInPicturePlaceholder extends React.PureComponent { } } + +export default connect()(PictureInPicturePlaceholder); diff --git a/app/javascript/mastodon/components/poll.jsx b/app/javascript/mastodon/components/poll.jsx index 7efedfe345..b9b96a7005 100644 --- a/app/javascript/mastodon/components/poll.jsx +++ b/app/javascript/mastodon/components/poll.jsx @@ -31,7 +31,6 @@ const makeEmojiMap = record => record.get('emojis').reduce((obj, emoji) => { return obj; }, {}); -export default @injectIntl class Poll extends ImmutablePureComponent { static contextTypes = { @@ -155,7 +154,7 @@ class Poll extends ImmutablePureComponent { {!showResults && ( { return relativeTime; }; -export default @injectIntl class RelativeTimestamp extends React.Component { static propTypes = { @@ -197,3 +196,5 @@ class RelativeTimestamp extends React.Component { } } + +export default injectIntl(RelativeTimestamp); diff --git a/app/javascript/mastodon/components/scrollable_list.jsx b/app/javascript/mastodon/components/scrollable_list.jsx index 4a6ffb149c..57bc881218 100644 --- a/app/javascript/mastodon/components/scrollable_list.jsx +++ b/app/javascript/mastodon/components/scrollable_list.jsx @@ -20,7 +20,6 @@ const mapStateToProps = (state, { scrollKey }) => { }; }; -export default @connect(mapStateToProps, null, null, { forwardRef: true }) class ScrollableList extends PureComponent { static contextTypes = { @@ -365,3 +364,5 @@ class ScrollableList extends PureComponent { } } + +export default connect(mapStateToProps, null, null, { forwardRef: true })(ScrollableList); diff --git a/app/javascript/mastodon/components/server_banner.jsx b/app/javascript/mastodon/components/server_banner.jsx index 617fdecdfe..e5f5aa8ee2 100644 --- a/app/javascript/mastodon/components/server_banner.jsx +++ b/app/javascript/mastodon/components/server_banner.jsx @@ -18,8 +18,6 @@ const mapStateToProps = state => ({ server: state.getIn(['server', 'server']), }); -export default @connect(mapStateToProps) -@injectIntl class ServerBanner extends React.PureComponent { static propTypes = { @@ -61,7 +59,7 @@ class ServerBanner extends React.PureComponent {

    - +
    @@ -91,3 +89,5 @@ class ServerBanner extends React.PureComponent { } } + +export default connect(mapStateToProps)(injectIntl(ServerBanner)); diff --git a/app/javascript/mastodon/components/status.jsx b/app/javascript/mastodon/components/status.jsx index a48230bafa..923dc892df 100644 --- a/app/javascript/mastodon/components/status.jsx +++ b/app/javascript/mastodon/components/status.jsx @@ -59,7 +59,6 @@ const messages = defineMessages({ edited: { id: 'status.edited', defaultMessage: 'Edited {date}' }, }); -export default @injectIntl class Status extends ImmutablePureComponent { static contextTypes = { @@ -338,7 +337,7 @@ class Status extends ImmutablePureComponent { if (hidden) { return ( -
    +
    {status.getIn(['account', 'display_name']) || status.getIn(['account', 'username'])} {status.get('content')}
    @@ -355,7 +354,7 @@ class Status extends ImmutablePureComponent { return ( -
    +
    : {matchedFilters.join(', ')}. {' '} + + )) : ( +
    + +
    + )}
    -
    + )} - + + {options.length > 0 && ( + <> +

    + +
    + {options.map(({ key, label, action }, i) => ( + + ))} +
    + + )} +
    ); } } + +export default injectIntl(Search); diff --git a/app/javascript/mastodon/features/compose/components/search_results.jsx b/app/javascript/mastodon/features/compose/components/search_results.jsx index 44ab43638b..1dccd950cb 100644 --- a/app/javascript/mastodon/features/compose/components/search_results.jsx +++ b/app/javascript/mastodon/features/compose/components/search_results.jsx @@ -14,7 +14,6 @@ const messages = defineMessages({ dismissSuggestion: { id: 'suggestions.dismiss', defaultMessage: 'Dismiss suggestion' }, }); -export default @injectIntl class SearchResults extends ImmutablePureComponent { static propTypes = { @@ -78,7 +77,7 @@ class SearchResults extends ImmutablePureComponent { count += results.get('accounts').size; accounts = (
    -
    +
    {results.get('accounts').map(accountId => )} @@ -138,3 +137,5 @@ class SearchResults extends ImmutablePureComponent { } } + +export default injectIntl(SearchResults); diff --git a/app/javascript/mastodon/features/compose/components/upload.jsx b/app/javascript/mastodon/features/compose/components/upload.jsx index f114680b93..e3651c2290 100644 --- a/app/javascript/mastodon/features/compose/components/upload.jsx +++ b/app/javascript/mastodon/features/compose/components/upload.jsx @@ -42,7 +42,7 @@ export default class Upload extends ImmutablePureComponent { const y = ((focusY / -2) + .5) * 100; return ( -
    +
    {({ scale }) => (
    diff --git a/app/javascript/mastodon/features/compose/components/upload_button.jsx b/app/javascript/mastodon/features/compose/components/upload_button.jsx index 964340d827..f2e6ff85c3 100644 --- a/app/javascript/mastodon/features/compose/components/upload_button.jsx +++ b/app/javascript/mastodon/features/compose/components/upload_button.jsx @@ -23,8 +23,6 @@ const iconStyle = { lineHeight: '27px', }; -export default @connect(makeMapStateToProps) -@injectIntl class UploadButton extends ImmutablePureComponent { static propTypes = { @@ -81,3 +79,5 @@ class UploadButton extends ImmutablePureComponent { } } + +export default connect(makeMapStateToProps)(injectIntl(UploadButton)); diff --git a/app/javascript/mastodon/features/compose/containers/search_container.js b/app/javascript/mastodon/features/compose/containers/search_container.js index 392bd0f566..3ee55fae59 100644 --- a/app/javascript/mastodon/features/compose/containers/search_container.js +++ b/app/javascript/mastodon/features/compose/containers/search_container.js @@ -4,12 +4,16 @@ import { clearSearch, submitSearch, showSearch, -} from '../../../actions/search'; + openURL, + clickSearchResult, + forgetSearchResult, +} from 'mastodon/actions/search'; import Search from '../components/search'; const mapStateToProps = state => ({ value: state.getIn(['search', 'value']), submitted: state.getIn(['search', 'submitted']), + recent: state.getIn(['search', 'recent']), }); const mapDispatchToProps = dispatch => ({ @@ -22,14 +26,26 @@ const mapDispatchToProps = dispatch => ({ dispatch(clearSearch()); }, - onSubmit () { - dispatch(submitSearch()); + onSubmit (type) { + dispatch(submitSearch(type)); }, onShow () { dispatch(showSearch()); }, + onOpenURL (routerHistory) { + dispatch(openURL(routerHistory)); + }, + + onClickSearchResult (q, type) { + dispatch(clickSearchResult(q, type)); + }, + + onForgetSearchResult (q) { + dispatch(forgetSearchResult(q)); + }, + }); export default connect(mapStateToProps, mapDispatchToProps)(Search); diff --git a/app/javascript/mastodon/features/compose/containers/warning_container.jsx b/app/javascript/mastodon/features/compose/containers/warning_container.jsx index 3c6ed483d0..e99f5dacd9 100644 --- a/app/javascript/mastodon/features/compose/containers/warning_container.jsx +++ b/app/javascript/mastodon/features/compose/containers/warning_container.jsx @@ -3,36 +3,12 @@ import { connect } from 'react-redux'; import Warning from '../components/warning'; import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; -import { me } from '../../../initial_state'; - -const buildHashtagRE = () => { - try { - const HASHTAG_SEPARATORS = '_\\u00b7\\u200c'; - const ALPHA = '\\p{L}\\p{M}'; - const WORD = '\\p{L}\\p{M}\\p{N}\\p{Pc}'; - return new RegExp( - '(?:^|[^\\/\\)\\w])#((' + - '[' + WORD + '_]' + - '[' + WORD + HASHTAG_SEPARATORS + ']*' + - '[' + ALPHA + HASHTAG_SEPARATORS + ']' + - '[' + WORD + HASHTAG_SEPARATORS +']*' + - '[' + WORD + '_]' + - ')|(' + - '[' + WORD + '_]*' + - '[' + ALPHA + ']' + - '[' + WORD + '_]*' + - '))', 'iu', - ); - } catch { - return /(?:^|[^/)\w])#(\w*[a-zA-Z·]\w*)/i; - } -}; - -const APPROX_HASHTAG_RE = buildHashtagRE(); +import { me } from 'mastodon/initial_state'; +import { HASHTAG_PATTERN_REGEX } from 'mastodon/utils/hashtags'; const mapStateToProps = state => ({ needsLockWarning: state.getIn(['compose', 'privacy']) === 'private' && !state.getIn(['accounts', me, 'locked']), - hashtagWarning: state.getIn(['compose', 'privacy']) !== 'public' && APPROX_HASHTAG_RE.test(state.getIn(['compose', 'text'])), + hashtagWarning: state.getIn(['compose', 'privacy']) !== 'public' && HASHTAG_PATTERN_REGEX.test(state.getIn(['compose', 'text'])), directMessageWarning: state.getIn(['compose', 'privacy']) === 'direct', }); diff --git a/app/javascript/mastodon/features/compose/index.jsx b/app/javascript/mastodon/features/compose/index.jsx index 4b30d09aea..6cba1e9ad8 100644 --- a/app/javascript/mastodon/features/compose/index.jsx +++ b/app/javascript/mastodon/features/compose/index.jsx @@ -38,8 +38,6 @@ const mapStateToProps = (state, ownProps) => ({ showSearch: ownProps.multiColumn ? state.getIn(['search', 'submitted']) && !state.getIn(['search', 'hidden']) : false, }); -export default @connect(mapStateToProps) -@injectIntl class Compose extends React.PureComponent { static propTypes = { @@ -148,3 +146,5 @@ class Compose extends React.PureComponent { } } + +export default connect(mapStateToProps)(injectIntl(Compose)); diff --git a/app/javascript/mastodon/features/direct_timeline/components/conversation.jsx b/app/javascript/mastodon/features/direct_timeline/components/conversation.jsx index fbdff1bdd0..d0dbffe659 100644 --- a/app/javascript/mastodon/features/direct_timeline/components/conversation.jsx +++ b/app/javascript/mastodon/features/direct_timeline/components/conversation.jsx @@ -24,7 +24,6 @@ const messages = defineMessages({ unmuteConversation: { id: 'status.unmute_conversation', defaultMessage: 'Unmute conversation' }, }); -export default @injectIntl class Conversation extends ImmutablePureComponent { static contextTypes = { @@ -145,7 +144,7 @@ class Conversation extends ImmutablePureComponent { return ( -
    +
    @@ -198,3 +197,5 @@ class Conversation extends ImmutablePureComponent { } } + +export default injectIntl(Conversation); diff --git a/app/javascript/mastodon/features/direct_timeline/components/conversations_list.jsx b/app/javascript/mastodon/features/direct_timeline/components/conversations_list.jsx index 27e9a593f0..04c404e1d8 100644 --- a/app/javascript/mastodon/features/direct_timeline/components/conversations_list.jsx +++ b/app/javascript/mastodon/features/direct_timeline/components/conversations_list.jsx @@ -55,10 +55,10 @@ export default class ConversationsList extends ImmutablePureComponent { }, 300, { leading: true }); render () { - const { conversations, onLoadMore, ...other } = this.props; + const { conversations, isLoading, onLoadMore, ...other } = this.props; return ( - + {conversations.map(item => (
    } - emptyMessage={} + alwaysPrepend + emptyMessage={} /> @@ -105,3 +105,5 @@ class DirectTimeline extends React.PureComponent { } } + +export default connect()(injectIntl(DirectTimeline)); diff --git a/app/javascript/mastodon/features/directory/components/account_card.jsx b/app/javascript/mastodon/features/directory/components/account_card.jsx index 15c8ad3039..1cee3a4e4e 100644 --- a/app/javascript/mastodon/features/directory/components/account_card.jsx +++ b/app/javascript/mastodon/features/directory/components/account_card.jsx @@ -91,9 +91,6 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ }); -export default -@injectIntl -@connect(makeMapStateToProps, mapDispatchToProps) class AccountCard extends ImmutablePureComponent { static propTypes = { @@ -233,3 +230,5 @@ class AccountCard extends ImmutablePureComponent { } } + +export default injectIntl(connect(makeMapStateToProps, mapDispatchToProps)(AccountCard)); diff --git a/app/javascript/mastodon/features/directory/index.jsx b/app/javascript/mastodon/features/directory/index.jsx index bb5e021cc9..afaf39b773 100644 --- a/app/javascript/mastodon/features/directory/index.jsx +++ b/app/javascript/mastodon/features/directory/index.jsx @@ -29,8 +29,6 @@ const mapStateToProps = state => ({ domain: state.getIn(['meta', 'domain']), }); -export default @connect(mapStateToProps) -@injectIntl class Directory extends React.PureComponent { static contextTypes = { @@ -176,3 +174,5 @@ class Directory extends React.PureComponent { } } + +export default connect(mapStateToProps)(injectIntl(Directory)); diff --git a/app/javascript/mastodon/features/domain_blocks/index.jsx b/app/javascript/mastodon/features/domain_blocks/index.jsx index 43b275c2d9..0c22aa2396 100644 --- a/app/javascript/mastodon/features/domain_blocks/index.jsx +++ b/app/javascript/mastodon/features/domain_blocks/index.jsx @@ -23,8 +23,6 @@ const mapStateToProps = state => ({ hasMore: !!state.getIn(['domain_lists', 'blocks', 'next']), }); -export default @connect(mapStateToProps) -@injectIntl class Blocks extends ImmutablePureComponent { static propTypes = { @@ -81,3 +79,5 @@ class Blocks extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(injectIntl(Blocks)); diff --git a/app/javascript/mastodon/features/emoji/emoji.js b/app/javascript/mastodon/features/emoji/emoji.js index bc3dd8c602..6ae4066242 100644 --- a/app/javascript/mastodon/features/emoji/emoji.js +++ b/app/javascript/mastodon/features/emoji/emoji.js @@ -50,7 +50,7 @@ const emojifyTextNode = (node, customEmojis) => { if (shortname in customEmojis) { const filename = autoPlayGif ? customEmojis[shortname].url : customEmojis[shortname].static_url; replacement = document.createElement('img'); - replacement.setAttribute('draggable', false); + replacement.setAttribute('draggable', 'false'); replacement.setAttribute('class', 'emojione custom-emoji'); replacement.setAttribute('alt', shortname); replacement.setAttribute('title', shortname); @@ -65,7 +65,7 @@ const emojifyTextNode = (node, customEmojis) => { const { filename, shortCode } = unicodeMapping[match]; const title = shortCode ? `:${shortCode}:` : ''; replacement = document.createElement('img'); - replacement.setAttribute('draggable', false); + replacement.setAttribute('draggable', 'false'); replacement.setAttribute('class', 'emojione'); replacement.setAttribute('alt', match); replacement.setAttribute('title', title); diff --git a/app/javascript/mastodon/features/emoji/emoji_mart_data_light.js b/app/javascript/mastodon/features/emoji/emoji_mart_data_light.js index 45086fc4cc..49813537d7 100644 --- a/app/javascript/mastodon/features/emoji/emoji_mart_data_light.js +++ b/app/javascript/mastodon/features/emoji/emoji_mart_data_light.js @@ -9,7 +9,7 @@ const emojis = {}; // decompress Object.keys(shortCodesToEmojiData).forEach((shortCode) => { let [ - filenameData, // eslint-disable-line no-unused-vars + filenameData, // eslint-disable-line @typescript-eslint/no-unused-vars searchData, ] = shortCodesToEmojiData[shortCode]; let [ diff --git a/app/javascript/mastodon/features/emoji/emoji_unicode_mapping_light.js b/app/javascript/mastodon/features/emoji/emoji_unicode_mapping_light.js index 918684c310..1a38fde234 100644 --- a/app/javascript/mastodon/features/emoji/emoji_unicode_mapping_light.js +++ b/app/javascript/mastodon/features/emoji/emoji_unicode_mapping_light.js @@ -4,9 +4,9 @@ const [ shortCodesToEmojiData, - skins, // eslint-disable-line no-unused-vars - categories, // eslint-disable-line no-unused-vars - short_names, // eslint-disable-line no-unused-vars + skins, // eslint-disable-line @typescript-eslint/no-unused-vars + categories, // eslint-disable-line @typescript-eslint/no-unused-vars + short_names, // eslint-disable-line @typescript-eslint/no-unused-vars emojisWithoutShortCodes, ] = require('./emoji_compressed'); const { unicodeToFilename } = require('./unicode_to_filename'); diff --git a/app/javascript/mastodon/features/explore/index.jsx b/app/javascript/mastodon/features/explore/index.jsx index d91755ff64..939550d833 100644 --- a/app/javascript/mastodon/features/explore/index.jsx +++ b/app/javascript/mastodon/features/explore/index.jsx @@ -24,8 +24,6 @@ const mapStateToProps = state => ({ isSearching: state.getIn(['search', 'submitted']) || !showTrends, }); -export default @connect(mapStateToProps) -@injectIntl class Explore extends React.PureComponent { static contextTypes = { @@ -90,7 +88,9 @@ class Explore extends React.PureComponent { - + + + @@ -105,3 +105,5 @@ class Explore extends React.PureComponent { } } + +export default connect(mapStateToProps)(injectIntl(Explore)); diff --git a/app/javascript/mastodon/features/explore/links.jsx b/app/javascript/mastodon/features/explore/links.jsx index b47fc8fcf7..1937399161 100644 --- a/app/javascript/mastodon/features/explore/links.jsx +++ b/app/javascript/mastodon/features/explore/links.jsx @@ -13,7 +13,6 @@ const mapStateToProps = state => ({ isLoading: state.getIn(['trends', 'links', 'isLoading']), }); -export default @connect(mapStateToProps) class Links extends React.PureComponent { static propTypes = { @@ -68,3 +67,5 @@ class Links extends React.PureComponent { } } + +export default connect(mapStateToProps)(Links); diff --git a/app/javascript/mastodon/features/explore/results.jsx b/app/javascript/mastodon/features/explore/results.jsx index b2f6c72b74..9725cf35cd 100644 --- a/app/javascript/mastodon/features/explore/results.jsx +++ b/app/javascript/mastodon/features/explore/results.jsx @@ -42,8 +42,6 @@ const renderStatuses = (results, onLoadMore) => appendLoadMore('statuses', resul )), onLoadMore); -export default @connect(mapStateToProps) -@injectIntl class Results extends React.PureComponent { static propTypes = { @@ -107,7 +105,7 @@ class Results extends React.PureComponent {
    - +
    @@ -124,3 +122,5 @@ class Results extends React.PureComponent { } } + +export default connect(mapStateToProps)(injectIntl(Results)); diff --git a/app/javascript/mastodon/features/explore/statuses.jsx b/app/javascript/mastodon/features/explore/statuses.jsx index b027487d58..a98a6d0465 100644 --- a/app/javascript/mastodon/features/explore/statuses.jsx +++ b/app/javascript/mastodon/features/explore/statuses.jsx @@ -14,7 +14,6 @@ const mapStateToProps = state => ({ hasMore: !!state.getIn(['status_lists', 'trending', 'next']), }); -export default @connect(mapStateToProps) class Statuses extends React.PureComponent { static propTypes = { @@ -62,3 +61,5 @@ class Statuses extends React.PureComponent { } } + +export default connect(mapStateToProps)(Statuses); diff --git a/app/javascript/mastodon/features/explore/suggestions.jsx b/app/javascript/mastodon/features/explore/suggestions.jsx index e6ad09974c..53eb7ba4b4 100644 --- a/app/javascript/mastodon/features/explore/suggestions.jsx +++ b/app/javascript/mastodon/features/explore/suggestions.jsx @@ -12,7 +12,6 @@ const mapStateToProps = state => ({ isLoading: state.getIn(['suggestions', 'isLoading']), }); -export default @connect(mapStateToProps) class Suggestions extends React.PureComponent { static propTypes = { @@ -49,3 +48,5 @@ class Suggestions extends React.PureComponent { } } + +export default connect(mapStateToProps)(Suggestions); diff --git a/app/javascript/mastodon/features/explore/tags.jsx b/app/javascript/mastodon/features/explore/tags.jsx index 258dc392f2..3ba813c3f8 100644 --- a/app/javascript/mastodon/features/explore/tags.jsx +++ b/app/javascript/mastodon/features/explore/tags.jsx @@ -13,7 +13,6 @@ const mapStateToProps = state => ({ isLoadingHashtags: state.getIn(['trends', 'tags', 'isLoading']), }); -export default @connect(mapStateToProps) class Tags extends React.PureComponent { static propTypes = { @@ -60,3 +59,5 @@ class Tags extends React.PureComponent { } } + +export default connect(mapStateToProps)(Tags); diff --git a/app/javascript/mastodon/features/favourited_statuses/index.jsx b/app/javascript/mastodon/features/favourited_statuses/index.jsx index 89093f682b..2cbf002919 100644 --- a/app/javascript/mastodon/features/favourited_statuses/index.jsx +++ b/app/javascript/mastodon/features/favourited_statuses/index.jsx @@ -22,8 +22,6 @@ const mapStateToProps = state => ({ hasMore: !!state.getIn(['status_lists', 'favourites', 'next']), }); -export default @connect(mapStateToProps) -@injectIntl class Favourites extends ImmutablePureComponent { static propTypes = { @@ -106,3 +104,5 @@ class Favourites extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(injectIntl(Favourites)); diff --git a/app/javascript/mastodon/features/favourites/index.jsx b/app/javascript/mastodon/features/favourites/index.jsx index 7179e64700..b1e81debd5 100644 --- a/app/javascript/mastodon/features/favourites/index.jsx +++ b/app/javascript/mastodon/features/favourites/index.jsx @@ -21,8 +21,6 @@ const mapStateToProps = (state, props) => ({ accountIds: state.getIn(['user_lists', 'favourited_by', props.params.statusId]), }); -export default @connect(mapStateToProps) -@injectIntl class Favourites extends ImmutablePureComponent { static propTypes = { @@ -90,3 +88,5 @@ class Favourites extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(injectIntl(Favourites)); diff --git a/app/javascript/mastodon/features/filters/added_to_filter.jsx b/app/javascript/mastodon/features/filters/added_to_filter.jsx index 3785eb3c5a..d935d96e29 100644 --- a/app/javascript/mastodon/features/filters/added_to_filter.jsx +++ b/app/javascript/mastodon/features/filters/added_to_filter.jsx @@ -10,7 +10,6 @@ const mapStateToProps = (state, { filterId }) => ({ filter: state.getIn(['filters', filterId]), }); -export default @connect(mapStateToProps) class AddedToFilter extends React.PureComponent { static propTypes = { @@ -100,3 +99,5 @@ class AddedToFilter extends React.PureComponent { } } + +export default connect(mapStateToProps)(AddedToFilter); diff --git a/app/javascript/mastodon/features/filters/select_filter.jsx b/app/javascript/mastodon/features/filters/select_filter.jsx index 8a21905d71..5778eec8e9 100644 --- a/app/javascript/mastodon/features/filters/select_filter.jsx +++ b/app/javascript/mastodon/features/filters/select_filter.jsx @@ -22,8 +22,6 @@ const mapStateToProps = (state, { contextType }) => ({ ]), }); -export default @connect(mapStateToProps) -@injectIntl class SelectFilter extends React.PureComponent { static propTypes = { @@ -67,7 +65,7 @@ class SelectFilter extends React.PureComponent { } return ( -
    +
    {filter[1]} {warning}
    ); @@ -75,7 +73,7 @@ class SelectFilter extends React.PureComponent { renderCreateNew (name) { return ( -
    +
    ); @@ -190,3 +188,5 @@ class SelectFilter extends React.PureComponent { } } + +export default connect(mapStateToProps)(injectIntl(SelectFilter)); diff --git a/app/javascript/mastodon/features/follow_recommendations/components/account.jsx b/app/javascript/mastodon/features/follow_recommendations/components/account.jsx index ddd0c8baab..9cb26fe645 100644 --- a/app/javascript/mastodon/features/follow_recommendations/components/account.jsx +++ b/app/javascript/mastodon/features/follow_recommendations/components/account.jsx @@ -32,8 +32,6 @@ const getFirstSentence = str => { return arr[0]; }; -export default @connect(makeMapStateToProps) -@injectIntl class Account extends ImmutablePureComponent { static propTypes = { @@ -83,3 +81,5 @@ class Account extends ImmutablePureComponent { } } + +export default connect(makeMapStateToProps)(injectIntl(Account)); diff --git a/app/javascript/mastodon/features/follow_recommendations/index.jsx b/app/javascript/mastodon/features/follow_recommendations/index.jsx index 436cc582b3..7ba34b51f4 100644 --- a/app/javascript/mastodon/features/follow_recommendations/index.jsx +++ b/app/javascript/mastodon/features/follow_recommendations/index.jsx @@ -19,7 +19,6 @@ const mapStateToProps = state => ({ isLoading: state.getIn(['suggestions', 'isLoading']), }); -export default @connect(mapStateToProps) class FollowRecommendations extends ImmutablePureComponent { static contextTypes = { @@ -114,3 +113,5 @@ class FollowRecommendations extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(FollowRecommendations); diff --git a/app/javascript/mastodon/features/follow_requests/components/account_authorize.jsx b/app/javascript/mastodon/features/follow_requests/components/account_authorize.jsx index d41f331e5e..0bd45592c9 100644 --- a/app/javascript/mastodon/features/follow_requests/components/account_authorize.jsx +++ b/app/javascript/mastodon/features/follow_requests/components/account_authorize.jsx @@ -13,7 +13,6 @@ const messages = defineMessages({ reject: { id: 'follow_request.reject', defaultMessage: 'Reject' }, }); -export default @injectIntl class AccountAuthorize extends ImmutablePureComponent { static propTypes = { @@ -47,3 +46,5 @@ class AccountAuthorize extends ImmutablePureComponent { } } + +export default injectIntl(AccountAuthorize); diff --git a/app/javascript/mastodon/features/follow_requests/index.jsx b/app/javascript/mastodon/features/follow_requests/index.jsx index 526ae4cde7..a8875bbd31 100644 --- a/app/javascript/mastodon/features/follow_requests/index.jsx +++ b/app/javascript/mastodon/features/follow_requests/index.jsx @@ -25,8 +25,6 @@ const mapStateToProps = state => ({ domain: state.getIn(['meta', 'domain']), }); -export default @connect(mapStateToProps) -@injectIntl class FollowRequests extends ImmutablePureComponent { static propTypes = { @@ -89,3 +87,5 @@ class FollowRequests extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(injectIntl(FollowRequests)); diff --git a/app/javascript/mastodon/features/followed_tags/index.jsx b/app/javascript/mastodon/features/followed_tags/index.jsx index c2d0e47318..7c53542c2e 100644 --- a/app/javascript/mastodon/features/followed_tags/index.jsx +++ b/app/javascript/mastodon/features/followed_tags/index.jsx @@ -22,8 +22,6 @@ const mapStateToProps = state => ({ hasMore: !!state.getIn(['followed_tags', 'next']), }); -export default @connect(mapStateToProps) -@injectIntl class FollowedTags extends ImmutablePureComponent { static propTypes = { @@ -87,3 +85,5 @@ class FollowedTags extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(injectIntl(FollowedTags)); diff --git a/app/javascript/mastodon/features/followers/index.jsx b/app/javascript/mastodon/features/followers/index.jsx index 277eb702fb..fe86ebb3b4 100644 --- a/app/javascript/mastodon/features/followers/index.jsx +++ b/app/javascript/mastodon/features/followers/index.jsx @@ -54,7 +54,6 @@ RemoteHint.propTypes = { url: PropTypes.string.isRequired, }; -export default @connect(mapStateToProps) class Followers extends ImmutablePureComponent { static propTypes = { @@ -168,3 +167,5 @@ class Followers extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(Followers); diff --git a/app/javascript/mastodon/features/following/index.jsx b/app/javascript/mastodon/features/following/index.jsx index e23d9b35cd..8095d73a35 100644 --- a/app/javascript/mastodon/features/following/index.jsx +++ b/app/javascript/mastodon/features/following/index.jsx @@ -54,7 +54,6 @@ RemoteHint.propTypes = { url: PropTypes.string.isRequired, }; -export default @connect(mapStateToProps) class Following extends ImmutablePureComponent { static propTypes = { @@ -168,3 +167,5 @@ class Following extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(Following); diff --git a/app/javascript/mastodon/features/getting_started/components/announcements.jsx b/app/javascript/mastodon/features/getting_started/components/announcements.jsx index 0cae0bd1fe..5f993d2c55 100644 --- a/app/javascript/mastodon/features/getting_started/components/announcements.jsx +++ b/app/javascript/mastodon/features/getting_started/components/announcements.jsx @@ -355,7 +355,6 @@ class Announcement extends ImmutablePureComponent { } -export default @injectIntl class Announcements extends ImmutablePureComponent { static propTypes = { @@ -419,7 +418,7 @@ class Announcements extends ImmutablePureComponent {
    - + {announcements.map((announcement, idx) => ( { } }; -export default @connect(mapStateToProps, mapDispatchToProps) -@injectIntl class GettingStarted extends ImmutablePureComponent { static contextTypes = { @@ -153,3 +151,5 @@ class GettingStarted extends ImmutablePureComponent { } } + +export default connect(mapStateToProps, mapDispatchToProps)(injectIntl(GettingStarted)); diff --git a/app/javascript/mastodon/features/hashtag_timeline/components/column_settings.jsx b/app/javascript/mastodon/features/hashtag_timeline/components/column_settings.jsx index ac7863ed38..f140f2d013 100644 --- a/app/javascript/mastodon/features/hashtag_timeline/components/column_settings.jsx +++ b/app/javascript/mastodon/features/hashtag_timeline/components/column_settings.jsx @@ -12,7 +12,6 @@ const messages = defineMessages({ noOptions: { id: 'hashtag.column_settings.select.no_options_message', defaultMessage: 'No suggestions found' }, }); -export default @injectIntl class ColumnSettings extends React.PureComponent { static propTypes = { @@ -131,3 +130,5 @@ class ColumnSettings extends React.PureComponent { } } + +export default injectIntl(ColumnSettings); diff --git a/app/javascript/mastodon/features/hashtag_timeline/index.jsx b/app/javascript/mastodon/features/hashtag_timeline/index.jsx index e5262d70d1..a244dbdb22 100644 --- a/app/javascript/mastodon/features/hashtag_timeline/index.jsx +++ b/app/javascript/mastodon/features/hashtag_timeline/index.jsx @@ -26,8 +26,6 @@ const mapStateToProps = (state, props) => ({ tag: state.getIn(['tags', props.params.id]), }); -export default @connect(mapStateToProps) -@injectIntl class HashtagTimeline extends React.PureComponent { disconnects = []; @@ -193,8 +191,12 @@ class HashtagTimeline extends React.PureComponent { if (tag) { const following = tag.get('following'); + const classes = classNames('column-header__button', { + active: following, + }); + followButton = ( - ); @@ -235,3 +237,5 @@ class HashtagTimeline extends React.PureComponent { } } + +export default connect(mapStateToProps)(injectIntl(HashtagTimeline)); diff --git a/app/javascript/mastodon/features/home_timeline/components/column_settings.jsx b/app/javascript/mastodon/features/home_timeline/components/column_settings.jsx index 455e218817..bd15390c0b 100644 --- a/app/javascript/mastodon/features/home_timeline/components/column_settings.jsx +++ b/app/javascript/mastodon/features/home_timeline/components/column_settings.jsx @@ -4,7 +4,6 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import { injectIntl, FormattedMessage } from 'react-intl'; import SettingToggle from '../../notifications/components/setting_toggle'; -export default @injectIntl class ColumnSettings extends React.PureComponent { static propTypes = { @@ -32,3 +31,5 @@ class ColumnSettings extends React.PureComponent { } } + +export default injectIntl(ColumnSettings); diff --git a/app/javascript/mastodon/features/home_timeline/index.jsx b/app/javascript/mastodon/features/home_timeline/index.jsx index 001de15d1b..9aa4c6d821 100644 --- a/app/javascript/mastodon/features/home_timeline/index.jsx +++ b/app/javascript/mastodon/features/home_timeline/index.jsx @@ -30,8 +30,6 @@ const mapStateToProps = state => ({ showAnnouncements: state.getIn(['announcements', 'show']), }); -export default @connect(mapStateToProps) -@injectIntl class HomeTimeline extends React.PureComponent { static contextTypes = { @@ -174,3 +172,5 @@ class HomeTimeline extends React.PureComponent { } } + +export default connect(mapStateToProps)(injectIntl(HomeTimeline)); diff --git a/app/javascript/mastodon/features/interaction_modal/index.jsx b/app/javascript/mastodon/features/interaction_modal/index.jsx index c1d346fed4..5742f11042 100644 --- a/app/javascript/mastodon/features/interaction_modal/index.jsx +++ b/app/javascript/mastodon/features/interaction_modal/index.jsx @@ -74,7 +74,6 @@ class Copypaste extends React.PureComponent { } -export default @connect(mapStateToProps, mapDispatchToProps) class InteractionModal extends React.PureComponent { static propTypes = { @@ -159,3 +158,5 @@ class InteractionModal extends React.PureComponent { } } + +export default connect(mapStateToProps, mapDispatchToProps)(InteractionModal); diff --git a/app/javascript/mastodon/features/keyboard_shortcuts/index.jsx b/app/javascript/mastodon/features/keyboard_shortcuts/index.jsx index 9a870478da..70f019712e 100644 --- a/app/javascript/mastodon/features/keyboard_shortcuts/index.jsx +++ b/app/javascript/mastodon/features/keyboard_shortcuts/index.jsx @@ -10,7 +10,6 @@ const messages = defineMessages({ heading: { id: 'keyboard_shortcuts.heading', defaultMessage: 'Keyboard Shortcuts' }, }); -export default @injectIntl class KeyboardShortcuts extends ImmutablePureComponent { static propTypes = { @@ -174,3 +173,5 @@ class KeyboardShortcuts extends ImmutablePureComponent { } } + +export default injectIntl(KeyboardShortcuts); diff --git a/app/javascript/mastodon/features/list_adder/components/account.jsx b/app/javascript/mastodon/features/list_adder/components/account.jsx index 1369aac074..786af3bb1c 100644 --- a/app/javascript/mastodon/features/list_adder/components/account.jsx +++ b/app/javascript/mastodon/features/list_adder/components/account.jsx @@ -17,9 +17,6 @@ const makeMapStateToProps = () => { return mapStateToProps; }; - -export default @connect(makeMapStateToProps) -@injectIntl class Account extends ImmutablePureComponent { static propTypes = { @@ -41,3 +38,5 @@ class Account extends ImmutablePureComponent { } } + +export default connect(makeMapStateToProps)(injectIntl(Account)); diff --git a/app/javascript/mastodon/features/list_adder/components/list.jsx b/app/javascript/mastodon/features/list_adder/components/list.jsx index 60c8958a73..34ccf8451d 100644 --- a/app/javascript/mastodon/features/list_adder/components/list.jsx +++ b/app/javascript/mastodon/features/list_adder/components/list.jsx @@ -23,8 +23,6 @@ const mapDispatchToProps = (dispatch, { listId }) => ({ onAdd: () => dispatch(addToListAdder(listId)), }); -export default @connect(MapStateToProps, mapDispatchToProps) -@injectIntl class List extends ImmutablePureComponent { static propTypes = { @@ -67,3 +65,5 @@ class List extends ImmutablePureComponent { } } + +export default connect(MapStateToProps, mapDispatchToProps)(injectIntl(List)); diff --git a/app/javascript/mastodon/features/list_adder/index.jsx b/app/javascript/mastodon/features/list_adder/index.jsx index cb8a15e8c7..45d5589f96 100644 --- a/app/javascript/mastodon/features/list_adder/index.jsx +++ b/app/javascript/mastodon/features/list_adder/index.jsx @@ -28,8 +28,6 @@ const mapDispatchToProps = dispatch => ({ onReset: () => dispatch(resetListAdder()), }); -export default @connect(mapStateToProps, mapDispatchToProps) -@injectIntl class ListAdder extends ImmutablePureComponent { static propTypes = { @@ -71,3 +69,5 @@ class ListAdder extends ImmutablePureComponent { } } + +export default connect(mapStateToProps, mapDispatchToProps)(injectIntl(ListAdder)); diff --git a/app/javascript/mastodon/features/list_editor/components/account.jsx b/app/javascript/mastodon/features/list_editor/components/account.jsx index 48085af43d..86209bb3cb 100644 --- a/app/javascript/mastodon/features/list_editor/components/account.jsx +++ b/app/javascript/mastodon/features/list_editor/components/account.jsx @@ -31,8 +31,6 @@ const mapDispatchToProps = (dispatch, { accountId }) => ({ onAdd: () => dispatch(addToListEditor(accountId)), }); -export default @connect(makeMapStateToProps, mapDispatchToProps) -@injectIntl class Account extends ImmutablePureComponent { static propTypes = { @@ -75,3 +73,5 @@ class Account extends ImmutablePureComponent { } } + +export default connect(makeMapStateToProps, mapDispatchToProps)(injectIntl(Account)); diff --git a/app/javascript/mastodon/features/list_editor/components/edit_list_form.jsx b/app/javascript/mastodon/features/list_editor/components/edit_list_form.jsx index 4d7e49ec09..9c1c244cbc 100644 --- a/app/javascript/mastodon/features/list_editor/components/edit_list_form.jsx +++ b/app/javascript/mastodon/features/list_editor/components/edit_list_form.jsx @@ -19,8 +19,6 @@ const mapDispatchToProps = dispatch => ({ onSubmit: () => dispatch(submitListEditor(false)), }); -export default @connect(mapStateToProps, mapDispatchToProps) -@injectIntl class ListForm extends React.PureComponent { static propTypes = { @@ -68,3 +66,5 @@ class ListForm extends React.PureComponent { } } + +export default connect(mapStateToProps, mapDispatchToProps)(injectIntl(ListForm)); diff --git a/app/javascript/mastodon/features/list_editor/components/search.jsx b/app/javascript/mastodon/features/list_editor/components/search.jsx index 3ee26c8eb4..f70e272f79 100644 --- a/app/javascript/mastodon/features/list_editor/components/search.jsx +++ b/app/javascript/mastodon/features/list_editor/components/search.jsx @@ -20,8 +20,6 @@ const mapDispatchToProps = dispatch => ({ onChange: value => dispatch(changeListSuggestions(value)), }); -export default @connect(mapStateToProps, mapDispatchToProps) -@injectIntl class Search extends React.PureComponent { static propTypes = { @@ -65,7 +63,7 @@ class Search extends React.PureComponent { /> -
    +
    @@ -74,3 +72,5 @@ class Search extends React.PureComponent { } } + +export default connect(mapStateToProps, mapDispatchToProps)(injectIntl(Search)); diff --git a/app/javascript/mastodon/features/list_editor/index.jsx b/app/javascript/mastodon/features/list_editor/index.jsx index 48466604a7..ed9d091326 100644 --- a/app/javascript/mastodon/features/list_editor/index.jsx +++ b/app/javascript/mastodon/features/list_editor/index.jsx @@ -22,8 +22,6 @@ const mapDispatchToProps = dispatch => ({ onReset: () => dispatch(resetListEditor()), }); -export default @connect(mapStateToProps, mapDispatchToProps) -@injectIntl class ListEditor extends ImmutablePureComponent { static propTypes = { @@ -62,7 +60,7 @@ class ListEditor extends ImmutablePureComponent { {accountIds.map(accountId => )}
    - {showSearch &&
    } + {showSearch &&
    } {({ x }) => ( @@ -77,3 +75,5 @@ class ListEditor extends ImmutablePureComponent { } } + +export default connect(mapStateToProps, mapDispatchToProps)(injectIntl(ListEditor)); diff --git a/app/javascript/mastodon/features/list_timeline/index.jsx b/app/javascript/mastodon/features/list_timeline/index.jsx index 25dbe311a7..c0b9a62ff9 100644 --- a/app/javascript/mastodon/features/list_timeline/index.jsx +++ b/app/javascript/mastodon/features/list_timeline/index.jsx @@ -31,8 +31,6 @@ const mapStateToProps = (state, props) => ({ hasUnread: state.getIn(['timelines', `list:${props.params.id}`, 'unread']) > 0, }); -export default @connect(mapStateToProps) -@injectIntl class ListTimeline extends React.PureComponent { static contextTypes = { @@ -178,11 +176,11 @@ class ListTimeline extends React.PureComponent { multiColumn={multiColumn} >
    - -
    @@ -219,3 +217,5 @@ class ListTimeline extends React.PureComponent { } } + +export default connect(mapStateToProps)(injectIntl(ListTimeline)); diff --git a/app/javascript/mastodon/features/lists/components/new_list_form.jsx b/app/javascript/mastodon/features/lists/components/new_list_form.jsx index 4e00e52009..50b52518e9 100644 --- a/app/javascript/mastodon/features/lists/components/new_list_form.jsx +++ b/app/javascript/mastodon/features/lists/components/new_list_form.jsx @@ -20,8 +20,6 @@ const mapDispatchToProps = dispatch => ({ onSubmit: () => dispatch(submitListEditor(true)), }); -export default @connect(mapStateToProps, mapDispatchToProps) -@injectIntl class NewListForm extends React.PureComponent { static propTypes = { @@ -75,3 +73,5 @@ class NewListForm extends React.PureComponent { } } + +export default connect(mapStateToProps, mapDispatchToProps)(injectIntl(NewListForm)); diff --git a/app/javascript/mastodon/features/lists/index.jsx b/app/javascript/mastodon/features/lists/index.jsx index 3a0b1373a6..afd645a308 100644 --- a/app/javascript/mastodon/features/lists/index.jsx +++ b/app/javascript/mastodon/features/lists/index.jsx @@ -32,8 +32,6 @@ const mapStateToProps = state => ({ lists: getOrderedLists(state), }); -export default @connect(mapStateToProps) -@injectIntl class Lists extends ImmutablePureComponent { static propTypes = { @@ -87,3 +85,5 @@ class Lists extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(injectIntl(Lists)); diff --git a/app/javascript/mastodon/features/mutes/index.jsx b/app/javascript/mastodon/features/mutes/index.jsx index 65df6149fe..5c05d2f700 100644 --- a/app/javascript/mastodon/features/mutes/index.jsx +++ b/app/javascript/mastodon/features/mutes/index.jsx @@ -23,8 +23,6 @@ const mapStateToProps = state => ({ isLoading: state.getIn(['user_lists', 'mutes', 'isLoading'], true), }); -export default @connect(mapStateToProps) -@injectIntl class Mutes extends ImmutablePureComponent { static propTypes = { @@ -82,3 +80,5 @@ class Mutes extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(injectIntl(Mutes)); diff --git a/app/javascript/mastodon/features/notifications/components/clear_column_button.jsx b/app/javascript/mastodon/features/notifications/components/clear_column_button.jsx index b82fd092f8..9a076ce5ed 100644 --- a/app/javascript/mastodon/features/notifications/components/clear_column_button.jsx +++ b/app/javascript/mastodon/features/notifications/components/clear_column_button.jsx @@ -11,7 +11,7 @@ export default class ClearColumnButton extends React.PureComponent { render () { return ( - + ); } diff --git a/app/javascript/mastodon/features/notifications/components/filter_bar.jsx b/app/javascript/mastodon/features/notifications/components/filter_bar.jsx index 368eb0b7e6..88e95cf48f 100644 --- a/app/javascript/mastodon/features/notifications/components/filter_bar.jsx +++ b/app/javascript/mastodon/features/notifications/components/filter_bar.jsx @@ -12,7 +12,6 @@ const tooltips = defineMessages({ statuses: { id: 'notifications.filter.statuses', defaultMessage: 'Updates from people you follow' }, }); -export default @injectIntl class FilterBar extends React.PureComponent { static propTypes = { @@ -108,3 +107,5 @@ class FilterBar extends React.PureComponent { } } + +export default injectIntl(FilterBar); diff --git a/app/javascript/mastodon/features/notifications/components/follow_request.jsx b/app/javascript/mastodon/features/notifications/components/follow_request.jsx index 08de875e36..01bf670650 100644 --- a/app/javascript/mastodon/features/notifications/components/follow_request.jsx +++ b/app/javascript/mastodon/features/notifications/components/follow_request.jsx @@ -1,4 +1,4 @@ -import React, { Fragment } from 'react'; +import React from 'react'; import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; import Avatar from 'mastodon/components/avatar'; @@ -13,7 +13,6 @@ const messages = defineMessages({ reject: { id: 'follow_request.reject', defaultMessage: 'Reject' }, }); -export default @injectIntl class FollowRequest extends ImmutablePureComponent { static propTypes = { @@ -32,10 +31,10 @@ class FollowRequest extends ImmutablePureComponent { if (hidden) { return ( - + {account.get('display_name')} {account.get('username')} - + ); } @@ -57,3 +56,5 @@ class FollowRequest extends ImmutablePureComponent { } } + +export default injectIntl(FollowRequest); diff --git a/app/javascript/mastodon/features/notifications/components/grant_permission_button.jsx b/app/javascript/mastodon/features/notifications/components/grant_permission_button.jsx index 798e4c7872..5b2db48fdb 100644 --- a/app/javascript/mastodon/features/notifications/components/grant_permission_button.jsx +++ b/app/javascript/mastodon/features/notifications/components/grant_permission_button.jsx @@ -10,7 +10,7 @@ export default class GrantPermissionButton extends React.PureComponent { render () { return ( - ); diff --git a/app/javascript/mastodon/features/notifications/components/notification.jsx b/app/javascript/mastodon/features/notifications/components/notification.jsx index 9e2517f084..f3104cee05 100644 --- a/app/javascript/mastodon/features/notifications/components/notification.jsx +++ b/app/javascript/mastodon/features/notifications/components/notification.jsx @@ -33,7 +33,6 @@ const notificationForScreenReader = (intl, message, timestamp) => { return output.join(', '); }; -export default @injectIntl class Notification extends ImmutablePureComponent { static contextTypes = { @@ -124,7 +123,7 @@ class Notification extends ImmutablePureComponent { return ( -
    +
    @@ -146,7 +145,7 @@ class Notification extends ImmutablePureComponent { return ( -
    +
    @@ -186,7 +185,7 @@ class Notification extends ImmutablePureComponent { return ( -
    +
    @@ -218,7 +217,7 @@ class Notification extends ImmutablePureComponent { return ( -
    +
    @@ -254,7 +253,7 @@ class Notification extends ImmutablePureComponent { return ( -
    +
    @@ -291,7 +290,7 @@ class Notification extends ImmutablePureComponent { return ( -
    +
    @@ -330,7 +329,7 @@ class Notification extends ImmutablePureComponent { return ( -
    +
    @@ -367,7 +366,7 @@ class Notification extends ImmutablePureComponent { return ( -
    +
    @@ -397,7 +396,7 @@ class Notification extends ImmutablePureComponent { return ( -
    +
    @@ -447,3 +446,5 @@ class Notification extends ImmutablePureComponent { } } + +export default injectIntl(Notification); diff --git a/app/javascript/mastodon/features/notifications/components/notifications_permission_banner.jsx b/app/javascript/mastodon/features/notifications/components/notifications_permission_banner.jsx index 3a7556c1d9..c54137e60c 100644 --- a/app/javascript/mastodon/features/notifications/components/notifications_permission_banner.jsx +++ b/app/javascript/mastodon/features/notifications/components/notifications_permission_banner.jsx @@ -12,8 +12,6 @@ const messages = defineMessages({ close: { id: 'lightbox.close', defaultMessage: 'Close' }, }); -export default @connect() -@injectIntl class NotificationsPermissionBanner extends React.PureComponent { static propTypes = { @@ -46,3 +44,5 @@ class NotificationsPermissionBanner extends React.PureComponent { } } + +export default connect()(injectIntl(NotificationsPermissionBanner)); diff --git a/app/javascript/mastodon/features/notifications/components/report.jsx b/app/javascript/mastodon/features/notifications/components/report.jsx index 3ce3eb9d32..4663b23597 100644 --- a/app/javascript/mastodon/features/notifications/components/report.jsx +++ b/app/javascript/mastodon/features/notifications/components/report.jsx @@ -13,7 +13,6 @@ const messages = defineMessages({ violation: { id: 'report_notification.categories.violation', defaultMessage: 'Rule violation' }, }); -export default @injectIntl class Report extends ImmutablePureComponent { static propTypes = { @@ -60,3 +59,5 @@ class Report extends ImmutablePureComponent { } } + +export default injectIntl(Report); diff --git a/app/javascript/mastodon/features/notifications/index.jsx b/app/javascript/mastodon/features/notifications/index.jsx index fee016a025..bb8852abf1 100644 --- a/app/javascript/mastodon/features/notifications/index.jsx +++ b/app/javascript/mastodon/features/notifications/index.jsx @@ -67,8 +67,6 @@ const mapStateToProps = state => ({ needsNotificationPermission: state.getIn(['settings', 'notifications', 'alerts']).includes(true) && state.getIn(['notifications', 'browserSupport']) && state.getIn(['notifications', 'browserPermission']) === 'default' && !state.getIn(['settings', 'notifications', 'dismissPermissionBanner']), }); -export default @connect(mapStateToProps) -@injectIntl class Notifications extends React.PureComponent { static contextTypes = { @@ -288,3 +286,5 @@ class Notifications extends React.PureComponent { } } + +export default connect(mapStateToProps)(injectIntl(Notifications)); diff --git a/app/javascript/mastodon/features/picture_in_picture/components/footer.jsx b/app/javascript/mastodon/features/picture_in_picture/components/footer.jsx index 0ee6d06c7f..66124f3311 100644 --- a/app/javascript/mastodon/features/picture_in_picture/components/footer.jsx +++ b/app/javascript/mastodon/features/picture_in_picture/components/footer.jsx @@ -37,8 +37,6 @@ const makeMapStateToProps = () => { return mapStateToProps; }; -export default @connect(makeMapStateToProps) -@injectIntl class Footer extends ImmutablePureComponent { static contextTypes = { @@ -190,3 +188,5 @@ class Footer extends ImmutablePureComponent { } } + +export default connect(makeMapStateToProps)(injectIntl(Footer)); diff --git a/app/javascript/mastodon/features/picture_in_picture/components/header.jsx b/app/javascript/mastodon/features/picture_in_picture/components/header.jsx index e05d8c62e9..100f9db7ac 100644 --- a/app/javascript/mastodon/features/picture_in_picture/components/header.jsx +++ b/app/javascript/mastodon/features/picture_in_picture/components/header.jsx @@ -17,8 +17,6 @@ const mapStateToProps = (state, { accountId }) => ({ account: state.getIn(['accounts', accountId]), }); -export default @connect(mapStateToProps) -@injectIntl class Header extends ImmutablePureComponent { static propTypes = { @@ -45,3 +43,5 @@ class Header extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(injectIntl(Header)); diff --git a/app/javascript/mastodon/features/picture_in_picture/index.jsx b/app/javascript/mastodon/features/picture_in_picture/index.jsx index 01a7d43f22..ae48a1b4e5 100644 --- a/app/javascript/mastodon/features/picture_in_picture/index.jsx +++ b/app/javascript/mastodon/features/picture_in_picture/index.jsx @@ -11,7 +11,6 @@ const mapStateToProps = state => ({ ...state.get('picture_in_picture'), }); -export default @connect(mapStateToProps) class PictureInPicture extends React.Component { static propTypes = { @@ -83,3 +82,5 @@ class PictureInPicture extends React.Component { } } + +export default connect(mapStateToProps)(PictureInPicture); diff --git a/app/javascript/mastodon/features/pinned_statuses/index.jsx b/app/javascript/mastodon/features/pinned_statuses/index.jsx index 504fda4158..24a0b6d2e3 100644 --- a/app/javascript/mastodon/features/pinned_statuses/index.jsx +++ b/app/javascript/mastodon/features/pinned_statuses/index.jsx @@ -19,8 +19,6 @@ const mapStateToProps = state => ({ hasMore: !!state.getIn(['status_lists', 'pins', 'next']), }); -export default @connect(mapStateToProps) -@injectIntl class PinnedStatuses extends ImmutablePureComponent { static propTypes = { @@ -63,3 +61,5 @@ class PinnedStatuses extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(injectIntl(PinnedStatuses)); diff --git a/app/javascript/mastodon/features/privacy_policy/index.jsx b/app/javascript/mastodon/features/privacy_policy/index.jsx index 3df487e8ff..d5bbda6a33 100644 --- a/app/javascript/mastodon/features/privacy_policy/index.jsx +++ b/app/javascript/mastodon/features/privacy_policy/index.jsx @@ -10,7 +10,6 @@ const messages = defineMessages({ title: { id: 'privacy_policy.title', defaultMessage: 'Privacy Policy' }, }); -export default @injectIntl class PrivacyPolicy extends React.PureComponent { static propTypes = { @@ -59,3 +58,5 @@ class PrivacyPolicy extends React.PureComponent { } } + +export default injectIntl(PrivacyPolicy); diff --git a/app/javascript/mastodon/features/public_timeline/components/column_settings.jsx b/app/javascript/mastodon/features/public_timeline/components/column_settings.jsx index 756b6fe06d..bf8a8323e0 100644 --- a/app/javascript/mastodon/features/public_timeline/components/column_settings.jsx +++ b/app/javascript/mastodon/features/public_timeline/components/column_settings.jsx @@ -4,7 +4,6 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import { injectIntl, FormattedMessage } from 'react-intl'; import SettingToggle from '../../notifications/components/setting_toggle'; -export default @injectIntl class ColumnSettings extends React.PureComponent { static propTypes = { @@ -28,3 +27,5 @@ class ColumnSettings extends React.PureComponent { } } + +export default injectIntl(ColumnSettings); diff --git a/app/javascript/mastodon/features/public_timeline/index.jsx b/app/javascript/mastodon/features/public_timeline/index.jsx index aaef45c865..f89caa2c95 100644 --- a/app/javascript/mastodon/features/public_timeline/index.jsx +++ b/app/javascript/mastodon/features/public_timeline/index.jsx @@ -31,8 +31,6 @@ const mapStateToProps = (state, { columnId }) => { }; }; -export default @connect(mapStateToProps) -@injectIntl class PublicTimeline extends React.PureComponent { static contextTypes = { @@ -160,3 +158,5 @@ class PublicTimeline extends React.PureComponent { } } + +export default connect(mapStateToProps)(injectIntl(PublicTimeline)); diff --git a/app/javascript/mastodon/features/reblogs/index.jsx b/app/javascript/mastodon/features/reblogs/index.jsx index 31e5dc1d43..35edb0d6af 100644 --- a/app/javascript/mastodon/features/reblogs/index.jsx +++ b/app/javascript/mastodon/features/reblogs/index.jsx @@ -21,8 +21,6 @@ const mapStateToProps = (state, props) => ({ accountIds: state.getIn(['user_lists', 'reblogged_by', props.params.statusId]), }); -export default @connect(mapStateToProps) -@injectIntl class Reblogs extends ImmutablePureComponent { static propTypes = { @@ -90,3 +88,5 @@ class Reblogs extends ImmutablePureComponent { } } + +export default connect(mapStateToProps)(injectIntl(Reblogs)); diff --git a/app/javascript/mastodon/features/report/category.jsx b/app/javascript/mastodon/features/report/category.jsx index c6c0a506f3..492a533f20 100644 --- a/app/javascript/mastodon/features/report/category.jsx +++ b/app/javascript/mastodon/features/report/category.jsx @@ -24,8 +24,6 @@ const mapStateToProps = state => ({ rules: state.getIn(['server', 'server', 'rules'], ImmutableList()), }); -export default @connect(mapStateToProps) -@injectIntl class Category extends React.PureComponent { static propTypes = { @@ -104,3 +102,5 @@ class Category extends React.PureComponent { } } + +export default connect(mapStateToProps)(injectIntl(Category)); diff --git a/app/javascript/mastodon/features/report/comment.jsx b/app/javascript/mastodon/features/report/comment.jsx index cde1564158..ab29f6c227 100644 --- a/app/javascript/mastodon/features/report/comment.jsx +++ b/app/javascript/mastodon/features/report/comment.jsx @@ -8,7 +8,6 @@ const messages = defineMessages({ placeholder: { id: 'report.placeholder', defaultMessage: 'Type or paste additional comments' }, }); -export default @injectIntl class Comment extends React.PureComponent { static propTypes = { @@ -81,3 +80,5 @@ class Comment extends React.PureComponent { } } + +export default injectIntl(Comment); diff --git a/app/javascript/mastodon/features/report/components/option.jsx b/app/javascript/mastodon/features/report/components/option.jsx index 42c04b018a..342204e22f 100644 --- a/app/javascript/mastodon/features/report/components/option.jsx +++ b/app/javascript/mastodon/features/report/components/option.jsx @@ -40,7 +40,7 @@ export default class Option extends React.PureComponent { ({ rules: state.getIn(['server', 'server', 'rules']), }); -export default @connect(mapStateToProps) class Rules extends React.PureComponent { static propTypes = { @@ -62,3 +61,5 @@ class Rules extends React.PureComponent { } } + +export default connect(mapStateToProps)(Rules); diff --git a/app/javascript/mastodon/features/report/statuses.jsx b/app/javascript/mastodon/features/report/statuses.jsx index d5d86034fb..87163aeb89 100644 --- a/app/javascript/mastodon/features/report/statuses.jsx +++ b/app/javascript/mastodon/features/report/statuses.jsx @@ -13,7 +13,6 @@ const mapStateToProps = (state, { accountId }) => ({ isLoading: state.getIn(['timelines', `account:${accountId}:with_replies`, 'isLoading']), }); -export default @connect(mapStateToProps) class Statuses extends React.PureComponent { static propTypes = { @@ -59,3 +58,5 @@ class Statuses extends React.PureComponent { } } + +export default connect(mapStateToProps)(Statuses); diff --git a/app/javascript/mastodon/features/report/thanks.jsx b/app/javascript/mastodon/features/report/thanks.jsx index d169b1e329..4e5b6e8648 100644 --- a/app/javascript/mastodon/features/report/thanks.jsx +++ b/app/javascript/mastodon/features/report/thanks.jsx @@ -12,7 +12,6 @@ import { const mapStateToProps = () => ({}); -export default @connect(mapStateToProps) class Thanks extends React.PureComponent { static propTypes = { @@ -82,3 +81,5 @@ class Thanks extends React.PureComponent { } } + +export default connect(mapStateToProps)(Thanks); diff --git a/app/javascript/mastodon/features/status/components/action_bar.jsx b/app/javascript/mastodon/features/status/components/action_bar.jsx index 0d4767331a..0c74c4cc4d 100644 --- a/app/javascript/mastodon/features/status/components/action_bar.jsx +++ b/app/javascript/mastodon/features/status/components/action_bar.jsx @@ -13,7 +13,7 @@ const messages = defineMessages({ delete: { id: 'status.delete', defaultMessage: 'Delete' }, redraft: { id: 'status.redraft', defaultMessage: 'Delete & re-draft' }, edit: { id: 'status.edit', defaultMessage: 'Edit' }, - direct: { id: 'status.direct', defaultMessage: 'Direct message @{name}' }, + direct: { id: 'status.direct', defaultMessage: 'Privately mention @{name}' }, mention: { id: 'status.mention', defaultMessage: 'Mention @{name}' }, reply: { id: 'status.reply', defaultMessage: 'Reply' }, reblog: { id: 'status.reblog', defaultMessage: 'Boost' }, @@ -47,8 +47,6 @@ const mapStateToProps = (state, { status }) => ({ relationship: state.getIn(['relationships', status.getIn(['account', 'id'])]), }); -export default @connect(mapStateToProps) -@injectIntl class ActionBar extends React.PureComponent { static contextTypes = { @@ -298,3 +296,5 @@ class ActionBar extends React.PureComponent { } } + +export default connect(mapStateToProps)(injectIntl(ActionBar)); diff --git a/app/javascript/mastodon/features/status/components/detailed_status.jsx b/app/javascript/mastodon/features/status/components/detailed_status.jsx index f9ff57261c..e4e5720268 100644 --- a/app/javascript/mastodon/features/status/components/detailed_status.jsx +++ b/app/javascript/mastodon/features/status/components/detailed_status.jsx @@ -6,7 +6,7 @@ import DisplayName from '../../../components/display_name'; import StatusContent from '../../../components/status_content'; import MediaGallery from '../../../components/media_gallery'; import { Link } from 'react-router-dom'; -import { injectIntl, defineMessages, FormattedDate } from 'react-intl'; +import { injectIntl, defineMessages, FormattedDate, FormattedMessage } from 'react-intl'; import Card from './card'; import ImmutablePureComponent from 'react-immutable-pure-component'; import Video from '../../video'; @@ -25,7 +25,6 @@ const messages = defineMessages({ direct_short: { id: 'privacy.direct.short', defaultMessage: 'Direct' }, }); -export default @injectIntl class DetailedStatus extends ImmutablePureComponent { static contextTypes = { @@ -263,7 +262,13 @@ class DetailedStatus extends ImmutablePureComponent { return (
    -
    +
    + {status.get('visibility') === 'direct' && ( +
    +
    + +
    + )}
    @@ -289,3 +294,5 @@ class DetailedStatus extends ImmutablePureComponent { } } + +export default injectIntl(DetailedStatus); diff --git a/app/javascript/mastodon/features/status/index.jsx b/app/javascript/mastodon/features/status/index.jsx index 2c6728fc05..2d18c6e9d9 100644 --- a/app/javascript/mastodon/features/status/index.jsx +++ b/app/javascript/mastodon/features/status/index.jsx @@ -176,8 +176,6 @@ const titleFromStatus = status => { return `${prefix}: "${truncate(text, 30)}"`; }; -export default @injectIntl -@connect(makeMapStateToProps) class Status extends ImmutablePureComponent { static contextTypes = { @@ -632,7 +630,7 @@ class Status extends ImmutablePureComponent { {ancestors} -
    +
    ({ }); -export default @connect(mapStateToProps, mapDispatchToProps) -@injectIntl class SubscribedLanguagesModal extends ImmutablePureComponent { static propTypes = { @@ -123,3 +121,5 @@ class SubscribedLanguagesModal extends ImmutablePureComponent { } } + +export default connect(mapStateToProps, mapDispatchToProps)(injectIntl(SubscribedLanguagesModal)); diff --git a/app/javascript/mastodon/features/ui/components/actions_modal.jsx b/app/javascript/mastodon/features/ui/components/actions_modal.jsx index fd59c1e206..35090e2426 100644 --- a/app/javascript/mastodon/features/ui/components/actions_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/actions_modal.jsx @@ -23,7 +23,7 @@ export default class ActionsModal extends ImmutablePureComponent { return (
  • - {icon && } + {icon && }
    {text}
    {meta}
    diff --git a/app/javascript/mastodon/features/ui/components/audio_modal.jsx b/app/javascript/mastodon/features/ui/components/audio_modal.jsx index a2fa8c49c3..c0ac12ba7b 100644 --- a/app/javascript/mastodon/features/ui/components/audio_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/audio_modal.jsx @@ -11,7 +11,6 @@ const mapStateToProps = (state, { statusId }) => ({ accountStaticAvatar: state.getIn(['accounts', state.getIn(['statuses', statusId, 'account']), 'avatar_static']), }); -export default @connect(mapStateToProps, null, null, { forwardRef: true }) class AudioModal extends ImmutablePureComponent { static propTypes = { @@ -55,3 +54,5 @@ class AudioModal extends ImmutablePureComponent { } } + +export default connect(mapStateToProps, null, null, { forwardRef: true })(AudioModal); diff --git a/app/javascript/mastodon/features/ui/components/block_modal.jsx b/app/javascript/mastodon/features/ui/components/block_modal.jsx index 6c9d2043ca..a9506aa69f 100644 --- a/app/javascript/mastodon/features/ui/components/block_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/block_modal.jsx @@ -36,8 +36,6 @@ const mapDispatchToProps = dispatch => { }; }; -export default @connect(makeMapStateToProps, mapDispatchToProps) -@injectIntl class BlockModal extends React.PureComponent { static propTypes = { @@ -101,3 +99,5 @@ class BlockModal extends React.PureComponent { } } + +export default connect(makeMapStateToProps, mapDispatchToProps)(injectIntl(BlockModal)); diff --git a/app/javascript/mastodon/features/ui/components/boost_modal.jsx b/app/javascript/mastodon/features/ui/components/boost_modal.jsx index d6a6cea31e..fe55c963a8 100644 --- a/app/javascript/mastodon/features/ui/components/boost_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/boost_modal.jsx @@ -38,8 +38,6 @@ const mapDispatchToProps = dispatch => { }; }; -export default @connect(mapStateToProps, mapDispatchToProps) -@injectIntl class BoostModal extends ImmutablePureComponent { static contextTypes = { @@ -140,3 +138,5 @@ class BoostModal extends ImmutablePureComponent { } } + +export default connect(mapStateToProps, mapDispatchToProps)(injectIntl(BoostModal)); diff --git a/app/javascript/mastodon/features/ui/components/bundle_column_error.jsx b/app/javascript/mastodon/features/ui/components/bundle_column_error.jsx index 9955173ebf..dc9b0e5392 100644 --- a/app/javascript/mastodon/features/ui/components/bundle_column_error.jsx +++ b/app/javascript/mastodon/features/ui/components/bundle_column_error.jsx @@ -92,7 +92,6 @@ class CopyButton extends React.PureComponent { } -export default @injectIntl class BundleColumnError extends React.PureComponent { static propTypes = { @@ -160,3 +159,5 @@ class BundleColumnError extends React.PureComponent { } } + +export default injectIntl(BundleColumnError); diff --git a/app/javascript/mastodon/features/ui/components/compare_history_modal.jsx b/app/javascript/mastodon/features/ui/components/compare_history_modal.jsx index cbb1567b70..1802c167c1 100644 --- a/app/javascript/mastodon/features/ui/components/compare_history_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/compare_history_modal.jsx @@ -24,7 +24,6 @@ const mapDispatchToProps = dispatch => ({ }); -export default @connect(mapStateToProps, mapDispatchToProps) class CompareHistoryModal extends React.PureComponent { static propTypes = { @@ -100,3 +99,5 @@ class CompareHistoryModal extends React.PureComponent { } } + +export default connect(mapStateToProps, mapDispatchToProps)(CompareHistoryModal); diff --git a/app/javascript/mastodon/features/ui/components/compose_panel.jsx b/app/javascript/mastodon/features/ui/components/compose_panel.jsx index 6cb3523224..1c6f80ad5c 100644 --- a/app/javascript/mastodon/features/ui/components/compose_panel.jsx +++ b/app/javascript/mastodon/features/ui/components/compose_panel.jsx @@ -8,7 +8,6 @@ import LinkFooter from './link_footer'; import ServerBanner from 'mastodon/components/server_banner'; import { changeComposing, mountCompose, unmountCompose } from 'mastodon/actions/compose'; -export default @connect() class ComposePanel extends React.PureComponent { static contextTypes = { @@ -66,3 +65,5 @@ class ComposePanel extends React.PureComponent { } } + +export default connect()(ComposePanel); diff --git a/app/javascript/mastodon/features/ui/components/confirmation_modal.jsx b/app/javascript/mastodon/features/ui/components/confirmation_modal.jsx index b023b00b25..4437567a14 100644 --- a/app/javascript/mastodon/features/ui/components/confirmation_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/confirmation_modal.jsx @@ -3,7 +3,6 @@ import PropTypes from 'prop-types'; import { injectIntl, FormattedMessage } from 'react-intl'; import Button from '../../../components/button'; -export default @injectIntl class ConfirmationModal extends React.PureComponent { static propTypes = { @@ -68,3 +67,5 @@ class ConfirmationModal extends React.PureComponent { } } + +export default injectIntl(ConfirmationModal); diff --git a/app/javascript/mastodon/features/ui/components/disabled_account_banner.jsx b/app/javascript/mastodon/features/ui/components/disabled_account_banner.jsx index 35520478b3..ea11cea44d 100644 --- a/app/javascript/mastodon/features/ui/components/disabled_account_banner.jsx +++ b/app/javascript/mastodon/features/ui/components/disabled_account_banner.jsx @@ -28,8 +28,6 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ }, }); -export default @injectIntl -@connect(mapStateToProps, mapDispatchToProps) class DisabledAccountBanner extends React.PureComponent { static propTypes = { @@ -90,3 +88,5 @@ class DisabledAccountBanner extends React.PureComponent { } } + +export default injectIntl(connect(mapStateToProps, mapDispatchToProps)(DisabledAccountBanner)); diff --git a/app/javascript/mastodon/features/ui/components/embed_modal.jsx b/app/javascript/mastodon/features/ui/components/embed_modal.jsx index a054dd3cf3..baf6be411f 100644 --- a/app/javascript/mastodon/features/ui/components/embed_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/embed_modal.jsx @@ -9,7 +9,6 @@ const messages = defineMessages({ close: { id: 'lightbox.close', defaultMessage: 'Close' }, }); -export default @injectIntl class EmbedModal extends ImmutablePureComponent { static propTypes = { @@ -95,3 +94,5 @@ class EmbedModal extends ImmutablePureComponent { } } + +export default injectIntl(EmbedModal); diff --git a/app/javascript/mastodon/features/ui/components/filter_modal.jsx b/app/javascript/mastodon/features/ui/components/filter_modal.jsx index 376db961d1..32ebaf7b79 100644 --- a/app/javascript/mastodon/features/ui/components/filter_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/filter_modal.jsx @@ -13,8 +13,6 @@ const messages = defineMessages({ close: { id: 'lightbox.close', defaultMessage: 'Close' }, }); -export default @connect(undefined) -@injectIntl class FilterModal extends ImmutablePureComponent { static propTypes = { @@ -132,3 +130,5 @@ class FilterModal extends ImmutablePureComponent { } } + +export default connect(injectIntl(FilterModal)); diff --git a/app/javascript/mastodon/features/ui/components/focal_point_modal.jsx b/app/javascript/mastodon/features/ui/components/focal_point_modal.jsx index 6e8d017eee..11c4c52375 100644 --- a/app/javascript/mastodon/features/ui/components/focal_point_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/focal_point_modal.jsx @@ -100,8 +100,6 @@ class ImageLoader extends React.PureComponent { } -export default @connect(mapStateToProps, mapDispatchToProps, null, { forwardRef: true }) -@(component => injectIntl(component, { withRef: true })) class FocalPointModal extends ImmutablePureComponent { static propTypes = { @@ -428,3 +426,7 @@ class FocalPointModal extends ImmutablePureComponent { } } + +export default connect(mapStateToProps, mapDispatchToProps, null, { + forwardRef: true, +})(injectIntl(FocalPointModal, { withRef: true })); diff --git a/app/javascript/mastodon/features/ui/components/follow_requests_column_link.jsx b/app/javascript/mastodon/features/ui/components/follow_requests_column_link.jsx index 8d4057782c..1cd1b79bce 100644 --- a/app/javascript/mastodon/features/ui/components/follow_requests_column_link.jsx +++ b/app/javascript/mastodon/features/ui/components/follow_requests_column_link.jsx @@ -15,8 +15,6 @@ const mapStateToProps = state => ({ count: state.getIn(['user_lists', 'follow_requests', 'items'], ImmutableList()).size, }); -export default @injectIntl -@connect(mapStateToProps) class FollowRequestsColumnLink extends React.Component { static propTypes = { @@ -49,3 +47,5 @@ class FollowRequestsColumnLink extends React.Component { } } + +export default injectIntl(connect(mapStateToProps)(FollowRequestsColumnLink)); diff --git a/app/javascript/mastodon/features/ui/components/header.jsx b/app/javascript/mastodon/features/ui/components/header.jsx index 1384bebda0..c14c6faa75 100644 --- a/app/javascript/mastodon/features/ui/components/header.jsx +++ b/app/javascript/mastodon/features/ui/components/header.jsx @@ -22,8 +22,6 @@ const mapDispatchToProps = (dispatch) => ({ }, }); -export default @connect(null, mapDispatchToProps) -@withRouter class Header extends React.PureComponent { static contextTypes = { @@ -85,3 +83,5 @@ class Header extends React.PureComponent { } } + +export default withRouter(connect(null, mapDispatchToProps)(Header)); diff --git a/app/javascript/mastodon/features/ui/components/image_modal.jsx b/app/javascript/mastodon/features/ui/components/image_modal.jsx index 7522c3da55..ca93d7b4ed 100644 --- a/app/javascript/mastodon/features/ui/components/image_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/image_modal.jsx @@ -9,7 +9,6 @@ const messages = defineMessages({ close: { id: 'lightbox.close', defaultMessage: 'Close' }, }); -export default @injectIntl class ImageModal extends React.PureComponent { static propTypes = { @@ -57,3 +56,5 @@ class ImageModal extends React.PureComponent { } } + +export default injectIntl(ImageModal); diff --git a/app/javascript/mastodon/features/ui/components/link_footer.jsx b/app/javascript/mastodon/features/ui/components/link_footer.jsx index be21112079..68ef015ab9 100644 --- a/app/javascript/mastodon/features/ui/components/link_footer.jsx +++ b/app/javascript/mastodon/features/ui/components/link_footer.jsx @@ -24,8 +24,6 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ }, }); -export default @injectIntl -@connect(null, mapDispatchToProps) class LinkFooter extends React.PureComponent { static contextTypes = { @@ -100,3 +98,5 @@ class LinkFooter extends React.PureComponent { } } + +export default injectIntl(connect(null, mapDispatchToProps)(LinkFooter)); diff --git a/app/javascript/mastodon/features/ui/components/list_panel.jsx b/app/javascript/mastodon/features/ui/components/list_panel.jsx index 2f92a9254e..fcff4e37dc 100644 --- a/app/javascript/mastodon/features/ui/components/list_panel.jsx +++ b/app/javascript/mastodon/features/ui/components/list_panel.jsx @@ -20,8 +20,6 @@ const mapStateToProps = state => ({ lists: getOrderedLists(state), }); -export default @withRouter -@connect(mapStateToProps) class ListPanel extends ImmutablePureComponent { static propTypes = { @@ -53,3 +51,5 @@ class ListPanel extends ImmutablePureComponent { } } + +export default withRouter(connect(mapStateToProps)(ListPanel)); diff --git a/app/javascript/mastodon/features/ui/components/media_modal.jsx b/app/javascript/mastodon/features/ui/components/media_modal.jsx index 086da8cf5e..52bd754535 100644 --- a/app/javascript/mastodon/features/ui/components/media_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/media_modal.jsx @@ -25,8 +25,6 @@ const mapStateToProps = (state, { statusId }) => ({ language: state.getIn(['statuses', statusId, 'language']), }); -export default @connect(mapStateToProps, null, null, { forwardRef: true }) -@injectIntl class MediaModal extends ImmutablePureComponent { static propTypes = { @@ -140,8 +138,8 @@ class MediaModal extends ImmutablePureComponent { const index = this.getIndex(); - const leftNav = media.size > 1 && ; - const rightNav = media.size > 1 && ; + const leftNav = media.size > 1 && ; + const rightNav = media.size > 1 && ; const content = media.map((image) => { const width = image.getIn(['meta', 'original', 'width']) || null; @@ -257,3 +255,5 @@ class MediaModal extends ImmutablePureComponent { } } + +export default connect(mapStateToProps, null, null, { forwardRef: true })(injectIntl(MediaModal)); diff --git a/app/javascript/mastodon/features/ui/components/modal_root.jsx b/app/javascript/mastodon/features/ui/components/modal_root.jsx index 5a17349771..c252e6caac 100644 --- a/app/javascript/mastodon/features/ui/components/modal_root.jsx +++ b/app/javascript/mastodon/features/ui/components/modal_root.jsx @@ -73,7 +73,7 @@ export default class ModalRoot extends React.PureComponent { document.documentElement.style.marginRight = `${getScrollbarWidth()}px`; } else { document.body.classList.remove('with-modals--active'); - document.documentElement.style.marginRight = 0; + document.documentElement.style.marginRight = '0'; } } diff --git a/app/javascript/mastodon/features/ui/components/mute_modal.jsx b/app/javascript/mastodon/features/ui/components/mute_modal.jsx index b3e0ef56be..fa64bf0f40 100644 --- a/app/javascript/mastodon/features/ui/components/mute_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/mute_modal.jsx @@ -43,8 +43,6 @@ const mapDispatchToProps = dispatch => { }; }; -export default @connect(mapStateToProps, mapDispatchToProps) -@injectIntl class MuteModal extends React.PureComponent { static propTypes = { @@ -138,3 +136,5 @@ class MuteModal extends React.PureComponent { } } + +export default connect(mapStateToProps, mapDispatchToProps)(injectIntl(MuteModal)); diff --git a/app/javascript/mastodon/features/ui/components/navigation_panel.jsx b/app/javascript/mastodon/features/ui/components/navigation_panel.jsx index 9a9309be05..ee1a83cc60 100644 --- a/app/javascript/mastodon/features/ui/components/navigation_panel.jsx +++ b/app/javascript/mastodon/features/ui/components/navigation_panel.jsx @@ -18,7 +18,7 @@ const messages = defineMessages({ explore: { id: 'explore.title', defaultMessage: 'Explore' }, local: { id: 'tabs_bar.local_timeline', defaultMessage: 'Local' }, federated: { id: 'tabs_bar.federated_timeline', defaultMessage: 'Federated' }, - direct: { id: 'navigation_bar.direct', defaultMessage: 'Direct messages' }, + direct: { id: 'navigation_bar.direct', defaultMessage: 'Private mentions' }, favourites: { id: 'navigation_bar.favourites', defaultMessage: 'Favourites' }, bookmarks: { id: 'navigation_bar.bookmarks', defaultMessage: 'Bookmarks' }, lists: { id: 'navigation_bar.lists', defaultMessage: 'Lists' }, @@ -28,7 +28,6 @@ const messages = defineMessages({ search: { id: 'navigation_bar.search', defaultMessage: 'Search' }, }); -export default @injectIntl class NavigationPanel extends React.Component { static contextTypes = { @@ -82,8 +81,8 @@ class NavigationPanel extends React.Component { {signedIn && ( - + @@ -105,3 +104,5 @@ class NavigationPanel extends React.Component { } } + +export default injectIntl(NavigationPanel); diff --git a/app/javascript/mastodon/features/ui/components/report_modal.jsx b/app/javascript/mastodon/features/ui/components/report_modal.jsx index 22c31eb52d..8b505b8bd8 100644 --- a/app/javascript/mastodon/features/ui/components/report_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/report_modal.jsx @@ -30,8 +30,6 @@ const makeMapStateToProps = () => { return mapStateToProps; }; -export default @connect(makeMapStateToProps) -@injectIntl class ReportModal extends ImmutablePureComponent { static propTypes = { @@ -217,3 +215,5 @@ class ReportModal extends ImmutablePureComponent { } } + +export default connect(makeMapStateToProps)(injectIntl(ReportModal)); diff --git a/app/javascript/mastodon/features/ui/components/video_modal.jsx b/app/javascript/mastodon/features/ui/components/video_modal.jsx index 1737d52dba..99359a58cc 100644 --- a/app/javascript/mastodon/features/ui/components/video_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/video_modal.jsx @@ -11,7 +11,6 @@ const mapStateToProps = (state, { statusId }) => ({ language: state.getIn(['statuses', statusId, 'language']), }); -export default @connect(mapStateToProps, null, null, { forwardRef: true }) class VideoModal extends ImmutablePureComponent { static propTypes = { @@ -68,3 +67,5 @@ class VideoModal extends ImmutablePureComponent { } } + +export default connect(mapStateToProps, null, null, { forwardRef: true })(VideoModal); diff --git a/app/javascript/mastodon/features/ui/components/zoomable_image.jsx b/app/javascript/mastodon/features/ui/components/zoomable_image.jsx index 7faba4c101..b41d0fe316 100644 --- a/app/javascript/mastodon/features/ui/components/zoomable_image.jsx +++ b/app/javascript/mastodon/features/ui/components/zoomable_image.jsx @@ -91,7 +91,6 @@ const normalizeWheel = event => { }; }; -export default @injectIntl class ZoomableImage extends React.PureComponent { static propTypes = { @@ -451,3 +450,5 @@ class ZoomableImage extends React.PureComponent { } } + +export default injectIntl(ZoomableImage); diff --git a/app/javascript/mastodon/features/ui/index.jsx b/app/javascript/mastodon/features/ui/index.jsx index 4f0ea04504..0e73f4c096 100644 --- a/app/javascript/mastodon/features/ui/index.jsx +++ b/app/javascript/mastodon/features/ui/index.jsx @@ -13,7 +13,7 @@ import { debounce } from 'lodash'; import { uploadCompose, resetCompose, changeComposeSpoilerness } from '../../actions/compose'; import { expandHomeTimeline } from '../../actions/timelines'; import { expandNotifications } from '../../actions/notifications'; -import { fetchServer } from '../../actions/server'; +import { fetchServer, fetchServerTranslationLanguages } from '../../actions/server'; import { clearHeight } from '../../actions/height_cache'; import { focusApp, unfocusApp, changeLayout } from 'mastodon/actions/app'; import { synchronouslySubmitMarkers, submitMarkers, fetchMarkers } from 'mastodon/actions/markers'; @@ -229,9 +229,6 @@ class SwitchingColumnsArea extends React.PureComponent { } -export default @connect(mapStateToProps) -@injectIntl -@withRouter class UI extends React.PureComponent { static contextTypes = { @@ -399,6 +396,7 @@ class UI extends React.PureComponent { this.props.dispatch(fetchMarkers()); this.props.dispatch(expandHomeTimeline()); this.props.dispatch(expandNotifications()); + this.props.dispatch(fetchServerTranslationLanguages()); setTimeout(() => this.props.dispatch(fetchServer()), 3000); } @@ -474,10 +472,10 @@ class UI extends React.PureComponent { }; handleHotkeyBack = () => { - if (window.history && window.history.length === 1) { - this.context.router.history.push('/'); - } else { + if (window.history && window.history.state) { this.context.router.history.goBack(); + } else { + this.context.router.history.push('/'); } }; @@ -587,3 +585,5 @@ class UI extends React.PureComponent { } } + +export default connect(mapStateToProps)(injectIntl(withRouter(UI))); diff --git a/app/javascript/mastodon/features/video/index.jsx b/app/javascript/mastodon/features/video/index.jsx index dc722a7a77..e2637e0bef 100644 --- a/app/javascript/mastodon/features/video/index.jsx +++ b/app/javascript/mastodon/features/video/index.jsx @@ -94,7 +94,6 @@ export const fileNameFromURL = str => { return pathname.slice(index + 1); }; -export default @injectIntl class Video extends React.PureComponent { static propTypes = { @@ -583,7 +582,7 @@ class Video extends React.PureComponent { poster={preview} preload={preload} role='button' - tabIndex='0' + tabIndex={0} aria-label={alt} title={alt} lang={lang} @@ -612,7 +611,7 @@ class Video extends React.PureComponent { @@ -628,7 +627,7 @@ class Video extends React.PureComponent {
    @@ -655,3 +654,5 @@ class Video extends React.PureComponent { } } + +export default injectIntl(Video); diff --git a/app/javascript/mastodon/initial_state.js b/app/javascript/mastodon/initial_state.js index c9c3a7647b..56b2f4eb2d 100644 --- a/app/javascript/mastodon/initial_state.js +++ b/app/javascript/mastodon/initial_state.js @@ -55,7 +55,7 @@ * @property {boolean=} delete_modal * @property {boolean=} disable_swiping * @property {string=} disabled_account_id - * @property {boolean} display_media + * @property {string} display_media * @property {string} domain * @property {boolean=} expand_spoilers * @property {boolean} limited_federation_mode @@ -80,7 +80,6 @@ * @property {boolean} use_blurhash * @property {boolean=} use_pending_items * @property {string} version - * @property {boolean} translation_enabled */ /** @@ -132,8 +131,8 @@ export const unfollowModal = getMeta('unfollow_modal'); export const useBlurhash = getMeta('use_blurhash'); export const usePendingItems = getMeta('use_pending_items'); export const version = getMeta('version'); -export const translationEnabled = getMeta('translation_enabled'); export const languages = initialState?.languages; +// @ts-expect-error export const statusPageUrl = getMeta('status_page_url'); // Glitch-soc-specific settings diff --git a/app/javascript/mastodon/is_mobile.js b/app/javascript/mastodon/is_mobile.js index 3c8ec1545c..d0669b74bf 100644 --- a/app/javascript/mastodon/is_mobile.js +++ b/app/javascript/mastodon/is_mobile.js @@ -1,6 +1,7 @@ // @ts-check import { supportsPassiveEvents } from 'detect-passive-events'; +// @ts-expect-error import { forceSingleColumn } from 'mastodon/initial_state'; const LAYOUT_BREAKPOINT = 630; @@ -24,6 +25,7 @@ export const layoutFromWindow = () => { } }; +// @ts-expect-error const iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream; const listenerOptions = supportsPassiveEvents ? { passive: true } : false; @@ -33,7 +35,7 @@ let userTouching = false; const touchListener = () => { userTouching = true; - window.removeEventListener('touchstart', touchListener, listenerOptions); + window.removeEventListener('touchstart', touchListener); }; window.addEventListener('touchstart', touchListener, listenerOptions); diff --git a/app/javascript/mastodon/load_polyfills.js b/app/javascript/mastodon/load_polyfills.js index f5a897f754..7909dc4ea3 100644 --- a/app/javascript/mastodon/load_polyfills.js +++ b/app/javascript/mastodon/load_polyfills.js @@ -12,10 +12,8 @@ function importExtraPolyfills() { function loadPolyfills() { const needsBasePolyfills = !( - Array.prototype.includes && HTMLCanvasElement.prototype.toBlob && window.Intl && - Number.isNaN && Object.assign && Object.values && window.Symbol && diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index 7d77246188..9c87eb44e2 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -20,7 +20,7 @@ "account.blocked": "Geblokkeer", "account.browse_more_on_origin_server": "Verken die oorspronklike profiel", "account.cancel_follow_request": "Herroep volgversoek", - "account.direct": "Stuur direkte boodskap aan @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Hou op om my van @{name} se plasings te laat weet", "account.domain_blocked": "Domein geblokkeer", "account.edit_profile": "Redigeer profiel", @@ -102,7 +102,7 @@ "column.blocks": "Geblokkeerde gebruikers", "column.bookmarks": "Boekmerke", "column.community": "Plaaslike tydlyn", - "column.direct": "Direkte boodskappe", + "column.direct": "Private mentions", "column.directory": "Blaai deur profiele", "column.domain_blocks": "Geblokkeerde domeine", "column.favourites": "Gunstelinge", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "confirmations.domain_block.confirm": "Blokkeer die hele domein", "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.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Teken Uit", "confirmations.logout.message": "Is jy seker jy wil uitteken?", "confirmations.mute.confirm": "Mute", @@ -214,7 +216,7 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "Jy het nog geen boekmerke gelaat nie. Boekmerke wat jy by plasings laat, sal jy hier sien.", "empty_column.community": "Die plaaslike tydlyn is leeg. Kry die bal aan die rol deur iets te skryf wat mense kan lees!", - "empty_column.direct": "Jy het nog nie direkte boodskappe nie. Wanneer jy een stuur of ontvang, sal dit hier verskyn.", + "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, 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": "Jy het nog geen gunstelingplasings nie. As jy een as gunsteling merk, sal jy dit hier sien.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Fokuskolom", "keyboard_shortcuts.compose": "Teksveld vir skryf", "keyboard_shortcuts.description": "Beskrywing", - "keyboard_shortcuts.direct": "om kolom vir direkte boodskappe oop te maak", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "Gaan afwaarts in die lys", "keyboard_shortcuts.enter": "Sien plasing", "keyboard_shortcuts.favourite": "Gunsteling", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Boekmerke", "navigation_bar.community_timeline": "Plaaslike tydlyn", "navigation_bar.compose": "Skep nuwe plasing", - "navigation_bar.direct": "Direkte boodskappe", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Geblokkeerde domeine", "navigation_bar.edit_profile": "Redigeer profiel", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Soek", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Soek of plak URL", - "search_popout.search_format": "Formaat vir gevorderd soek", - "search_popout.tips.full_text": "Gewone teks laat sien plasings wat jy geskryf het, van gehou het, aangestuur het of in genoem is, asook ooreenstemmende gebruikersname, vertoonde name en hutsetikette.", - "search_popout.tips.hashtag": "hutsetiket", - "search_popout.tips.status": "plasing", - "search_popout.tips.text": "Gewone teks laat sien ooreenstemmende name, gebruikersname en hutsetikette", - "search_popout.tips.user": "gebruiker", - "search_results.accounts": "Mense", + "search_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "Alles", "search_results.hashtags": "Hutsetiket", "search_results.nothing_found": "Hierdie soekwoorde lewer niks op nie", @@ -555,7 +559,8 @@ "status.copy": "Kopieer skakel na hierdie plasing", "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", - "status.direct": "Direct message @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Edit", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/mastodon/locales/an.json b/app/javascript/mastodon/locales/an.json index 389c512fea..9fea523c6f 100644 --- a/app/javascript/mastodon/locales/an.json +++ b/app/javascript/mastodon/locales/an.json @@ -20,7 +20,7 @@ "account.blocked": "Blocau", "account.browse_more_on_origin_server": "Veyer mas en o perfil orichinal", "account.cancel_follow_request": "Retirar solicitut de seguimiento", - "account.direct": "Mensache directo a @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Deixar de notificar-me quan @{name} publique bella cosa", "account.domain_blocked": "Dominio blocau", "account.edit_profile": "Editar perfil", @@ -102,7 +102,7 @@ "column.blocks": "Usuarios blocaus", "column.bookmarks": "Marcadors", "column.community": "Linia de tiempo local", - "column.direct": "Mensaches directos", + "column.direct": "Private mentions", "column.directory": "Buscar perfils", "column.domain_blocks": "Dominios amagaus", "column.favourites": "Favoritos", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Tiens cambios sin alzar en a descripción u vista previa d'o fichero audiovisual, descartar-los de totz modos?", "confirmations.domain_block.confirm": "Amagar dominio entero", "confirmations.domain_block.message": "Yes seguro que quiers blocar lo dominio {domain} entero? En cheneral ye prou, y preferible, fer uns quantos bloqueyos y silenciaus concretos. Los tuyos seguidros d'ixe dominio serán eliminaus.", + "confirmations.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Zarrar sesión", "confirmations.logout.message": "Yes seguro de querer zarrar la sesión?", "confirmations.mute.confirm": "Silenciar", @@ -214,7 +216,7 @@ "empty_column.blocks": "Encara no has blocau a garra usuario.", "empty_column.bookmarked_statuses": "Encara no tiens garra publicación alzada como marcador. Quan alces una, s'amostrará aquí.", "empty_column.community": "La linia de tiempo local ye vueda. Escribe bella cosa pa empecipiar la fiesta!", - "empty_column.direct": "Encara no tiens garra mensache directo. Quan ninvies u recibas un, s'amostrará aquí.", + "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Encara no i hai dominios amagaus.", "empty_column.explore_statuses": "Cosa ye en tendencia en este momento. Revisa mas tarde!", "empty_column.favourited_statuses": "Encara no tiens publicacions favoritas. Quan marques una como favorita, amaneixerá aquí.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Enfocar en una d'as columnas", "keyboard_shortcuts.compose": "Enfocar l'aria de redacción de texto", "keyboard_shortcuts.description": "Descripción", - "keyboard_shortcuts.direct": "pa ubrir la columna de mensaches directos", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "Mover enta baixo en a lista", "keyboard_shortcuts.enter": "Ubrir estau", "keyboard_shortcuts.favourite": "Anyadir en favoritos", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Marcadors", "navigation_bar.community_timeline": "Linia de tiempo local", "navigation_bar.compose": "Escribir nueva publicación", - "navigation_bar.direct": "Mensaches directos", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Descubrir", "navigation_bar.domain_blocks": "Dominios amagaus", "navigation_bar.edit_profile": "Editar perfil", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Infracción de regla", "report_notification.open": "Ubrir informe", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Buscar", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Buscar u apegar URL", - "search_popout.search_format": "Formato de busqueda abanzada", - "search_popout.tips.full_text": "Las busquedas de texto recuperan publicacions que has escrito, marcau como favoritas, retutau u en os quals has estau mencionau, asinas como usuarios, nombres y hashtags.", - "search_popout.tips.hashtag": "etiqueta", - "search_popout.tips.status": "status", - "search_popout.tips.text": "Lo texto simple torna correspondencias de nombre, usuario y hashtag", - "search_popout.tips.user": "usuario", - "search_results.accounts": "Chent", + "search_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "Totz", "search_results.hashtags": "Etiquetas", "search_results.nothing_found": "No se podió trobar cosa pa estes termins de busqueda", @@ -555,7 +559,8 @@ "status.copy": "Copiar vinclo a lo estau", "status.delete": "Borrar", "status.detailed_status": "Vista de conversación detallada", - "status.direct": "Mensache directo a @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Editar", "status.edited": "Editau {date}", "status.edited_x_times": "Editau {count, plural, one {{count} vez} other {{count} veces}}", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index cf5dfb55bf..399efe1439 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -20,7 +20,7 @@ "account.blocked": "محظور", "account.browse_more_on_origin_server": "تصفح المزيد في الملف الشخصي الأصلي", "account.cancel_follow_request": "إلغاء طلب المتابعة", - "account.direct": "مراسلة @{name} بشكل مباشر", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "توقف عن إشعاري عندما ينشر @{name}", "account.domain_blocked": "اسم النِّطاق محظور", "account.edit_profile": "تعديل الملف الشخصي", @@ -102,7 +102,7 @@ "column.blocks": "المُستَخدِمون المَحظورون", "column.bookmarks": "الفواصل المرجعية", "column.community": "الخيط الزمني المحلي", - "column.direct": "الرسائل المباشِرة", + "column.direct": "Private mentions", "column.directory": "تَصَفُّحُ المَلفات الشخصية", "column.domain_blocks": "النطاقات المحظورة", "column.favourites": "المُفَضَّلَة", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "لديك تغييرات غير محفوظة لوصف الوسائط أو معاينتها، تجاهلها على أي حال؟", "confirmations.domain_block.confirm": "حظر اِسم النِّطاق بشكلٍ كامل", "confirmations.domain_block.message": "متأكد من أنك تود حظر اسم النطاق {domain} بالكامل ؟ في غالب الأحيان يُستَحسَن كتم أو حظر بعض الحسابات بدلا من حظر نطاق بالكامل.\nلن تتمكن مِن رؤية محتوى هذا النطاق لا على خيوطك العمومية و لا في إشعاراتك. سوف يتم كذلك إزالة كافة متابعيك المنتمين إلى هذا النطاق.", + "confirmations.edit.confirm": "تعديل", + "confirmations.edit.message": "التعديل في الحين سوف يُعيد كتابة الرسالة التي أنت بصدد تحريرها. متأكد من أنك تريد المواصلة؟", "confirmations.logout.confirm": "خروج", "confirmations.logout.message": "متأكد من أنك تريد الخروج؟", "confirmations.mute.confirm": "أكتم", @@ -214,7 +216,7 @@ "empty_column.blocks": "لم تقم بحظر أي مستخدِم بعد.", "empty_column.bookmarked_statuses": "ليس لديك أية منشورات في الفواصل المرجعية بعد. عندما ستقوم بإضافة البعض منها، ستظهر هنا.", "empty_column.community": "الخط العام المحلي فارغ. أكتب شيئا ما للعامة كبداية!", - "empty_column.direct": "لم تتلق أية رسالة خاصة مباشِرة بعد. سوف يتم عرض الرسائل المباشرة هنا إن قمت بإرسال واحدة أو تلقيت البعض منها.", + "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "ليس هناك نطاقات تم حجبها بعد.", "empty_column.explore_statuses": "ليس هناك ما هو متداوَل الآن. عد في وقت لاحق!", "empty_column.favourited_statuses": "ليس لديك أية منشورات مفضلة بعد. عندما ستقوم بالإعجاب بواحدة، ستظهر هنا.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "للتركيز على منشور على أحد الأعمدة", "keyboard_shortcuts.compose": "للتركيز على نافذة تحرير النصوص", "keyboard_shortcuts.description": "الوصف", - "keyboard_shortcuts.direct": "لفتح عمود الرسائل المباشرة", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "للانتقال إلى أسفل القائمة", "keyboard_shortcuts.enter": "لفتح المنشور", "keyboard_shortcuts.favourite": "للإضافة إلى المفضلة", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "الفواصل المرجعية", "navigation_bar.community_timeline": "الخيط المحلي", "navigation_bar.compose": "تحرير منشور جديد", - "navigation_bar.direct": "الرسائل المباشِرة", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "اكتشف", "navigation_bar.domain_blocks": "النطاقات المحظورة", "navigation_bar.edit_profile": "عدّل الملف التعريفي", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "مزعج", "report_notification.categories.violation": "القاعدة المنتهَكة", "report_notification.open": "فتح التقرير", + "search.no_recent_searches": "No recent searches", "search.placeholder": "ابحث", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "ابحث أو أدخل رابطا تشعبيا URL", - "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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "الكل", "search_results.hashtags": "الوُسوم", "search_results.nothing_found": "تعذر العثور على نتائج تتضمن هذه المصطلحات", @@ -555,7 +559,8 @@ "status.copy": "انسخ رابط الرسالة", "status.delete": "احذف", "status.detailed_status": "تفاصيل المحادثة", - "status.direct": "رسالة خاصة إلى @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "تعديل", "status.edited": "عُدّل في {date}", "status.edited_x_times": "عُدّل {count, plural, zero {} one {مرةً واحدة} two {مرّتان} few {{count} مرات} many {{count} مرة} other {{count} مرة}}", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 018d950d74..c0920bbecc 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -20,7 +20,7 @@ "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Restolar más nel perfil orixinal", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "Unviar un mensaxe direutu a @{name}", + "account.direct": "Mentar a @{name} per privao", "account.disable_notifications": "Dexar d'avisame cuando @{name} espublice artículos", "account.domain_blocked": "Domain blocked", "account.edit_profile": "Editar el perfil", @@ -38,7 +38,7 @@ "account.follows.empty": "Esti perfil entá nun sigue a naide.", "account.follows_you": "Síguete", "account.go_to_profile": "Go to profile", - "account.hide_reblogs": "Hide boosts from @{name}", + "account.hide_reblogs": "Anubrir los artículos compartíos de @{name}", "account.joined_short": "Data de xunión", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", @@ -65,7 +65,7 @@ "account.unfollow": "Dexar de siguir", "account.unmute": "Activar los avisos de @{name}", "account.unmute_notifications": "Activar los avisos de @{name}", - "account.unmute_short": "Unmute", + "account.unmute_short": "Activar los avisos", "account_note.placeholder": "Calca equí p'amestar 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", @@ -102,7 +102,7 @@ "column.blocks": "Perfiles bloquiaos", "column.bookmarks": "Marcadores", "column.community": "Llinia de tiempu llocal", - "column.direct": "Mensaxes direutos", + "column.direct": "Menciones privaes", "column.directory": "Browse profiles", "column.domain_blocks": "Dominios bloquiaos", "column.favourites": "Favoritos", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "confirmations.domain_block.confirm": "Bloquiar tol dominiu", "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.edit.confirm": "Edit", + "confirmations.edit.message": "La edición va sobrescribir el mensaxe que tas escribiendo. ¿De xuru que quies siguir?", "confirmations.logout.confirm": "Zarrar la sesión", "confirmations.logout.message": "¿De xuru que quies zarrar la sesión?", "confirmations.mute.confirm": "Mute", @@ -213,8 +215,8 @@ "empty_column.account_unavailable": "Profile unavailable", "empty_column.blocks": "Entá nun bloquiesti a nengún perfil.", "empty_column.bookmarked_statuses": "Entá nun tienes nengún artículu en Marcadores. Cuando amiestes dalgún, apaez equí.", - "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "Entá nun tienes nengún mensaxe direutu. Cuando unvies o recibas dalgún, apaez equí.", + "empty_column.community": "La llinia de tiempu llocal ta balera. ¡Espubliza daqué públicamente pa comenzar l'alderique!", + "empty_column.direct": "Entá nun tienes nenguna mención privada. Cuando unvies o recibas dalguna, apaez equí.", "empty_column.domain_blocks": "Entá nun hai nengún dominiu bloquiáu.", "empty_column.explore_statuses": "Agora nun hai nada en tendencia. ¡Volvi equí dempués!", "empty_column.favourited_statuses": "Entá nun marquesti nengún artículu como favoritu. Cuando marques dalgún, apaez equí.", @@ -233,7 +235,7 @@ "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": "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 error.", "error.unexpected_crash.next_steps": "Prueba a anovar la páxina. Si nun sirve, ye posible que tovía seyas a usar Mastodon pente otru restolador o una aplicación nativa.", - "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.", + "error.unexpected_crash.next_steps_addons": "Prueba a desactivalos ya a anovar la páxina. Si nun sirve, ye posible que tovía seyas a usar Mastodon pente otru restolador o una aplicación nativa.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", "errors.unexpected_crash.report_issue": "Report issue", "explore.search_results": "Resultaos de la busca", @@ -274,7 +276,7 @@ "footer.source_code": "Ver el códigu fonte", "footer.status": "Estáu", "generic.saved": "Guardóse", - "getting_started.heading": "Getting started", + "getting_started.heading": "Comienzu", "hashtag.column_header.tag_mode.all": "y {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "ensin {additional}", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Enfocar una columna", "keyboard_shortcuts.compose": "Enfocar l'área de composición", "keyboard_shortcuts.description": "Descripción", - "keyboard_shortcuts.direct": "Abrir la columna de mensaxes direutos", + "keyboard_shortcuts.direct": "p'abrir la columna de les menciones privaes", "keyboard_shortcuts.down": "Baxar na llista", "keyboard_shortcuts.enter": "Abrir un artículu", "keyboard_shortcuts.favourite": "Marcar un artículu como favoritu", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Llinia de tiempu llocal", "navigation_bar.compose": "Compose new post", - "navigation_bar.direct": "Mensaxes direutos", + "navigation_bar.direct": "Menciones privaes", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Dominios bloquiaos", "navigation_bar.edit_profile": "Editar el perfil", @@ -491,7 +493,7 @@ "report.comment.title": "¿Hai daqué más qu'habríemos saber?", "report.forward": "Reunviar a {target}", "report.forward_hint": "La cuenta ye d'otru sirvidor. ¿Quies unviar a esi sirvidor una copia anónima del informe?", - "report.mute": "Mute", + "report.mute": "Desactivar los avisos", "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", @@ -508,11 +510,11 @@ "report.statuses.subtitle": "Select all that apply", "report.statuses.title": "¿Hai dalgún artículu qu'apoye esti informe?", "report.submit": "Unviar", - "report.target": "Report {target}", + "report.target": "Informe de: {target}", "report.thanks.take_action": "Equí tienes les opciones pa controlar qué ves 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.thanks.take_action_actionable": "Mentanto revisamos esti informe, pues tomar midíes contra @{name}:", + "report.thanks.title": "¿Nun quies ver esti conteníu?", + "report.thanks.title_actionable": "Gracies pol informe, el casu xá ta n'investigación.", "report.unfollow": "Dexar de siguir a @{name}", "report.unfollow_explanation": "Sigues a esta cuenta. Pa dexar de ver los sos artículos nel to feed d'aniciu, dexa de siguila.", "report_notification.attached_statuses": "{count, plural, one {Axuntóse {count} artículu} other {Axuntáronse {count} artículos}}", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Abrir l'informe", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Buscar", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Busca o apiega una URL", - "search_popout.search_format": "Formatu de busca 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", - "search_popout.tips.status": "artículu", - "search_popout.tips.text": "El testu simple devuelve nomes visibles, cuentes ya etiquetes que concasen", - "search_popout.tips.user": "perfil", - "search_results.accounts": "Perfiles", + "search_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "All", "search_results.hashtags": "Etiquetes", "search_results.nothing_found": "Nun se pudo atopar nada con esos términos de busca", @@ -555,7 +559,8 @@ "status.copy": "Copiar l'enllaz al artículu", "status.delete": "Desaniciar", "status.detailed_status": "Detailed conversation view", - "status.direct": "Unviar un mensaxe direutu a @{name}", + "status.direct": "Mentar a @{name} per privao", + "status.direct_indicator": "Mención privada", "status.edit": "Edit", "status.edited": "Editóse'l {date}", "status.edited_x_times": "Editóse {count, plural, one {{count} vegada} other {{count} vegaes}}", diff --git a/app/javascript/mastodon/locales/be.json b/app/javascript/mastodon/locales/be.json index 08aa5ef3b2..72224a71cf 100644 --- a/app/javascript/mastodon/locales/be.json +++ b/app/javascript/mastodon/locales/be.json @@ -20,7 +20,7 @@ "account.blocked": "Заблакіраваны", "account.browse_more_on_origin_server": "Глядзіце больш у арыгінальным профілі", "account.cancel_follow_request": "Скасаваць запыт на падпіску", - "account.direct": "Асабістае паведамленне @{name}", + "account.direct": "Асабістая згадка @{name}", "account.disable_notifications": "Не паведамляць мне пра публікацыі @{name}", "account.domain_blocked": "Дамен заблакаваны", "account.edit_profile": "Рэдагаваць профіль", @@ -102,7 +102,7 @@ "column.blocks": "Заблакіраваныя карыстальнікі", "column.bookmarks": "Закладкі", "column.community": "Лакальная стужка", - "column.direct": "Асабістыя паведамленні", + "column.direct": "Асабістыя згадкі", "column.directory": "Праглядзець профілі", "column.domain_blocks": "Заблакіраваныя дамены", "column.favourites": "Упадабаныя", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "У вас ёсць незахаваныя змены ў апісанні або прэв'ю, усе роўна скасаваць іх?", "confirmations.domain_block.confirm": "Заблакіраваць дамен цалкам", "confirmations.domain_block.message": "Вы абсалютна дакладна ўпэўнены, што хочаце заблакіраваць {domain} зусім? У большасці выпадкаў, дастаткова некалькіх мэтавых блакіровак ці ігнараванняў. Вы перастанеце бачыць змесціва з гэтага дамену ва ўсіх стужках і апавяшчэннях. Вашы падпіскі з гэтага дамену будуць выдаленыя.", + "confirmations.edit.confirm": "Рэдагаваць", + "confirmations.edit.message": "Калі вы зменіце зараз, гэта ператрэ паведамленне, якое вы пішаце. Вы ўпэўнены, што хочаце працягнуць?", "confirmations.logout.confirm": "Выйсці", "confirmations.logout.message": "Вы ўпэўненыя, што хочаце выйсці?", "confirmations.mute.confirm": "Ігнараваць", @@ -203,7 +205,7 @@ "emoji_button.not_found": "Адпаведныя эмодзі не знойдзены", "emoji_button.objects": "Прадметы", "emoji_button.people": "Людзі", - "emoji_button.recent": "Карыстаныя найчасцей", + "emoji_button.recent": "Чата выкарыстаныя", "emoji_button.search": "Пошук...", "emoji_button.search_results": "Вынікі пошуку", "emoji_button.symbols": "Сімвалы", @@ -214,7 +216,7 @@ "empty_column.blocks": "Вы яшчэ нікога не заблакіравалі.", "empty_column.bookmarked_statuses": "У вас яшчэ няма паведамленняў з закладкамі. Калі вы дадасце закладку, яна з'явіцца тут.", "empty_column.community": "Мясцовая стужка пустая. Напішыце што-небудзь публічна, каб зрушыць з месца!", - "empty_column.direct": "Пакуль у вас няма асабістых паведамленняў. Калі вы дашляце або атрымаеце штось, яно з'явіцца тут.", + "empty_column.direct": "Пакуль у вас няма асабістых згадак. Калі вы дашляце або атрымаеце штось, яно з'явіцца тут.", "empty_column.domain_blocks": "Заблакіраваных даменаў пакуль няма.", "empty_column.explore_statuses": "Зараз не ў трэндзе. Праверце пазней", "empty_column.favourited_statuses": "Вы яшчэ не ўпадабалі ніводны допіс. Калі гэта адбудзецца, вы ўбачыце яго тут.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Сфакусіравацца на калонцы", "keyboard_shortcuts.compose": "Сфакусіравацца на тэкставай вобласці", "keyboard_shortcuts.description": "Апісанне", - "keyboard_shortcuts.direct": "для адкрыцця калонкі прыватных паведамленняў", + "keyboard_shortcuts.direct": "адкрыць стоўп асабістых згадак", "keyboard_shortcuts.down": "Перамясціцца ўніз па спісе", "keyboard_shortcuts.enter": "Адкрыць допіс", "keyboard_shortcuts.favourite": "Упадабаць допіс", @@ -354,10 +356,10 @@ "lists.edit.submit": "Змяніць назву", "lists.new.create": "Дадаць спіс", "lists.new.title_placeholder": "Назва новага спіса", - "lists.replies_policy.followed": "Любы карыстальнік, за якім вы падпісаліся", + "lists.replies_policy.followed": "Любы карыстальнік, на якога вы падпісаліся", "lists.replies_policy.list": "Удзельнікі гэтага спісу", "lists.replies_policy.none": "Нікога", - "lists.replies_policy.title": "Паказаць адказы да:", + "lists.replies_policy.title": "Паказваць адказы:", "lists.search": "Шукайце сярод людзей, на якіх Вы падпісаны", "lists.subheading": "Вашыя спісы", "load_pending": "{count, plural, one {# новы элемент} few {# новыя элементы} many {# новых элементаў} other {# новых элементаў}}", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Закладкі", "navigation_bar.community_timeline": "Лакальная стужка", "navigation_bar.compose": "Стварыць новы допіс", - "navigation_bar.direct": "Асабістыя паведамленні", + "navigation_bar.direct": "Асабістыя згадкі", "navigation_bar.discover": "Даведайцесь", "navigation_bar.domain_blocks": "Заблакіраваныя дамены", "navigation_bar.edit_profile": "Рэдагаваць профіль", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Спам", "report_notification.categories.violation": "Парушэнне правілаў", "report_notification.open": "Адкрыць скаргу", + "search.no_recent_searches": "Гісторыя пошуку пустая", "search.placeholder": "Пошук", + "search.quick_action.account_search": "Супадзенне профіляў {x}", + "search.quick_action.go_to_account": "Перайсці да профілю {x}", + "search.quick_action.go_to_hashtag": "Перайсці да хэштэгу {x}", + "search.quick_action.open_url": "Адкрыць спасылку ў Mastodon", + "search.quick_action.status_search": "Супадзенне паведамленняў {x}", "search.search_or_paste": "Увядзіце спасылку або пошукавы запыт", - "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_popout.quick_actions": "Хуткія дзеянні", + "search_popout.recent": "Нядаўнія запыты", + "search_results.accounts": "Профілі", "search_results.all": "Усё", "search_results.hashtags": "Хэштэгі", "search_results.nothing_found": "Па дадзенаму запыту нічога не знойдзена", @@ -555,7 +559,8 @@ "status.copy": "Скапіраваць спасылку на допіс", "status.delete": "Выдаліць", "status.detailed_status": "Дэтальны агляд размовы", - "status.direct": "Асабістае паведамленне @{name}", + "status.direct": "Асабістая згадка @{name}", + "status.direct_indicator": "Асабістая згадка", "status.edit": "Рэдагаваць", "status.edited": "Адрэдагавана {date}", "status.edited_x_times": "Рэдагавана {count, plural, one {{count} раз} few {{count} разы} many {{count} разоў} other {{count} разу}}", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index cd6baafac7..284e6b22bf 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -18,9 +18,9 @@ "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.direct": "Privately mention @{name}", "account.disable_notifications": "Сприране на известия при публикуване от @{name}", "account.domain_blocked": "Блокиран домейн", "account.edit_profile": "Редактиране на профила", @@ -102,7 +102,7 @@ "column.blocks": "Блокирани потребители", "column.bookmarks": "Отметки", "column.community": "Локална часова ос", - "column.direct": "Директни съобщения", + "column.direct": "Private mentions", "column.directory": "Разглеждане на профили", "column.domain_blocks": "Блокирани домейни", "column.favourites": "Любими", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Не сте запазили промени на описанието или огледа на мултимедията, отхвърляте ли ги?", "confirmations.domain_block.confirm": "Блокиране на целия домейн", "confirmations.domain_block.message": "Наистина ли искате да блокирате целия {domain}? В повечето случаи няколко блокирания или заглушавания са достатъчно и за предпочитане. Няма да виждате съдържание от домейна из публични часови оси или известията си. Вашите последователи от този домейн ще се премахнат.", + "confirmations.edit.confirm": "Редактиране", + "confirmations.edit.message": "Редактирането сега ще замени съобщението, което в момента съставяте. Сигурни ли сте, че искате да продължите?", "confirmations.logout.confirm": "Излизане", "confirmations.logout.message": "Наистина ли искате да излезете?", "confirmations.mute.confirm": "Заглушаване", @@ -214,7 +216,7 @@ "empty_column.blocks": "Още не сте блокирали никакви потребители.", "empty_column.bookmarked_statuses": "Още не сте отметнали публикации. Отметвайки някоя, то тя ще се покаже тук.", "empty_column.community": "Местната часова ос е празна. Напишете нещо обществено, за да завъртите нещата!", - "empty_column.direct": "Все още нямате лични съобщения. Когато изпратите или получите някое, то ще се покаже тук.", + "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Още няма блокирани домейни.", "empty_column.explore_statuses": "Няма нищо налагащо се в момента. Проверете пак по-късно!", "empty_column.favourited_statuses": "Още нямате любими публикации. Поставяйки някоя в любими, то тя ще се покаже тук.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Съсредоточение на колона", "keyboard_shortcuts.compose": "Фокус на текстовата зона за съставяне", "keyboard_shortcuts.description": "Опис", - "keyboard_shortcuts.direct": "за отваряне на колоната с лични съобщения", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "Преместване надолу в списъка", "keyboard_shortcuts.enter": "Отваряне на публикация", "keyboard_shortcuts.favourite": "Към любими публикации", @@ -353,7 +355,7 @@ "lists.edit": "Промяна на списъка", "lists.edit.submit": "Промяна на заглавие", "lists.new.create": "Добавяне на списък", - "lists.new.title_placeholder": "Име на нов списък", + "lists.new.title_placeholder": "Ново заглавие на списъка", "lists.replies_policy.followed": "Някой последван потребител", "lists.replies_policy.list": "Членуващите в списъка", "lists.replies_policy.none": "Никого", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Отметки", "navigation_bar.community_timeline": "Локален инфопоток", "navigation_bar.compose": "Съставяне на нова публикация", - "navigation_bar.direct": "Директни съобщения", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Откриване", "navigation_bar.domain_blocks": "Блокирани домейни", "navigation_bar.edit_profile": "Редактиране на профила", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Спам", "report_notification.categories.violation": "Нарушение на правилото", "report_notification.open": "Отваряне на доклада", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Търсене", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Търсене или поставяне на URL адрес", - "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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "Всичко", "search_results.hashtags": "Хаштагове", "search_results.nothing_found": "Не може да се намери каквото и да било за тези термини при търсене", @@ -555,7 +559,8 @@ "status.copy": "Копиране на връзката към публикация", "status.delete": "Изтриване", "status.detailed_status": "Подробен изглед на разговора", - "status.direct": "Директно съобщение до @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Редактиране", "status.edited": "Редактирано на {date}", "status.edited_x_times": "Редактирано {count, plural,one {{count} път} other {{count} пъти}}", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index 07609a478d..ccd856abc7 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -20,7 +20,7 @@ "account.blocked": "অবরুদ্ধ", "account.browse_more_on_origin_server": "মূল প্রোফাইলটিতে আরও ব্রাউজ করুন", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "@{name} কে সরাসরি বার্তা", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "ডোমেন গোপন করুন", "account.edit_profile": "প্রোফাইল পরিবর্তন করুন", @@ -102,7 +102,7 @@ "column.blocks": "যাদের ব্লক করা হয়েছে", "column.bookmarks": "বুকমার্ক", "column.community": "স্থানীয় সময়সারি", - "column.direct": "Direct messages", + "column.direct": "Private mentions", "column.directory": "প্রোফাইল ব্রাউজ করুন", "column.domain_blocks": "লুকোনো ডোমেনগুলি", "column.favourites": "পছন্দের গুলো", @@ -162,6 +162,8 @@ "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.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "প্রস্থান", "confirmations.logout.message": "আপনি লগ আউট করতে চান?", "confirmations.mute.confirm": "সরিয়ে ফেলুন", @@ -214,7 +216,7 @@ "empty_column.blocks": "আপনি কোনো ব্যবহারকারীদের ব্লক করেন নি।", "empty_column.bookmarked_statuses": "আপনার কাছে এখনও কোনও বুকমার্কড টুট নেই। আপনি যখন একটি বুকমার্ক করেন, এটি এখানে প্রদর্শিত হবে।", "empty_column.community": "স্থানীয় সময়রেখাতে কিছু নেই। প্রকাশ্যভাবে কিছু লিখে লেখালেখির উদ্বোধন করে ফেলুন!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, 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": "আপনার পছন্দের কোনো টুট এখনো নেই। আপনি কোনো লেখা পছন্দের হিসেবে চিহ্নিত করলে এখানে পাওয়া যাবে।", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "বুকমার্ক", "navigation_bar.community_timeline": "স্থানীয় সময়রেখা", "navigation_bar.compose": "নতুন টুট লিখুন", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "ঘুরে দেখুন", "navigation_bar.domain_blocks": "লুকানো ডোমেনগুলি", "navigation_bar.edit_profile": "নিজের পাতা সম্পাদনা করতে", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "No recent searches", "search.placeholder": "অনুসন্ধান", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Search or paste URL", - "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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "All", "search_results.hashtags": "হ্যাশট্যাগগুলি", "search_results.nothing_found": "Could not find anything for these search terms", @@ -555,7 +559,8 @@ "status.copy": "লেখাটির লিংক কপি করতে", "status.delete": "মুছে ফেলতে", "status.detailed_status": "বিস্তারিত কথোপকথনের হিসেবে দেখতে", - "status.direct": "@{name} কে সরাসরি লেখা পাঠাতে", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Edit", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index bb19a0452d..c8ec088e13 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -20,7 +20,7 @@ "account.blocked": "Stanket", "account.browse_more_on_origin_server": "Furchal pelloc'h war ar profil orin", "account.cancel_follow_request": "Nullañ ar reked heuliañ", - "account.direct": "Kas ur c'hannad eeun da @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Paouez d'am c'hemenn pa vez embannet traoù gant @{name}", "account.domain_blocked": "Domani stanket", "account.edit_profile": "Kemmañ ar profil", @@ -102,7 +102,7 @@ "column.blocks": "Implijer·ezed·ien berzet", "column.bookmarks": "Sinedoù", "column.community": "Red-amzer lec'hel", - "column.direct": "Kannadoù eeun", + "column.direct": "Private mentions", "column.directory": "Mont a-dreuz ar profiloù", "column.domain_blocks": "Domani berzet", "column.favourites": "Muiañ-karet", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Bez ez eus kemmoù n'int ket enrollet e deskrivadur ar media pe ar rakwel, nullañ anezho evelato?", "confirmations.domain_block.confirm": "Berzañ an domani a-bezh", "confirmations.domain_block.message": "Ha sur oc'h e fell deoc'h berzañ an {domain} a-bezh? Peurvuiañ eo trawalc'h berzañ pe mudañ un nebeud implijer·ezed·ien. Ne welot danvez ebet o tont eus an domani-mañ. Dilamet e vo ar c'houmanantoù war an domani-mañ.", + "confirmations.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Digevreañ", "confirmations.logout.message": "Ha sur oc'h e fell deoc'h digevreañ ?", "confirmations.mute.confirm": "Kuzhat", @@ -214,7 +216,7 @@ "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 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 kannad eeun ebet c'hoazh. Pa vo resevet pe kaset unan ganeoc'h e teuio war wel amañ.", + "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "N'eus domani kuzh ebet c'hoazh.", "empty_column.explore_statuses": "N'eus tuadur ebet evit c'hoazh. Distroit diwezhatoc'h !", "empty_column.favourited_statuses": "N'ho peus toud muiañ-karet ebet c'hoazh. Pa vo ouzhpennet unan e teuio war wel amañ.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Fokus ar bann", "keyboard_shortcuts.compose": "Fokus an takad testenn", "keyboard_shortcuts.description": "Deskrivadur", - "keyboard_shortcuts.direct": "evit digeriñ bann ar c'hannadoù eeun", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "Diskennañ er roll", "keyboard_shortcuts.enter": "Digeriñ an toud", "keyboard_shortcuts.favourite": "Ouzhpennañ an toud d'ar re vuiañ-karet", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Sinedoù", "navigation_bar.community_timeline": "Red-amzer lec'hel", "navigation_bar.compose": "Skrivañ un toud nevez", - "navigation_bar.direct": "Kannadoù eeun", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Dizoleiñ", "navigation_bar.domain_blocks": "Domanioù kuzhet", "navigation_bar.edit_profile": "Kemmañ ar profil", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Torradur da reolennoù ar servijer", "report_notification.open": "Digeriñ an disklêriadur", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Klask", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Klask pe pegañ un URL", - "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.", - "search_popout.tips.hashtag": "ger-klik", - "search_popout.tips.status": "toud", - "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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "Pep tra", "search_results.hashtags": "Gerioù-klik", "search_results.nothing_found": "Disoc'h ebet gant ar gerioù-se", @@ -555,7 +559,8 @@ "status.copy": "Eilañ liamm ar c'hannad", "status.delete": "Dilemel", "status.detailed_status": "Gwel kaozeadenn munudek", - "status.direct": "Kas ur c'hannad eeun da @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Kemmañ", "status.edited": "Aozet {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/mastodon/locales/bs.json b/app/javascript/mastodon/locales/bs.json index bd89ec9fd2..c2d34b7151 100644 --- a/app/javascript/mastodon/locales/bs.json +++ b/app/javascript/mastodon/locales/bs.json @@ -20,7 +20,7 @@ "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Browse more on the original profile", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "Direct message @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain blocked", "account.edit_profile": "Edit profile", @@ -102,7 +102,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.direct": "Private mentions", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "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.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Log out", "confirmations.logout.message": "Are you sure you want to log out?", "confirmations.mute.confirm": "Mute", @@ -214,7 +216,7 @@ "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.direct": "You don't have any private mentions yet. When you send or receive one, 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.", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new post", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Search", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Search or paste URL", - "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.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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "All", "search_results.hashtags": "Hashtags", "search_results.nothing_found": "Could not find anything for these search terms", @@ -555,7 +559,8 @@ "status.copy": "Copy link to status", "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", - "status.direct": "Direct message @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Edit", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 381deaa0c4..dd30da2157 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -20,7 +20,7 @@ "account.blocked": "Blocat", "account.browse_more_on_origin_server": "Explora'n més al perfil original", "account.cancel_follow_request": "Retira la sol·licitud de seguiment", - "account.direct": "Missatge directe a @{name}", + "account.direct": "Mencionant privadament @{name}", "account.disable_notifications": "Deixa de notificar-me els tuts de @{name}", "account.domain_blocked": "Domini blocat", "account.edit_profile": "Edita el perfil", @@ -102,7 +102,7 @@ "column.blocks": "Usuaris blocats", "column.bookmarks": "Marcadors", "column.community": "Línia de temps local", - "column.direct": "Missatges directes", + "column.direct": "Mencions privades", "column.directory": "Navega pels perfils", "column.domain_blocks": "Dominis blocats", "column.favourites": "Favorits", @@ -162,6 +162,8 @@ "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": "Bloca el domini sencer", "confirmations.domain_block.message": "Segur que vols blocar {domain} del tot? En la majoria dels casos, només amb blocar o silenciar uns pocs comptes n'hi ha prou i és millor. No veuràs el contingut d’aquest domini en cap de les línies de temps ni en les notificacions. S'eliminaran els teus seguidors d’aquest domini.", + "confirmations.edit.confirm": "Edita", + "confirmations.edit.message": "Editant ara sobreescriuràs el missatge que estàs editant. Segur que vols continuar?", "confirmations.logout.confirm": "Tanca la sessió", "confirmations.logout.message": "Segur que vols tancar la sessió?", "confirmations.mute.confirm": "Silencia", @@ -214,7 +216,7 @@ "empty_column.blocks": "Encara no has blocat cap usuari.", "empty_column.bookmarked_statuses": "Encara no has marcat cap tut. Quan en marquis un, 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.direct": "Encara no tens missatges directes. Quan n'enviïs o en rebis un, sortirà aquí.", + "empty_column.direct": "Encara no tens mencions privades. Quan n'enviïs o en rebis una, et sortirà aquí.", "empty_column.domain_blocks": "Encara no hi ha dominis blocats.", "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 afavorit cap tut. Quan ho facis, apareixerà aquí.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Centra la columna", "keyboard_shortcuts.compose": "Centra l'àrea de composició de text", "keyboard_shortcuts.description": "Descripció", - "keyboard_shortcuts.direct": "Obre la columna de missatges directes", + "keyboard_shortcuts.direct": "per a obrir la columna de mencions privades", "keyboard_shortcuts.down": "Abaixa a la llista", "keyboard_shortcuts.enter": "Obre el tut", "keyboard_shortcuts.favourite": "Afavoreix el tut", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Marcadors", "navigation_bar.community_timeline": "Línia de temps local", "navigation_bar.compose": "Redacta un tut", - "navigation_bar.direct": "Missatges directes", + "navigation_bar.direct": "Mencions privades", "navigation_bar.discover": "Descobreix", "navigation_bar.domain_blocks": "Dominis blocats", "navigation_bar.edit_profile": "Edita el perfil", @@ -437,7 +439,7 @@ "notifications.group": "{count} notificacions", "notifications.mark_as_read": "Marca cada notificació com a llegida", "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 ha estat denegat abans", + "notifications.permission_denied_alert": "No es poden activar les notificacions de l'escriptori perquè abans s'ha denegat el permís del navegador", "notifications.permission_required": "Les notificacions d'escriptori no estan disponibles perquè el permís requerit no ha estat concedit.", "notifications_permission_banner.enable": "Activa les notificacions d’escriptori", "notifications_permission_banner.how_to_control": "Per a rebre notificacions quan Mastodon no és 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.", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Brossa", "report_notification.categories.violation": "Violació de norma", "report_notification.open": "Obre un informe", + "search.no_recent_searches": "No hi ha cerques recents", "search.placeholder": "Cerca", + "search.quick_action.account_search": "Perfils coincidents {x}", + "search.quick_action.go_to_account": "Anar al perfil {x}", + "search.quick_action.go_to_hashtag": "Anar a la etiqueta {x}", + "search.quick_action.open_url": "Obrir URL a Mastodon", + "search.quick_action.status_search": "Tuts coincidents {x}", "search.search_or_paste": "Cerca o escriu l'URL", - "search_popout.search_format": "Format de cerca avançada", - "search_popout.tips.full_text": "Text simple recupera tuts que has escrit, els marcats com a favorits, els impulsats o en els que has estat esmentat, així com usuaris, noms d'usuari i etiquetes.", - "search_popout.tips.hashtag": "etiqueta", - "search_popout.tips.status": "tut", - "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_popout.quick_actions": "Accions ràpides", + "search_popout.recent": "Cerques recents", + "search_results.accounts": "Perfils", "search_results.all": "Tots", "search_results.hashtags": "Etiquetes", "search_results.nothing_found": "No s'ha pogut trobar res per a aquests termes de cerca", @@ -555,7 +559,8 @@ "status.copy": "Copia l'enllaç al tut", "status.delete": "Elimina", "status.detailed_status": "Vista detallada de la conversa", - "status.direct": "Missatge directe a @{name}", + "status.direct": "Mencionant privadament @{name}", + "status.direct_indicator": "Menció privada", "status.edit": "Edita", "status.edited": "Editat {date}", "status.edited_x_times": "Editat {count, plural, one {{count} vegada} other {{count} vegades}}", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 8349e34bc4..ca0ca6f190 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -20,7 +20,7 @@ "account.blocked": "بلۆککرا", "account.browse_more_on_origin_server": "گەڕانی فرەتر لە سەر پرۆفایلی سەرەکی", "account.cancel_follow_request": "داواکاری فۆڵۆو بکشێنەوە", - "account.direct": "پەیامی تایبەت بە @{name}", + "account.direct": "بە شێوەیەکی تایبەت باسی @{name} بکە", "account.disable_notifications": "ئاگانامە مەنێرە بۆم کاتێک @{name} پۆست دەکرێت", "account.domain_blocked": "دۆمەین قەپاتکرا", "account.edit_profile": "دەستکاری پرۆفایل", @@ -29,14 +29,14 @@ "account.featured_tags.last_status_at": "دوایین پۆست لە {date}", "account.featured_tags.last_status_never": "هیچ پۆستێک نییە", "account.featured_tags.title": "هاشتاگە تایبەتەکانی {name}", - "account.follow": "شوێنکەوتن", + "account.follow": "بەدواداچوون", "account.followers": "شوێنکەوتووان", "account.followers.empty": "کەسێک شوێن ئەم بەکارهێنەرە نەکەوتووە", "account.followers_counter": "{count, plural, one {{counter} شوێنکەوتوو} other {{counter} شوێنکەوتوو}}", - "account.following": "دواکەوتن", + "account.following": "بەدوادا", "account.following_counter": "{count, plural, one {{counter} شوێنکەوتوو} other {{counter} شوێنکەوتوو}}", "account.follows.empty": "ئەم بەکارهێنەرە تا ئێستا شوێن کەس نەکەوتووە.", - "account.follows_you": "شوێنکەوتووەکانت", + "account.follows_you": "شوێنت دەکەوێت", "account.go_to_profile": "بڕۆ بۆ پڕۆفایلی", "account.hide_reblogs": "داشاردنی بووستەکان لە @{name}", "account.joined_short": "بەشداری کردووە", @@ -50,11 +50,11 @@ "account.mute_notifications": "هۆشیارکەرەوەکان لاببە لە @{name}", "account.muted": "بێ دەنگ", "account.open_original_page": "لاپەڕەی ئەسڵی بکەرەوە", - "account.posts": "توتس", + "account.posts": "نووسراوەکان", "account.posts_with_replies": "توتس و وەڵامەکان", "account.report": "گوزارشت @{name}", "account.requested": "چاوەڕێی ڕەزامەندین. کرتە بکە بۆ هەڵوەشاندنەوەی داواکاری شوێنکەوتن", - "account.requested_follow": "{name} has requested to follow you", + "account.requested_follow": "{name} داوای کردووە شوێنت بکەوێت", "account.share": "پرۆفایلی @{name} هاوبەش بکە", "account.show_reblogs": "پیشاندانی بەرزکردنەوەکان لە @{name}", "account.statuses_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", @@ -102,7 +102,7 @@ "column.blocks": "بەکارهێنەرە بلۆککراوەکان", "column.bookmarks": "نیشانەکان", "column.community": "هێڵی کاتی ناوخۆیی", - "column.direct": "نامە ڕاستەوخۆ", + "column.direct": "ئاماژەی تایبەت", "column.directory": "گەڕان لە پرۆفایلەکان", "column.domain_blocks": "دۆمەینە داخراوەکان", "column.favourites": "دڵخوازترینەکان", @@ -128,7 +128,7 @@ "compose.language.search": "گەڕان بە زمانەکان...", "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 post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.", + "compose_form.hashtag_warning": "ئەم بڵاوکراوەیە لە ژێر هیچ هاشتاگێکدا دا نانرێت وەک ئەوەیە، کە گشتی نەبێت. تەنها بڵاوکراوە گشتیەکان دەتوانرێ بە هاشتاگ گەڕانی بۆ بکرێت.", "compose_form.lock_disclaimer": "هەژمێرەکەی لە حاڵەتی {locked}. هەر کەسێک دەتوانێت شوێنت بکەوێت بۆ پیشاندانی بابەتەکانی تەنها دوایخۆی.", "compose_form.lock_disclaimer.lock": "قفڵ دراوە", "compose_form.placeholder": "چی لە مێشکتدایە?", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "گۆڕانکاریت لە وەسف یان پێشبینی میدیادا هەڵنەگیراوە، بەهەر حاڵ فڕێیان بدە؟", "confirmations.domain_block.confirm": "بلۆککردنی هەموو دۆمەینەکە", "confirmations.domain_block.message": "ئایا بەڕاستی، بەڕاستی تۆ دەتەوێت هەموو {domain} بلۆک بکەیت؟ لە زۆربەی حاڵەتەکاندا چەند بلۆکێکی ئامانجدار یان بێدەنگەکان پێویست و پەسەندن. تۆ ناوەڕۆک ێک نابینیت لە دۆمەینەکە لە هیچ هێڵی کاتی گشتی یان ئاگانامەکانت. شوێنکەوتوانی تۆ لەو دۆمەینەوە لادەبرێن.", + "confirmations.edit.confirm": "دەستکاری", + "confirmations.edit.message": "دەستکاری کردنی ئێستا: دەبێتە هۆی نووسینەوەی ئەو پەیامەی، کە ئێستا داتدەڕشت. ئایا دڵنیای، کە دەتەوێت بەردەوام بیت؟", "confirmations.logout.confirm": "چوونە دەرەوە", "confirmations.logout.message": "ئایا دڵنیایت لەوەی دەتەوێت بچیتە دەرەوە?", "confirmations.mute.confirm": "بێدەنگ", @@ -221,7 +223,7 @@ "empty_column.favourites": "کەس ئەم توتەی دڵخواز نەکردووە،کاتێک کەسێک وا بکات، لێرە دەرئەکەون.", "empty_column.follow_recommendations": "پێدەچێت هیچ پێشنیارێک بۆ تۆ دروست نەکرێت. دەتوانیت هەوڵبدەیت گەڕان بەکاربهێنیت بۆ گەڕان بەدوای ئەو کەسانەی کە ڕەنگە بیانناسیت یان بەدوای هاشتاگە ڕەوتەکاندا بگەڕێیت.", "empty_column.follow_requests": "تۆ هێشتا هیچ داواکارییەکی بەدواداچووت نیە. کاتێک یەکێکت بۆ هات، لێرە دەرئەکەویت.", - "empty_column.followed_tags": "You have not followed any hashtags yet. When you do, they will show up here.", + "empty_column.followed_tags": "تۆ هێشتا شوێن هیچ هاشتاگێک نەکەوتوویت. کاتێک کردت، ئەوان لێرە دەردەکەون.", "empty_column.hashtag": "هێشتا هیچ شتێک لەم هاشتاگەدا نییە.", "empty_column.home": "تایم لاینی ماڵەوەت بەتاڵە! سەردانی {public} بکە یان گەڕان بەکاربێنە بۆ دەستپێکردن و بینینی بەکارهێنەرانی تر.", "empty_column.home.suggestions": "چەند پێشنیارێک ببینە", @@ -237,42 +239,42 @@ "errors.unexpected_crash.copy_stacktrace": "کۆپیکردنی ستێکتراسی بۆ کلیپ بۆرد", "errors.unexpected_crash.report_issue": "کێشەی گوزارشت", "explore.search_results": "ئەنجامەکانی گەڕان", - "explore.suggested_follows": "For you", + "explore.suggested_follows": "بۆ تۆ", "explore.title": "گەڕان", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", + "explore.trending_links": "هەواڵەکان", + "explore.trending_statuses": "بڵاوکراوەکان", + "explore.trending_tags": "هاشتاگەکان", "filter_modal.added.context_mismatch_explanation": "ئەم پۆلە فلتەرە ئەو چوارچێوەیە ناگرێتەوە کە تۆ تێیدا دەستت بەم پۆستە کردووە. ئەگەر بتەوێت پۆستەکە لەم چوارچێوەیەشدا فلتەر بکرێت، دەبێت دەستکاری فلتەرەکە بکەیت.", "filter_modal.added.context_mismatch_title": "ناتەبایی دەقی نووسراو!", "filter_modal.added.expired_explanation": "ئەم پۆلە فلتەرە بەسەرچووە، پێویستە بەرواری بەسەرچوونی بگۆڕیت بۆ ئەوەی جێبەجێی بکات.", "filter_modal.added.expired_title": "فلتەری بەسەرچووە!", "filter_modal.added.review_and_configure": "بۆ پێداچوونەوە و ڕێکخستنی زیاتری ئەم پۆلە فلتەرە، بچۆ بۆ {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.review_and_configure_title": "ڕێکخستنەکانی پاڵاوتن", + "filter_modal.added.settings_link": "پەڕەی ڕێکخستن", + "filter_modal.added.short_explanation": "بڵاوکراوەکە زیادکرا بۆ ئەو پاڵاوتنانەی خوارەوە: {title}.", + "filter_modal.added.title": "پاڵێو زیادکرا!", + "filter_modal.select_filter.context_mismatch": "لەم چوارچێوەیەدا کارپێکراو نییە", + "filter_modal.select_filter.expired": "بەسەرچووە", + "filter_modal.select_filter.prompt_new": "پۆلێنی نوێ: {name}", + "filter_modal.select_filter.search": "گەڕان یان دروستکردن", + "filter_modal.select_filter.subtitle": "بەکارهێنانی پۆلێنی بەردەست یان دروستکردنی پۆلێنێکی نوێ", + "filter_modal.select_filter.title": "ئەم بڵاوکراوەیە بپاڵێوە", + "filter_modal.title.status": "بڵاوکراوەیەک بپاڵێوە", "follow_recommendations.done": "تەواو", "follow_recommendations.heading": "شوێن ئەو کەسانە بکەون کە دەتەوێت پۆستەکان ببینیت لە! لێرەدا چەند پێشنیارێک هەیە.", "follow_recommendations.lead": "بابەتەکانی ئەو کەسانەی کە بەدوایدا دەگەڕێیت بە فەرمانی کرۆنۆلۆجی لە خواردنەکانی ماڵەکەت دەردەکەون. مەترسە لە هەڵەکردن، دەتوانیت بە ئاسانی خەڵک هەڵبکەیت هەر کاتێک!", "follow_request.authorize": "ده‌سه‌ڵاتپێدراو", "follow_request.reject": "ڕەتکردنەوە", "follow_requests.unlocked_explanation": "هەرچەندە هەژمارەکەت داخراو نییە، ستافی {domain} وا بیریان کردەوە کە لەوانەیە بتانەوێت پێداچوونەوە بە داواکاریەکانی ئەم هەژمارەدا بکەن بە دەستی.", - "followed_tags": "Followed hashtags", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", - "footer.status": "Status", + "followed_tags": "هاشتاگە شوێنکەوتووەکان", + "footer.about": "دەربارە", + "footer.directory": "ڕابەری پەڕەی ناساندن", + "footer.get_app": "بەرنامەکە بەدەست بێنە", + "footer.invite": "بانگهێشتکردنی خەڵک", + "footer.keyboard_shortcuts": "کورتەڕێکانی تەختەکلیک", + "footer.privacy_policy": "سیاسەتی تایبەتمەندێتی", + "footer.source_code": "پیشاندانی کۆدی سەرچاوە", + "footer.status": "دۆخ", "generic.saved": "پاشکەوتکرا", "getting_started.heading": "دەست پێکردن", "hashtag.column_header.tag_mode.all": "و {additional}", @@ -284,25 +286,25 @@ "hashtag.column_settings.tag_mode.any": "هەر کام لەمانە", "hashtag.column_settings.tag_mode.none": "هیچ کام لەمانە", "hashtag.column_settings.tag_toggle": "تاگی زیادە ی ئەم ستوونە لەخۆ بنووسە", - "hashtag.follow": "Follow hashtag", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.follow": "شوێنکەوتنی هاشتاگ", + "hashtag.unfollow": "شوێن نەکەوتنی هاشتاگ", "home.column_settings.basic": "بنەڕەتی", "home.column_settings.show_reblogs": "پیشاندانی بەهێزکردن", "home.column_settings.show_replies": "وەڵامدانەوەکان پیشان بدە", "home.hide_announcements": "شاردنەوەی راگەیەنراوەکان", "home.show_announcements": "پیشاندانی راگەیەنراوەکان", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "بە هەژمارێک لەسەر ماستدۆن، دەتوانیت ئەم بڵاوکراوەیە زیادبکەیت بۆ دڵخوازەکانت. بۆ ئاگادارکردنەوەی بڵاوکەرەوەکە لە پێزانینەکەت و هێشتنەوەی بۆ دواتر.", + "interaction_modal.description.follow": "بە هەژمارێک لەسەر ماستدۆن، ئەتوانیت شوێن {name} بکەویت بۆ ئەوەی بڵاوکراوەکانی بگاتە پەڕەی سەرەکیت.", + "interaction_modal.description.reblog": "بە هەژمارێک لەسەر ماستدۆن، ئەتوانیت ئەم بڵاوکراوەیە بەرزبکەیتەوە تاوەکو بەژداری پێبکەیت لەگەل شوێنکەوتوانت.", + "interaction_modal.description.reply": "بە هەژمارێک لەسەر ماستدۆن، ئەتوانیت وەڵامی ئەم بڵاوکراوەیە بدەیتەوە.", + "interaction_modal.on_another_server": "لەسەر ڕاژەیەکی جیا", + "interaction_modal.on_this_server": "لەسەر ئەم ڕاژەیە", + "interaction_modal.other_server_instructions": "ئەم URLە کۆپی بکە و بیخە ناو بواری گەڕانی ئەپی دڵخوازت لە ماستۆدۆن یان ڕووکاری وێبی سێرڤەری ماستۆدۆنەکەت.", + "interaction_modal.preamble": "بەو پێیەی ماستۆدۆن لامەرکەزییە، دەتوانیت ئەکاونتی ئێستات بەکاربهێنیت کە لەلایەن سێرڤەرێکی تری ماستۆدۆن یان پلاتفۆرمی گونجاوەوە هۆست کراوە ئەگەر ئەکاونتێکت لەسەر ئەم ئەکاونتە نەبێت.", + "interaction_modal.title.favourite": "پۆستی {name}ی دڵخواز", + "interaction_modal.title.follow": "دوای {name} بکەوە", + "interaction_modal.title.reblog": "پۆستی {name} زیاد بکە", + "interaction_modal.title.reply": "وەڵامی پۆستەکەی {name} بدەرەوە", "intervals.full.days": "{number, plural, one {# ڕۆژ} other {# ڕۆژەک}}", "intervals.full.hours": "{number, plural, one {# کات} other {# کات}}", "intervals.full.minutes": "{number, plural, one {# خولەک} other {# خولەک}}", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "بۆ ئەوەی تیشک بخاتە سەر توتێک لە یەکێک لە ستوونەکان", "keyboard_shortcuts.compose": "بۆ سەرنجدان بە نووسینی ناوچەی دەق", "keyboard_shortcuts.description": "وه‌سف", - "keyboard_shortcuts.direct": "بۆ کردنەوەی ستوونی نامە ڕاستەوخۆکان", + "keyboard_shortcuts.direct": "بۆ کردنەوەی ستوونی ئاماژەی تایبەت", "keyboard_shortcuts.down": "بۆ چوونە خوارەوە لە لیستەکەدا", "keyboard_shortcuts.enter": "بۆ کردنەوەی توت", "keyboard_shortcuts.favourite": "بۆ دڵخواز", @@ -346,7 +348,7 @@ "lightbox.next": "داهاتوو", "lightbox.previous": "پێشوو", "limited_account_hint.action": "بەهەر حاڵ پڕۆفایلی پیشان بدە", - "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", + "limited_account_hint.title": "ئەم پرۆفایلە لەلایەن بەڕێوەبەرانی {domain} شاراوەتەوە.", "lists.account.add": "زیادکردن بۆ لیست", "lists.account.remove": "لابردن لە لیست", "lists.delete": "سڕینەوەی لیست", @@ -365,16 +367,16 @@ "media_gallery.toggle_visible": "شاردنەوەی {number, plural, one {image} other {images}}", "missing_indicator.label": "نەدۆزرایەوە", "missing_indicator.sublabel": "ئەو سەرچاوەیە نادۆزرێتەوە", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "ئەکاونتەکەت {disabledAccount} لە ئێستادا لەکارخراوە چونکە تۆ چوویتە {movedToAccount}.", "mute_modal.duration": "ماوە", "mute_modal.hide_notifications": "شاردنەوەی ئاگانامەکان لەم بەکارهێنەرە؟ ", "mute_modal.indefinite": "نادیار", - "navigation_bar.about": "About", + "navigation_bar.about": "دەربارە", "navigation_bar.blocks": "بەکارهێنەرە بلۆککراوەکان", "navigation_bar.bookmarks": "نیشانکراوەکان", "navigation_bar.community_timeline": "دەمنامەی ناوخۆیی", "navigation_bar.compose": "نووسینی توتی نوێ", - "navigation_bar.direct": "نامە ڕاستەوخۆ", + "navigation_bar.direct": "ئاماژەی تایبەت", "navigation_bar.discover": "دۆزینەوە", "navigation_bar.domain_blocks": "دۆمەینە بلۆک کراوەکان", "navigation_bar.edit_profile": "دەستکاری پرۆفایل بکە", @@ -382,7 +384,7 @@ "navigation_bar.favourites": "دڵخوازەکان", "navigation_bar.filters": "وشە کپەکان", "navigation_bar.follow_requests": "بەدواداچوی داواکاریەکان بکە", - "navigation_bar.followed_tags": "Followed hashtags", + "navigation_bar.followed_tags": "هاشتاگی بەدوادا هات", "navigation_bar.follows_and_followers": "شوێنکەوتوو و شوێنکەوتوان", "navigation_bar.lists": "لیستەکان", "navigation_bar.logout": "دەرچوون", @@ -391,10 +393,10 @@ "navigation_bar.pins": "توتی چەسپاو", "navigation_bar.preferences": "پەسەندەکان", "navigation_bar.public_timeline": "نووسراوەکانی هەمووشوێنێک", - "navigation_bar.search": "Search", + "navigation_bar.search": "گەڕان", "navigation_bar.security": "ئاسایش", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", - "notification.admin.report": "{name} reported {target}", + "not_signed_in_indicator.not_signed_in": "پێویستە بچیتە ژوورەوە بۆ دەستگەیشتن بەم سەرچاوەیە.", + "notification.admin.report": "{name} ڕاپۆرت کراوە {target}", "notification.admin.sign_up": "{name} تۆمارکرا", "notification.favourite": "{name} نووسراوەکەتی پەسەند کرد", "notification.follow": "{name} دوای تۆ کەوت", @@ -407,7 +409,7 @@ "notification.update": "{name} پۆستێکی دەستکاریکرد", "notifications.clear": "ئاگانامەکان بسڕیەوە", "notifications.clear_confirmation": "ئایا دڵنیایت لەوەی دەتەوێت بە هەمیشەیی هەموو ئاگانامەکانت بسڕیتەوە?", - "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.report": "ڕاپۆرتە نوێیەکان:", "notifications.column_settings.admin.sign_up": "چوونەژوورەوەی نوێ:", "notifications.column_settings.alert": "ئاگانامەکانی پیشانگەرر ڕومێزی", "notifications.column_settings.favourite": "دڵخوازترین:", @@ -461,8 +463,8 @@ "privacy.public.short": "گشتی", "privacy.unlisted.long": "بۆ هەمووان دیارە، بەڵام لە تایبەتمەندییەکانی دۆزینەوە دەرچووە", "privacy.unlisted.short": "لە لیست نەکراو", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "دوایین نوێکردنەوە {date}", + "privacy_policy.title": "سیاسەتی تایبەتێتی", "refresh": "نوێکردنەوە", "regeneration_indicator.label": "بارکردن…", "regeneration_indicator.sublabel": "ڕاگەیەنەری ماڵەوەت ئامادە دەکرێت!", @@ -516,27 +518,29 @@ "report.unfollow": "بەدوادانەچوو@{name}", "report.unfollow_explanation": "تۆ شوێنکەوتووی ئەم هەژماررەی دەکەیت. بۆ ئەوەی چیتر نووسراوەکانیان لە هۆم فیدی خۆت نەبینی، بەدوایان مەچۆ.", "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", - "report_notification.categories.spam": "Spam", - "report_notification.categories.violation": "Rule violation", - "report_notification.open": "Open report", + "report_notification.categories.other": "هی تر", + "report_notification.categories.spam": "سپام", + "report_notification.categories.violation": "پێشێلکردنی یاسا", + "report_notification.open": "ڕاپۆرتەکان بکەوە", + "search.no_recent_searches": "گەڕانەکانی ئەم دواییە", "search.placeholder": "گەڕان", - "search.search_or_paste": "Search or paste URL", - "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.quick_action.account_search": "پڕۆفایلی هاوتا لەگەڵ {x}", + "search.quick_action.go_to_account": "بڕۆ بۆ پڕۆفایلی{x}", + "search.quick_action.go_to_hashtag": "بڕۆ بۆ هاشتاگی {x}", + "search.quick_action.open_url": "بەستەرەکان لەناو ماستۆدۆن بکەوە", + "search.quick_action.status_search": "پڕۆفایلی هاوتا لەگەڵ {x}", + "search.search_or_paste": "گەڕان یان لێدانی URL", + "search_popout.quick_actions": "کرداری خێرا", + "search_popout.recent": "گەڕانەکانی ئەم دواییە", + "search_results.accounts": "پرۆفایلەکان", "search_results.all": "هەموو", "search_results.hashtags": "هەشتاگ", - "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.nothing_found": "هیچ بۆ ئەم زاراوە گەڕانانە نەدۆزراوەتەوە", "search_results.statuses": "توتەکان", "search_results.statuses_fts_disabled": "گەڕانی توتەکان بە ناوەڕۆکیان لەسەر ئەم ڕاژەی ماستۆدۆن چالاک نەکراوە.", - "search_results.title": "Search for {q}", + "search_results.title": "گەڕان بەدوای {q}", "search_results.total": "{count, number} {count, plural, one {دەرئەنجام} other {دەرئەنجام}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.about_active_users": "ئەو کەسانەی لە ماوەی ٣٠ ڕۆژی ڕابردوودا ئەم سێرڤەرە بەکاردەهێنن (بەکارهێنەرانی چالاک مانگانە)", "server_banner.active_users": "بەکارهێنەرانی چالاک", "server_banner.administered_by": "بەڕێوەبردن لەلایەن:", "server_banner.introduction": "{domain} بەشێکە لەو تۆڕە کۆمەڵایەتییە لامەرکەزییەی کە لەلایەن {mastodon}ەوە بەهێز دەکرێت.", @@ -544,9 +548,9 @@ "server_banner.server_stats": "دۆخی ڕاژەکار:", "sign_in_banner.create_account": "هەژمار دروستبکە", "sign_in_banner.sign_in": "بچۆ ژوورەوە", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts. You can also interact from your account on a different server.", + "sign_in_banner.text": "چوونەژوورەوە بۆ فۆڵۆوکردنی پڕۆفایلی یان هاشتاگەکان، دڵخوازەکان، شەیرکردن و وەڵامدانەوەی پۆستەکان. هەروەها دەتوانیت لە ئەکاونتەکەتەوە لەسەر سێرڤەرێکی جیاواز کارلێک بکەیت.", "status.admin_account": "کردنەوەی میانڕەوی بەڕێوەبەر بۆ @{name}", - "status.admin_domain": "Open moderation interface for {domain}", + "status.admin_domain": "ڕووکاری مامناوەندی بکەرەوە بۆ {domain}", "status.admin_status": "ئەم توتە بکەوە لە ناو ڕووکاری بەڕیوەبەر", "status.block": "@{name} ئاستەنگ بکە", "status.bookmark": "نیشانه", @@ -555,7 +559,8 @@ "status.copy": "ڕوونووسی بەستەر بۆ توت", "status.delete": "سڕینەوە", "status.detailed_status": "ڕوانگەی گفتوگۆ بە وردەکاری", - "status.direct": "پەیامی ڕاستەوخۆ @{name}", + "status.direct": "بە شێوەیەکی تایبەت باسی @{name} بکە", + "status.direct_indicator": "ئاماژەی تایبەت", "status.edit": "دەستکاری", "status.edited": "بەشداری {date}", "status.edited_x_times": "دەستکاریکراوە {count, plural, one {{count} کات} other {{count} کات}}", @@ -563,7 +568,7 @@ "status.favourite": "دڵخواز", "status.filter": "ئەم پۆستە فلتەر بکە", "status.filtered": "پاڵاوتن", - "status.hide": "Hide post", + "status.hide": "شاردنەوەی پۆست", "status.history.created": "{name} دروستکراوە لە{date}", "status.history.edited": "{name} دروستکاریکراوە لە{date}", "status.load_more": "زیاتر بار بکە", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 9b75ceeb17..df675f1516 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -20,7 +20,7 @@ "account.blocked": "Bluccatu", "account.browse_more_on_origin_server": "Vede di più nant'à u prufile uriginale", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "Missaghju direttu @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Ùn mi nutificate più quandu @{name} pubblica qualcosa", "account.domain_blocked": "Duminiu piattatu", "account.edit_profile": "Mudificà u prufile", @@ -102,7 +102,7 @@ "column.blocks": "Utilizatori bluccati", "column.bookmarks": "Segnalibri", "column.community": "Linea pubblica lucale", - "column.direct": "Direct messages", + "column.direct": "Private mentions", "column.directory": "Percorre i prufili", "column.domain_blocks": "Duminii piattati", "column.favourites": "Favuriti", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "confirmations.domain_block.confirm": "Piattà tuttu u duminiu", "confirmations.domain_block.message": "Site veramente sicuru·a che vulete piattà tuttu à {domain}? Saria forse abbastanza di bluccà ò piattà alcuni conti da quallà. Ùn viderete più nunda da quallà indè e linee pubbliche o e nutificazione. I vostri abbunati da stu duminiu saranu tolti.", + "confirmations.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Scunnettassi", "confirmations.logout.message": "Site sicuru·a che vulete scunnettà vi?", "confirmations.mute.confirm": "Piattà", @@ -214,7 +216,7 @@ "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": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, 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ì.", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Segnalibri", "navigation_bar.community_timeline": "Linea pubblica lucale", "navigation_bar.compose": "Scrive un novu statutu", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Scopre", "navigation_bar.domain_blocks": "Duminii piattati", "navigation_bar.edit_profile": "Mudificà u prufile", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Circà", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Search or paste URL", - "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.", - "search_popout.tips.hashtag": "hashtag", - "search_popout.tips.status": "statutu", - "search_popout.tips.text": "Un testu simplice rimanda i nomi pubblichi, cugnomi è hashtag", - "search_popout.tips.user": "utilizatore", - "search_results.accounts": "Ghjente", + "search_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "All", "search_results.hashtags": "Hashtag", "search_results.nothing_found": "Could not find anything for these search terms", @@ -555,7 +559,8 @@ "status.copy": "Cupià ligame indè u statutu", "status.delete": "Toglie", "status.detailed_status": "Vista in ditagliu di a cunversazione", - "status.direct": "Mandà un missaghju @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Edit", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index e07ad6ae11..a8cc9a5b24 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -20,7 +20,7 @@ "account.blocked": "Blokovaný", "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", + "account.direct": "Soukromě zmínit @{name}", "account.disable_notifications": "Přestat mě upozorňovat, když @{name} zveřejní příspěvek", "account.domain_blocked": "Doména blokována", "account.edit_profile": "Upravit profil", @@ -102,7 +102,7 @@ "column.blocks": "Blokovaní uživatelé", "column.bookmarks": "Záložky", "column.community": "Místní časová osa", - "column.direct": "Přímé zprávy", + "column.direct": "Soukromé zmínky", "column.directory": "Prozkoumat profily", "column.domain_blocks": "Blokované domény", "column.favourites": "Oblíbené", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Máte neuložené změny popisku médií nebo náhledu, chcete je přesto zahodit?", "confirmations.domain_block.confirm": "Blokovat celou doménu", "confirmations.domain_block.message": "Opravdu chcete blokovat celou doménu {domain}? Ve většině případů stačí blokovat nebo skrýt pár konkrétních uživatelů, což také doporučujeme. Z této domény neuvidíte obsah v žádné veřejné časové ose ani v oznámeních. Vaši sledující z této domény budou odstraněni.", + "confirmations.edit.confirm": "Upravit", + "confirmations.edit.message": "Editovat teď znamená přepsání zprávy, kterou právě tvoříte. Opravdu chcete pokračovat?", "confirmations.logout.confirm": "Odhlásit se", "confirmations.logout.message": "Opravdu se chcete odhlásit?", "confirmations.mute.confirm": "Skrýt", @@ -214,7 +216,7 @@ "empty_column.blocks": "Ještě jste nezablokovali žádného uživatele.", "empty_column.bookmarked_statuses": "Zatím v záložkách nemáte žádné příspěvky. Až 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": "Zatím nemáte žádné přímé zprávy. Až nějakou pošlete nebo dostanete, zobrazí se zde.", + "empty_column.direct": "Zatím nemáte žádné soukromé zmínky. Až nějakou pošlete nebo dostanete, zobrazí se zde.", "empty_column.domain_blocks": "Ještě nemáte žádné zablokované domény.", "empty_column.explore_statuses": "Momentálně není nic populární. Vraťte se později!", "empty_column.favourited_statuses": "Zatím nemáte žádné oblíbené příspěvky. Až si nějaký oblíbíte, zobrazí se zde.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Focus na sloupec", "keyboard_shortcuts.compose": "Zaměřit se na textové pole nového příspěvku", "keyboard_shortcuts.description": "Popis", - "keyboard_shortcuts.direct": "k otevření sloupce přímých zpráv", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "Posunout v seznamu dolů", "keyboard_shortcuts.enter": "Otevřít příspěvek", "keyboard_shortcuts.favourite": "Oblíbit si příspěvek", @@ -374,7 +376,7 @@ "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.direct": "Soukromé zmínky", "navigation_bar.discover": "Objevit", "navigation_bar.domain_blocks": "Blokované domény", "navigation_bar.edit_profile": "Upravit profil", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Porušení pravidla", "report_notification.open": "Otevřít hlášení", + "search.no_recent_searches": "Žádná nedávná vyhledávání", "search.placeholder": "Hledat", + "search.quick_action.account_search": "Profily odpovídající {x}", + "search.quick_action.go_to_account": "Přejít na profil {x}", + "search.quick_action.go_to_hashtag": "Přejít na hashtag {x}", + "search.quick_action.open_url": "Otevřít URL v Mastodonu", + "search.quick_action.status_search": "Příspěvky odpovídající {x}", "search.search_or_paste": "Hledat nebo vložit URL", - "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.", - "search_popout.tips.hashtag": "hashtag", - "search_popout.tips.status": "příspěvek", - "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_popout.quick_actions": "Rychlé akce", + "search_popout.recent": "Nedávná vyhledávání", + "search_results.accounts": "Profily", "search_results.all": "Vše", "search_results.hashtags": "Hashtagy", "search_results.nothing_found": "Pro tyto hledané výrazy nebylo nic nenalezeno", @@ -555,7 +559,8 @@ "status.copy": "Zkopírovat odkaz na příspěvek", "status.delete": "Smazat", "status.detailed_status": "Podrobné zobrazení konverzace", - "status.direct": "Poslat @{name} přímou zprávu", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Soukromá zmínka", "status.edit": "Upravit", "status.edited": "Upraveno {date}", "status.edited_x_times": "Upraveno {count, plural, one {{count}krát} few {{count}krát} many {{count}krát} other {{count}krát}}", diff --git a/app/javascript/mastodon/locales/csb.json b/app/javascript/mastodon/locales/csb.json index 884020da1d..2150c1d7a3 100644 --- a/app/javascript/mastodon/locales/csb.json +++ b/app/javascript/mastodon/locales/csb.json @@ -20,7 +20,7 @@ "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Browse more on the original profile", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "Direct message @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain blocked", "account.edit_profile": "Edit profile", @@ -102,7 +102,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.direct": "Private mentions", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "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.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Log out", "confirmations.logout.message": "Are you sure you want to log out?", "confirmations.mute.confirm": "Mute", @@ -214,7 +216,7 @@ "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.direct": "You don't have any private mentions yet. When you send or receive one, 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.", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new post", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Search", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Search or paste URL", - "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.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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "All", "search_results.hashtags": "Hashtags", "search_results.nothing_found": "Could not find anything for these search terms", @@ -555,7 +559,8 @@ "status.copy": "Copy link to status", "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", - "status.direct": "Direct message @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Edit", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index c664046f0c..5a076ca9dd 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -20,7 +20,7 @@ "account.blocked": "Blociwyd", "account.browse_more_on_origin_server": "Pori mwy ar y proffil gwreiddiol", "account.cancel_follow_request": "Tynnu cais i ddilyn", - "account.direct": "Neges breifat @{name}", + "account.direct": "Crybwyll yn breifat @{name}", "account.disable_notifications": "Stopiwch fy hysbysu pan fydd @{name} yn postio", "account.domain_blocked": "Parth wedi ei flocio", "account.edit_profile": "Golygu proffil", @@ -102,7 +102,7 @@ "column.blocks": "Defnyddwyr a flociwyd", "column.bookmarks": "Llyfrnodau", "column.community": "Ffrwd lleol", - "column.direct": "Negeseuon preifat", + "column.direct": "Crybwylliadau preifat", "column.directory": "Pori proffiliau", "column.domain_blocks": "Parthau wedi'u blocio", "column.favourites": "Ffefrynnau", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Mae gennych newidiadau heb eu cadw i'r disgrifiad cyfryngau neu'r rhagolwg, eu taflu beth bynnag?", "confirmations.domain_block.confirm": "Blocio parth cyfan", "confirmations.domain_block.message": "Ydych chi wir, wir eisiau blocio'r holl {domain}? Fel arfer, mae blocio neu dewi pobl penodol yn broses mwy effeithiol. Fyddwch chi ddim yn gweld cynnwys o'r parth hwnnw mewn ffrydiau cyhoeddus neu yn eich hysbysiadau. Bydd eich dilynwyr o'r parth hwnnw yn cael eu ddileu.", + "confirmations.edit.confirm": "Golygu", + "confirmations.edit.message": "Bydd golygu nawr yn trosysgrifennu'r neges rydych yn ei ysgrifennu ar hyn o bryd. Ydych chi'n siŵr eich bod eisiau gwneud hyn?", "confirmations.logout.confirm": "Allgofnodi", "confirmations.logout.message": "Ydych chi'n siŵr eich bod am allgofnodi?", "confirmations.mute.confirm": "Tewi", @@ -214,7 +216,7 @@ "empty_column.blocks": "Nid ydych wedi blocio unrhyw ddefnyddwyr eto.", "empty_column.bookmarked_statuses": "Nid oes gennych unrhyw bostiad wedi'u cadw fel llyfrnodau eto. Pan fyddwch yn gosod nod tudalen i un, mi fydd yn ymddangos yma.", "empty_column.community": "Mae'r ffrwd lleol yn wag. Beth am ysgrifennu rhywbeth cyhoeddus?", - "empty_column.direct": "Does gennych unrhyw negeseuon preifat eto. Pan byddwch yn anfon neu derbyn un, bydd yn ymddangos yma.", + "empty_column.direct": "Nid oes gennych unrhyw grybwylliadau preifat eto. Pan fyddwch chi'n anfon neu'n derbyn un, bydd yn ymddangos yma.", "empty_column.domain_blocks": "Nid oes yna unrhyw barthau cuddiedig eto.", "empty_column.explore_statuses": "Does dim yn trendio ar hyn o bryd. Dewch nôl nes ymlaen!", "empty_column.favourited_statuses": "Nid oes gennych unrhyw hoff bostiadau eto. Pan byddwch yn hoffi un, bydd yn ymddangos yma.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Ffocysu colofn", "keyboard_shortcuts.compose": "Ffocysu ar ardal cyfansoddi testun", "keyboard_shortcuts.description": "Disgrifiad", - "keyboard_shortcuts.direct": "i agor colofn negeseuon preifat", + "keyboard_shortcuts.direct": "i agor colofn crybwylliadau preifat", "keyboard_shortcuts.down": "Symud lawr yn y rhestr", "keyboard_shortcuts.enter": "Agor post", "keyboard_shortcuts.favourite": "Hoffi postiad", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Llyfrnodau", "navigation_bar.community_timeline": "Ffrwd leol", "navigation_bar.compose": "Cyfansoddi post newydd", - "navigation_bar.direct": "Negeseuon preifat", + "navigation_bar.direct": "Crybwylliadau preifat", "navigation_bar.discover": "Darganfod", "navigation_bar.domain_blocks": "Parthau wedi'u blocio", "navigation_bar.edit_profile": "Golygu proffil", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Sbam", "report_notification.categories.violation": "Torri rheol", "report_notification.open": "Agor adroddiad", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Chwilio", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Chwilio neu gludo URL", - "search_popout.search_format": "Fformat chwilio uwch", - "search_popout.tips.full_text": "Mae testun syml yn dychwelyd postiadau yr ydych wedi ysgrifennu, hoffi, wedi'u hybio, neu wedi'ch crybwyll ynddynt, ynghyd a chyfateb a enwau defnyddwyr, enwau arddangos ac hashnodau.", - "search_popout.tips.hashtag": "hashnod", - "search_popout.tips.status": "post", - "search_popout.tips.text": "Mae testun syml yn dychwelyd enwau dangos, enwau defnyddwyr a hashnodau sy'n cyfateb", - "search_popout.tips.user": "defnyddiwr", - "search_results.accounts": "Pobl", + "search_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "Popeth", "search_results.hashtags": "Hashnodau", "search_results.nothing_found": "Methu dod o hyd i unrhyw beth ar gyfer y termau chwilio hyn", @@ -555,7 +559,8 @@ "status.copy": "Copïo dolen i'r post", "status.delete": "Dileu", "status.detailed_status": "Golwg manwl o'r sgwrs", - "status.direct": "Neges breifat @{name}", + "status.direct": "Crybwyll yn breifat @{name}", + "status.direct_indicator": "Crybwyll preifat", "status.edit": "Golygu", "status.edited": "Golygwyd {date}", "status.edited_x_times": "Golygwyd {count, plural, one {waith} two {waith} other {{count} gwaith}}", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 1db8b030d3..ca9caf79d7 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -20,7 +20,7 @@ "account.blocked": "Blokeret", "account.browse_more_on_origin_server": "Se mere på den oprindelige profil", "account.cancel_follow_request": "Annullér anmodning om at følge", - "account.direct": "Direkte besked til @{name}", + "account.direct": "Privat omtale @{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", @@ -102,7 +102,7 @@ "column.blocks": "Blokerede brugere", "column.bookmarks": "Bogmærker", "column.community": "Lokal tidslinje", - "column.direct": "Direkte beskeder", + "column.direct": "Private omtaler", "column.directory": "Tjek profiler", "column.domain_blocks": "Blokerede domæner", "column.favourites": "Favoritter", @@ -162,6 +162,8 @@ "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 fuldstændig sikker på, at du vil blokere hele {domain}-domænet? Oftest vil nogle få målrettede blokeringer eller skjulninger 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.edit.confirm": "Redigér", + "confirmations.edit.message": "Redigeres nu, overskrive den besked, der forfattes pt. Fortsæt alligevel?", "confirmations.logout.confirm": "Log ud", "confirmations.logout.message": "Er du sikker på, at du vil logge ud?", "confirmations.mute.confirm": "Skjul (mute)", @@ -214,7 +216,7 @@ "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": "Der er endnu ingen direkte beskeder. Når en sendes eller modtages, dukker den op hér.", + "empty_column.direct": "Der er endnu ingen private omtaler. Når en sendes eller modtages, dukker den op hér.", "empty_column.domain_blocks": "Ingen blokerede domæner endnu.", "empty_column.explore_statuses": "Ingen nye tendenser lige nu. Tjek igen senere!", "empty_column.favourited_statuses": "Du har endnu ingen favoritindlæg. Når du favoritmarkerer ét, vil det dukke op hér.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Fokusér kolonne", "keyboard_shortcuts.compose": "Fokusér skriveområdet", "keyboard_shortcuts.description": "Beskrivelse", - "keyboard_shortcuts.direct": "for at åbne direkte beskeder-kolonnen", + "keyboard_shortcuts.direct": "for at åbne kolonnen private omtaler", "keyboard_shortcuts.down": "Flyt nedad på listen", "keyboard_shortcuts.enter": "Åbn indlæg", "keyboard_shortcuts.favourite": "Favoritmarkér indlæg", @@ -374,7 +376,7 @@ "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.direct": "Private omtaler", "navigation_bar.discover": "Opdag", "navigation_bar.domain_blocks": "Blokerede domæner", "navigation_bar.edit_profile": "Redigér profil", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Regelovertrædelse", "report_notification.open": "Åbn anmeldelse", + "search.no_recent_searches": "Ingen seneste søgninger", "search.placeholder": "Søg", + "search.quick_action.account_search": "Profiler matchende {x}", + "search.quick_action.go_to_account": "Gå til profilen {x}", + "search.quick_action.go_to_hashtag": "Gå til hashtagget {x}", + "search.quick_action.open_url": "Åbn URL i Mastodon", + "search.quick_action.status_search": "Indlæg matchende {x}", "search.search_or_paste": "Søg efter eller angiv URL", - "search_popout.search_format": "Avanceret søgeformat", - "search_popout.tips.full_text": "Simpel tekst returnerer indlæg, du har skrevet, gjort til favorit, boostet eller er nævnt i, såvel som matchende 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_popout.quick_actions": "Hurtige handlinger", + "search_popout.recent": "Seneste søgninger", + "search_results.accounts": "Profiler", "search_results.all": "Alle", "search_results.hashtags": "Hashtags", "search_results.nothing_found": "Ingen resultater for disse søgeord", @@ -555,7 +559,8 @@ "status.copy": "Kopiér link til indlæg", "status.delete": "Slet", "status.detailed_status": "Detaljeret samtalevisning", - "status.direct": "Direkte besked til @{name}", + "status.direct": "Privat omtale @{name}", + "status.direct_indicator": "Privat omtale", "status.edit": "Redigér", "status.edited": "Redigeret {date}", "status.edited_x_times": "Redigeret {count, plural, one {{count} gang} other {{count} gange}}", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index b3cdd4fda5..2312ca2fbd 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -20,7 +20,7 @@ "account.blocked": "Blockiert", "account.browse_more_on_origin_server": "Mehr auf dem Originalprofil durchsuchen", "account.cancel_follow_request": "Folgeanfrage zurückziehen", - "account.direct": "Direktnachricht an @{name}", + "account.direct": "Direktnachricht an @{name} senden", "account.disable_notifications": "Höre auf mich zu benachrichtigen wenn @{name} etwas postet", "account.domain_blocked": "Domain versteckt", "account.edit_profile": "Profil bearbeiten", @@ -53,7 +53,7 @@ "account.posts": "Beiträge", "account.posts_with_replies": "Beiträge und Antworten", "account.report": "@{name} melden", - "account.requested": "Warte auf Genehmigung. Klicke hier, um die Anfrage zum Folgen abzubrechen", + "account.requested": "Die Genehmigung steht noch aus. Klicke hier, um die Folgeanfrage abzubrechen", "account.requested_follow": "{name} hat angefragt, dir folgen zu dürfen", "account.share": "Profil von @{name} teilen", "account.show_reblogs": "Geteilte Beiträge von @{name} wieder anzeigen", @@ -106,7 +106,7 @@ "column.directory": "Profile durchsuchen", "column.domain_blocks": "Gesperrte Domains", "column.favourites": "Favoriten", - "column.follow_requests": "Follower-Anfragen", + "column.follow_requests": "Folgeanfragen", "column.home": "Startseite", "column.lists": "Listen", "column.mutes": "Stummgeschaltete Profile", @@ -131,7 +131,7 @@ "compose_form.hashtag_warning": "Dieser Beitrag wird unter keinem Hashtag sichtbar sein, weil er nicht öffentlich ist. Nur öffentliche Beiträge können nach Hashtags durchsucht werden.", "compose_form.lock_disclaimer": "Dein Profil ist nicht {locked}. Andere können dir folgen und deine Beiträge sehen, die nur für Follower bestimmt sind.", "compose_form.lock_disclaimer.lock": "geschützt", - "compose_form.placeholder": "Was gibt's Neues?", + "compose_form.placeholder": "Was gibt es Neues?", "compose_form.poll.add_option": "Auswahlfeld hinzufügen", "compose_form.poll.duration": "Umfragedauer", "compose_form.poll.option_placeholder": "{number}. Auswahl", @@ -162,8 +162,10 @@ "confirmations.discard_edit_media.message": "Du hast Änderungen an der Medienbeschreibung oder -vorschau vorgenommen, die noch nicht gespeichert sind. Trotzdem verwerfen?", "confirmations.domain_block.confirm": "Domain sperren", "confirmations.domain_block.message": "Bist du dir wirklich sicher, dass du die ganze Domain {domain} sperren willst? In den meisten Fällen reichen ein paar gezielte Sperren oder Stummschaltungen aus. Du wirst den Inhalt von dieser Domain nicht in irgendwelchen öffentlichen Timelines oder den Benachrichtigungen finden. Auch deine Follower von dieser Domain werden entfernt.", + "confirmations.edit.confirm": "Bearbeiten", + "confirmations.edit.message": "Das Bearbeiten überschreibt die Nachricht, die du gerade verfasst. Bist du dir sicher, dass du fortfahren möchtest?", "confirmations.logout.confirm": "Abmelden", - "confirmations.logout.message": "Bist du sicher, dass du dich abmelden möchtest?", + "confirmations.logout.message": "Bist du dir sicher, dass du dich abmelden möchtest?", "confirmations.mute.confirm": "Stummschalten", "confirmations.mute.explanation": "Dies wird Beiträge von dieser Person und Beiträge, die diese Person erwähnen, ausblenden, aber es wird der Person trotzdem erlauben, deine Beiträge zu sehen und dir zu folgen.", "confirmations.mute.message": "Bist du dir sicher, dass du {name} stummschalten möchtest?", @@ -220,7 +222,7 @@ "empty_column.favourited_statuses": "Du hast noch keine Beiträge favorisiert. Sobald 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.", - "empty_column.follow_requests": "Es liegen derzeit keine Follower-Anfragen vor. Sobald du eine erhältst, wird sie hier angezeigt.", + "empty_column.follow_requests": "Es liegen derzeit keine Folgeanfragen vor. Sobald du eine erhältst, wird sie hier angezeigt.", "empty_column.followed_tags": "Du folgst noch keinen Hashtags. Wenn du dies tust, werden sie hier erscheinen.", "empty_column.hashtag": "Unter diesem Hashtag gibt es noch nichts.", "empty_column.home": "Die Timeline deiner Startseite ist leer! Folge mehr Leuten, um sie zu füllen. {suggestions}", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Auf die aktuelle Spalte fokussieren", "keyboard_shortcuts.compose": "Eingabefeld fokussieren", "keyboard_shortcuts.description": "Beschreibung", - "keyboard_shortcuts.direct": "Direktnachrichten öffnen", + "keyboard_shortcuts.direct": "um die Direktnachrichtenspalte zu öffnen", "keyboard_shortcuts.down": "sich in der Liste nach unten bewegen", "keyboard_shortcuts.enter": "Beitrag öffnen", "keyboard_shortcuts.favourite": "favorisieren", @@ -330,8 +332,8 @@ "keyboard_shortcuts.open_media": "Medien-Datei öffnen", "keyboard_shortcuts.pinned": "Liste angehefteter Beiträge öffnen", "keyboard_shortcuts.profile": "Profil öffnen", - "keyboard_shortcuts.reply": "auf Beitrag antworten", - "keyboard_shortcuts.requests": "Liste der Follower-Anfragen öffnen", + "keyboard_shortcuts.reply": "Auf Beitrag antworten", + "keyboard_shortcuts.requests": "Liste der Folgeanfragen öffnen", "keyboard_shortcuts.search": "Suchleiste fokussieren", "keyboard_shortcuts.spoilers": "Inhaltswarnung anzeigen/ausblenden", "keyboard_shortcuts.start": "„Erste Schritte“-Spalte öffnen", @@ -381,9 +383,9 @@ "navigation_bar.explore": "Entdecken", "navigation_bar.favourites": "Favoriten", "navigation_bar.filters": "Stummgeschaltete Wörter", - "navigation_bar.follow_requests": "Follower-Anfragen", + "navigation_bar.follow_requests": "Folgeanfragen", "navigation_bar.followed_tags": "Gefolgte Hashtags", - "navigation_bar.follows_and_followers": "Folge ich und Follower", + "navigation_bar.follows_and_followers": "Follower und Folge ich", "navigation_bar.lists": "Listen", "navigation_bar.logout": "Abmelden", "navigation_bar.mutes": "Stummgeschaltete Profile", @@ -415,7 +417,7 @@ "notifications.column_settings.filter_bar.category": "Filterleiste:", "notifications.column_settings.filter_bar.show_bar": "Filterleiste anzeigen", "notifications.column_settings.follow": "Neue Follower:", - "notifications.column_settings.follow_request": "Neue Follower-Anfragen:", + "notifications.column_settings.follow_request": "Neue Folgeanfragen:", "notifications.column_settings.mention": "Erwähnungen:", "notifications.column_settings.poll": "Umfrageergebnisse:", "notifications.column_settings.push": "Push-Benachrichtigungen", @@ -502,7 +504,7 @@ "report.reasons.spam": "Das ist Spam", "report.reasons.spam_description": "Bösartige Links, gefälschtes Engagement oder wiederholte Antworten", "report.reasons.violation": "Er verstößt gegen Serverregeln", - "report.reasons.violation_description": "Du bist dir bewusst, dass es gegen bestimmte Regeln verstößt", + "report.reasons.violation_description": "Du bist dir sicher, dass eine bestimmte Regel gebrochen wurde", "report.rules.subtitle": "Wähle alle zutreffenden Inhalte aus", "report.rules.title": "Welche Regeln werden verletzt?", "report.statuses.subtitle": "Wähle alle zutreffenden Inhalte aus", @@ -520,14 +522,16 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Regelverstoß", "report_notification.open": "Meldung öffnen", + "search.no_recent_searches": "Keine kürzlichen Suchanfragen", "search.placeholder": "Suche", + "search.quick_action.account_search": "Profile passend zu {x}", + "search.quick_action.go_to_account": "Profil {x} aufrufen", + "search.quick_action.go_to_hashtag": "Hashtag {x} aufrufen", + "search.quick_action.open_url": "URL in Mastodon öffnen", + "search.quick_action.status_search": "Beiträge passend zu {x}", "search.search_or_paste": "Suchen oder URL einfügen", - "search_popout.search_format": "Erweiterte Suche", - "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 Profilnamen, Anzeigenamen oder Hashtags.", - "search_popout.tips.hashtag": "Hashtag", - "search_popout.tips.status": "Beitrag", - "search_popout.tips.text": "Einfache Texteingabe gibt Anzeigenamen, Profilnamen und Hashtags zurück", - "search_popout.tips.user": "Profil", + "search_popout.quick_actions": "Schnellaktionen", + "search_popout.recent": "Kürzliche Suchanfragen", "search_results.accounts": "Profile", "search_results.all": "Alles", "search_results.hashtags": "Hashtags", @@ -556,6 +560,7 @@ "status.delete": "Beitrag löschen", "status.detailed_status": "Detaillierte Ansicht der Unterhaltung", "status.direct": "Direktnachricht an @{name}", + "status.direct_indicator": "Direktnachricht", "status.edit": "Beitrag bearbeiten", "status.edited": "Bearbeitet {date}", "status.edited_x_times": "{count, plural, one {{count} mal} other {{count} mal}} bearbeitet", @@ -620,14 +625,14 @@ "trends.counter_by_accounts": "{count, plural, one {{counter} Profil} other {{counter} Profile}} {days, plural, one {seit gestern} other {in {days} Tagen}}", "trends.trending_now": "Aktuelle Trends", "ui.beforeunload": "Dein Entwurf geht verloren, wenn du Mastodon verlässt.", - "units.short.billion": "{count} Mrd", - "units.short.million": "{count} Mio", - "units.short.thousand": "{count} Tsd", + "units.short.billion": "{count} Mrd.", + "units.short.million": "{count} Mio.", + "units.short.thousand": "{count} Tsd.", "upload_area.title": "Zum Hochladen hereinziehen", "upload_button.label": "Bilder, Videos oder Audios hinzufügen", "upload_error.limit": "Dateiupload-Limit überschritten.", "upload_error.poll": "Medien-Anhänge sind zusammen mit Umfragen nicht erlaubt.", - "upload_form.audio_description": "Für Gehörlose und hörbehinderte Menschen beschreiben", + "upload_form.audio_description": "Beschreibe für Menschen mit Hörbehinderung", "upload_form.description": "Beschreibe für Menschen mit Sehbehinderung", "upload_form.description_missing": "Keine Beschreibung hinzugefügt", "upload_form.edit": "Bearbeiten", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index c09411f652..b490a7b6bd 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -560,7 +560,7 @@ "id": "status.edit" }, { - "defaultMessage": "Direct message @{name}", + "defaultMessage": "Privately mention @{name}", "id": "status.direct" }, { @@ -761,6 +761,10 @@ "defaultMessage": "{name} boosted", "id": "status.reblogged_by" }, + { + "defaultMessage": "Private mention", + "id": "status.direct_indicator" + }, { "defaultMessage": "Replied to {name}", "id": "status.replied_to" @@ -833,6 +837,14 @@ "defaultMessage": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "id": "confirmations.reply.message" }, + { + "defaultMessage": "Edit", + "id": "confirmations.edit.confirm" + }, + { + "defaultMessage": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", + "id": "confirmations.edit.message" + }, { "defaultMessage": "Hide entire domain", "id": "confirmations.domain_block.confirm" @@ -1101,7 +1113,7 @@ "id": "account.mention" }, { - "defaultMessage": "Direct message @{name}", + "defaultMessage": "Privately mention @{name}", "id": "account.direct" }, { @@ -1653,7 +1665,7 @@ "id": "suggestions.header" }, { - "defaultMessage": "People", + "defaultMessage": "Profiles", "id": "search_results.accounts" }, { @@ -1686,28 +1698,36 @@ "id": "search.search_or_paste" }, { - "defaultMessage": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", - "id": "search_popout.tips.full_text" + "defaultMessage": "Open URL in Mastodon", + "id": "search.quick_action.open_url" }, { - "defaultMessage": "Simple text returns matching display names, usernames and hashtags", - "id": "search_popout.tips.text" + "defaultMessage": "Go to hashtag {x}", + "id": "search.quick_action.go_to_hashtag" }, { - "defaultMessage": "Advanced search format", - "id": "search_popout.search_format" + "defaultMessage": "Go to profile {x}", + "id": "search.quick_action.go_to_account" }, { - "defaultMessage": "hashtag", - "id": "search_popout.tips.hashtag" + "defaultMessage": "Posts matching {x}", + "id": "search.quick_action.status_search" }, { - "defaultMessage": "user", - "id": "search_popout.tips.user" + "defaultMessage": "Profiles matching {x}", + "id": "search.quick_action.account_search" }, { - "defaultMessage": "status", - "id": "search_popout.tips.status" + "defaultMessage": "Recent searches", + "id": "search_popout.recent" + }, + { + "defaultMessage": "No recent searches", + "id": "search.no_recent_searches" + }, + { + "defaultMessage": "Quick actions", + "id": "search_popout.quick_actions" } ], "path": "app/javascript/mastodon/features/compose/components/search.json" @@ -1917,7 +1937,7 @@ { "descriptors": [ { - "defaultMessage": "Direct messages", + "defaultMessage": "Private mentions", "id": "column.direct" }, { @@ -1929,7 +1949,7 @@ "id": "compose_form.direct_message_warning_learn_more" }, { - "defaultMessage": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "defaultMessage": "You don't have any private mentions yet. When you send or receive one, it will show up here.", "id": "empty_column.direct" } ], @@ -2095,7 +2115,7 @@ "id": "search_results.all" }, { - "defaultMessage": "People", + "defaultMessage": "Profiles", "id": "search_results.accounts" }, { @@ -2424,7 +2444,7 @@ "id": "navigation_bar.explore" }, { - "defaultMessage": "Direct messages", + "defaultMessage": "Private mentions", "id": "navigation_bar.direct" }, { @@ -3542,7 +3562,7 @@ "id": "status.edit" }, { - "defaultMessage": "Direct message @{name}", + "defaultMessage": "Privately mention @{name}", "id": "status.direct" }, { @@ -3682,6 +3702,10 @@ { "defaultMessage": "Direct", "id": "privacy.direct.short" + }, + { + "defaultMessage": "Private mention", + "id": "status.direct_indicator" } ], "path": "app/javascript/mastodon/features/status/components/detailed_status.json" @@ -4191,7 +4215,7 @@ "id": "tabs_bar.federated_timeline" }, { - "defaultMessage": "Direct messages", + "defaultMessage": "Private mentions", "id": "navigation_bar.direct" }, { diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 3d71f3c5c4..cefc86853c 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -1,14 +1,14 @@ { - "about.blocks": "Κανένας πρόσφατος διακομιστής", + "about.blocks": "Συντονισμένοι διακομιστές", "about.contact": "Επικοινωνία:", "about.disclaimer": "Το Mastodon είναι ελεύθερο λογισμικό ανοιχτού κώδικα και εμπορικό σήμα της Mastodon gGmbH.", "about.domain_blocks.no_reason_available": "Αιτιολογία μη διαθέσιμη", - "about.domain_blocks.preamble": "Σε γενικές γραμμές το Mastodon σού επιτρέπει να βλέπεις περιεχόμενο και να αλληλεπιδράς με χρήστες από οποιονδήποτε άλλο server σε ένα διασυνδεδεμένο σύμπαν διακομιστών (fediverse). Ακολουθούν οι εξαιρέσεις που ισχύουν για τον συγκεκριμένο server.", - "about.domain_blocks.silenced.explanation": "Γενικά δεν μπορείς να δεις τα προφίλ και το περιεχόμενο αυτού του server, εκτός αν κάνεις μια στοχευμένη αναζήτηση ή επιλέξεις να τον ακολουθήσεις.", - "about.domain_blocks.silenced.title": "Η μετάφραση είναι ανοιχτή μόνο σε περιορισμένη ομάδα μεταφραστών, αν θέλετε να συνεισφέρετε, επικοινωνήστε με τους συντηρητές των έργων.", - "about.domain_blocks.suspended.explanation": "Κανένα δεδομένο αυτού του server δεν θα τυγχάνει επεξεργασίας, ούτε θα αποθηκεύεται, ούτε θα ανταλλάσεται, οπότε η οποιαδήποτε αλληλεπίδραση ή επικοινωνία με χρήστες αυτού του server είναι αδύνατη.", + "about.domain_blocks.preamble": "Σε γενικές γραμμές το Mastodon σού επιτρέπει να βλέπεις περιεχόμενο και να αλληλεπιδράς με χρήστες από οποιονδήποτε άλλο διακομιστή σε ένα διασυνδεδεμένο σύμπαν διακομιστών (fediverse). Ακολουθούν οι εξαιρέσεις που ισχύουν για τον συγκεκριμένο διακομιστή.", + "about.domain_blocks.silenced.explanation": "Συνήθως σε θα βλέπεις προφίλ και περιεχόμενο απ'αυτόν τον διακομιστή, εκτός αν κάνεις συγκεκριμένη αναζήτηση ή επιλέξεις να τον ακολουθήσεις.", + "about.domain_blocks.silenced.title": "Περιορισμένος", + "about.domain_blocks.suspended.explanation": "Τα δεδομένα αυτού του διακομιστή, δε θα επεξεργάζονται, δε θα αποθηκεύονται και δε θα ανταλλάσσονται, καθιστώντας οποιαδήποτε αλληλεπίδραση ή επικοινωνία με χρήστες από αυτόν το διακομιστή αδύνατη.", "about.domain_blocks.suspended.title": "Σε αναστολή", - "about.not_available": "Αυτές οι πληροφορίες δεν έχουν καταστεί διαθέσιμες σε αυτόν τον server.", + "about.not_available": "Αυτές οι πληροφορίες δεν έχουν είναι διαθέσιμες σε αυτόν τον διακομιστή.", "about.powered_by": "Αποκεντρωμένα μέσα κοινωνικής δικτύωσης που βασίζονται στο {mastodon}", "about.rules": "Κανόνες διακομιστή", "account.account_note_header": "Σημείωση", @@ -16,37 +16,37 @@ "account.badges.bot": "Μποτ", "account.badges.group": "Ομάδα", "account.block": "Αποκλεισμός @{name}", - "account.block_domain": "Αποκλεισμός {domain}", + "account.block_domain": "Αποκλεισμός τομέα {domain}", "account.blocked": "Αποκλεισμένος/η", "account.browse_more_on_origin_server": "Δες περισσότερα στο αρχικό προφίλ", "account.cancel_follow_request": "Απόσυρση αιτήματος παρακολούθησης", - "account.direct": "Άμεσο μήνυμα προς @{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.featured_tags.last_status_at": "Τελευταία δημοσίευση στις {date}", - "account.featured_tags.last_status_never": "Καμία Ανάρτηση", - "account.featured_tags.title": "προβεβλημένα hashtags του/της {name}", + "account.featured_tags.last_status_at": "Τελευταία ανάρτηση στις {date}", + "account.featured_tags.last_status_never": "Καμία ανάρτηση", + "account.featured_tags.title": "προβεβλημένες ετικέτες του/της {name}", "account.follow": "Ακολούθησε", "account.followers": "Ακόλουθοι", "account.followers.empty": "Κανείς δεν ακολουθεί αυτό τον χρήστη ακόμα.", "account.followers_counter": "{count, plural, one {{counter} Ακόλουθος} other {{counter} Ακόλουθοι}}", - "account.following": "Αυτό το πρόγραμμα χρέωσης καλύπτει τα ακόλουθα έργα:", - "account.following_counter": "{count, plural, other {{counter} Ακολουθεί}}", + "account.following": "Ακολουθείτε", + "account.following_counter": "{count, plural, one {{counter} Ακολουθεί} other {{counter} Ακολουθούν}}", "account.follows.empty": "Αυτός ο χρήστης δεν ακολουθεί κανέναν ακόμα.", "account.follows_you": "Σε ακολουθεί", "account.go_to_profile": "Μετάβαση στο προφίλ", - "account.hide_reblogs": "Απόκρυψη προωθήσεων από @{name}", - "account.joined_short": "Εγγραφή στο ", - "account.languages": "Είστε συνδρομητής", - "account.link_verified_on": "Η ιδιοκτησία αυτού του συνδέσμου ελέχθηκε την {date}", - "account.locked_info": "Η κατάσταση απορρήτου αυτού του λογαριασμού είναι κλειδωμένη. Ο ιδιοκτήτης επιβεβαιώνει χειροκίνητα ποιος μπορεί να τον ακολουθήσει.", + "account.hide_reblogs": "Απόκρυψη ενισχύσεων από @{name}", + "account.joined_short": "Έγινε μέλος", + "account.languages": "Αλλαγή εγγεγραμμένων γλωσσών", + "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.open_original_page": "Ανοικτό", @@ -56,23 +56,23 @@ "account.requested": "Εκκρεμεί έγκριση. Κάνε κλικ για να ακυρώσεις το αίτημα παρακολούθησης", "account.requested_follow": "Ο/Η {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.unblock_short": "Ξεμπλοκάρισμα", - "account.unendorse": "Άνευ προβολής στο προφίλ", - "account.unfollow": "Διακοπή παρακολούθησης", - "account.unmute": "Διακοπή αποσιώπησης @{name}", - "account.unmute_notifications": "Διακοπή αποσιώπησης ειδοποιήσεων του/της @{name}", + "account.show_reblogs": "Εμφάνιση ενισχύσεων από @{name}", + "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": "Κλικ για να βάλεις σημείωση", + "account_note.placeholder": "Κάνε κλικ για να προσθέσεις σημείωση", "admin.dashboard.daily_retention": "Ποσοστό χρηστών που παραμένουν μετά την εγγραφή, ανά ημέρα", "admin.dashboard.monthly_retention": "Ποσοστό χρηστών που παραμένουν μετά την εγγραφή, ανά μήνα", - "admin.dashboard.retention.average": "%(display_name)s άφησε %(ratings_total)s βαθμολογία,
    η μέση βαθμολογία είναι %(rating_average)s", + "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": "Εεπ!", @@ -102,7 +102,7 @@ "column.blocks": "Αποκλεισμένοι χρήστες", "column.bookmarks": "Σελιδοδείκτες", "column.community": "Τοπική ροή", - "column.direct": "Προσωπικά μηνύματα", + "column.direct": "Ιδιωτικές αναφορές", "column.directory": "Δες προφίλ", "column.domain_blocks": "Κρυμμένοι τομείς", "column.favourites": "Αγαπημένα", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Έχετε μη αποθηκευμένες αλλαγές στην περιγραφή πολυμέσων ή στην προεπισκόπηση, απορρίψτε τις ούτως ή άλλως;", "confirmations.domain_block.confirm": "Απόκρυψη ολόκληρου του τομέα", "confirmations.domain_block.message": "Σίγουρα θες να μπλοκάρεις ολόκληρο το {domain}; Συνήθως μερικά εστιασμένα μπλοκ ή αποσιωπήσεις επαρκούν και προτιμούνται. Δεν θα βλέπεις περιεχόμενο από αυτό τον κόμβο σε καμία δημόσια ροή, ούτε στις ειδοποιήσεις σου. Όσους ακόλουθους έχεις αυτό αυτό τον κόμβο θα αφαιρεθούν.", + "confirmations.edit.confirm": "Επεξεργασία", + "confirmations.edit.message": "Αν το επεξεργαστείτε τώρα θα αντικατασταθεί το μήνυμα που συνθέτετε. Είστε σίγουροι ότι θέλετε να συνεχίσετε;", "confirmations.logout.confirm": "Αποσύνδεση", "confirmations.logout.message": "Σίγουρα θέλεις να αποσυνδεθείς;", "confirmations.mute.confirm": "Αποσιώπηση", @@ -214,7 +216,7 @@ "empty_column.blocks": "Δεν έχεις αποκλείσει κανέναν χρήστη ακόμα.", "empty_column.bookmarked_statuses": "Δεν έχεις κανένα αποθηκευμένο τουτ ακόμα. Μόλις αποθηκεύσεις κάποιο, θα εμφανιστεί εδώ.", "empty_column.community": "Η τοπική ροή είναι κενή. Γράψε κάτι δημόσιο παραμύθι ν' αρχινίσει!", - "empty_column.direct": "Δεν έχεις προσωπικά μηνύματα ακόμα. Όταν στείλεις ή λάβεις κανένα, θα εμφανιστεί εδώ.", + "empty_column.direct": "Δεν έχεις καμία προσωπική αναφορά ακόμα. Όταν στείλεις ή λάβεις μία, θα εμφανιστεί εδώ.", "empty_column.domain_blocks": "Δεν υπάρχουν αποκλεισμένοι τομείς ακόμα.", "empty_column.explore_statuses": "Τίποτα δεν τρεντάρει αυτή τη στιγμή. Ελέγξτε αργότερα!", "empty_column.favourited_statuses": "Δεν έχεις κανένα αγαπημένο τουτ ακόμα. Μόλις αγαπήσεις κάποιο, θα εμφανιστεί εδώ.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "εμφάνιση της κατάστασης σε μια από τις στήλες", "keyboard_shortcuts.compose": "εστίαση στην περιοχή συγγραφής", "keyboard_shortcuts.description": "Περιγραφή", - "keyboard_shortcuts.direct": "άνοιγμα στήλης προσωπικών μηνυμάτων", + "keyboard_shortcuts.direct": "για το άνοιγμα της στήλης ιδιωτικών αναφορών", "keyboard_shortcuts.down": "κίνηση προς τα κάτω στη λίστα", "keyboard_shortcuts.enter": "εμφάνιση κατάστασης", "keyboard_shortcuts.favourite": "σημείωση ως αγαπημένο", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Σελιδοδείκτες", "navigation_bar.community_timeline": "Τοπική ροή", "navigation_bar.compose": "Γράψε νέο τουτ", - "navigation_bar.direct": "Προσωπικά μηνύματα", + "navigation_bar.direct": "Ιδιωτικές αναφορές", "navigation_bar.discover": "Ανακάλυψη", "navigation_bar.domain_blocks": "Κρυμμένοι τομείς", "navigation_bar.edit_profile": "Επεξεργασία προφίλ", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Ανεπιθύμητα", "report_notification.categories.violation": "Παραβίαση κανόνα", "report_notification.open": "Ανοικτό", + "search.no_recent_searches": "Καμμία πρόσφατη αναζήτηση", "search.placeholder": "Αναζήτηση", + "search.quick_action.account_search": "Προφίλ που ταιριάζουν με {x}", + "search.quick_action.go_to_account": "Μετάβαση στο προφίλ {x}", + "search.quick_action.go_to_hashtag": "Μετάβαση στην ετικέτα {x}", + "search.quick_action.open_url": "Άνοιγμα διεύθυνσης URL στο Mastodon", + "search.quick_action.status_search": "Αναρτήσεις που ταιριάζουν με {x}", "search.search_or_paste": "Αναζήτηση ή εισαγωγή URL", - "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_popout.quick_actions": "Γρήγορες ενέργειες", + "search_popout.recent": "Πρόσφατες αναζητήσεις", + "search_results.accounts": "Προφίλ", "search_results.all": "Όλα", "search_results.hashtags": "Ετικέτες", "search_results.nothing_found": "Δεν βρέθηκε τίποτα με αυτούς τους όρους αναζήτησης", @@ -555,7 +559,8 @@ "status.copy": "Αντιγραφή συνδέσμου της δημοσίευσης", "status.delete": "Διαγραφή", "status.detailed_status": "Προβολή λεπτομερειών συζήτησης", - "status.direct": "Προσωπικό μήνυμα προς @{name}", + "status.direct": "Ιδιωτική αναφορά @{name}", + "status.direct_indicator": "Ιδιωτική αναφορά", "status.edit": "Επεξεργασία", "status.edited": "Επεξεργάστηκε στις {date}", "status.edited_x_times": "Επεξεργάστηκε {count, plural, one {{count} φορά} other {{count} φορές}}", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 4ce198b908..5d381bc7d5 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -20,7 +20,7 @@ "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Browse more on the original profile", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "Direct message @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain blocked", "account.edit_profile": "Edit profile", @@ -102,7 +102,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.direct": "Private mentions", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "confirmations.domain_block.confirm": "Block 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.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Log out", "confirmations.logout.message": "Are you sure you want to log out?", "confirmations.mute.confirm": "Mute", @@ -214,7 +216,7 @@ "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.direct": "You don't have any private mentions yet. When you send or receive one, 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.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "to open direct messages column", + "keyboard_shortcuts.direct": "to open private mentions column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new post", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Search", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Search or paste URL", - "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.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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "All", "search_results.hashtags": "Hashtags", "search_results.nothing_found": "Could not find anything for these search terms", @@ -555,7 +559,8 @@ "status.copy": "Copy link to status", "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", - "status.direct": "Direct message @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Edit", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 534428d527..236f168616 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -20,7 +20,7 @@ "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Browse more on the original profile", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "Direct message @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain blocked", "account.edit_profile": "Edit profile", @@ -102,7 +102,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.direct": "Private mentions", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", @@ -120,10 +120,6 @@ "column_header.pin": "Pin", "column_header.show_settings": "Show settings", "column_header.unpin": "Unpin", - "column.heading": "Misc", - "column.subheading": "Miscellaneous options", - "column_subheading.lists": "Lists", - "column_subheading.navigation": "Navigation", "column_subheading.settings": "Settings", "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media Only", @@ -166,6 +162,8 @@ "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "confirmations.domain_block.confirm": "Block 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.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Log out", "confirmations.logout.message": "Are you sure you want to log out?", "confirmations.mute.confirm": "Mute", @@ -218,7 +216,7 @@ "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.direct": "You don't have any private mentions yet. When you send or receive one, 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.", @@ -316,7 +314,7 @@ "keyboard_shortcuts.column": "Focus column", "keyboard_shortcuts.compose": "Focus compose textarea", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "to open direct messages column", + "keyboard_shortcuts.direct": "to open private mentions column", "keyboard_shortcuts.down": "Move down in the list", "keyboard_shortcuts.enter": "Open post", "keyboard_shortcuts.favourite": "Favourite post", @@ -378,7 +376,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new post", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Blocked domains", "navigation_bar.edit_profile": "Edit profile", @@ -389,7 +387,6 @@ "navigation_bar.followed_tags": "Followed hashtags", "navigation_bar.follows_and_followers": "Follows and followers", "navigation_bar.lists": "Lists", - "navigation_bar.misc": "Misc", "navigation_bar.logout": "Logout", "navigation_bar.mutes": "Muted users", "navigation_bar.personal": "Personal", @@ -525,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Search", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Search or paste URL", - "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.", - "search_popout.tips.hashtag": "hashtag", - "search_popout.tips.status": "post", - "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", - "search_popout.tips.user": "user", - "search_results.accounts": "People", + "search_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "All", "search_results.hashtags": "Hashtags", "search_results.nothing_found": "Could not find anything for these search terms", @@ -560,7 +559,8 @@ "status.copy": "Copy link to post", "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", - "status.direct": "Direct message @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Edit", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index fde1636282..be5ec1dc7a 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -20,7 +20,7 @@ "account.blocked": "Blokita", "account.browse_more_on_origin_server": "Foliumi pli ĉe la originala profilo", "account.cancel_follow_request": "Nuligi peton por sekvado", - "account.direct": "Rekte mesaĝi @{name}", + "account.direct": "Private mencii @{name}", "account.disable_notifications": "Ne plu sciigi min, kiam @{name} mesaĝas", "account.domain_blocked": "Domajno blokita", "account.edit_profile": "Redakti la profilon", @@ -102,7 +102,7 @@ "column.blocks": "Blokitaj uzantoj", "column.bookmarks": "Legosignoj", "column.community": "Loka templinio", - "column.direct": "Rektaj mesaĝoj", + "column.direct": "Privataj mencioj", "column.directory": "Foliumi la profilojn", "column.domain_blocks": "Blokitaj domajnoj", "column.favourites": "Stelumoj", @@ -138,8 +138,8 @@ "compose_form.poll.remove_option": "Forigi ĉi tiu elekteblon", "compose_form.poll.switch_to_multiple": "Ŝanĝi la balotenketon por permesi multajn elektojn", "compose_form.poll.switch_to_single": "Ŝanĝi la balotenketon por permesi unu solan elekton", - "compose_form.publish": "Hup", - "compose_form.publish_form": "Hup", + "compose_form.publish": "Afiŝi", + "compose_form.publish_form": "Afiŝi", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Konservi ŝanĝojn", "compose_form.sensitive.hide": "{count, plural, one {Marki la plurmedio kiel tikla} other {Marki la plurmedioj kiel tiklaj}}", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Vi havas nekonservitajn ŝanĝojn de la priskribo aŭ la antaŭmontro de la plurmedio, ĉu vi forĵetu ilin malgraŭe?", "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.edit.confirm": "Redakti", + "confirmations.edit.message": "Redakti nun anstataŭigos la skribatan afiŝon. Ĉu vi certas, ke vi volas daŭrigi?", "confirmations.logout.confirm": "Adiaŭi", "confirmations.logout.message": "Ĉu vi certas ke vi volas adiaŭi?", "confirmations.mute.confirm": "Silentigi", @@ -170,7 +172,7 @@ "confirmations.redraft.confirm": "Forigi kaj reskribi", "confirmations.redraft.message": "Ĉu vi certas ke vi volas forigi tiun afiŝon kaj reskribi ĝin? Ĉiuj diskonigoj kaj stelumoj estos perditaj, kaj respondoj al la originala mesaĝo estos senparentaj.", "confirmations.reply.confirm": "Respondi", - "confirmations.reply.message": "Respondi nun anstataŭigos la mesaĝon, kiun vi nun skribas. Ĉu vi certas, ke vi volas daŭrigi?", + "confirmations.reply.message": "Respondi nun anstataŭigos la skribatan afiŝon. Ĉu vi certas, ke vi volas daŭrigi?", "confirmations.unfollow.confirm": "Ne plu sekvi", "confirmations.unfollow.message": "Ĉu vi certas, ke vi volas ĉesi sekvi {name}?", "conversation.delete": "Forigi konversacion", @@ -188,10 +190,10 @@ "dismissable_banner.community_timeline": "Jen la plej novaj publikaj afiŝoj de uzantoj, kies kontojn gastigas {domain}.", "dismissable_banner.dismiss": "Eksigi", "dismissable_banner.explore_links": "Tiuj novaĵoj estas aktuale priparolataj de uzantoj en tiu ĉi kaj aliaj serviloj, sur la malcentrigita reto.", - "dismissable_banner.explore_statuses": "Ĉi tiuj mesaĝoj de ĉi tiu kaj aliaj serviloj en la malcentra reto pli populariĝas en ĉi tiu servilo nun.", + "dismissable_banner.explore_statuses": "Ĉi tiuj afiŝoj de ĉi tiu kaj aliaj serviloj en la malcentra reto pli populariĝas en ĉi tiu servilo nun.", "dismissable_banner.explore_tags": "Ĉi tiuj kradvostoj populariĝas en ĉi tiu kaj aliaj serviloj en la malcentraliza reto nun.", - "dismissable_banner.public_timeline": "Ĉi tiuj estas plej lastaj publika mesaĝoj de personoj ĉe ĉi tiu kaj aliaj serviloj de la malcentra reto kiun ĉi tiu servilo scias.", - "embed.instructions": "Enkorpigu ĉi tiun mesaĝon en vian retejon per kopio de la suba kodo.", + "dismissable_banner.public_timeline": "Ĉi tiuj estas plej lastaj publikaj afiŝoj de personoj ĉe ĉi tiu kaj aliaj serviloj de la malcentra reto kiun tiu ĉi servilo scias.", + "embed.instructions": "Enkorpigu ĉi tiun afiŝon en vian retejon per kopio de la suba kodo.", "embed.preview": "Ĝi aperos tiel:", "emoji_button.activity": "Agadoj", "emoji_button.clear": "Forviŝi", @@ -209,23 +211,23 @@ "emoji_button.symbols": "Simboloj", "emoji_button.travel": "Vojaĝoj kaj lokoj", "empty_column.account_suspended": "Konto suspendita", - "empty_column.account_timeline": "Neniu mesaĝo ĉi tie!", + "empty_column.account_timeline": "Neniu afiŝo ĉi tie!", "empty_column.account_unavailable": "Profilo ne disponebla", "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.bookmarked_statuses": "Vi ankoraŭ ne aldonis afiŝ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.direct": "Vi ankoraŭ ne havas privatan mencion. Kiam vi sendos aŭ ricevos iun, tiu aperos ĉi tie.", "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 afiŝon. Kiam vi stelumos iun, ĝi aperos ĉi tie.", - "empty_column.favourites": "Ankoraŭ neniu stelumis tiun mesaĝon. Kiam iu faros tion, tiu aperos ĉi tie.", + "empty_column.favourites": "Ankoraŭ neniu stelumis ĉi tiun afiŝon. Kiam iu faros tion, tiu aperos ĉi tie.", "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.followed_tags": "Vi ankoraŭ ne sekvas iujn kradvortojn. Kiam vi faras, ili 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.", "empty_column.home.suggestions": "Vidu iujn sugestojn", - "empty_column.list": "Ankoraŭ estas nenio en ĉi tiu listo. Kiam membroj de ĉi tiu listo afiŝos novajn mesaĝojn, ili aperos ĉi tie.", + "empty_column.list": "Ankoraŭ estas nenio en ĉi tiu listo. Kiam membroj de ĉi tiu listo afiŝos novajn afiŝojn, ili aperos ĉi tie.", "empty_column.lists": "Vi ankoraŭ ne havas liston. Kiam vi kreos iun, ĝi aperos ĉi tie.", "empty_column.mutes": "Vi ne ankoraŭ silentigis iun uzanton.", "empty_column.notifications": "Vi ankoraŭ ne havas sciigojn. Interagu kun aliaj por komenci konversacion.", @@ -242,7 +244,7 @@ "explore.trending_links": "Novaĵoj", "explore.trending_statuses": "Afiŝoj", "explore.trending_tags": "Kradvortoj", - "filter_modal.added.context_mismatch_explanation": "Ĉi tiu filtrilkategorio ne kongruas la kuntekston de ĉi tiu mesaĝo. Vi devas redakti la filtrilon.", + "filter_modal.added.context_mismatch_explanation": "Ĉi tiu filtrilkategorio ne kongruas kun la kunteksto en kiu vi akcesis ĉi tiun afiŝon. Se vi volas ke la afiŝo estas ankaŭ filtrita en ĉi tiu kunteksto, vi devus redakti la filtrilon.", "filter_modal.added.context_mismatch_title": "Ne kongruas la kunteksto!", "filter_modal.added.expired_explanation": "Ĉi tiu filtrilkategorio eksvalidiĝis, vu bezonos ŝanĝi la eksvaliddaton por ĝi.", "filter_modal.added.expired_title": "Eksvalida filtrilo!", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "fokusi mesaĝon en unu el la kolumnoj", "keyboard_shortcuts.compose": "enfokusigi la tekstujon", "keyboard_shortcuts.description": "Priskribo", - "keyboard_shortcuts.direct": "malfermi la kolumnon de rektaj mesaĝoj", + "keyboard_shortcuts.direct": "por malfermi la kolumnon pri privataj mencioj", "keyboard_shortcuts.down": "iri suben en la listo", "keyboard_shortcuts.enter": "malfermi mesaĝon", "keyboard_shortcuts.favourite": "Stelumi", @@ -374,7 +376,7 @@ "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.direct": "Privataj mencioj", "navigation_bar.discover": "Esplori", "navigation_bar.domain_blocks": "Blokitaj domajnoj", "navigation_bar.edit_profile": "Redakti profilon", @@ -402,8 +404,8 @@ "notification.mention": "{name} menciis vin", "notification.own_poll": "Via enketo finiĝis", "notification.poll": "Partoprenita balotenketo finiĝis", - "notification.reblog": "{name} diskonigis vian mesaĝon", - "notification.status": "{name} ĵus afiŝita", + "notification.reblog": "{name} diskonigis vian afiŝon", + "notification.status": "{name} ĵus afiŝis", "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?", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Trudmesaĝo", "report_notification.categories.violation": "Malobservo de la regulo", "report_notification.open": "Malfermi la raporton", + "search.no_recent_searches": "Neniuj lastaj serĉoj", "search.placeholder": "Serĉi", + "search.quick_action.account_search": "Profiloj kiuj kongruas kun {x}", + "search.quick_action.go_to_account": "Iri al profilo {x}", + "search.quick_action.go_to_hashtag": "Iri al kradvorto {x}", + "search.quick_action.open_url": "Malfermi URL en Mastodono", + "search.quick_action.status_search": "Afiŝoj kiuj kongruas kun {x}", "search.search_or_paste": "Serĉu aŭ algluu URL-on", - "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.", - "search_popout.tips.hashtag": "kradvorto", - "search_popout.tips.status": "afiŝoj", - "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_popout.quick_actions": "Rapidaj agoj", + "search_popout.recent": "Lastaj serĉoj", + "search_results.accounts": "Profiloj", "search_results.all": "Ĉiuj", "search_results.hashtags": "Kradvortoj", "search_results.nothing_found": "Povis trovi nenion por ĉi tiuj serĉaj terminoj", @@ -551,11 +555,12 @@ "status.block": "Bloki @{name}", "status.bookmark": "Aldoni al la legosignoj", "status.cancel_reblog_private": "Ne plu diskonigi", - "status.cannot_reblog": "Ĉi tiu mesaĝo ne diskonigeblas", + "status.cannot_reblog": "Ĉi tiun afiŝon ne eblas diskonigi", "status.copy": "Kopii la ligilon al la mesaĝo", "status.delete": "Forigi", "status.detailed_status": "Detala konversacia vido", - "status.direct": "Rekte mesaĝi @{name}", + "status.direct": "Private mencii @{name}", + "status.direct_indicator": "Privata mencio", "status.edit": "Redakti", "status.edited": "Redaktita {date}", "status.edited_x_times": "Redactita {count, plural, one {{count} fojon} other {{count} fojojn}}", @@ -579,7 +584,7 @@ "status.reblog": "Diskonigi", "status.reblog_private": "Diskonigi kun la sama videbleco", "status.reblogged_by": "{name} diskonigis", - "status.reblogs.empty": "Ankoraŭ neniu diskonigis tiun mesaĝon. Kiam iu faras tion, ri aperos ĉi tie.", + "status.reblogs.empty": "Ankoraŭ neniu diskonigis tiun afiŝon. Kiam iu faras tion, ri aperos ĉi tie.", "status.redraft": "Forigi kaj reskribi", "status.remove_bookmark": "Forigi legosignon", "status.replied_to": "Respondis al {name}", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index f48187e5da..a577cec79a 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -20,7 +20,7 @@ "account.blocked": "Bloqueado", "account.browse_more_on_origin_server": "Explorar más en el perfil original", "account.cancel_follow_request": "Retirar la solicitud de seguimiento", - "account.direct": "Mensaje directo a @{name}", + "account.direct": "Mención privada a @{name}", "account.disable_notifications": "Dejar de notificarme cuando @{name} envíe mensajes", "account.domain_blocked": "Dominio bloqueado", "account.edit_profile": "Editar perfil", @@ -102,7 +102,7 @@ "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", "column.community": "Línea temporal local", - "column.direct": "Mensajes directos", + "column.direct": "Menciones privadas", "column.directory": "Explorar perfiles", "column.domain_blocks": "Dominios bloqueados", "column.favourites": "Favoritos", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Tenés cambios sin guardar en la descripción de medios o en la vista previa, ¿querés descartarlos de todos modos?", "confirmations.domain_block.confirm": "Bloquear dominio entero", "confirmations.domain_block.message": "¿Estás completamente seguro que querés bloquear el {domain} entero? En la mayoría de los casos, unos cuantos bloqueos y silenciados puntuales son suficientes y preferibles. No vas a ver contenido de ese dominio en ninguna de tus líneas temporales o en tus notificaciones. Tus seguidores de ese dominio serán quitados.", + "confirmations.edit.confirm": "Editar", + "confirmations.edit.message": "Editar ahora sobreescribirá el mensaje que estás redactando actualmente. ¿Estás seguro que querés seguir?", "confirmations.logout.confirm": "Cerrar sesión", "confirmations.logout.message": "¿Estás seguro que querés cerrar la sesión?", "confirmations.mute.confirm": "Silenciar", @@ -214,7 +216,7 @@ "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.direct": "Todavía no tenés ninguna mención privada. Cuando enviés o recibás una, se mostrará acá.", "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á.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Enfocar columna", "keyboard_shortcuts.compose": "Enfocar el área de texto de redacción", "keyboard_shortcuts.description": "Descripción", - "keyboard_shortcuts.direct": "para abrir columna de mensajes directos", + "keyboard_shortcuts.direct": "para abrir la columna de menciones privadas", "keyboard_shortcuts.down": "Bajar en la lista", "keyboard_shortcuts.enter": "Abrir mensaje", "keyboard_shortcuts.favourite": "Marcar mensaje como favorito", @@ -374,7 +376,7 @@ "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.direct": "Menciones privadas", "navigation_bar.discover": "Descubrir", "navigation_bar.domain_blocks": "Dominios bloqueados", "navigation_bar.edit_profile": "Editar perfil", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Violación de regla", "report_notification.open": "Abrir denuncia", + "search.no_recent_searches": "Sin búsquedas recientes", "search.placeholder": "Buscar", + "search.quick_action.account_search": "Perfiles que coinciden con {x}", + "search.quick_action.go_to_account": "Ir al perfil de {x}", + "search.quick_action.go_to_hashtag": "Ir a la etiqueta {x}", + "search.quick_action.open_url": "Abrir enlace en Mastodon", + "search.quick_action.status_search": "Mensajes que coinciden con {x}", "search.search_or_paste": "Buscar o pegar dirección web", - "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.", - "search_popout.tips.hashtag": "etiqueta", - "search_popout.tips.status": "mensaje", - "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_popout.quick_actions": "Acciones rápidas", + "search_popout.recent": "Búsquedas recientes", + "search_results.accounts": "Perfiles", "search_results.all": "Todos", "search_results.hashtags": "Etiquetas", "search_results.nothing_found": "No se pudo encontrar nada para estos términos de búsqueda", @@ -555,7 +559,8 @@ "status.copy": "Copiar enlace al mensaje", "status.delete": "Eliminar", "status.detailed_status": "Vista de conversación detallada", - "status.direct": "Mensaje directo para @{name}", + "status.direct": "Mención privada a @{name}", + "status.direct_indicator": "Mención privada", "status.edit": "Editar", "status.edited": "Editado {date}", "status.edited_x_times": "Editado {count, plural, one {{count} vez} other {{count} veces}}", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 0c6b49593a..1338b8b463 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -20,7 +20,7 @@ "account.blocked": "Bloqueado", "account.browse_more_on_origin_server": "Ver más en el perfil original", "account.cancel_follow_request": "Retirar solicitud de seguimiento", - "account.direct": "Mensaje a @{name}", + "account.direct": "Mención privada @{name}", "account.disable_notifications": "Dejar de notificarme cuando @{name} publique algo", "account.domain_blocked": "Dominio oculto", "account.edit_profile": "Editar perfil", @@ -102,7 +102,7 @@ "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", "column.community": "Línea de tiempo local", - "column.direct": "Mensajes", + "column.direct": "Menciones privadas", "column.directory": "Buscar perfiles", "column.domain_blocks": "Dominios ocultados", "column.favourites": "Favoritos", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Tienes cambios sin guardar en la descripción o vista previa del archivo, ¿deseas descartarlos de cualquier manera?", "confirmations.domain_block.confirm": "Ocultar dominio entero", "confirmations.domain_block.message": "¿Seguro de que quieres bloquear al dominio {domain} entero? En general unos cuantos bloqueos y silenciados concretos es suficiente y preferible.", + "confirmations.edit.confirm": "Editar", + "confirmations.edit.message": "Editar sobrescribirá el mensaje que estás escribiendo. ¿Estás seguro de que deseas continuar?", "confirmations.logout.confirm": "Cerrar sesión", "confirmations.logout.message": "¿Estás seguro de querer cerrar la sesión?", "confirmations.mute.confirm": "Silenciar", @@ -214,7 +216,7 @@ "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. Cuando envíes o recibas uno, se mostrará aquí.", + "empty_column.direct": "Aún no tienes menciones privadas. Cuando envíes o recibas una, aparecerán aquí.", "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í.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "enfocar un estado en una de las columnas", "keyboard_shortcuts.compose": "enfocar el área de texto de redacción", "keyboard_shortcuts.description": "Descripción", - "keyboard_shortcuts.direct": "abrir la columna de mensajes", + "keyboard_shortcuts.direct": "para abrir la columna de menciones privadas", "keyboard_shortcuts.down": "mover hacia abajo en la lista", "keyboard_shortcuts.enter": "abrir estado", "keyboard_shortcuts.favourite": "añadir a favoritos", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Historia local", "navigation_bar.compose": "Escribir un nuevo toot", - "navigation_bar.direct": "Mensajes", + "navigation_bar.direct": "Menciones privadas", "navigation_bar.discover": "Descubrir", "navigation_bar.domain_blocks": "Dominios ocultos", "navigation_bar.edit_profile": "Editar perfil", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Infracción de regla", "report_notification.open": "Abrir denuncia", + "search.no_recent_searches": "Sin búsquedas recientes", "search.placeholder": "Buscar", + "search.quick_action.account_search": "Perfiles que coinciden con {x}", + "search.quick_action.go_to_account": "Ir al perfil {x}", + "search.quick_action.go_to_hashtag": "Ir a la etiqueta {x}", + "search.quick_action.open_url": "Abrir enlace en Mastodon", + "search.quick_action.status_search": "Publicaciones que coinciden con {x}", "search.search_or_paste": "Buscar o pegar URL", - "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.", - "search_popout.tips.hashtag": "etiqueta", - "search_popout.tips.status": "publicación", - "search_popout.tips.text": "El texto simple devuelve nombres, usuarios y etiquetas coincidentes", - "search_popout.tips.user": "usuario", - "search_results.accounts": "Gente", + "search_popout.quick_actions": "Acciones rápidas", + "search_popout.recent": "Búsquedas recientes", + "search_results.accounts": "Perfiles", "search_results.all": "Todos", "search_results.hashtags": "Etiquetas", "search_results.nothing_found": "No se pudo encontrar nada para estos términos de búsqueda", @@ -555,7 +559,8 @@ "status.copy": "Copiar enlace al estado", "status.delete": "Borrar", "status.detailed_status": "Vista de conversación detallada", - "status.direct": "Enviar mensaje a @{name}", + "status.direct": "Mención privada @{name}", + "status.direct_indicator": "Mención privada", "status.edit": "Editar", "status.edited": "Editado {date}", "status.edited_x_times": "Editado {count, plural, one {{count} time} other {{count} veces}}", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 47c6edd829..d9f2540556 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -20,7 +20,7 @@ "account.blocked": "Bloqueado", "account.browse_more_on_origin_server": "Ver más en el perfil original", "account.cancel_follow_request": "Retirar solicitud de seguimiento", - "account.direct": "Mensaje directo a @{name}", + "account.direct": "Mención privada @{name}", "account.disable_notifications": "Dejar de notificarme cuando @{name} publique algo", "account.domain_blocked": "Dominio bloqueado", "account.edit_profile": "Editar perfil", @@ -59,13 +59,13 @@ "account.show_reblogs": "Mostrar impulsos de @{name}", "account.statuses_counter": "{count, plural, one {{counter} Publicación} other {{counter} Publicaciones}}", "account.unblock": "Desbloquear a @{name}", - "account.unblock_domain": "Mostrar {domain}", + "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": "Desilenciar", + "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", @@ -76,7 +76,7 @@ "alert.rate_limited.title": "Tráfico limitado", "alert.unexpected.message": "Hubo un error inesperado.", "alert.unexpected.title": "¡Ups!", - "announcement.announcement": "Comunicación", + "announcement.announcement": "Anuncio", "attachments_list.unprocessed": "(sin procesar)", "audio.hide": "Ocultar audio", "autosuggest_hashtag.per_week": "{count} por semana", @@ -102,7 +102,7 @@ "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", "column.community": "Cronología local", - "column.direct": "Mensajes directos", + "column.direct": "Menciones privadas", "column.directory": "Buscar perfiles", "column.domain_blocks": "Dominios bloqueados", "column.favourites": "Favoritos", @@ -140,12 +140,12 @@ "compose_form.poll.switch_to_single": "Modificar encuesta para permitir una única opción", "compose_form.publish": "Publicar", "compose_form.publish_form": "Publicar", - "compose_form.publish_loud": "{publish}!", + "compose_form.publish_loud": "¡{publish}!", "compose_form.save_changes": "Guardar cambios", "compose_form.sensitive.hide": "{count, plural, one {Marcar material como sensible} other {Marcar material como sensible}}", "compose_form.sensitive.marked": "{count, plural, one {Material marcado como sensible} other {Material marcado como sensible}}", "compose_form.sensitive.unmarked": "{count, plural, one {Material no marcado como sensible} other {Material no marcado como sensible}}", - "compose_form.spoiler.marked": "Texto oculto tras la advertencia", + "compose_form.spoiler.marked": "Quitar advertencia de contenido", "compose_form.spoiler.unmarked": "Añadir advertencia de contenido", "compose_form.spoiler_placeholder": "Escribe aquí tu advertencia", "confirmation_modal.cancel": "Cancelar", @@ -160,8 +160,10 @@ "confirmations.delete_list.message": "¿Seguro que quieres borrar esta lista permanentemente?", "confirmations.discard_edit_media.confirm": "Descartar", "confirmations.discard_edit_media.message": "Tienes cambios sin guardar en la descripción o vista previa del archivo audiovisual, ¿descartarlos de todos modos?", - "confirmations.domain_block.confirm": "Ocultar dominio entero", + "confirmations.domain_block.confirm": "Bloquear dominio entero", "confirmations.domain_block.message": "¿Seguro de que quieres bloquear al dominio {domain} entero? En general unos cuantos bloqueos y silenciados concretos es suficiente y preferible.", + "confirmations.edit.confirm": "Editar", + "confirmations.edit.message": "Editar ahora reemplazará el mensaje que está escribiendo. ¿Está seguro que quiere proceder?", "confirmations.logout.confirm": "Cerrar sesión", "confirmations.logout.message": "¿Estás seguro de querer cerrar la sesión?", "confirmations.mute.confirm": "Silenciar", @@ -214,7 +216,7 @@ "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.direct": "Aún no tienes menciones privadas. Cuando envíes o recibas una, aparecerán 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í.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "enfocar un estado en una de las columnas", "keyboard_shortcuts.compose": "enfocar el área de texto de redacción", "keyboard_shortcuts.description": "Descripción", - "keyboard_shortcuts.direct": "para abrir la columna de mensajes directos", + "keyboard_shortcuts.direct": "para abrir la columna de menciones privadas", "keyboard_shortcuts.down": "mover hacia abajo en la lista", "keyboard_shortcuts.enter": "abrir estado", "keyboard_shortcuts.favourite": "añadir a favoritos", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Cronología local", "navigation_bar.compose": "Escribir nueva publicación", - "navigation_bar.direct": "Mensajes directos", + "navigation_bar.direct": "Menciones privadas", "navigation_bar.discover": "Descubrir", "navigation_bar.domain_blocks": "Dominios ocultos", "navigation_bar.edit_profile": "Editar perfil", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Infracción de regla", "report_notification.open": "Abrir informe", + "search.no_recent_searches": "Sin búsquedas recientes", "search.placeholder": "Buscar", + "search.quick_action.account_search": "Perfiles que coinciden con {x}", + "search.quick_action.go_to_account": "Ir al perfil {x}", + "search.quick_action.go_to_hashtag": "Ir a la etiqueta {x}", + "search.quick_action.open_url": "Abrir enlace en Mastodon", + "search.quick_action.status_search": "Publicaciones que coinciden con {x}", "search.search_or_paste": "Buscar o pegar URL", - "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.", - "search_popout.tips.hashtag": "etiqueta", - "search_popout.tips.status": "status", - "search_popout.tips.text": "El texto simple devuelve correspondencias de nombre, usuario y hashtag", - "search_popout.tips.user": "usuario", - "search_results.accounts": "Gente", + "search_popout.quick_actions": "Acciones rápidas", + "search_popout.recent": "Búsquedas recientes", + "search_results.accounts": "Perfiles", "search_results.all": "Todos", "search_results.hashtags": "Etiquetas", "search_results.nothing_found": "No se pudo encontrar nada para estos términos de búsqueda", @@ -555,7 +559,8 @@ "status.copy": "Copiar enlace al estado", "status.delete": "Borrar", "status.detailed_status": "Vista de conversación detallada", - "status.direct": "Mensaje directo a @{name}", + "status.direct": "Mención privada @{name}", + "status.direct_indicator": "Mención privada", "status.edit": "Editar", "status.edited": "Editado {date}", "status.edited_x_times": "Editado {count, plural, one {{count} vez} other {{count} veces}}", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 0f9f33080c..a61a577d69 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -20,7 +20,7 @@ "account.blocked": "Blokeeritud", "account.browse_more_on_origin_server": "Vaata rohkem algsel profiilil", "account.cancel_follow_request": "Võta jälgimistaotlus tagasi", - "account.direct": "Otsesõnum kasutajale @{name}", + "account.direct": "Maini privaatselt @{name}", "account.disable_notifications": "Peata teavitused @{name} postitustest", "account.domain_blocked": "Domeen peidetud", "account.edit_profile": "Muuda profiili", @@ -102,7 +102,7 @@ "column.blocks": "Blokeeritud kasutajad", "column.bookmarks": "Järjehoidjad", "column.community": "Kohalik ajajoon", - "column.direct": "Otsesõnumid", + "column.direct": "Privaatsed mainimised", "column.directory": "Sirvi profiile", "column.domain_blocks": "Peidetud domeenid", "column.favourites": "Lemmikud", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Sul on salvestamata muudatusi meediakirjelduses või eelvaates, kas hülgad need?", "confirmations.domain_block.confirm": "Peida terve domeen", "confirmations.domain_block.message": "Oled ikka päris-päris kindel, et soovid blokeerida terve {domain}? Enamikel juhtudel piisab mõnest sihitud blokist või vaigistusest, mis on eelistatavam. Sa ei näe selle domeeni sisu ühelgi avalikul ajajoonel või enda teadetes. Su jälgijad sellest domeenist eemaldatakse.", + "confirmations.edit.confirm": "Muuda", + "confirmations.edit.message": "Muutes praegu kirjutatakse hetkel loodav sõnum üle. Kas oled kindel, et soovid jätkata?", "confirmations.logout.confirm": "Välju", "confirmations.logout.message": "Kas oled kindel, et soovid välja logida?", "confirmations.mute.confirm": "Vaigista", @@ -214,7 +216,7 @@ "empty_column.blocks": "Blokeeritud kasutajaid pole.", "empty_column.bookmarked_statuses": "Järjehoidjatesse pole veel lisatud postitusi. Kui lisad mõne, näed neid siin.", "empty_column.community": "Kohalik ajajoon on tühi. Kirjuta midagi avalikult, et pall veerema ajada!", - "empty_column.direct": "Ei ole veel otsesõnumeid. Kui saadad või võtad mõne vastu, ilmuvad nad siia.", + "empty_column.direct": "Sul pole veel ühtegi privaatset mainimist. Kui saadad või saad mõne, ilmuvad need siin.", "empty_column.domain_blocks": "Siin ei ole veel peidetud domeene.", "empty_column.explore_statuses": "Praegu pole ühtegi trendi. Tule hiljem tagasi!", "empty_column.favourited_statuses": "Pole veel lemmikpostitusi. Kui märgid mõne, näed neid siin.", @@ -222,7 +224,7 @@ "empty_column.follow_recommendations": "Tundub, et sinu jaoks ei ole võimalik soovitusi luua. Proovi kasutada otsingut, et leida tuttavaid inimesi, või sirvi populaarseid silte.", "empty_column.follow_requests": "Pole hetkel ühtegi jälgimistaotlust. Kui saad mõne, näed neid siin.", "empty_column.followed_tags": "Sa ei jälgi veel ühtegi märksõna. Kui jälgid, ilmuvad need siia.", - "empty_column.hashtag": "Seda sildi all ei ole ühtegi postitust.", + "empty_column.hashtag": "Selle sildi all ei ole ühtegi postitust.", "empty_column.home": "Su koduajajoon on tühi. Jälgi rohkemaid inimesi, et seda täita {suggestions}", "empty_column.home.suggestions": "Vaata mõndasid soovitusi", "empty_column.list": "Siin loetelus pole veel midagi. Kui loetelu liikmed teevad uusi postitusi, näed neid siin.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Fookus veerule", "keyboard_shortcuts.compose": "Fookus teksti koostamise alale", "keyboard_shortcuts.description": "Kirjeldus", - "keyboard_shortcuts.direct": "ava otsesõnumite veerg", + "keyboard_shortcuts.direct": "privaatsete mainimiste veeru avamiseks", "keyboard_shortcuts.down": "Liigu loetelus alla", "keyboard_shortcuts.enter": "Ava postitus", "keyboard_shortcuts.favourite": "Märgi lemmikuks", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Järjehoidjad", "navigation_bar.community_timeline": "Kohalik ajajoon", "navigation_bar.compose": "Koosta uus postitus", - "navigation_bar.direct": "Otsesõnumid", + "navigation_bar.direct": "Privaatsed mainimised", "navigation_bar.discover": "Avasta", "navigation_bar.domain_blocks": "Peidetud domeenid", "navigation_bar.edit_profile": "Muuda profiili", @@ -398,8 +400,8 @@ "notification.admin.sign_up": "{name} registreerus", "notification.favourite": "{name} märkis su postituse lemmikuks", "notification.follow": "{name} alustas su jälgimist", - "notification.follow_request": "{name} soovib teid jälgida", - "notification.mention": "{name} mainis teid", + "notification.follow_request": "{name} soovib sind jälgida", + "notification.mention": "{name} mainis sind", "notification.own_poll": "Su küsitlus on lõppenud", "notification.poll": "Küsitlus, milles osalesid, on lõppenud", "notification.reblog": "{name} jagas edasi postitust", @@ -489,7 +491,7 @@ "report.category.title_status": "postitusega", "report.close": "Valmis", "report.comment.title": "Kas arvad, et on veel midagi, mida me peaks teadma?", - "report.forward": "Edasta kasutajale {target}", + "report.forward": "Edasta ka {target} domeeni", "report.forward_hint": "See kasutaja on teisest serverist. Kas saadan anonümiseeritud koopia sellest teatest sinna ka?", "report.mute": "Vaigista", "report.mute_explanation": "Sa ei näe tema postitusi. Ta võib ikka sind jälgida ja su postitusi näha. Ta ei saa teada, et ta on vaigistatud.", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Rämpspost", "report_notification.categories.violation": "Reeglite rikkumine", "report_notification.open": "Ava teavitus", + "search.no_recent_searches": "Pole viimatisi otsinguid", "search.placeholder": "Otsi", + "search.quick_action.account_search": "Sobivaid profiile {x}", + "search.quick_action.go_to_account": "Mine profiili {x}", + "search.quick_action.go_to_hashtag": "Ava silt {x}", + "search.quick_action.open_url": "Ava URL Mastodonis", + "search.quick_action.status_search": "Sobivad postitused {x}", "search.search_or_paste": "Otsi või kleebi URL", - "search_popout.search_format": "Täiustatud otsiformaat", - "search_popout.tips.full_text": "Lihttekst annab vastuseks postitused, mille oled kirjutanud, lisanud lemmikuks, jaganud või kus on sind mainitud, ning lisaks kokkusobivad kasutajanimed, profiili kuvanimed ja sildid.", - "search_popout.tips.hashtag": "silt", - "search_popout.tips.status": "postitus", - "search_popout.tips.text": "Lihtne tekst toob esile kattuvad kuvanimed, kasutajanimed ning sildid", - "search_popout.tips.user": "kasutaja", - "search_results.accounts": "Inimesed", + "search_popout.quick_actions": "Kiirtegevused", + "search_popout.recent": "Viimatised otsingud", + "search_results.accounts": "Profiilid", "search_results.all": "Kõik", "search_results.hashtags": "Sildid", "search_results.nothing_found": "Otsisõnadele vastavat sisu ei leitud", @@ -555,7 +559,8 @@ "status.copy": "Kopeeri postituse link", "status.delete": "Kustuta", "status.detailed_status": "Detailne vestluskuva", - "status.direct": "Saada otsesõnum @{name}'ile", + "status.direct": "Maini privaatselt @{name}", + "status.direct_indicator": "Privaatne mainimine", "status.edit": "Muuda", "status.edited": "{date} muudetud", "status.edited_x_times": "Muudetud {count, plural, one{{count} kord} other {{count} korda}}", @@ -603,7 +608,7 @@ "subscribed_languages.save": "Salvesta muudatused", "subscribed_languages.target": "Muuda tellitud keeli {target} jaoks", "suggestions.dismiss": "Eira soovitust", - "suggestions.header": "Teid võib huvitada…", + "suggestions.header": "Sind võib huvitada…", "tabs_bar.federated_timeline": "Föderatiivne", "tabs_bar.home": "Kodu", "tabs_bar.local_timeline": "Kohalik", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 39eaeda023..597f4fb50e 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -20,7 +20,7 @@ "account.blocked": "Blokeatuta", "account.browse_more_on_origin_server": "Arakatu gehiago jatorrizko profilean", "account.cancel_follow_request": "Baztertu jarraitzeko eskaera", - "account.direct": "Mezu zuzena @{name}(r)i", + "account.direct": "Pribatuki aipatu @{name}", "account.disable_notifications": "Utzi jakinarazteari @{name} erabiltzailearen bidalketetan", "account.domain_blocked": "Ezkutatutako domeinua", "account.edit_profile": "Aldatu profila", @@ -102,7 +102,7 @@ "column.blocks": "Blokeatutako erabiltzaileak", "column.bookmarks": "Laster-markak", "column.community": "Denbora-lerro lokala", - "column.direct": "Mezu zuzenak", + "column.direct": "Aipamen pribatuak", "column.directory": "Arakatu profilak", "column.domain_blocks": "Ezkutatutako domeinuak", "column.favourites": "Gogokoak", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Multimediaren deskribapen edo aurrebistan gorde gabeko aldaketak daude, baztertu nahi dituzu?", "confirmations.domain_block.confirm": "Ezkutatu domeinu osoa", "confirmations.domain_block.message": "Ziur, erabat ziur, {domain} domeinu osoa blokeatu nahi duzula? Gehienetan gutxi batzuk blokeatu edo mututzearekin nahikoa da. Ez duzu domeinu horretako edukirik ikusiko denbora lerroetan edo jakinarazpenetan. Domeinu horretako zure jarraitzaileak kenduko dira ere.", + "confirmations.edit.confirm": "Editatu", + "confirmations.edit.message": "Orain editatzen baduzu, idazten zauden mezua gainidatziko da. Ziur al zaude jarraitu nahi duzula?", "confirmations.logout.confirm": "Amaitu saioa", "confirmations.logout.message": "Ziur saioa amaitu nahi duzula?", "confirmations.mute.confirm": "Mututu", @@ -214,7 +216,7 @@ "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.direct": "Ez duzu aipamen pribaturik oraindik. Baten bat bidali edo jasotzen duzunean, hemen agertuko da.", "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.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "mezu bat zutabe batean fokatzea", "keyboard_shortcuts.compose": "testua konposatzeko arean fokatzea", "keyboard_shortcuts.description": "Deskripzioa", - "keyboard_shortcuts.direct": "mezu zuzenen zutabea irekitzeko", + "keyboard_shortcuts.direct": "aipamen pribatuen zutabea irekitzeko", "keyboard_shortcuts.down": "zerrendan behera mugitzea", "keyboard_shortcuts.enter": "Ireki bidalketa", "keyboard_shortcuts.favourite": "Egin gogoko bidalketa", @@ -374,7 +376,7 @@ "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.direct": "Aipamen pribatuak", "navigation_bar.discover": "Aurkitu", "navigation_bar.domain_blocks": "Ezkutatutako domeinuak", "navigation_bar.edit_profile": "Aldatu profila", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Arau haustea", "report_notification.open": "Ireki salaketa", + "search.no_recent_searches": "Duela gutxiko bilaketarik ez", "search.placeholder": "Bilatu", + "search.quick_action.account_search": "{x}-(r)ekin bat datozen profilak", + "search.quick_action.go_to_account": "Joan {x} profilera", + "search.quick_action.go_to_hashtag": "Joan {x} traolara", + "search.quick_action.open_url": "Ireki URLa Mastodonen", + "search.quick_action.status_search": "{x}-(r)ekin bat datozen argitalpenak", "search.search_or_paste": "Bilatu edo itsatsi URLa", - "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.", - "search_popout.tips.hashtag": "traola", - "search_popout.tips.status": "bidalketa", - "search_popout.tips.text": "Testu hutsak pantaila-izenak, erabiltzaile-izenak eta traolak bilatzen ditu", - "search_popout.tips.user": "erabiltzailea", - "search_results.accounts": "Jendea", + "search_popout.quick_actions": "Ekintza azkarrak", + "search_popout.recent": "Duela gutxiko bilaketak", + "search_results.accounts": "Profilak", "search_results.all": "Guztiak", "search_results.hashtags": "Traolak", "search_results.nothing_found": "Ez da emaitzarik aurkitu bilaketa-termino horientzat", @@ -555,7 +559,8 @@ "status.copy": "Kopiatu bidalketaren esteka", "status.delete": "Ezabatu", "status.detailed_status": "Elkarrizketaren ikuspegi xehetsua", - "status.direct": "Mezu zuzena @{name}(r)i", + "status.direct": "Pribatuki aipatu @{name}", + "status.direct_indicator": "Aipamen pribatua", "status.edit": "Editatu", "status.edited": "Editatua {date}", "status.edited_x_times": "{count, plural, one {behin} other {{count} aldiz}} editatua", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 10c1b12fb9..37e213c01a 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -20,7 +20,7 @@ "account.blocked": "مسدود", "account.browse_more_on_origin_server": "مرور بیش‌تر روی نمایهٔ اصلی", "account.cancel_follow_request": "رد کردن درخواست پی‌گیری", - "account.direct": "پیام مستقیم به ‎@{name}", + "account.direct": "خصوصی از @{name} نام ببرید", "account.disable_notifications": "آگاه کردن من هنگام فرسته‌های ‎@{name} را متوقّف کن", "account.domain_blocked": "دامنه مسدود شد", "account.edit_profile": "ویرایش نمایه", @@ -102,7 +102,7 @@ "column.blocks": "کاربران مسدود شده", "column.bookmarks": "نشانک‌ها", "column.community": "خط زمانی محلّی", - "column.direct": "پیام‌های مستقیم", + "column.direct": "خصوصی نام ببرید", "column.directory": "مرور نمایه‌ها", "column.domain_blocks": "دامنه‌های مسدود شده", "column.favourites": "پسندیده‌ها", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "تغییرات ذخیره نشده‌ای در توضیحات یا پیش‌نمایش رسانه دارید. همگی نادیده گرفته شوند؟", "confirmations.domain_block.confirm": "مسدود کردن تمام دامنه", "confirmations.domain_block.message": "آیا جدی جدی می‌خواهید تمام دامنهٔ {domain} را مسدود کنید؟ در بیشتر موارد مسدود کردن یا خموشاندن چند حساب خاص کافی است و توصیه می‌شود. پس از این کار شما هیچ محتوایی را از این دامنه در خط زمانی عمومی یا آگاهی‌هایتان نخواهید دید. پی‌گیرانتان از این دامنه هم برداشته خواهند شد.", + "confirmations.edit.confirm": "ویرایش", + "confirmations.edit.message": "در صورت ویرایش، پیامی که در حال نوشتنش بودید از بین خواهد رفت. می‌خواهید ادامه دهید؟", "confirmations.logout.confirm": "خروج از حساب", "confirmations.logout.message": "مطمئنید می‌خواهید خارج شوید؟", "confirmations.mute.confirm": "خموش", @@ -214,14 +216,14 @@ "empty_column.blocks": "هنوز کسی را مسدود نکرده‌اید.", "empty_column.bookmarked_statuses": "هنوز هیچ فرستهٔ نشانه‌گذاری شده‌ای ندارید. هنگامی که فرسته‌ای را نشانه‌گذاری کنید، این‌جا نشان داده خواهد شد.", "empty_column.community": "خط زمانی محلّی خالی است. چیزی بنویسید تا چرخش بچرخد!", - "empty_column.direct": "هنوز هیچ پیام مستقیمی ندارید. هنگامی که چنین پیامی بگیرید یا بفرستید این‌جا نشان داده خواهد شد.", + "empty_column.direct": "هنوز هیچ اشاره خصوصی‌ای ندارید. هنگامی که چنین پیامی بگیرید یا بفرستید این‌جا نشان داده خواهد شد.", "empty_column.domain_blocks": "هنوز هیچ دامنه‌ای مسدود نشده است.", "empty_column.explore_statuses": "الآن چیزی پرطرفدار نیست. بعداً دوباره بررسی کنید!", "empty_column.favourited_statuses": "شما هنوز هیچ فرسته‌ای را نپسندیده‌اید. هنگامی که فرسته‌ای را بپسندید، این‌جا نشان داده خواهد شد.", "empty_column.favourites": "هنوز هیچ کسی این فرسته را نپسندیده است. هنگامی که کسی آن را بپسندد، این‌جا نشان داده خواهد شد.", "empty_column.follow_recommendations": "به نظر نمی‌توان هیچ پیشنهادی برایتان ایجاد کرد. می‌توانید برای یافتن افرادی که ممکن است بشناسید از جست‌وجو یا کاوش برچسب‌های داغ استفاده کنید.", "empty_column.follow_requests": "شما هنوز هیچ درخواست پی‌گیری‌ای ندارید. هنگامی که چنین درخواستی بگیرید، این‌جا نشان داده خواهد شد.", - "empty_column.followed_tags": "You have not followed any hashtags yet. When you do, they will show up here.", + "empty_column.followed_tags": "شما هیچ برچسبی را پی‌نگرفتید. هنگامی که برچسبی را پی‌گیری کنید اینجا نمایان می‌شوند.", "empty_column.hashtag": "هنوز هیچ چیزی در این برچسب نیست.", "empty_column.home": "خط زمانی خانگیتان خالی است! برای پر کردنش، افراد بیشتری را پی بگیرید. {suggestions}", "empty_column.home.suggestions": "چند پیشنهاد را ببینید", @@ -264,7 +266,7 @@ "follow_request.authorize": "اجازه دهید", "follow_request.reject": "رد کنید", "follow_requests.unlocked_explanation": "با این که حسابتان قفل نیست، کارکنان {domain} فکر کردند که ممکن است بخواهید درخواست‌ها از این حساب‌ها را به صورت دستی بازبینی کنید.", - "followed_tags": "Followed hashtags", + "followed_tags": "برچسب‌های پی‌گرفته", "footer.about": "درباره", "footer.directory": "فهرست نمایه‌ها", "footer.get_app": "گرفتن کاره", @@ -272,7 +274,7 @@ "footer.keyboard_shortcuts": "میان‌برهای صفحه‌کلید", "footer.privacy_policy": "سیاست محرمانگی", "footer.source_code": "نمایش کد مبدأ", - "footer.status": "Status", + "footer.status": "وضعیت", "generic.saved": "ذخیره شده", "getting_started.heading": "آغاز کنید", "hashtag.column_header.tag_mode.all": "و {additional}", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "برای تمرکز روی یک فرسته در یکی از ستون‌ها", "keyboard_shortcuts.compose": "تمرکز روی محیط نوشتن", "keyboard_shortcuts.description": "توضیح", - "keyboard_shortcuts.direct": "برای گشودن ستون پیغام‌های مستقیم", + "keyboard_shortcuts.direct": "باز کردن ستون اشاره‌های خصوصی", "keyboard_shortcuts.down": "پایین بردن در سیاهه", "keyboard_shortcuts.enter": "گشودن فرسته", "keyboard_shortcuts.favourite": "پسندیدن فرسته", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "نشانک‌ها", "navigation_bar.community_timeline": "خط زمانی محلّی", "navigation_bar.compose": "نوشتن فرستهٔ تازه", - "navigation_bar.direct": "پیام‌های مستقیم", + "navigation_bar.direct": "اشاره‌های خصوصی", "navigation_bar.discover": "گشت و گذار", "navigation_bar.domain_blocks": "دامنه‌های مسدود شده", "navigation_bar.edit_profile": "ویرایش نمایه", @@ -382,7 +384,7 @@ "navigation_bar.favourites": "پسندیده‌ها", "navigation_bar.filters": "واژه‌های خموش", "navigation_bar.follow_requests": "درخواست‌های پی‌گیری", - "navigation_bar.followed_tags": "Followed hashtags", + "navigation_bar.followed_tags": "برچسب‌های پی‌گرفته", "navigation_bar.follows_and_followers": "پی‌گرفتگان و پی‌گیرندگان", "navigation_bar.lists": "سیاهه‌ها", "navigation_bar.logout": "خروج", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "هرزنامه", "report_notification.categories.violation": "تخطّی از قانون", "report_notification.open": "گشودن گزارش", + "search.no_recent_searches": "جست‌وجوی اخیری نیست", "search.placeholder": "جست‌وجو", + "search.quick_action.account_search": "نمایه‌های جور با {x}", + "search.quick_action.go_to_account": "برو به نمایه {x}", + "search.quick_action.go_to_hashtag": "برو به برچسب {x}", + "search.quick_action.open_url": "باز کردن پیوند در ماستودون", + "search.quick_action.status_search": "فرسته‌های جور با {x}", "search.search_or_paste": "جست‌وجو یا جایگذاری نشانی", - "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_popout.quick_actions": "کنش‌های سریع", + "search_popout.recent": "جست‌وجوهای اخیر", + "search_results.accounts": "نمایه‌ها", "search_results.all": "همه", "search_results.hashtags": "برچسب‌ها", "search_results.nothing_found": "چیزی برای این عبارت جست‌وجو یافت نشد", @@ -544,7 +548,7 @@ "server_banner.server_stats": "آمار کارساز:", "sign_in_banner.create_account": "ایجاد حساب", "sign_in_banner.sign_in": "ورود", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts. You can also interact from your account on a different server.", + "sign_in_banner.text": "برای پی‌گیری نمایه‌ها یا برچسب‌ها، پسندیدن، هم‌رسانی و یا پاسخ به فرسته‌ها وارد شوید. همچنین می‌توانید این کارها را با حسابتان در کارسازی دیگر انجام دهید.", "status.admin_account": "گشودن واسط مدیریت برای ‎@{name}", "status.admin_domain": "گشودن واسط مدیریت برای ‎{domain}", "status.admin_status": "گشودن این فرسته در واسط مدیریت", @@ -555,7 +559,8 @@ "status.copy": "رونوشت از پیوند فرسته", "status.delete": "حذف", "status.detailed_status": "نمایش کامل گفتگو", - "status.direct": "پیام مستقیم به ‎@{name}", + "status.direct": "خصوصی به @{name} اشاره کنید", + "status.direct_indicator": "اشاره خصوصی", "status.edit": "ویرایش", "status.edited": "ویرایش شده در {date}", "status.edited_x_times": "{count, plural, one {{count} مرتبه} other {{count} مرتبه}} ویرایش شد", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index f41082ed7f..a086e0e213 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -1,6 +1,6 @@ { "about.blocks": "Moderoidut palvelimet", - "about.contact": "Yhteystiedot:", + "about.contact": "Ota yhteyttä:", "about.disclaimer": "Mastodon on vapaa avoimen lähdekoodin ohjelmisto ja Mastodon gGmbH:n tavaramerkki.", "about.domain_blocks.no_reason_available": "Syytä ei ole ilmoitettu", "about.domain_blocks.preamble": "Yleisesti Mastodonin avulla voidaan tarkastella minkä tahansa muun fediverse-palvelinten sisältöä ja vuorovaikuttaa eri palvelinten käyttäjien kanssa. Nämä ovat tälle palvelimelle määritetyt poikkeukset.", @@ -9,7 +9,7 @@ "about.domain_blocks.suspended.explanation": "Mitään tämän palvelimen tietoja ei käsitellä, tallenneta tai vaihdeta, mikä tekee vuorovaikutuksesta ja viestinnästä sen käyttäjien kanssa mahdotonta.", "about.domain_blocks.suspended.title": "Jäädytetty", "about.not_available": "Näitä tietoja ei ole julkaistu tällä palvelimella.", - "about.powered_by": "Hajautettu sosiaalinen media, tarjoaa {mastodon}", + "about.powered_by": "Hajautetun sosiaalisen median tarjoaa {mastodon}", "about.rules": "Palvelimen säännöt", "account.account_note_header": "Muistiinpano", "account.add_or_remove_from_list": "Lisää tai poista listoilta", @@ -20,9 +20,9 @@ "account.blocked": "Estetty", "account.browse_more_on_origin_server": "Selaile lisää alkuperäisellä palvelimella", "account.cancel_follow_request": "Peruuta seurantapyyntö", - "account.direct": "Yksityisviesti käyttäjälle @{name}", - "account.disable_notifications": "Lopeta @{name}:n julkaisuista ilmoittaminen", - "account.domain_blocked": "Verkko-osoite estetty", + "account.direct": "Mainitse @{name} yksityisesti", + "account.disable_notifications": "Lopeta ilmoittamasta minulle, kun @{name} julkaisee", + "account.domain_blocked": "Palvelu estetty", "account.edit_profile": "Muokkaa profiilia", "account.enable_notifications": "Ilmoita kun käyttäjä @{name} julkaisee viestin", "account.endorse": "Suosittele profiilissasi", @@ -50,7 +50,7 @@ "account.mute_notifications": "Mykistä käyttäjän @{name} ilmoitukset", "account.muted": "Mykistetty", "account.open_original_page": "Avaa alkuperäinen sivu", - "account.posts": "Viestit", + "account.posts": "Julkaisut", "account.posts_with_replies": "Viestit ja vastaukset", "account.report": "Ilmoita käyttäjästä @{name}", "account.requested": "Odottaa hyväksyntää. Peruuta seuraamispyyntö klikkaamalla", @@ -58,7 +58,7 @@ "account.share": "Jaa käyttäjän @{name} profiili", "account.show_reblogs": "Näytä tehostukset käyttäjältä @{name}", "account.statuses_counter": "{count, plural, one {{counter} viesti} other {{counter} viestiä}}", - "account.unblock": "Salli @{name}", + "account.unblock": "Poista esto: @{name}", "account.unblock_domain": "Salli palvelu {domain}", "account.unblock_short": "Poista esto", "account.unendorse": "Poista suosittelu profiilistasi", @@ -102,9 +102,9 @@ "column.blocks": "Estetyt käyttäjät", "column.bookmarks": "Kirjanmerkit", "column.community": "Paikallinen aikajana", - "column.direct": "Yksityisviestit", + "column.direct": "Yksityiset maininnat", "column.directory": "Selaa profiileja", - "column.domain_blocks": "Estetytr verkkotunnukset", + "column.domain_blocks": "Estetyt palvelut", "column.favourites": "Suosikit", "column.follow_requests": "Seuraamispyynnöt", "column.home": "Koti", @@ -149,30 +149,32 @@ "compose_form.spoiler.unmarked": "Lisää sisältövaroitus", "compose_form.spoiler_placeholder": "Kirjoita varoituksesi tähän", "confirmation_modal.cancel": "Peruuta", - "confirmations.block.block_and_report": "Estä ja raportoi", + "confirmations.block.block_and_report": "Estä ja ilmianna", "confirmations.block.confirm": "Estä", "confirmations.block.message": "Haluatko varmasti estää käyttäjän {name}?", "confirmations.cancel_follow_request.confirm": "Peruuta pyyntö", - "confirmations.cancel_follow_request.message": "Haluatko varmasti peruuttaa pyyntösi seurata käyttäjää {name}?", + "confirmations.cancel_follow_request.message": "Haluatko varmasti peruuttaa pyyntösi seurata profiilia {name}?", "confirmations.delete.confirm": "Poista", "confirmations.delete.message": "Haluatko varmasti poistaa tämän viestin?", "confirmations.delete_list.confirm": "Poista", "confirmations.delete_list.message": "Haluatko varmasti poistaa tämän listan kokonaan?", "confirmations.discard_edit_media.confirm": "Hylkää", "confirmations.discard_edit_media.message": "Sinulla on tallentamattomia muutoksia median kuvaukseen tai esikatseluun, hylätäänkö ne silti?", - "confirmations.domain_block.confirm": "Estä koko palvelu", + "confirmations.domain_block.confirm": "Estä koko verkkotunnus", "confirmations.domain_block.message": "Haluatko aivan varmasti estää palvelun {domain} täysin? Useimmiten muutama kohdistettu esto tai mykistys on riittävä ja suositeltava toimenpide. Et näe kyseisen sisältöä kyseiseltä verkkoalueelta missään julkisissa aikajanoissa tai ilmoituksissa. Tälle verkkoalueelle kuuluvat seuraajasi poistetaan.", + "confirmations.edit.confirm": "Muokkaa", + "confirmations.edit.message": "Muokkaaminen nyt korvaa viestin, jota paraikaa työstät. Haluatko varmasti jatkaa?", "confirmations.logout.confirm": "Kirjaudu ulos", "confirmations.logout.message": "Haluatko varmasti kirjautua ulos?", "confirmations.mute.confirm": "Mykistä", "confirmations.mute.explanation": "Tämä toiminto piilottaa heidän julkaisunsa sinulta – mukaan lukien ne, joissa heidät mainitaan – sallien heidän yhä nähdä julkaisusi ja seurata sinua.", - "confirmations.mute.message": "Haluatko varmasti mykistää käyttäjän {name}?", + "confirmations.mute.message": "Haluatko varmasti mykistää profiilin {name}?", "confirmations.redraft.confirm": "Poista & palauta muokattavaksi", "confirmations.redraft.message": "Oletko varma että haluat poistaa tämän julkaisun ja tehdä siitä uuden luonnoksen? Suosikit ja tehostukset menetään, alkuperäisen julkaisusi vastaukset jäävät orvoiksi.", "confirmations.reply.confirm": "Vastaa", "confirmations.reply.message": "Jos vastaat nyt, vastaus korvaa tällä hetkellä työstämäsi viestin. Oletko varma, että haluat jatkaa?", "confirmations.unfollow.confirm": "Lopeta seuraaminen", - "confirmations.unfollow.message": "Haluatko varmasti lakata seuraamasta käyttäjää {name}?", + "confirmations.unfollow.message": "Haluatko varmasti lakata seuraamasta profiilia {name}?", "conversation.delete": "Poista keskustelu", "conversation.mark_as_read": "Merkitse luetuksi", "conversation.open": "Näytä keskustelu", @@ -208,28 +210,28 @@ "emoji_button.search_results": "Hakutulokset", "emoji_button.symbols": "Symbolit", "emoji_button.travel": "Matkailu ja paikat", - "empty_column.account_suspended": "Tilin käyttäminen jäädytetty", + "empty_column.account_suspended": "Tili jäädytetty", "empty_column.account_timeline": "Ei viestejä täällä.", "empty_column.account_unavailable": "Profiilia ei löydy", - "empty_column.blocks": "Et ole vielä estänyt käyttäjiä.", + "empty_column.blocks": "Et ole estänyt käyttäjiä.", "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ä yksityisviestejä. Kun lähetät tai vastaanotat sellaisen, se näkyy tässä.", + "empty_column.direct": "Yksityisiä mainintoja ei vielä ole. Kun lähetät tai vastaanotat sellaisen, näet sen täältä.", "empty_column.domain_blocks": "Palveluita ei ole vielä estetty.", - "empty_column.explore_statuses": "Mikään ei ole nyt trendi. Tarkista myöhemmin!", + "empty_column.explore_statuses": "Mikään ei trendaa nyt. Tarkista myöhemmin uudelleen!", "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 aihetunnisteita.", "empty_column.follow_requests": "Et ole vielä vastaanottanut seurauspyyntöjä. Saamasi pyynnöt näytetään täällä.", "empty_column.followed_tags": "Et ole vielä ottanut yhtään aihetunnistetta seurattavaksesi. Jos tai kun sitten teet niin, ne listautuvat tänne.", - "empty_column.hashtag": "Tällä hashtagilla ei ole vielä mitään.", + "empty_column.hashtag": "Tällä aihetunnisteella ei ole vielä mitään.", "empty_column.home": "Kotisi aikajana on tyhjä! Seuraa lisää ihmisiä täyttääksesi sen. {suggestions}", "empty_column.home.suggestions": "Katso joitakin ehdotuksia", "empty_column.list": "Tässä luettelossa ei ole vielä mitään. Kun tämän luettelon jäsenet julkaisevat uusia viestejä, ne näkyvät täällä.", "empty_column.lists": "Sinulla ei ole vielä yhtään listaa. Kun luot sellaisen, näkyy se tässä.", "empty_column.mutes": "Et ole mykistänyt vielä yhtään käyttäjää.", - "empty_column.notifications": "Sinulla ei ole vielä ilmoituksia. Kun muut ihmiset ovat vuorovaikutuksessa kanssasi, näet sen täällä.", - "empty_column.public": "Täällä ei ole mitään! Kirjoita jotain julkisesti tai manuaalisesti seuraa muiden palvelimien käyttäjiä niin saat sisältöä", + "empty_column.notifications": "Sinulla ei ole vielä ilmoituksia. Kun keskustelet muille, näet sen täällä.", + "empty_column.public": "Täällä ei ole mitään! Kirjoita jotain julkisesti. Voit myös seurata muiden palvelimien käyttäjiä", "error.unexpected_crash.explanation": "Sivua ei voi näyttää oikein, johtuen bugista tai ongelmasta selaimen yhteensopivuudessa.", "error.unexpected_crash.explanation_addons": "Sivua ei voitu näyttää oikein. Tämä virhe johtuu todennäköisesti selaimen lisäosasta tai automaattisista käännöstyökaluista.", "error.unexpected_crash.next_steps": "Kokeile sivun päivitystä. Jos se ei auta, voi Mastodonin käyttö silti olla mahdollista eri selaimella tai natiivilla sovelluksella.", @@ -240,7 +242,7 @@ "explore.suggested_follows": "Sinulle", "explore.title": "Selaa", "explore.trending_links": "Uutiset", - "explore.trending_statuses": "Viestit", + "explore.trending_statuses": "Julkaisut", "explore.trending_tags": "Aihetunnisteet", "filter_modal.added.context_mismatch_explanation": "Tämä suodatinluokka ei koske asiayhteyttä, jossa olet käyttänyt tätä viestiä. Jos haluat, että viesti suodatetaan myös tässä yhteydessä, sinun on muokattava suodatinta.", "filter_modal.added.context_mismatch_title": "Asiayhteys ei täsmää!", @@ -263,7 +265,7 @@ "follow_recommendations.lead": "Seuraamiesi julkaisut näkyvät aikajärjestyksessä kotisyötteessä. Älä pelkää seurata vahingossa, voit lopettaa seuraamisen yhtä helposti!", "follow_request.authorize": "Valtuuta", "follow_request.reject": "Hylkää", - "follow_requests.unlocked_explanation": "Vaikkei tiliäsi ole lukittu, palvelun {domain} ylläpito on arvioinut, että voi olla halukas tarkistamaan nämä seurauspyynnöt erikseen.", + "follow_requests.unlocked_explanation": "Vaikkei tiliäsi ole lukittu, on palvelun {domain} ylläpito arvioinut, että saatat olla halukas tarkistamaan nämä seurauspyynnöt erikseen.", "followed_tags": "Seuratut aihetunnisteet", "footer.about": "Tietoja", "footer.directory": "Profiilihakemisto", @@ -312,9 +314,9 @@ "keyboard_shortcuts.column": "Kohdista sarakkeeseen", "keyboard_shortcuts.compose": "siirry tekstinsyöttöön", "keyboard_shortcuts.description": "Kuvaus", - "keyboard_shortcuts.direct": "avataksesi yksityisviestisarakkeen", + "keyboard_shortcuts.direct": "avataksesi yksityisten mainintojen sarakkeen", "keyboard_shortcuts.down": "Siirry listassa alaspäin", - "keyboard_shortcuts.enter": "Avaa viesti", + "keyboard_shortcuts.enter": "Avaa julkaisu", "keyboard_shortcuts.favourite": "Lisää suosikkeihin", "keyboard_shortcuts.favourites": "Avaa lista suosikeista", "keyboard_shortcuts.federated": "Avaa yleinen aikajana", @@ -326,7 +328,7 @@ "keyboard_shortcuts.mention": "Mainitse julkaisija", "keyboard_shortcuts.muted": "Avaa lista mykistetyistä käyttäjistä", "keyboard_shortcuts.my_profile": "Avaa profiilisi", - "keyboard_shortcuts.notifications": "Avaa ilmoitukset-sarake", + "keyboard_shortcuts.notifications": "Avaa ilmoitukset-valikko", "keyboard_shortcuts.open_media": "Avaa media", "keyboard_shortcuts.pinned": "Avaa lista kiinnitetyistä viesteistä", "keyboard_shortcuts.profile": "Avaa kirjoittajan profiili", @@ -334,10 +336,10 @@ "keyboard_shortcuts.requests": "Avaa lista seurauspyynnöistä", "keyboard_shortcuts.search": "siirry hakukenttään", "keyboard_shortcuts.spoilers": "Näytä/piilota sisältövaroituskenttä", - "keyboard_shortcuts.start": "avaa \"Aloitus\"-sarake", + "keyboard_shortcuts.start": "avaa \"Aloitus\"", "keyboard_shortcuts.toggle_hidden": "näytä/piilota sisältövaroituksella merkitty teksti", "keyboard_shortcuts.toggle_sensitivity": "näytä/piilota media", - "keyboard_shortcuts.toot": "Aloita uusi viesti", + "keyboard_shortcuts.toot": "Luo uusi julkaisu", "keyboard_shortcuts.unfocus": "Poistu teksti-/hakukentästä", "keyboard_shortcuts.up": "Siirry listassa ylöspäin", "lightbox.close": "Sulje", @@ -373,8 +375,8 @@ "navigation_bar.blocks": "Estetyt käyttäjät", "navigation_bar.bookmarks": "Kirjanmerkit", "navigation_bar.community_timeline": "Paikallinen aikajana", - "navigation_bar.compose": "Luo uusi viesti", - "navigation_bar.direct": "Yksityisviestit", + "navigation_bar.compose": "Julkaise", + "navigation_bar.direct": "Yksityiset maininnat", "navigation_bar.discover": "Löydä uutta", "navigation_bar.domain_blocks": "Estetyt palvelut", "navigation_bar.edit_profile": "Muokkaa profiilia", @@ -393,10 +395,10 @@ "navigation_bar.public_timeline": "Yleinen aikajana", "navigation_bar.search": "Haku", "navigation_bar.security": "Turvallisuus", - "not_signed_in_indicator.not_signed_in": "Sinun täytyy kirjautua sisään päästäksesi käsiksi tähän resurssiin.", - "notification.admin.report": "{name} ilmoitti {target}", + "not_signed_in_indicator.not_signed_in": "Sinun tulee kirjautua sisään nähdäksesi tämän.", + "notification.admin.report": "{name} teki ilmoituksen käytäjästä {target}", "notification.admin.sign_up": "{name} rekisteröityi", - "notification.favourite": "{name} tykkäsi viestistäsi", + "notification.favourite": "{name} tykkäsi julkaisustasi", "notification.follow": "{name} seurasi sinua", "notification.follow_request": "{name} haluaa seurata sinua", "notification.mention": "{name} mainitsi sinut", @@ -407,7 +409,7 @@ "notification.update": "{name} muokkasi viestiä", "notifications.clear": "Tyhjennä ilmoitukset", "notifications.clear_confirmation": "Haluatko varmasti poistaa kaikki ilmoitukset pysyvästi?", - "notifications.column_settings.admin.report": "Uudet raportit:", + "notifications.column_settings.admin.report": "Uudet ilmoitukset:", "notifications.column_settings.admin.sign_up": "Uudet kirjautumiset:", "notifications.column_settings.alert": "Työpöytäilmoitukset", "notifications.column_settings.favourite": "Tykkäykset:", @@ -422,7 +424,7 @@ "notifications.column_settings.reblog": "Tehostukset:", "notifications.column_settings.show": "Näytä sarakkeessa", "notifications.column_settings.sound": "Äänimerkki", - "notifications.column_settings.status": "Uudet viestit:", + "notifications.column_settings.status": "Uudet julkaisut:", "notifications.column_settings.unread_notifications.category": "Lukemattomat ilmoitukset", "notifications.column_settings.unread_notifications.highlight": "Korosta lukemattomat ilmoitukset", "notifications.column_settings.update": "Muokkaukset:", @@ -472,32 +474,32 @@ "relative_time.full.just_now": "juuri nyt", "relative_time.full.minutes": "{number, plural, one {# minuutti} other {# minuuttia}} sitten", "relative_time.full.seconds": "{number, plural, one {# sekunti} other {# sekuntia}} sitten", - "relative_time.hours": "{number} tuntia", + "relative_time.hours": "{number} t", "relative_time.just_now": "nyt", "relative_time.minutes": "{number} min", - "relative_time.seconds": "{number} sek", + "relative_time.seconds": "{number} s", "relative_time.today": "tänään", "reply_indicator.cancel": "Peruuta", "report.block": "Estä", - "report.block_explanation": "Et näe heidän viestejään, eivätkä he voi nähdä viestejäsi tai seurata sinua. He näkevät, että heidät on estetty.", - "report.categories.other": "Muu", + "report.block_explanation": "Et näe hänen viestejään, eikä hän voi nähdä viestejäsi tai seurata sinua. Hän näkevät, että olet estänyt hänet.", + "report.categories.other": "muu", "report.categories.spam": "Roskaposti", "report.categories.violation": "Sisältö rikkoo yhtä tai useampaa palvelimen sääntöä", - "report.category.subtitle": "Valitse paras vastaavuus", - "report.category.title": "Kerro meille miksi tämä {type} pitää raportoida", + "report.category.subtitle": "Valitse se, mikä sopii parhaiten", + "report.category.title": "Kerro meille, miksi ilmiannat tämän: {type} ", "report.category.title_account": "profiili", - "report.category.title_status": "viesti", + "report.category.title_status": "julkaisu", "report.close": "Valmis", - "report.comment.title": "Pitäisikö meidän tietää jotain muuta?", + "report.comment.title": "Olisiko jotain muuta, mitä meidän pitäisi tietää?", "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.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.mute_explanation": "Et näe hänen viestejään. Hän voi silti seurata sinua ja nähdä viestisi. Hän ei tiedä, että 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": "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", @@ -505,30 +507,32 @@ "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.subtitle": "Valitse kaikki 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": "Sillä välin kun tarkistamme tätä, voit ryhtyä toimenpiteisiin käyttäjää @{name} vastaan:", "report.thanks.title": "Etkö halua nähdä tätä?", - "report.thanks.title_actionable": "Kiitos raportista, tutkimme asiaa.", + "report.thanks.title_actionable": "Kiitos ilmoituksesta, tarkistamme asian.", "report.unfollow": "Lopeta käyttäjän @{name} seuraaminen", "report.unfollow_explanation": "Seuraat tätä tiliä. Jotta et enää näe tilin viestejä, lopeta tilin seuraaminen.", "report_notification.attached_statuses": "{count, plural, one {{count} viesti} other {{count} viestiä}} liitteenä", "report_notification.categories.other": "Muu", "report_notification.categories.spam": "Roskaposti", "report_notification.categories.violation": "Sääntöjen rikkominen", - "report_notification.open": "Avaa raportti", + "report_notification.open": "Avaa ilmoitus", + "search.no_recent_searches": "Edellisiä hakuja ei ole", "search.placeholder": "Hae", + "search.quick_action.account_search": "Profiilit, jotka vastaavat \"{x}\"", + "search.quick_action.go_to_account": "Avaa profiili {x}", + "search.quick_action.go_to_hashtag": "Avaa aihetunniste {x}", + "search.quick_action.open_url": "Avaa URL-osoite Mastodonissa", + "search.quick_action.status_search": "Julkaisut, jotka vastaavat \"{x}\"", "search.search_or_paste": "Etsi tai kirjoita URL-osoite", - "search_popout.search_format": "Tarkennettu haku", - "search_popout.tips.full_text": "Tekstihaku listaa tilapäivitykset, jotka olet kirjoittanut, lisännyt suosikkeihisi, tehostanut tai joissa sinut mainitaan, sekä tekstin sisältävät käyttäjänimet, nimimerkit ja aihetunnisteet.", - "search_popout.tips.hashtag": "aihetunnisteet", - "search_popout.tips.status": "viesti", - "search_popout.tips.text": "Tekstihaku listaa hakua vastaavat nimimerkit, käyttäjänimet ja aihetunnisteet", - "search_popout.tips.user": "käyttäjä", - "search_results.accounts": "Ihmiset", + "search_popout.quick_actions": "Pikatoiminnot", + "search_popout.recent": "Edelliset haut", + "search_results.accounts": "Profiilit", "search_results.all": "Kaikki", "search_results.hashtags": "Aihetunnisteet", "search_results.nothing_found": "Näille hakusanoille ei löytynyt mitään", @@ -555,7 +559,8 @@ "status.copy": "Kopioi linkki viestiin", "status.delete": "Poista", "status.detailed_status": "Yksityiskohtainen keskustelunäkymä", - "status.direct": "Yksityisviesti käyttäjälle @{name}", + "status.direct": "Mainitse @{name} yksityisesti", + "status.direct_indicator": "Yksityinen maininta", "status.edit": "Muokkaa", "status.edited": "Muokattu {date}", "status.edited_x_times": "Muokattu {count, plural, one {{count} kerran} other {{count} kertaa}}", @@ -563,7 +568,7 @@ "status.favourite": "Lisää suosikkeihin", "status.filter": "Suodata tämä viesti", "status.filtered": "Suodatettu", - "status.hide": "Piilota viesti", + "status.hide": "Piilota julkaisu", "status.history.created": "{name} luotu {date}", "status.history.edited": "{name} muokkasi {date}", "status.load_more": "Lataa lisää", @@ -574,7 +579,7 @@ "status.mute_conversation": "Mykistä keskustelu", "status.open": "Laajenna julkaisu", "status.pin": "Kiinnitä profiiliin", - "status.pinned": "Kiinnitetty viesti", + "status.pinned": "Kiinnitetty julkaisu", "status.read_more": "Näytä enemmän", "status.reblog": "Tehosta", "status.reblog_private": "Tehosta alkuperäiselle yleisölle", @@ -595,7 +600,7 @@ "status.show_more_all": "Näytä lisää kaikista", "status.show_original": "Näytä alkuperäinen", "status.translate": "Käännä", - "status.translated_from_with": "Käännetty kielestä {lang} käyttäen palvelua {provider}", + "status.translated_from_with": "Käännetty kielestä {lang} käyttäen {provider}", "status.uncached_media_warning": "Ei saatavilla", "status.unmute_conversation": "Poista keskustelun mykistys", "status.unpin": "Irrota profiilista", diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json index 3b67c3d75e..29a2f7bc27 100644 --- a/app/javascript/mastodon/locales/fo.json +++ b/app/javascript/mastodon/locales/fo.json @@ -20,7 +20,7 @@ "account.blocked": "Bannað/ur", "account.browse_more_on_origin_server": "Kaga meira á upprunaligu vangamyndina", "account.cancel_follow_request": "Strika fylgjaraumbøn", - "account.direct": "Beinleiðis boð @{name}", + "account.direct": "Umrøð @{name} privat", "account.disable_notifications": "Ikki boða mær frá, tá @{name} skrivar", "account.domain_blocked": "Økisnavn bannað", "account.edit_profile": "Broyt vanga", @@ -102,7 +102,7 @@ "column.blocks": "Bannaðir brúkarar", "column.bookmarks": "Bókamerki", "column.community": "Lokal tíðarlinja", - "column.direct": "Beinleiðis boð", + "column.direct": "Privatar umrøður", "column.directory": "Blaða gjøgnum vangar", "column.domain_blocks": "Bannað økisnøvn", "column.favourites": "Dámd", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Tú hevur broytingar í miðlalýsingini ella undansýningini, sum ikki eru goymdar. Vilt tú kortini vraka?", "confirmations.domain_block.confirm": "Banna heilum økisnavni", "confirmations.domain_block.message": "Ert tú púra, púra vís/ur í, at tú vilt banna øllum {domain}? Í flestu førum er nóg mikið og betri, bert at banna ella doyva onkrum ávísum. Tú fert eingi evni at síggja frá økisnavninum á nakrari almennari tíðarrás ella í tínum fráboðanum. Tínir fylgjarar undir økisnavninum verða eisini strikaðir.", + "confirmations.edit.confirm": "Rætta", + "confirmations.edit.message": "Rættingar, sum verða gjørdar nú, skriva yvir boðini, sum tú ert í holt við. Ert tú vís/ur í, at tú vilt halda fram?", "confirmations.logout.confirm": "Rita út", "confirmations.logout.message": "Ert tú vís/ur í, at tú vilt útrita teg?", "confirmations.mute.confirm": "Doyv", @@ -214,7 +216,7 @@ "empty_column.blocks": "Tú hevur enn ikki bannað nakran brúkara.", "empty_column.bookmarked_statuses": "Tú hevur enn einki goymt uppslag. Tú tú goymir eitt uppslag, kemur tað her.", "empty_column.community": "Lokala tíðarlinjan er tóm. Skriva okkurt alment fyri at fáa boltin á rull!", - "empty_column.direct": "Tú hevur eingi beinleiðis boð enn. Tá tú sendir ella móttekur eini beinleiðis boð, so síggjast tey her.", + "empty_column.direct": "Tú hevur ongar privatar umrøður enn. Tá tú sendir ella móttekur eina privata umrøðu, so verður hon sjónlig her.", "empty_column.domain_blocks": "Enn eru eingi blokeraði domenir.", "empty_column.explore_statuses": "Einki rák er beint nú. Royn aftur seinni!", "empty_column.favourited_statuses": "Tú hevur ongar yndispostar enn. Tá tú gevur einum posti yndismerki, so sært tú hann her.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Fá teig í miðdepilin", "keyboard_shortcuts.compose": "Fá skriviøkið í miðdeplin", "keyboard_shortcuts.description": "Frágreiðing", - "keyboard_shortcuts.direct": "fyri at lata teig við beinleiðis boðum upp", + "keyboard_shortcuts.direct": "at lata teigin við privatum umrøðum upp", "keyboard_shortcuts.down": "Flyt niðureftir listanum", "keyboard_shortcuts.enter": "Opna uppslag", "keyboard_shortcuts.favourite": "Dáma uppslag", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Goymd", "navigation_bar.community_timeline": "Lokal tíðarlinja", "navigation_bar.compose": "Skriva nýggjan post", - "navigation_bar.direct": "Beinleiðis boð", + "navigation_bar.direct": "Privatar umrøður", "navigation_bar.discover": "Uppdaga", "navigation_bar.domain_blocks": "Bannað økisnøvn", "navigation_bar.edit_profile": "Broyt vanga", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Ruskpostur", "report_notification.categories.violation": "Brotin regla", "report_notification.open": "Opna melding", + "search.no_recent_searches": "Ongar nýggjar leitingar", "search.placeholder": "Leita", + "search.quick_action.account_search": "Vangar, ið samsvara {x}", + "search.quick_action.go_to_account": "Far til vanga {x}", + "search.quick_action.go_to_hashtag": "Far til frámerki {x}", + "search.quick_action.open_url": "Lat URL upp í Mastodon", + "search.quick_action.status_search": "Postar, ið samsvara {x}", "search.search_or_paste": "Leita ella set URL inn", - "search_popout.search_format": "Framkomið leiti-forsnið", - "search_popout.tips.full_text": "Einfaldur tekstur gevur aftur postar, sum tú hevur skrivað, yndismerkt, stimbrað ella er nevnd/ur í, umframt samsvarandi brúkaranøvn, víst nøvn og frámerki.", - "search_popout.tips.hashtag": "frámerki", - "search_popout.tips.status": "postur", - "search_popout.tips.text": "Einfaldur tekstur gevur aftur víst nøvn, brúkaranøvn og frámerki", - "search_popout.tips.user": "brúkari", - "search_results.accounts": "Fólk", + "search_popout.quick_actions": "Skjótar atgerðir", + "search_popout.recent": "Nýggjar leitingar", + "search_results.accounts": "Vangar", "search_results.all": "Alt", "search_results.hashtags": "Frámerki", "search_results.nothing_found": "Hesi leitiorð góvu ongi úrslit", @@ -555,7 +559,8 @@ "status.copy": "Kopiera leinki til postin", "status.delete": "Strika", "status.detailed_status": "Útgreinað samrøðusýni", - "status.direct": "Beinleiðis boð @{name}", + "status.direct": "Umrøð @{name} privat", + "status.direct_indicator": "Privat umrøða", "status.edit": "Rætta", "status.edited": "Rættað {date}", "status.edited_x_times": "Rættað {count, plural, one {{count} ferð} other {{count} ferð}}", diff --git a/app/javascript/mastodon/locales/fr-QC.json b/app/javascript/mastodon/locales/fr-QC.json index 4b72586856..ff85f43b7c 100644 --- a/app/javascript/mastodon/locales/fr-QC.json +++ b/app/javascript/mastodon/locales/fr-QC.json @@ -20,7 +20,7 @@ "account.blocked": "Bloqué·e", "account.browse_more_on_origin_server": "Parcourir davantage sur le profil original", "account.cancel_follow_request": "Retirer cette demande d'abonnement", - "account.direct": "Message direct @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Ne plus me notifier quand @{name} publie", "account.domain_blocked": "Domaine bloqué", "account.edit_profile": "Modifier le profil", @@ -102,7 +102,7 @@ "column.blocks": "Comptes bloqués", "column.bookmarks": "Signets", "column.community": "Fil local", - "column.direct": "Messages directs", + "column.direct": "Private mentions", "column.directory": "Parcourir les profils", "column.domain_blocks": "Domaines bloqués", "column.favourites": "Favoris", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Vous avez des modifications non enregistrées de la description ou de l'aperçu du média, voulez-vous quand même les supprimer?", "confirmations.domain_block.confirm": "Bloquer ce domaine entier", "confirmations.domain_block.message": "Voulez-vous vraiment, vraiment bloquer {domain} en entier? Dans la plupart des cas, quelques blocages ou masquages ciblés sont suffisants et préférables. Vous ne verrez plus de contenu provenant de ce domaine, ni dans vos fils publics, ni dans vos notifications. Vos abonné·e·s utilisant ce domaine seront retiré·e·s.", + "confirmations.edit.confirm": "Éditer", + "confirmations.edit.message": "Modifier maintenant écrasera votre message en cours de rédaction. Voulez-vous vraiment continuer ?", "confirmations.logout.confirm": "Se déconnecter", "confirmations.logout.message": "Voulez-vous vraiment vous déconnecter?", "confirmations.mute.confirm": "Masquer", @@ -214,7 +216,7 @@ "empty_column.blocks": "Vous n’avez bloqué aucun compte pour le moment.", "empty_column.bookmarked_statuses": "Vous n'avez pas de publications parmi vos signets. Lorsque vous en ajouterez une, elle apparaîtra ici.", "empty_column.community": "Le fil 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.direct": "You don't have any private mentions yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Il n’y a aucun domaine bloqué pour le moment.", "empty_column.explore_statuses": "Rien n'est en tendance présentement. Revenez plus tard!", "empty_column.favourited_statuses": "Vous n’avez pas encore de publications favorites. Lorsque vous en ajouterez une, elle apparaîtra ici.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Se concentrer sur une colonne", "keyboard_shortcuts.compose": "Se concentrer sur la zone de rédaction", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "pour ouvrir la colonne de messages directs", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "Descendre dans la liste", "keyboard_shortcuts.enter": "Ouvrir cette publication", "keyboard_shortcuts.favourite": "Ajouter publication aux favoris", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Signets", "navigation_bar.community_timeline": "Fil local", "navigation_bar.compose": "Rédiger un nouveau message", - "navigation_bar.direct": "Messages directs", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Découvrir", "navigation_bar.domain_blocks": "Domaines bloqués", "navigation_bar.edit_profile": "Modifier le profil", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Infraction aux règles du serveur", "report_notification.open": "Ouvrir le signalement", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Rechercher", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Rechercher ou saisir un URL", - "search_popout.search_format": "Recherche avancée", - "search_popout.tips.full_text": "Un texte normal retourne les publications que vous avez écrites, ajoutées à vos favoris, partagées, ou vous mentionnant, ainsi que les identifiants, les noms affichés, et les hashtags des personnes et publications correspondantes.", - "search_popout.tips.hashtag": "hashtag", - "search_popout.tips.status": "publication", - "search_popout.tips.text": "Une simple entrée de texte renvoie les noms affichés, les identifiants et les hashtags correspondants", - "search_popout.tips.user": "compte", - "search_results.accounts": "Personnes", + "search_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "Tout", "search_results.hashtags": "Hashtags", "search_results.nothing_found": "Aucun résultat avec ces mots-clés", @@ -555,7 +559,8 @@ "status.copy": "Copier un lien vers cette publication", "status.delete": "Supprimer", "status.detailed_status": "Vue détaillée de la conversation", - "status.direct": "Envoyer un message direct à @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Modifier", "status.edited": "Modifiée le {date}", "status.edited_x_times": "Modifiée {count, plural, one {{count} fois} other {{count} fois}}", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 1dcf41c850..d3f5bc5a7f 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -20,7 +20,7 @@ "account.blocked": "Bloqué·e", "account.browse_more_on_origin_server": "Parcourir davantage sur le profil original", "account.cancel_follow_request": "Retirer la demande d’abonnement", - "account.direct": "Envoyer un message direct à @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Ne plus me notifier quand @{name} publie quelque chose", "account.domain_blocked": "Domaine bloqué", "account.edit_profile": "Modifier le profil", @@ -102,7 +102,7 @@ "column.blocks": "Comptes bloqués", "column.bookmarks": "Signets", "column.community": "Fil public local", - "column.direct": "Messages directs", + "column.direct": "Private mentions", "column.directory": "Parcourir les profils", "column.domain_blocks": "Domaines bloqués", "column.favourites": "Favoris", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Vous avez des modifications non enregistrées de la description ou de l'aperçu du média, les supprimer quand même ?", "confirmations.domain_block.confirm": "Bloquer tout le domaine", "confirmations.domain_block.message": "Voulez-vous vraiment, vraiment bloquer {domain} en entier ? Dans la plupart des cas, quelques blocages ou masquages ciblés sont suffisants et préférables. Vous ne verrez plus de contenu provenant de ce domaine, ni dans vos fils publics, ni dans vos notifications. Vos abonné·e·s utilisant ce domaine seront retiré·e·s.", + "confirmations.edit.confirm": "Éditer", + "confirmations.edit.message": "Modifier maintenant écrasera votre message en cours de rédaction. Voulez-vous vraiment continuer ?", "confirmations.logout.confirm": "Se déconnecter", "confirmations.logout.message": "Voulez-vous vraiment vous déconnecter ?", "confirmations.mute.confirm": "Masquer", @@ -170,7 +172,7 @@ "confirmations.redraft.confirm": "Supprimer et ré-écrire", "confirmations.redraft.message": "Êtes-vous sûr·e de vouloir effacer ce statut pour le réécrire ? Ses partages ainsi que ses mises en favori seront perdus et ses réponses seront orphelines.", "confirmations.reply.confirm": "Répondre", - "confirmations.reply.message": "Répondre maintenant écrasera le message que vous rédigez actuellement. Voulez-vous vraiment continuer ?", + "confirmations.reply.message": "Répondre maintenant écrasera votre message en cours de rédaction. Voulez-vous vraiment continuer ?", "confirmations.unfollow.confirm": "Ne plus suivre", "confirmations.unfollow.message": "Voulez-vous vraiment vous désabonner de {name} ?", "conversation.delete": "Supprimer la conversation", @@ -214,7 +216,7 @@ "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.direct": "You don't have any private mentions yet. When you send or receive one, it will show up here.", "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.", @@ -298,7 +300,7 @@ "interaction_modal.on_another_server": "Sur un autre serveur", "interaction_modal.on_this_server": "Sur ce serveur", "interaction_modal.other_server_instructions": "Copiez et collez cette URL dans le champ de recherche de votre application Mastodon préférée ou de l'interface web de votre serveur Mastodon.", - "interaction_modal.preamble": "Puisque Mastodon est décentralisé, vous pouvez utiliser votre compte existant hébergé par un autre serveur Mastodon ou une plateforme compatible si vous n'avez pas de compte sur celui-ci.", + "interaction_modal.preamble": "Mastodon étant décentralisé, vous pouvez utiliser votre compte existant sur un autre serveur Mastodon, ou sur une autre plateforme compatible, si vous n'avez pas de compte ici.", "interaction_modal.title.favourite": "Ajouter le message de {name} aux favoris", "interaction_modal.title.follow": "Suivre {name}", "interaction_modal.title.reblog": "Partager le message de {name}", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Se placer dans une colonne", "keyboard_shortcuts.compose": "Se placer dans la zone de rédaction", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "pour ouvrir la colonne des messages directs", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "Descendre dans la liste", "keyboard_shortcuts.enter": "Ouvrir le message", "keyboard_shortcuts.favourite": "Ajouter le message aux favoris", @@ -374,7 +376,7 @@ "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.direct": "Private mentions", "navigation_bar.discover": "Découvrir", "navigation_bar.domain_blocks": "Domaines bloqués", "navigation_bar.edit_profile": "Modifier le profil", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Infraction aux règles du serveur", "report_notification.open": "Ouvrir le signalement", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Rechercher", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Rechercher ou saisir une URL", - "search_popout.search_format": "Recherche avancée", - "search_popout.tips.full_text": "Faire une recherche textuelle retrouve 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.", - "search_popout.tips.hashtag": "hashtag", - "search_popout.tips.status": "message", - "search_popout.tips.text": "Faire une recherche textuelle retrouve les noms affichés, les identifiants et les hashtags correspondants", - "search_popout.tips.user": "utilisateur", - "search_results.accounts": "Comptes", + "search_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "Tous les résultats", "search_results.hashtags": "Hashtags", "search_results.nothing_found": "Aucun résultat avec ces mots-clefs", @@ -555,7 +559,8 @@ "status.copy": "Copier le lien vers le message", "status.delete": "Supprimer", "status.detailed_status": "Vue détaillée de la conversation", - "status.direct": "Envoyer un message direct à @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Éditer", "status.edited": "Édité le {date}", "status.edited_x_times": "Edité {count, plural, one {{count} fois} other {{count} fois}}", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index 61273f58f1..d4dfe35a21 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -20,7 +20,7 @@ "account.blocked": "Blokkearre", "account.browse_more_on_origin_server": "Mear op it orizjinele profyl besjen", "account.cancel_follow_request": "Folchfersyk annulearje", - "account.direct": "@{name} in direkt berjocht stjoere", + "account.direct": "Privee fermelde @{name}", "account.disable_notifications": "Jou gjin melding mear wannear @{name} in berjocht pleatst", "account.domain_blocked": "Domein blokkearre", "account.edit_profile": "Profyl bewurkje", @@ -102,7 +102,7 @@ "column.blocks": "Blokkearre brûkers", "column.bookmarks": "Blêdwizers", "column.community": "Lokale tiidline", - "column.direct": "Direkte berjochten", + "column.direct": "Priveefermeldingen", "column.directory": "Profilen trochsykje", "column.domain_blocks": "Blokkearre domeinen", "column.favourites": "Favoriten", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Jo hawwe net-bewarre wizigingen yn de mediabeskriuwing of foarfertoaning, wolle jo dizze dochs fuortsmite?", "confirmations.domain_block.confirm": "Hide entire domain", "confirmations.domain_block.message": "Binne jo echt wis dat jo alles fan {domain} negearje wolle? Yn de measte gefallen is it blokkearjen of negearjen fan in pear spesifike persoanen genôch en better. Jo sille gjin berjochten fan dizze server op iepenbiere tiidlinen sjen of yn jo meldingen. Jo folgers fan dizze server wurde fuortsmiten.", + "confirmations.edit.confirm": "Bewurkje", + "confirmations.edit.message": "Troch no te bewurkjen sil it berjocht dat jo no oan it skriuwen binne oerskreaun wurde. Wolle jo trochgean?", "confirmations.logout.confirm": "Ofmelde", "confirmations.logout.message": "Bisto wis datsto ôfmelde wolst?", "confirmations.mute.confirm": "Negearje", @@ -214,7 +216,7 @@ "empty_column.blocks": "Do hast noch gjin brûkers blokkearre.", "empty_column.bookmarked_statuses": "Jo hawwe noch gjin berjochten oan jo blêdwizers tafoege. Wannear’t jo der ien oan jo blêdwizers tafoegje, falt dizze hjir te sjen.", "empty_column.community": "De lokale tiidline is noch leech. Pleats in iepenbier berjocht om de spits ôf te biten!", - "empty_column.direct": "Jo hawwe noch gjin direkte berjochten. Wannear’t jo der ien ferstjoere of ûntfang, komt dizze hjir te stean.", + "empty_column.direct": "Jo hawwe noch gjin priveefermeldingen. Wannear’t jo der ien ferstjoere of ûntfange, komt dizze hjir te stean.", "empty_column.domain_blocks": "Der binne noch gjin blokkearre domeinen.", "empty_column.explore_statuses": "Op dit stuit binne der gjin trends. Kom letter werom!", "empty_column.favourited_statuses": "Jo hawwe noch gjin favorite berjochten. Wannear’t jo ien as favoryt markearje, falt dizze hjir te sjen.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", "keyboard_shortcuts.description": "Omskriuwing", - "keyboard_shortcuts.direct": "Direkte berjochten toane", + "keyboard_shortcuts.direct": "om de kolom priveefermeldingen te iepenjen", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "Berjocht iepenje", "keyboard_shortcuts.favourite": "As favoryt markearje", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Blêdwizers", "navigation_bar.community_timeline": "Lokale tiidline", "navigation_bar.compose": "Nij berjocht skriuwe", - "navigation_bar.direct": "Direkte berjochten", + "navigation_bar.direct": "Priveefermeldingen", "navigation_bar.discover": "Untdekke", "navigation_bar.domain_blocks": "Blokkearre domeinen", "navigation_bar.edit_profile": "Profyl bewurkje", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Skeinde regels", "report_notification.open": "Rapport iepenje", + "search.no_recent_searches": "Gjin resinte sykopdrachten", "search.placeholder": "Sykje", + "search.quick_action.account_search": "Accounts dy’t oerienkomme mei {x}", + "search.quick_action.go_to_account": "Gean nei account {x}", + "search.quick_action.go_to_hashtag": "Gean nei hashtag {x}", + "search.quick_action.open_url": "URL yn Mastodon iepenje", + "search.quick_action.status_search": "Berjochten dy’t oerienkomme mei {x}", "search.search_or_paste": "Sykje of fier URL yn", - "search_popout.search_format": "Avansearre sykje", - "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.status": "status", - "search_popout.tips.text": "Brûk gewoane tekst om te sykjen op werjeftenammen, brûkersnammen en hashtags", - "search_popout.tips.user": "brûker", - "search_results.accounts": "Minsken", + "search_popout.quick_actions": "Flugge aksjes", + "search_popout.recent": "Resinte sykopdrachten", + "search_results.accounts": "Profilen", "search_results.all": "Alles", "search_results.hashtags": "Hashtags", "search_results.nothing_found": "Dizze syktermen leverje gjin resultaat op", @@ -555,7 +559,8 @@ "status.copy": "Copy link to status", "status.delete": "Fuortsmite", "status.detailed_status": "Detaillearre petearoersjoch", - "status.direct": "@{name} in direkt berjocht stjoere", + "status.direct": "Privee fermelde @{name}", + "status.direct_indicator": "Priveefermelding", "status.edit": "Bewurkje", "status.edited": "Bewurke op {date}", "status.edited_x_times": "{count, plural, one {{count} kear} other {{count} kearen}} bewurke", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 9212d16bd8..6645483a50 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -20,7 +20,7 @@ "account.blocked": "Bactha", "account.browse_more_on_origin_server": "Brabhsáil níos mó ar an phróifíl bhunaidh", "account.cancel_follow_request": "Éirigh as iarratas leanta", - "account.direct": "Seol teachtaireacht dhíreach chuig @{name}", + "account.direct": "Privately mention @{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", @@ -102,7 +102,7 @@ "column.blocks": "Cuntais choiscthe", "column.bookmarks": "Leabharmharcanna", "column.community": "Amlíne áitiúil", - "column.direct": "Teachtaireachtaí dhíreacha", + "column.direct": "Private mentions", "column.directory": "Brabhsáil próifílí", "column.domain_blocks": "Fearainn bhactha", "column.favourites": "Toghanna", @@ -162,6 +162,8 @@ "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": "Bac fearann go hiomlán", "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.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Logáil amach", "confirmations.logout.message": "An bhfuil tú cinnte gur mhaith leat logáil amach?", "confirmations.mute.confirm": "Balbhaigh", @@ -214,7 +216,7 @@ "empty_column.blocks": "Níl aon úsáideoir bactha agat fós.", "empty_column.bookmarked_statuses": "Níl aon phostáil leabharmharcaithe agat fós. Nuair a dhéanann tú leabharmharc, beidh sé le feiceáil anseo.", "empty_column.community": "Tá an amlíne áitiúil folamh. Foilsigh rud éigin go poiblí le tús a chur le cúrsaí!", - "empty_column.direct": "Níl aon teachtaireacht dírithe agat fós. Nuair a sheolann tú nó nuair a fhaigheann tú ceann, feicfear anseo í.", + "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Níl aon fearainn bhactha ann go fóill.", "empty_column.explore_statuses": "Níl rud ar bith ag treochtáil faoi láthair. Tar ar ais ar ball!", "empty_column.favourited_statuses": "Níor roghnaigh tú postáil ar bith fós. Nuair a roghnaigh tú ceann, beidh sí le feiceáil anseo.", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Leabharmharcanna", "navigation_bar.community_timeline": "Amlíne áitiúil", "navigation_bar.compose": "Cum postáil nua", - "navigation_bar.direct": "Teachtaireachtaí dhíreacha", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Faigh amach", "navigation_bar.domain_blocks": "Fearainn bhactha", "navigation_bar.edit_profile": "Cuir an phróifíl in eagar", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Turscar", "report_notification.categories.violation": "Sárú rialach", "report_notification.open": "Oscail tuairisc", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Cuardaigh", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Cuardaigh nó cuir URL isteach", - "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": "haischlib", - "search_popout.tips.status": "postáil", - "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", - "search_popout.tips.user": "úsáideoir", - "search_results.accounts": "Daoine", + "search_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "Uile", "search_results.hashtags": "Haischlibeanna", "search_results.nothing_found": "Could not find anything for these search terms", @@ -555,7 +559,8 @@ "status.copy": "Copy link to status", "status.delete": "Scrios", "status.detailed_status": "Detailed conversation view", - "status.direct": "Seol teachtaireacht dhíreach chuig @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "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}}", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index ca3dd0f2f8..ca3b8b4ab2 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -20,7 +20,7 @@ "account.blocked": "’Ga bhacadh", "account.browse_more_on_origin_server": "Rùraich barrachd dheth air a’ phròifil thùsail", "account.cancel_follow_request": "Cuir d’ iarrtas leantainn dhan dàrna taobh", - "account.direct": "Cuir teachdaireachd dhìreach gu @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Na cuir brath thugam tuilleadh nuair a chuireas @{name} post ris", "account.domain_blocked": "Chaidh an àrainn a bhacadh", "account.edit_profile": "Deasaich a’ phròifil", @@ -102,7 +102,7 @@ "column.blocks": "Cleachdaichean bacte", "column.bookmarks": "Comharran-lìn", "column.community": "Loidhne-ama ionadail", - "column.direct": "Teachdaireachdan dìreach", + "column.direct": "Private mentions", "column.directory": "Rùraich sna pròifilean", "column.domain_blocks": "Àrainnean bacte", "column.favourites": "Na h-annsachdan", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Tha atharraichean gun sàbhaladh agad ann an tuairisgeul no ro-shealladh a’ mheadhain, a bheil thu airson an tilgeil air falbh co-dhiù?", "confirmations.domain_block.confirm": "Bac an àrainn uile gu lèir", "confirmations.domain_block.message": "A bheil thu cinnteach dha-rìribh gu bheil thu airson an àrainn {domain} a bhacadh uile gu lèir? Mar as trice, foghnaidh gun dèan thu bacadh no mùchadh no dhà gu sònraichte agus bhiodh sin na b’ fheàrr. Chan fhaic thu susbaint on àrainn ud air loidhne-ama phoblach sam bith no am measg nam brathan agad. Thèid an luchd-leantainn agad on àrainn ud a thoirt air falbh.", + "confirmations.edit.confirm": "Deasaich", + "confirmations.edit.message": "Ma nì thu deasachadh an-dràsta, thèid seo a sgrìobhadh thairis air an teachdaireachd a tha thu a’ sgrìobhadh an-dràsta. A bheil thu cinnteach gu bheil thu airson leantainn air adhart?", "confirmations.logout.confirm": "Clàraich a-mach", "confirmations.logout.message": "A bheil thu cinnteach gu bheil thu airson clàradh a-mach?", "confirmations.mute.confirm": "Mùch", @@ -214,7 +216,7 @@ "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.direct": "You don't have any private mentions yet. When you send or receive one, 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.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Cuir am fòcas air colbh", "keyboard_shortcuts.compose": "Cuir am fòcas air raon teacsa an sgrìobhaidh", "keyboard_shortcuts.description": "Tuairisgeul", - "keyboard_shortcuts.direct": "Fosgail colbh nan teachdaireachdan dìreach", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "Gluais sìos air an liosta", "keyboard_shortcuts.enter": "Fosgail post", "keyboard_shortcuts.favourite": "Cuir post ris na h-annsachdan", @@ -374,7 +376,7 @@ "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.direct": "Private mentions", "navigation_bar.discover": "Rùraich", "navigation_bar.domain_blocks": "Àrainnean bacte", "navigation_bar.edit_profile": "Deasaich a’ phròifil", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spama", "report_notification.categories.violation": "Briseadh riaghailte", "report_notification.open": "Fosgail an gearan", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Lorg", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Dèan lorg no cuir a-steach URL", - "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.", - "search_popout.tips.hashtag": "taga hais", - "search_popout.tips.status": "post", - "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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "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", @@ -555,7 +559,8 @@ "status.copy": "Dèan lethbhreac dhen cheangal dhan phost", "status.delete": "Sguab às", "status.detailed_status": "Mion-shealladh a’ chòmhraidh", - "status.direct": "Cuir teachdaireachd dhìreach gu @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "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}}", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 1033e6d7dd..20279e71fb 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -20,7 +20,7 @@ "account.blocked": "Bloqueada", "account.browse_more_on_origin_server": "Busca máis no perfil orixinal", "account.cancel_follow_request": "Retirar solicitude de seguimento", - "account.direct": "Mensaxe directa a @{name}", + "account.direct": "Mencionar de xeito privado a @{name}", "account.disable_notifications": "Deixar de notificarme cando @{name} publica", "account.domain_blocked": "Dominio agochado", "account.edit_profile": "Editar perfil", @@ -102,7 +102,7 @@ "column.blocks": "Usuarias bloqueadas", "column.bookmarks": "Marcadores", "column.community": "Cronoloxía local", - "column.direct": "Mensaxes directas", + "column.direct": "Mencións privadas", "column.directory": "Procurar perfís", "column.domain_blocks": "Dominios agochados", "column.favourites": "Favoritas", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Tes cambios sen gardar para a vista previa ou descrición do multimedia, descartamos os cambios?", "confirmations.domain_block.confirm": "Agochar dominio enteiro", "confirmations.domain_block.message": "Tes a certeza de querer bloquear todo de {domain}? Na meirande parte dos casos uns bloqueos ou silenciados específicos son suficientes. Non verás máis o contido deste dominio en ningunha cronoloxía pública ou nas túas notificacións. As túas seguidoras deste dominio serán eliminadas.", + "confirmations.edit.confirm": "Editar", + "confirmations.edit.message": "Ao editar sobrescribirás a mensaxe que estás a compor. Tes a certeza de que queres continuar?", "confirmations.logout.confirm": "Pechar sesión", "confirmations.logout.message": "Desexas pechar a sesión?", "confirmations.mute.confirm": "Acalar", @@ -214,7 +216,7 @@ "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.direct": "Aínda non tes mencións privadas. Cando envíes ou recibas unha, aparecerá aquí.", "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í.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Destacar unha columna", "keyboard_shortcuts.compose": "Por o cursor na área de escritura", "keyboard_shortcuts.description": "Descrición", - "keyboard_shortcuts.direct": "para abrir a columna de mensaxes directas", + "keyboard_shortcuts.direct": "para abrir a columna de mencións privadas", "keyboard_shortcuts.down": "Para mover cara abaixo na listaxe", "keyboard_shortcuts.enter": "Para abrir publicación", "keyboard_shortcuts.favourite": "Marcar como favorita", @@ -374,7 +376,7 @@ "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.direct": "Mencións privadas", "navigation_bar.discover": "Descubrir", "navigation_bar.domain_blocks": "Dominios agochados", "navigation_bar.edit_profile": "Editar perfil", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Faltou ás regras", "report_notification.open": "Abrir a denuncia", + "search.no_recent_searches": "Non hai buscas recentes", "search.placeholder": "Procurar", + "search.quick_action.account_search": "Perfís coincidentes {x}", + "search.quick_action.go_to_account": "Ir ao perfil {x}", + "search.quick_action.go_to_hashtag": "Ir ao cancelo {x}", + "search.quick_action.open_url": "Abrir URL en Mastodon", + "search.quick_action.status_search": "Publicacións coincidentes {x}", "search.search_or_paste": "Busca ou insire URL", - "search_popout.search_format": "Formato de procura avanzada", - "search_popout.tips.full_text": "Texto simple devolve publicacións que ti escribiches, promoveches, marcaches como favoritas, ou foches mencionada, así como nomes de usuaria coincidentes, nomes públicos e cancelos.", - "search_popout.tips.hashtag": "cancelo", - "search_popout.tips.status": "publicación", - "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_popout.quick_actions": "Accións rápidas", + "search_popout.recent": "Buscas recentes", + "search_results.accounts": "Perfís", "search_results.all": "Todo", "search_results.hashtags": "Cancelos", "search_results.nothing_found": "Non atopamos nada con estes termos de busca", @@ -555,7 +559,8 @@ "status.copy": "Copiar ligazón á publicación", "status.delete": "Eliminar", "status.detailed_status": "Vista detallada da conversa", - "status.direct": "Mensaxe directa a @{name}", + "status.direct": "Mencionar de xeito privado a @{name}", + "status.direct_indicator": "Mención privada", "status.edit": "Editar", "status.edited": "Editado {date}", "status.edited_x_times": "Editado {count, plural, one {{count} vez} other {{count} veces}}", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 7e3cee334a..17b97ca74f 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -20,7 +20,7 @@ "account.blocked": "לחסום", "account.browse_more_on_origin_server": "ראה יותר בפרופיל המקורי", "account.cancel_follow_request": "משיכת בקשת מעקב", - "account.direct": "הודעה ישירה ל@{name}", + "account.direct": "הודעה פרטית אל @{name}", "account.disable_notifications": "הפסק לשלוח לי התראות כש@{name} מפרסמים", "account.domain_blocked": "הדומיין חסום", "account.edit_profile": "עריכת פרופיל", @@ -40,7 +40,7 @@ "account.go_to_profile": "מעבר לפרופיל", "account.hide_reblogs": "להסתיר הידהודים מאת @{name}", "account.joined_short": "תאריך הצטרפות", - "account.languages": "שנה שפת הרשמה", + "account.languages": "שנה רישום לשפות", "account.link_verified_on": "בעלות על הקישור הזה נבדקה לאחרונה ב{date}", "account.locked_info": "החשבון הזה הוגדר כנעול. צריך לקבל אישור כדי לעקוב אחריו.", "account.media": "מדיה", @@ -81,7 +81,7 @@ "audio.hide": "השתק", "autosuggest_hashtag.per_week": "{count} לשבוע", "boost_modal.combo": "ניתן להקיש {combo} כדי לדלג בפעם הבאה", - "bundle_column_error.copy_stacktrace": "העתקת הודעת התקלה", + "bundle_column_error.copy_stacktrace": "העתקת הודעת שגיאה", "bundle_column_error.error.body": "הדף המבוקש אינו זמין. זה עשוי להיות באג בקוד או בעייה בתאימות הדפדפן.", "bundle_column_error.error.title": "הו, לא!", "bundle_column_error.network.body": "קרתה תקלה בעת טעינת העמוד. זו עשויה להיות תקלה זמנית בשרת או בחיבור האינטרנט שלך.", @@ -89,11 +89,11 @@ "bundle_column_error.retry": "לנסות שוב", "bundle_column_error.return": "חזרה לדף הבית", "bundle_column_error.routing.body": "העמוד המבוקש לא נמצא. האם ה־URL נכון?", - "bundle_column_error.routing.title": "404", + "bundle_column_error.routing.title": "שגיאה 404: הדף לא נמצא", "bundle_modal_error.close": "לסגור", "bundle_modal_error.message": "משהו השתבש בעת טעינת הרכיב הזה.", "bundle_modal_error.retry": "לנסות שוב", - "closed_registrations.other_server_instructions": "מכיוון שמסטודון הוא רשת מבוזרת, ניתן ליצור חשבון על שרת נוסף ועדיין לקיים קשר עם משתמשים בשרת זה.", + "closed_registrations.other_server_instructions": "מכיוון שמסטודון היא רשת מבוזרת, ניתן ליצור חשבון על שרת נוסף ועדיין לקיים קשר עם משתמשים בשרת זה.", "closed_registrations_modal.description": "יצירת חשבון על שרת {domain} איננה אפשרית כרגע, אבל זכרו שאינכן זקוקות לחשבון על {domain} כדי להשתמש במסטודון.", "closed_registrations_modal.find_another_server": "חיפוש שרת אחר", "closed_registrations_modal.preamble": "מסטודון הוא רשת מבוזרת, כך שלא משנה היכן החשבון שלך, קיימת האפשרות לעקוב ולתקשר עם משתמשים בשרת הזה. אפשר אפילו להריץ שרת בעצמך!", @@ -102,7 +102,7 @@ "column.blocks": "משתמשים חסומים", "column.bookmarks": "סימניות", "column.community": "פיד שרת מקומי", - "column.direct": "הודעות ישירות", + "column.direct": "הודעות פרטיות", "column.directory": "עיין בפרופילים", "column.domain_blocks": "קהילות (שמות מתחם) מוסתרות", "column.favourites": "חיבובים", @@ -153,7 +153,7 @@ "confirmations.block.confirm": "לחסום", "confirmations.block.message": "האם את/ה בטוח/ה שברצונך למחוק את \"{name}\"?", "confirmations.cancel_follow_request.confirm": "ויתור על בקשה", - "confirmations.cancel_follow_request.message": "האם באמת לוותר על בקשת המעקב אחרי {name}?", + "confirmations.cancel_follow_request.message": "לבטל את בקשת המעקב אחרי {name}?", "confirmations.delete.confirm": "למחוק", "confirmations.delete.message": "בטוח/ה שאת/ה רוצה למחוק את ההודעה?", "confirmations.delete_list.confirm": "למחוק", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "יש לך שינויים לא שמורים לתיאור המדיה. להשליך אותם בכל זאת?", "confirmations.domain_block.confirm": "חסמו לגמרי את שם המתחם (דומיין)", "confirmations.domain_block.message": "בטוחה שברצונך באמת לחסום את קהילת {domain}? ברב המקרים השתקה וחסימה של מספר משתמשים עשוייה להספיק. לא תראי תוכל מכלל שם המתחם בפידים הציבוריים או בהתראות שלך. העוקבים שלך מהקהילה הזאת יוסרו", + "confirmations.edit.confirm": "עריכה", + "confirmations.edit.message": "עריכה תדרוס את ההודעה שכבר התחלת לכתוב. האם להמשיך?", "confirmations.logout.confirm": "התנתקות", "confirmations.logout.message": "האם אתם בטוחים שאתם רוצים להתנתק?", "confirmations.mute.confirm": "להשתיק", @@ -170,7 +172,7 @@ "confirmations.redraft.confirm": "מחיקה ועריכה מחדש", "confirmations.redraft.message": "בטוחה שאת רוצה למחוק ולהתחיל טיוטה חדשה? חיבובים והדהודים יאבדו, ותגובות להודעה המקורית ישארו יתומות.", "confirmations.reply.confirm": "תגובה", - "confirmations.reply.message": "תגובה עכשיו תדרוס את ההודעה שכבר התחלתים לכתוב. האם אתם בטוחים שברצונכם להמשיך?", + "confirmations.reply.message": "תגובה עכשיו תמחק את ההודעה שכבר התחלת לכתוב. להמשיך?", "confirmations.unfollow.confirm": "הפסקת מעקב", "confirmations.unfollow.message": "להפסיק מעקב אחרי {name}?", "conversation.delete": "מחיקת שיחה", @@ -187,9 +189,9 @@ "disabled_account_banner.text": "חשבונך {disabledAccount} אינו פעיל כרגע.", "dismissable_banner.community_timeline": "אלו הם החצרוצים הציבוריים האחרונים מהמשתמשים על שרת {domain}.", "dismissable_banner.dismiss": "בטל", - "dismissable_banner.explore_links": "אלו סיפורי החדשות האחרונים שמדוברים על ידי משתמשים בשרת זה ואחרים ברשת המבוזרת כרגע.", - "dismissable_banner.explore_statuses": "החצרוצים האלו, משרת זה ואחרים ברשת המבוזרת, כרגע צוברים חשיפה.", - "dismissable_banner.explore_tags": "התגיות האלו, משרת זה ואחרים ברשת המבוזרת, כרגע צוברות חשיפה.", + "dismissable_banner.explore_links": "אלו הקישורים האחרונים ששותפו על ידי משתמשים ששרת זה רואה ברשת המבוזרת כרגע.", + "dismissable_banner.explore_statuses": "החצרוצים האלו, משרת זה ואחרים ברשת המבוזרת, צוברים חשיפה כעת.", + "dismissable_banner.explore_tags": "התגיות האלו, משרת זה ואחרים ברשת המבוזרת, צוברות חשיפה כעת.", "dismissable_banner.public_timeline": "אלו הם החצרוצים הציבוריים האחרונים מהמשתמשים משרת זה ואחרים ברשת המבוזרת ששרת זה יודע עליהן.", "embed.instructions": "ניתן להטמיע את ההודעה הזו באתרך ע\"י העתקת הקוד שלהלן.", "embed.preview": "דוגמא כיצד זה יראה:", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "להתמקד בחצרוץ באחד מהטורים", "keyboard_shortcuts.compose": "להתמקד בתיבת חיבור החצרוצים", "keyboard_shortcuts.description": "תיאור", - "keyboard_shortcuts.direct": "לפתיחת טור הודעות ישירות", + "keyboard_shortcuts.direct": "לפתוח עמודת שיחות פרטיות", "keyboard_shortcuts.down": "לנוע במורד הרשימה", "keyboard_shortcuts.enter": "פתח הודעה", "keyboard_shortcuts.favourite": "לחבב", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "סימניות", "navigation_bar.community_timeline": "פיד שרת מקומי", "navigation_bar.compose": "צור הודעה חדשה", - "navigation_bar.direct": "הודעות ישירות", + "navigation_bar.direct": "הודעות פרטיות", "navigation_bar.discover": "גלה", "navigation_bar.domain_blocks": "קהילות (שמות מתחם) חסומות", "navigation_bar.edit_profile": "עריכת פרופיל", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "ספאם (דואר זבל)", "report_notification.categories.violation": "הפרת כלל", "report_notification.open": "פתח דו\"ח", + "search.no_recent_searches": "לא נמצאו חיפושים אחרונים", "search.placeholder": "חיפוש", + "search.quick_action.account_search": "פרופילים המכילים {x}", + "search.quick_action.go_to_account": "לצפיה בפרופיל {x}", + "search.quick_action.go_to_hashtag": "לצפיה בתגית {x}", + "search.quick_action.open_url": "לפתיחת {x} במסטודון", + "search.quick_action.status_search": "הודעות המכילות {x}", "search.search_or_paste": "חפש או הזן קישור", - "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_popout.quick_actions": "פעולות זריזות", + "search_popout.recent": "חיפושים אחרונים", + "search_results.accounts": "פרופילים", "search_results.all": "כל התוצאות", "search_results.hashtags": "תגיות", "search_results.nothing_found": "לא נמצא דבר עבור תנאי חיפוש אלה", @@ -555,7 +559,8 @@ "status.copy": "העתק/י קישור להודעה זו", "status.delete": "מחיקה", "status.detailed_status": "תצוגת שיחה מפורטת", - "status.direct": "הודעה ישירה ל@{name}", + "status.direct": "הודעה פרטית אל @{name}", + "status.direct_indicator": "הודעה פרטית", "status.edit": "עריכה", "status.edited": "נערך ב{date}", "status.edited_x_times": "נערך {count, plural, one {פעם {count}} other {{count} פעמים}}", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index 24745cca59..186de81294 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -20,7 +20,7 @@ "account.blocked": "ब्लॉक", "account.browse_more_on_origin_server": "मूल प्रोफ़ाइल पर अधिक ब्राउज़ करें", "account.cancel_follow_request": "फॉलो रिक्वेस्ट वापस लें", - "account.direct": "प्रत्यक्ष संदेश @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "@{name} पोस्ट के लिए मुझे सूचित मत करो", "account.domain_blocked": "छिपा हुआ डोमेन", "account.edit_profile": "प्रोफ़ाइल संपादित करें", @@ -102,7 +102,7 @@ "column.blocks": "ब्लॉक्ड यूज़र्स", "column.bookmarks": "पुस्तकचिह्न:", "column.community": "लोकल टाइम्लाइन", - "column.direct": "सीधा संदेश", + "column.direct": "निजी संदेश", "column.directory": "प्रोफाइल्स खोजें", "column.domain_blocks": "छुपे डोमेन्स", "column.favourites": "पसंदीदा", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "लिस्ट में जोड़ें", "confirmations.domain_block.confirm": "संपूर्ण डोमेन छिपाएं", "confirmations.domain_block.message": "क्या आप वास्तव में, वास्तव में आप पूरे {domain} को ब्लॉक करना चाहते हैं? ज्यादातर मामलों में कुछ लक्षित ब्लॉक या म्यूट पर्याप्त और बेहतर हैं। आप किसी भी सार्वजनिक समय-सीमा या अपनी सूचनाओं में उस डोमेन की सामग्री नहीं देखेंगे। उस डोमेन से आपके फॉलोवर्स को हटा दिया जाएगा।", + "confirmations.edit.confirm": "संशोधित करें", + "confirmations.edit.message": "अभी संपादन किया तो वो संदेश मिट जायेगा जिसे आप लिख रहे थे। क्या आप जारी रखना चाहते हैं?", "confirmations.logout.confirm": "लॉग आउट करें", "confirmations.logout.message": "आप सुनिश्चित हैं कि लॉगआउट करना चाहते हैं?", "confirmations.mute.confirm": "शांत", @@ -214,7 +216,7 @@ "empty_column.blocks": "आप अभी तक किसी भी यूजर के द्वारा ब्लॉक्ड नहीं हो।", "empty_column.bookmarked_statuses": "आपके पास अभी तक कोई बुकमार्क नहीं है। जब आप एक बुकमार्क करते हैं, तो यह यहां दिखाई देगा।", "empty_column.community": "लोकल टाइम्लाइन खाली है, कुछ देखने के लिये सार्वजनिक रूप से कुछ लिखें!", - "empty_column.direct": "आपके पास अभी तक कोई सीधा संदेश नहीं है, जब आप भेजेंगे या प्राप्त करेंगे तो ये यहाँ दिखेगा |", + "empty_column.direct": "अभी तक आपको कोई निजी संदेश नहीं मिला है। जब भी आप निजी संदेश भेजेंगे या पाएंगे, तो वो यहां पर दिखेगा।", "empty_column.domain_blocks": "अभी तक कोई छुपा हुआ डोमेन नहीं है।", "empty_column.explore_statuses": "कुछ भी अभी ट्रैंडिंग नहीं है, कुछ देर बाद जांचे!", "empty_column.favourited_statuses": "आपके पास अभी कोई भी चहिता टूट नहीं है. जब आप किसी टूट को पसंद (स्टार) करेंगे, तब वो यहाँ दिखेगा।", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "कंपोज़ टेक्स्ट-एरिया पर ध्यान केंद्रित करने के लिए", "keyboard_shortcuts.description": "विवरण", - "keyboard_shortcuts.direct": "डायरेक्ट मैसेज कॉलम खोलने के लिए", + "keyboard_shortcuts.direct": "निजी संदेश खोलने के लिए", "keyboard_shortcuts.down": "सूची में शामिल करने के लिए", "keyboard_shortcuts.enter": "स्टेटस खोलने के लिए", "keyboard_shortcuts.favourite": "पसंदीदा के लिए", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "पुस्तकचिह्न:", "navigation_bar.community_timeline": "लोकल टाइम्लाइन", "navigation_bar.compose": "नया टूट् लिखें", - "navigation_bar.direct": "प्रत्यक्ष संदेश", + "navigation_bar.direct": "निजी संदेश", "navigation_bar.discover": "खोजें", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "प्रोफ़ाइल संपादित करें", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "कोई हालिया खोज नहीं", "search.placeholder": "खोजें", + "search.quick_action.account_search": "प्रोफ़ाइल मिले {x}", + "search.quick_action.go_to_account": "प्रोफ़ाइल पर जाएँ {x}", + "search.quick_action.go_to_hashtag": "हैशटैग पर जाएं {x}", + "search.quick_action.open_url": "URL मॅस्टोडॉन में खोलें", + "search.quick_action.status_search": "पोस्ट मिलें {x}", "search.search_or_paste": "Search or paste URL", - "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": "हैशटैग", - "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_popout.quick_actions": "त्वरित क्रियाएं", + "search_popout.recent": "हालिया खोजें", + "search_results.accounts": "प्रोफ़ाइल", "search_results.all": "All", "search_results.hashtags": "Hashtags", "search_results.nothing_found": "Could not find anything for these search terms", @@ -555,7 +559,8 @@ "status.copy": "Copy link to status", "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", - "status.direct": "Direct message @{name}", + "status.direct": "निजी संदेश @{name} से", + "status.direct_indicator": "Private mention", "status.edit": "Edit", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index 9be500a7e5..47d2bfb923 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -20,7 +20,7 @@ "account.blocked": "Blokirano", "account.browse_more_on_origin_server": "Pogledajte više na izvornom profilu", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "Pošalji poruku @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Nemoj me obavjestiti kada @{name} napravi objavu", "account.domain_blocked": "Domena je blokirana", "account.edit_profile": "Uredi profil", @@ -102,7 +102,7 @@ "column.blocks": "Blokirani korisnici", "column.bookmarks": "Knjižne oznake", "column.community": "Lokalna vremenska crta", - "column.direct": "Direct messages", + "column.direct": "Private mentions", "column.directory": "Pregledavanje profila", "column.domain_blocks": "Blokirane domene", "column.favourites": "Favoriti", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Postoje nespremljene promjene u opisu medija ili u pretpregledu, svejedno ih odbaciti?", "confirmations.domain_block.confirm": "Blokiraj cijelu domenu", "confirmations.domain_block.message": "Jeste li zaista, zaista sigurni da želite blokirati cijelu domenu {domain}? U većini slučajeva dovoljno je i preferirano nekoliko ciljanih blokiranja ili utišavanja. Nećete vidjeti sadržaj s te domene ni u kojim javnim vremenskim crtama ili Vašim obavijestima. Vaši pratitelji s te domene bit će uklonjeni.", + "confirmations.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Odjavi se", "confirmations.logout.message": "Jeste li sigurni da se želite odjaviti?", "confirmations.mute.confirm": "Utišaj", @@ -214,7 +216,7 @@ "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": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, 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.", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Lokalna vremenska crta", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Istraživanje", "navigation_bar.domain_blocks": "Blokirane domene", "navigation_bar.edit_profile": "Uredi profil", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Traži", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Search or paste URL", - "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.", - "search_popout.tips.hashtag": "hashtag", - "search_popout.tips.status": "status", - "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", - "search_popout.tips.user": "korisnik", - "search_results.accounts": "Ljudi", + "search_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "All", "search_results.hashtags": "Hashtags", "search_results.nothing_found": "Could not find anything for these search terms", @@ -555,7 +559,8 @@ "status.copy": "Copy link to status", "status.delete": "Obriši", "status.detailed_status": "Detailed conversation view", - "status.direct": "Direct message @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Uredi", "status.edited": "Uređeno {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index b5ca1ef3bd..4cd7ebde72 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -11,7 +11,7 @@ "about.not_available": "Ez az információ nem lett közzétéve ezen a kiszolgálón.", "about.powered_by": "Decentralizált közösségi média a {mastodon} segítségével", "about.rules": "Kiszolgáló szabályai", - "account.account_note_header": "Jegyzet", + "account.account_note_header": "Feljegyzés", "account.add_or_remove_from_list": "Hozzáadás vagy eltávolítás a listákról", "account.badges.bot": "Bot", "account.badges.group": "Csoport", @@ -20,7 +20,7 @@ "account.blocked": "Letiltva", "account.browse_more_on_origin_server": "Böngéssz tovább az eredeti profilon", "account.cancel_follow_request": "Követési kérés visszavonása", - "account.direct": "Közvetlen üzenet @{name} számára", + "account.direct": "@{name} személyes említése", "account.disable_notifications": "Ne figyelmeztessen, ha @{name} bejegyzést tesz közzé", "account.domain_blocked": "Letiltott domain", "account.edit_profile": "Profil szerkesztése", @@ -34,7 +34,7 @@ "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, one {{counter} Követett} other {{counter} Követett}}", + "account.following_counter": "{count, plural, one {{counter} követett} 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.go_to_profile": "Ugrás a profilhoz", @@ -53,8 +53,8 @@ "account.posts": "Bejegyzések", "account.posts_with_replies": "Bejegyzések és válaszok", "account.report": "@{name} jelentése", - "account.requested": "Jóváhagysára vár. Kattints a követési kérés visszavonásához", - "account.requested_follow": "{name} kérte, hogy követhessen téged", + "account.requested": "Jóváhagysára vár. Kattintás a követési kérés törléséhez", + "account.requested_follow": "{name} kérte, hogy követhessen", "account.share": "@{name} profiljának megosztása", "account.show_reblogs": "@{name} megtolásainak mutatása", "account.statuses_counter": "{count, plural, one {{counter} Bejegyzés} other {{counter} Bejegyzés}}", @@ -66,12 +66,12 @@ "account.unmute": "@{name} némításának 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": "Kattints jegyzet hozzáadásához", + "account_note.placeholder": "Kattintás jegyzet hozzáadásához", "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", "admin.dashboard.retention.average": "Átlag", "admin.dashboard.retention.cohort": "Regisztráció hónapja", - "admin.dashboard.retention.cohort_size": "Új felhasználók", + "admin.dashboard.retention.cohort_size": "Új felhasználó", "alert.rate_limited.message": "Próbáld újra {retry_time, time, medium} után.", "alert.rate_limited.title": "Adatforgalom korlátozva", "alert.unexpected.message": "Váratlan hiba történt.", @@ -96,13 +96,13 @@ "closed_registrations.other_server_instructions": "Mivel a Mastdon decentralizált, létrehozhatsz egy fiókot egy másik kiszolgálón és mégis kapcsolódhatsz ehhez.", "closed_registrations_modal.description": "Fiók létrehozása a {domain} kiszolgálón jelenleg nem lehetséges, de jó, ha tudod, hogy nem szükséges fiókkal rendelkezni pont a {domain} kiszolgálón, hogy használhasd a Mastodont.", "closed_registrations_modal.find_another_server": "Másik kiszolgáló keresése", - "closed_registrations_modal.preamble": "A Mastodon decentralizált, így teljesen mindegy, hol hozod létre a fiókodat, követhetsz és kapcsolódhatsz bárkivel ezen a kiszolgálón is. Saját magad is üzemeltethetsz kiszolgálót!", + "closed_registrations_modal.preamble": "A Mastodon nem központosított, így teljesen mindegy, hol történik a fiók létrehozása, követhető bárki és kapcsolatba lehet lépni bárkivel ezen a kiszolgálón is. Saját magunk is üzemeltethetünk kiszolgálót!", "closed_registrations_modal.title": "Regisztráció a Mastodonra", "column.about": "Névjegy", "column.blocks": "Letiltott felhasználók", "column.bookmarks": "Könyvjelzők", "column.community": "Helyi idővonal", - "column.direct": "Közvetlen üzenetek", + "column.direct": "Személyes említések", "column.directory": "Profilok böngészése", "column.domain_blocks": "Letiltott tartománynevek", "column.favourites": "Kedvencek", @@ -131,7 +131,7 @@ "compose_form.hashtag_warning": "Ez a bejegyzésed nem fog megjelenni semmilyen hashtag alatt, mivel nem nyilvános. 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", - "compose_form.placeholder": "Mi jár a fejedben?", + "compose_form.placeholder": "Mire gondolunk éppen?", "compose_form.poll.add_option": "Lehetőség hozzáadása", "compose_form.poll.duration": "Szavazás időtartama", "compose_form.poll.option_placeholder": "{number}. lehetőség", @@ -145,23 +145,25 @@ "compose_form.sensitive.hide": "{count, plural, one {Média kényesnek jelölése} other {Média kényesnek jelölése}}", "compose_form.sensitive.marked": "{count, plural, one {A médiát kényesnek jelölték} other {A médiát kényesnek jelölték}}", "compose_form.sensitive.unmarked": "{count, plural, one {A médiát nem jelölték kényesnek} other {A médiát nem jelölték kényesnek}}", - "compose_form.spoiler.marked": "Tartalmi figyelmeztetés törlése", + "compose_form.spoiler.marked": "Tartalmi figyelmeztetés eltávolítása", "compose_form.spoiler.unmarked": "Tartalmi figyelmeztetés hozzáadása", - "compose_form.spoiler_placeholder": "Írd ide a figyelmeztetést", - "confirmation_modal.cancel": "Mégse", + "compose_form.spoiler_placeholder": "A figyelmeztetés beírása ide", + "confirmation_modal.cancel": "Mégsem", "confirmations.block.block_and_report": "Letiltás és jelentés", "confirmations.block.confirm": "Letiltás", "confirmations.block.message": "Biztos, hogy letiltod: {name}?", "confirmations.cancel_follow_request.confirm": "Kérés visszavonása", - "confirmations.cancel_follow_request.message": "Biztos, hogy visszavonod a(z) {name} felhasználóra vonatkozó követési kérésedet?", + "confirmations.cancel_follow_request.message": "Biztosan visszavonásra kerüljön {name} felhasználóra vonatkozó követési kérés?", "confirmations.delete.confirm": "Törlés", "confirmations.delete.message": "Biztos, hogy törölni szeretnéd ezt a bejegyzést?", "confirmations.delete_list.confirm": "Törlés", "confirmations.delete_list.message": "Biztos, hogy véglegesen törölni szeretnéd ezt a listát?", "confirmations.discard_edit_media.confirm": "Elvetés", - "confirmations.discard_edit_media.message": "Elmentetlen változtatásaid vannak a média leírásában vagy előnézetében. Eldobjuk őket?", - "confirmations.domain_block.confirm": "Teljes domain elrejtése", + "confirmations.discard_edit_media.message": "Elmentetlen változtatások vannak a média leírásában vagy előnézetében. Elvetésre kerüljenek?", + "confirmations.domain_block.confirm": "Teljes tartomány tiltása", "confirmations.domain_block.message": "Biztos, hogy le szeretnéd tiltani a teljes {domain} domaint? A legtöbb esetben néhány célzott tiltás vagy némítás elegendő, és kívánatosabb megoldás. Semmilyen tartalmat nem fogsz látni ebből a domainből se az idővonalakon, se az értesítésekben. Az ebben a domainben lévő követőidet is eltávolítjuk.", + "confirmations.edit.confirm": "Szerkesztés", + "confirmations.edit.message": "A szerkesztés felülírja a most összeállítás alatt álló üzenetet. Folytatás?", "confirmations.logout.confirm": "Kijelentkezés", "confirmations.logout.message": "Biztos, hogy kijelentkezel?", "confirmations.mute.confirm": "Némítás", @@ -176,21 +178,21 @@ "conversation.delete": "Beszélgetés törlése", "conversation.mark_as_read": "Megjelölés olvasottként", "conversation.open": "Beszélgetés megtekintése", - "conversation.with": "{names}-el/al", + "conversation.with": "Velük: {names}", "copypaste.copied": "Másolva", "copypaste.copy": "Másolás", "directory.federated": "Az ismert fediverzumból", - "directory.local": "Csak innen: {domain}", + "directory.local": "Csak {domain} tartományból", "directory.new_arrivals": "Új csatlakozók", "directory.recently_active": "Nemrég aktív", "disabled_account_banner.account_settings": "Fiókbeállítások", - "disabled_account_banner.text": "A(z) {disabledAccount} fiókod jelenleg le van tiltva.", - "dismissable_banner.community_timeline": "Ezek a legfrissebb nyilvános bejegyzések, amelyeket a(z) {domain} kiszolgáló fiókjait használó emberek tették közzé.", - "dismissable_banner.dismiss": "Eltüntetés", - "dismissable_banner.explore_links": "Jelenleg ezekről a hírekről beszélgetnek az ezen és a decentralizált hálózat többi kiszolgálóján lévő emberek.", - "dismissable_banner.explore_statuses": "Jelenleg ezek a bejegyzések hódítanak teret ezen és a decentralizált hálózat egyéb kiszolgálóin.", - "dismissable_banner.explore_tags": "Jelenleg ezek a hashtagek hódítanak teret ezen és a decentralizált hálózat többi kiszolgálóján lévő emberek körében.", - "dismissable_banner.public_timeline": "Ezek a legfrissebb bejegyzések azoktól, akik a decentralizált hálózat más kiszolgálóin vannak, és ez a kiszolgáló tud róluk.", + "disabled_account_banner.text": "{disabledAccount} fiók jelenleg letilzásra került.", + "dismissable_banner.community_timeline": "Ezek a legfrissebb nyilvános bejegyzések, amelyeket {domain} tartományban levő kiszolgáló fiókjait használó emberek tettek közzé.", + "dismissable_banner.dismiss": "Elvetés", + "dismissable_banner.explore_links": "Jelenleg ezekről a hírekről beszélgetnek az ezen és a központosítás nélküli hálózat többi kiszolgálóján lévő emberek.", + "dismissable_banner.explore_statuses": "Jelenleg ezek a bejegyzések hódítanak teret ezen és a központosítás nélküli hálózat egyéb kiszolgálóin.", + "dismissable_banner.explore_tags": "Jelenleg ezek a #címke elemek hódítanak teret ezen és a központosítás nélküli hálózat többi kiszolgálóján lévő emberek körében.", + "dismissable_banner.public_timeline": "Ezek a legfrissebb bejegyzések azoktól, akik a központosítás nélküli hálózat más kiszolgálóin vannak és ez a kiszolgáló tud róluk.", "embed.instructions": "Ágyazd be ezt a bejegyzést a weboldaladba az alábbi kód kimásolásával.", "embed.preview": "Így fog kinézni:", "emoji_button.activity": "Tevékenység", @@ -208,67 +210,67 @@ "emoji_button.search_results": "Keresési találatok", "emoji_button.symbols": "Szimbólumok", "emoji_button.travel": "Utazás és Helyek", - "empty_column.account_suspended": "Fiók felfüggesztve", + "empty_column.account_suspended": "A fiók felfüggesztésre került", "empty_column.account_timeline": "Itt nincs bejegyzés!", "empty_column.account_unavailable": "A profil nem érhető el", - "empty_column.blocks": "Még senkit sem tiltottál le.", + "empty_column.blocks": "Még senki sem került letiltásra.", "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.domain_blocks": "Még nem rejtettél el egyetlen domaint sem.", + "empty_column.direct": "Még nincs egy személyes említésed sem. Küldéskor vagy fogadáskor itt fognak megjelenni.", + "empty_column.domain_blocks": "Még nem lett letiltva egyetlen tartomány 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.", - "empty_column.follow_requests": "Még nincs egy követési kérésed sem. Ha kapsz egyet, itt fogjuk feltüntetni.", - "empty_column.followed_tags": "Még egy hashtaget sem követtél be. Itt fognak megjelenni, ahogy bekövetsz egyet.", - "empty_column.hashtag": "Jelenleg nem található semmi ezzel a hashtaggel.", - "empty_column.home": "A saját idővonalad üres! Látogasd meg a {public} oldalt vagy használd a keresőt, hogy megismerj másokat.", + "empty_column.follow_requests": "Még nincs egy követési kérés sem. Fogadáskor itt jelenik meg.", + "empty_column.followed_tags": "Még egy #címke sincs követve. Ezek ekkor itt jelennek meg.", + "empty_column.hashtag": "Jelenleg nem található semmi ezzel a #címkével.", + "empty_column.home": "A saját idővonal üres! További emberek követése a kitöltéshez. {suggestions}", "empty_column.home.suggestions": "Nézzünk pár javaslatot", "empty_column.list": "A lista jelenleg üres. Ha a listatagok bejegyzést tesznek közzé, itt fog megjelenni.", - "empty_column.lists": "Még nem hoztál létre listát. Ha csinálsz egyet, itt látszik majd.", - "empty_column.mutes": "Még egy felhasználót sem némítottál le.", - "empty_column.notifications": "Jelenleg nincsenek értesítéseid. Lépj kapcsolatba másokkal, hogy elindítsd a beszélgetést.", - "empty_column.public": "Jelenleg itt nincs semmi! Írj valamit nyilvánosan vagy kövess más kiszolgálón levő felhasználókat, hogy megtöltsd.", + "empty_column.lists": "Még nincs egyetlen lista sem. A létrehozáskor itt jelenik meg.", + "empty_column.mutes": "Még nincs egyetlen némított felhasználót sem.", + "empty_column.notifications": "Jelenleg nincsenek értesítések. Más emberekkel kapcsolatba lépés után ez itt lesz látható.", + "empty_column.public": "Jelenleg itt nincs semmi! Írjunk valamit nyilvánosan vagy kövessünk más kiszolgálón levő felhasználókat a megjelenéshez.", "error.unexpected_crash.explanation": "Egy hiba vagy böngésző inkompatibilitás miatt ez az oldal nem jeleníthető meg rendesen.", - "error.unexpected_crash.explanation_addons": "Ezt az oldalt nem lehet helyesen megjeleníteni. Ezt a hibát valószínűleg egy böngésző beépülő vagy egy automatikus fordító okozza.", - "error.unexpected_crash.next_steps": "Próbáld 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.", - "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.", + "error.unexpected_crash.explanation_addons": "Ezt az oldalt nem lehet helyesen megjeleníteni. Ezt a hibát valószínűleg egy böngésző kiegészítő vagy egy automatikus fordító okozza.", + "error.unexpected_crash.next_steps": "Próbáljuk meg frissíteni az oldalt. Ha ez nem segít, egy másik böngészőn vagy appon keresztül még mindig használható a Mastodon.", + "error.unexpected_crash.next_steps_addons": "Próbáljuk meg letiltani őket és frissíteni az oldalt. Ha ez nem segít, egy másik böngészőn vagy alkalmazáson keresztül még mindig használható a Mastodon.", "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.suggested_follows": "Nekem", "explore.title": "Felfedezés", "explore.trending_links": "Hírek", "explore.trending_statuses": "Bejegyzések", - "explore.trending_tags": "Hashtagek", - "filter_modal.added.context_mismatch_explanation": "Ez a szűrőkategória nem érvényes abban a környezetben, amelyből elérted ezt a bejegyzést. Ha ebben a környezetben is szűrni szeretnéd a bejegyzést, akkor szerkesztened kell a szűrőt.", + "explore.trending_tags": "#Címkék", + "filter_modal.added.context_mismatch_explanation": "Ez a szűrőkategória nem érvényes abban a környezetben, amelyből ez a bejegyzés elérésre kerül. Ha ebben a környezetben is szűrni szeretnénk a bejegyzést, akkor szerkeszteni kell a szűrőt.", "filter_modal.added.context_mismatch_title": "Környezeti eltérés.", - "filter_modal.added.expired_explanation": "Ez a szűrőkategória elévült, a használatához módosítanod kell az elévülési dátumot.", - "filter_modal.added.expired_title": "Elévült szűrő.", - "filter_modal.added.review_and_configure": "A szűrőkategória felülvizsgálatához és további beállításához ugorjon a {settings_link} oldalra.", + "filter_modal.added.expired_explanation": "Ez a szűrőkategória elévült, a használatához módosítani kell a lejárati dátumot.", + "filter_modal.added.expired_title": "A szűrő lejárt!", + "filter_modal.added.review_and_configure": "A szűrőkategória felülvizsgálatához és további beállításához ugorás {settings_link} oldalra.", "filter_modal.added.review_and_configure_title": "Szűrőbeállítások", "filter_modal.added.settings_link": "beállítások oldal", "filter_modal.added.short_explanation": "A következő bejegyzés hozzá lett adva a következő szűrőkategóriához: {title}.", - "filter_modal.added.title": "Szűrő hozzáadva.", + "filter_modal.added.title": "A szűrő hozzáadásra került.", "filter_modal.select_filter.context_mismatch": "nem érvényes erre a környezetre", - "filter_modal.select_filter.expired": "elévült", + "filter_modal.select_filter.expired": "lejárt", "filter_modal.select_filter.prompt_new": "Új kategória: {name}", "filter_modal.select_filter.search": "Keresés vagy létrehozás", - "filter_modal.select_filter.subtitle": "Válassz egy meglévő kategóriát, vagy hozz létre egy újat", + "filter_modal.select_filter.subtitle": "Létező kategória használata vagy új létrehozása", "filter_modal.select_filter.title": "E bejegyzés szűrése", "filter_modal.title.status": "Egy bejegyzés szűrése", "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!", - "follow_request.authorize": "Engedélyezés", + "follow_request.authorize": "Hitelesítés", "follow_request.reject": "Elutasítás", "follow_requests.unlocked_explanation": "Bár a fiókod nincs zárolva, a(z) {domain} csapata úgy gondolta, hogy talán kézzel szeretnéd ellenőrizni a fiók követési kéréseit.", - "followed_tags": "Követett hashtagek", + "followed_tags": "Követett #címkék", "footer.about": "Névjegy", - "footer.directory": "Profilok", - "footer.get_app": "Töltsd le az appot", - "footer.invite": "Mások meghívása", + "footer.directory": "Profiltár", + "footer.get_app": "Alkalmazás beszerzése", + "footer.invite": "Emberek meghívása", "footer.keyboard_shortcuts": "Billentyűparancsok", "footer.privacy_policy": "Adatvédelmi szabályzat", "footer.source_code": "Forráskód megtekintése", @@ -279,11 +281,11 @@ "hashtag.column_header.tag_mode.any": "vagy {additional}", "hashtag.column_header.tag_mode.none": "{additional} nélkül", "hashtag.column_settings.select.no_options_message": "Nincs javaslat", - "hashtag.column_settings.select.placeholder": "Addj meg hashtageket…", + "hashtag.column_settings.select.placeholder": "#Címkék megadása…", "hashtag.column_settings.tag_mode.all": "Mindegyik", "hashtag.column_settings.tag_mode.any": "Bármelyik", "hashtag.column_settings.tag_mode.none": "Egyik sem", - "hashtag.column_settings.tag_toggle": "Új címkék felvétele ehhez az oszlophoz", + "hashtag.column_settings.tag_toggle": "További címkék felvétele ehhez az oszlophoz", "hashtag.follow": "Hashtag követése", "hashtag.unfollow": "Hashtag követésének megszüntetése", "home.column_settings.basic": "Alapvető", @@ -291,14 +293,14 @@ "home.column_settings.show_replies": "Válaszok megjelenítése", "home.hide_announcements": "Közlemények elrejtése", "home.show_announcements": "Közlemények megjelenítése", - "interaction_modal.description.favourite": "Egy Mastodon fiókkal kedvencnek jelölheted ezt a bejegyzést, tudatva a szerzővel, hogy értékeled és elteszed későbbre.", + "interaction_modal.description.favourite": "Egy Mastodon fiókkal kedvencnek jelölhető ez a bejegyzés, tudatva a szerzővel, hogy értékeljük és eltesszük későbbre.", "interaction_modal.description.follow": "Egy Mastodon fiókkal bekövetheted {name} fiókot, hogy lásd a bejegyzéseit a saját hírfolyamodban.", - "interaction_modal.description.reblog": "Egy Mastodon fiókkal megtolhatod ezt a bejegyzést, hogy megoszd a saját követőiddel.", - "interaction_modal.description.reply": "Egy Mastodon fiókkal válaszolhatsz erre a bejegyzésre.", + "interaction_modal.description.reblog": "Egy Mastodon fiókkal megtolható ez a bejegyzés a saját követőkkel megosztáshoz.", + "interaction_modal.description.reply": "Egy Mastodon fiókkal válaszolhatunk erre a bejegyzésre.", "interaction_modal.on_another_server": "Másik kiszolgálón", "interaction_modal.on_this_server": "Ezen a kiszolgálón", - "interaction_modal.other_server_instructions": "Másold és illeszd be ezt a webcímet a kedvenc Mastodon alkalmazásod vagy a Mastodon-kiszolgálód webes felületének keresőmezőjébe.", - "interaction_modal.preamble": "Mivel a Mastodon decentralizált, használhatod egy másik Mastodon kiszolgálón, vagy kompatibilis szolgáltatáson lévő fiókodat, ha ezen a kiszolgálón nincs fiókod.", + "interaction_modal.other_server_instructions": "Másoljuk és illesszük be ezt a webcímet a kedvenc Mastodon alkalmazásd vagy a Mastodon kiszolgáló webes felületének keresőmezőjébe.", + "interaction_modal.preamble": "Mivel a Mastodon nem központosított, használható egy másik Mastodon kiszolgálón vagy kompatibilis szolgáltatáson lévő fiók, ha ezen a kiszolgálón nincs saját fiók.", "interaction_modal.title.favourite": "{name} bejegyzésének megjelölése kedvencként", "interaction_modal.title.follow": "{name} követése", "interaction_modal.title.reblog": "{name} bejegyzésének megtolása", @@ -306,47 +308,47 @@ "intervals.full.days": "{number, plural, one {# nap} other {# nap}}", "intervals.full.hours": "{number, plural, one {# óra} other {# óra}}", "intervals.full.minutes": "{number, plural, one {# perc} other {# perc}}", - "keyboard_shortcuts.back": "visszafelé navigálás", - "keyboard_shortcuts.blocked": "letiltott felhasználók listájának megnyitása", + "keyboard_shortcuts.back": "Navigálás vissza", + "keyboard_shortcuts.blocked": "Letiltott felhasználók listájának megnyitása", "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.compose": "Szerkesztési terület fókuszálása", "keyboard_shortcuts.description": "Leírás", - "keyboard_shortcuts.direct": "közvetlen üzenetek megnyitása", - "keyboard_shortcuts.down": "lefele navigálás a listában", + "keyboard_shortcuts.direct": "személyes említések oszlop megnyitása", + "keyboard_shortcuts.down": "Mozgás lefelé a listában", "keyboard_shortcuts.enter": "Bejegyzés megnyitása", "keyboard_shortcuts.favourite": "Bejegyzés kedvencnek jelölése", - "keyboard_shortcuts.favourites": "kedvenc lista megnyitása", + "keyboard_shortcuts.favourites": "Kedvencek lista megnyitása", "keyboard_shortcuts.federated": "föderációs idővonal megnyitása", "keyboard_shortcuts.heading": "Billentyűparancsok", - "keyboard_shortcuts.home": "saját idővonal megnyitása", + "keyboard_shortcuts.home": "Saját idővonal megnyitása", "keyboard_shortcuts.hotkey": "Gyorsbillentyű", "keyboard_shortcuts.legend": "jelmagyarázat megjelenítése", "keyboard_shortcuts.local": "helyi idővonal megnyitása", - "keyboard_shortcuts.mention": "szerző megemlítése", + "keyboard_shortcuts.mention": "Szerző megemlítése", "keyboard_shortcuts.muted": "némított felhasználók listájának megnyitása", - "keyboard_shortcuts.my_profile": "profilod megnyitása", - "keyboard_shortcuts.notifications": "értesítések megnyitása", - "keyboard_shortcuts.open_media": "média megnyitása", + "keyboard_shortcuts.my_profile": "Saját profil megnyitása", + "keyboard_shortcuts.notifications": "Értesítések oszlop megnyitása", + "keyboard_shortcuts.open_media": "Média megnyitása", "keyboard_shortcuts.pinned": "Kitűzött bejegyzések listájának megnyitása", - "keyboard_shortcuts.profile": "szerző profiljának megnyitása", + "keyboard_shortcuts.profile": "Szerző profil megnyitása", "keyboard_shortcuts.reply": "Válasz bejegyzésre", - "keyboard_shortcuts.requests": "követési kérések listájának megnyitása", - "keyboard_shortcuts.search": "fókuszálás a keresőre", + "keyboard_shortcuts.requests": "Követési kérések lista megnyitása", + "keyboard_shortcuts.search": "Keresősáv fókuszálása", "keyboard_shortcuts.spoilers": "Tartalmi figyelmeztetés mező megjelenítése/elrejtése", - "keyboard_shortcuts.start": "\"Első lépések\" megnyitása", - "keyboard_shortcuts.toggle_hidden": "Tartalmi figyelmeztetéssel ellátott szöveg megjelenítése/elrejtése", + "keyboard_shortcuts.start": "\"Első lépések\" oszlop megnyitása", + "keyboard_shortcuts.toggle_hidden": "Tartalmi figyelmeztetéssel mögötti szöveg megjelenítése/elrejtése", "keyboard_shortcuts.toggle_sensitivity": "Média megjelenítése/elrejtése", "keyboard_shortcuts.toot": "Új bejegyzés írása", "keyboard_shortcuts.unfocus": "Szerkesztés/keresés fókuszból való kivétele", - "keyboard_shortcuts.up": "felfelé mozdítás a listában", + "keyboard_shortcuts.up": "Mozgás felfelé a listában", "lightbox.close": "Bezárás", - "lightbox.compress": "Képnézet összecsukása", - "lightbox.expand": "Képnézet kinagyítása", + "lightbox.compress": "Képnéző doboz összezárása", + "lightbox.expand": "Képnéző doboz kinyitása", "lightbox.next": "Következő", "lightbox.previous": "Előző", - "limited_account_hint.action": "Mindenképpen mutassa a profilt", - "limited_account_hint.title": "Ezt a profilt a(z) {domain} moderátorai elrejtették.", + "limited_account_hint.action": "Profil megjelenítése mindenképpen", + "limited_account_hint.title": "Ezt a profilt {domain} moderátorai elrejtették.", "lists.account.add": "Hozzáadás a listához", "lists.account.remove": "Eltávolítás a listából", "lists.delete": "Lista törlése", @@ -357,32 +359,32 @@ "lists.replies_policy.followed": "Bármely követett felhasználó", "lists.replies_policy.list": "A lista tagjai", "lists.replies_policy.none": "Senki", - "lists.replies_policy.title": "Nekik mutassuk a válaszokat:", + "lists.replies_policy.title": "Válaszok megjelenítése:", "lists.search": "Keresés a követett személyek között", - "lists.subheading": "Listáid", + "lists.subheading": "Saját listák", "load_pending": "{count, plural, one {# új elem} other {# új elem}}", "loading_indicator.label": "Betöltés...", "media_gallery.toggle_visible": "{number, plural, one {Kép elrejtése} other {Képek elrejtése}}", "missing_indicator.label": "Nincs találat", "missing_indicator.sublabel": "Ez az erőforrás nem található", - "moved_to_account_banner.text": "A(z) {disabledAccount} fiókod jelenleg le van tiltva, mert átköltöztél ide: {movedToAccount}.", + "moved_to_account_banner.text": "{disabledAccount} fiók jelenleg le van tiltva, mert más {movedToAccount} fiókba került át.", "mute_modal.duration": "Időtartam", - "mute_modal.hide_notifications": "Rejtsük el a felhasználótól származó értesítéseket?", + "mute_modal.hide_notifications": "Értesítések elrejtése ettől a felhasználótól?", "mute_modal.indefinite": "Határozatlan", "navigation_bar.about": "Névjegy", "navigation_bar.blocks": "Letiltott felhasználók", "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.direct": "Személyes említések", "navigation_bar.discover": "Felfedezés", - "navigation_bar.domain_blocks": "Rejtett domainek", + "navigation_bar.domain_blocks": "Letiltott tartományok", "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", - "navigation_bar.followed_tags": "Követett hashtagek", + "navigation_bar.followed_tags": "Követett #címkék", "navigation_bar.follows_and_followers": "Követettek és követők", "navigation_bar.lists": "Listák", "navigation_bar.logout": "Kijelentkezés", @@ -393,15 +395,15 @@ "navigation_bar.public_timeline": "Föderációs idővonal", "navigation_bar.search": "Keresés", "navigation_bar.security": "Biztonság", - "not_signed_in_indicator.not_signed_in": "Az erőforrás eléréséhez be kell jelentkezned.", + "not_signed_in_indicator.not_signed_in": "Az erőforrás eléréséhez be kell jelentkezni.", "notification.admin.report": "{name} jelentette: {target}", "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", "notification.mention": "{name} megemlített", - "notification.own_poll": "A szavazásod véget ért", - "notification.poll": "Egy szavazás, melyben részt vettél, véget ért", + "notification.own_poll": "A szavazás véget ért", + "notification.poll": "Egy általam részt vett szavazás véget ért", "notification.reblog": "{name} megtolta a bejegyzésedet", "notification.status": "{name} bejegyzést tett közzé", "notification.update": "{name} szerkesztett egy bejegyzést", @@ -411,47 +413,47 @@ "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 megjelenítése", - "notifications.column_settings.filter_bar.category": "Gyorskereső mező", - "notifications.column_settings.filter_bar.show_bar": "Szűrősáv mutatása", + "notifications.column_settings.filter_bar.advanced": "Összes kategória megjelenítése", + "notifications.column_settings.filter_bar.category": "Gyorsszűrő sáv", + "notifications.column_settings.filter_bar.show_bar": "Szűrősáv megjelenítése", "notifications.column_settings.follow": "Új követők:", "notifications.column_settings.follow_request": "Új követési kérelmek:", "notifications.column_settings.mention": "Megemlítések:", - "notifications.column_settings.poll": "Szavazás eredménye:", + "notifications.column_settings.poll": "Szavazási eredmények:", "notifications.column_settings.push": "Push értesítések", "notifications.column_settings.reblog": "Megtolások:", - "notifications.column_settings.show": "Oszlopban mutatás", + "notifications.column_settings.show": "Megjelenítés oszlopban", "notifications.column_settings.sound": "Hang lejátszása", "notifications.column_settings.status": "Új bejegyzések:", "notifications.column_settings.unread_notifications.category": "Olvasatlan értesítések", "notifications.column_settings.unread_notifications.highlight": "Olvasatlan értesítések kiemelése", "notifications.column_settings.update": "Szerkesztések:", - "notifications.filter.all": "Mind", + "notifications.filter.all": "Összes", "notifications.filter.boosts": "Megtolások", - "notifications.filter.favourites": "Kedvencnek jelölések", + "notifications.filter.favourites": "Kedvencek", "notifications.filter.follows": "Követések", "notifications.filter.mentions": "Megemlítések", "notifications.filter.polls": "Szavazások eredményei", "notifications.filter.statuses": "Frissítések azoktól, akiket követsz", "notifications.grant_permission": "Engedély megadása.", "notifications.group": "{count} értesítés", - "notifications.mark_as_read": "Minden értesítés olvasottnak jelölése", - "notifications.permission_denied": "Nem tudjuk engedélyezni az asztali értesítéseket, mert az engedélyt megtagadták.", - "notifications.permission_denied_alert": "Az asztali értesítések nem engedélyezhetőek, mert az engedélyt megtagadták a böngészőben", - "notifications.permission_required": "Az asztali értesítések nem elérhetőek, mert a szükséges engedélyt nem adtad meg.", + "notifications.mark_as_read": "Összes értesítés megjelölése olvasottként", + "notifications.permission_denied": "Az asztali értesítések nem érhetők el a korábban elutasított böngésző engedély kérelem miatt", + "notifications.permission_denied_alert": "Az asztali értesítések nem engedélyezhetők a korábban elutasított böngésző engedély miatt", + "notifications.permission_required": "Az asztali értesítések nem érhetők, mivel a szükséges engedély nem lett megadva.", "notifications_permission_banner.enable": "Asztali értesítések engedélyezése", - "notifications_permission_banner.how_to_control": "Ahhoz, hogy értesítéseket kapj akkor, amikor a Mastodon nincs megnyitva, engedélyezd az asztali értesítéseket. Pontosan be tudod állítani, hogy milyen interakciókról értesülj a fenti {icon} gombon keresztül, ha egyszer már engedélyezted őket.", - "notifications_permission_banner.title": "Soha ne mulassz el semmit", - "picture_in_picture.restore": "Visszarakás", + "notifications_permission_banner.how_to_control": "Bezárt Mastononnál értesések fogadásához engedélyezni kell az asztali értesítéseket. Pontosan lehet vezérelni, hogy milyen interakciókról érkezzen értesítés fenti {icon} gombon keresztül, ha már lorábban megtörtént az engedélyezés.", + "notifications_permission_banner.title": "Soha ne mulasszunk el semmit", + "picture_in_picture.restore": "Visszahelyezés", "poll.closed": "Lezárva", "poll.refresh": "Frissítés", "poll.total_people": "{count, plural, one {# személy} other {# személy}}", "poll.total_votes": "{count, plural, one {# szavazat} other {# szavazat}}", "poll.vote": "Szavazás", - "poll.voted": "Erre a válaszra szavaztál", + "poll.voted": "Megtörtént a szavazás erre a kérdésre", "poll.votes": "{votes, plural, one {# szavazat} other {# szavazat}}", "poll_button.add_poll": "Új szavazás", - "poll_button.remove_poll": "Szavazás törlése", + "poll_button.remove_poll": "Szavazás eltávolítása", "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": "Csak megemlítetteknek", @@ -464,7 +466,7 @@ "privacy_policy.last_updated": "Utoljára frissítve: {date}", "privacy_policy.title": "Adatvédelmi szabályzat", "refresh": "Frissítés", - "regeneration_indicator.label": "Töltődik…", + "regeneration_indicator.label": "A betöltés folyamatban van…", "regeneration_indicator.sublabel": "A saját idővonalad épp készül!", "relative_time.days": "{number}n", "relative_time.full.days": "{number, plural, one {# napja} other {# napja}}", @@ -479,7 +481,7 @@ "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.block_explanation": "A bejegyzéseik nem áthatók. Nem nézheti meg a saját bejegyzéseimet és nem tudni követni sem. Azt is meg fogja tudni mondani, hogy letiltották.", "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", @@ -490,11 +492,11 @@ "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.forward_hint": "Ez a fiók egy másik kiszolgálóról van. Oda is elküldésre kerüljön a jelentés egy anonimizált másolata?", "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.placeholder": "További hozzászólások", "report.reasons.dislike": "Nem tetszik", "report.reasons.dislike_description": "Ezt nem szeretném látni", "report.reasons.other": "Valami más", @@ -510,7 +512,7 @@ "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.take_action_actionable": "Míg átnézzük, a következőket lehet tenni @{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", @@ -520,33 +522,35 @@ "report_notification.categories.spam": "Kéretlen üzenet", "report_notification.categories.violation": "Szabálysértés", "report_notification.open": "Bejelentés megnyitása", + "search.no_recent_searches": "Nincsenek keresési előzmények", "search.placeholder": "Keresés", - "search.search_or_paste": "Keresés vagy URL beillesztése", - "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.", - "search_popout.tips.hashtag": "hashtag", - "search_popout.tips.status": "bejegyzés", - "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.quick_action.account_search": "Profilok a következő keresésre: {x}", + "search.quick_action.go_to_account": "Ugrás a következő profilhoz: {x}", + "search.quick_action.go_to_hashtag": "Ugrás a következő hashtaghez: {x}", + "search.quick_action.open_url": "Webcím megnyitása a Mastodonon", + "search.quick_action.status_search": "Bejegyzések a következő keresésre: {x}", + "search.search_or_paste": "Keresés vagy webcím beillesztése", + "search_popout.quick_actions": "Gyors műveletek", + "search_popout.recent": "Legutóbbi keresések", + "search_results.accounts": "Profilok", "search_results.all": "Összes", - "search_results.hashtags": "Hashtagek", + "search_results.hashtags": "#Címkék", "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.title": "Keresés erre: {q}", "search_results.total": "{count, number} {count, plural, one {találat} other {találat}}", - "server_banner.about_active_users": "Az elmúlt 30 napban ezt a kiszolgálót használók száma (Havi aktív felhasználók)", + "server_banner.about_active_users": "Az elmúlt 30 napban ezt a kiszolgálót használó emberek (Havi aktív felhasználók)", "server_banner.active_users": "aktív felhasználó", "server_banner.administered_by": "Adminisztrátor:", - "server_banner.introduction": "{domain} része egy decentralizált közösségi hálónak, melyet a {mastodon} hajt meg.", - "server_banner.learn_more": "Tudj meg többet", - "server_banner.server_stats": "Kiszolgálóstatisztika:", + "server_banner.introduction": "{domain} része egy központ nélküliközösségi hálónak, melyet a {mastodon} hajt meg.", + "server_banner.learn_more": "További információ", + "server_banner.server_stats": "Szerver statisztika:", "sign_in_banner.create_account": "Fiók létrehozása", "sign_in_banner.sign_in": "Bejelentkezés", - "sign_in_banner.text": "Jelentkezz be profilok vagy hashtagek követéséhez, kedvencnek jelöléséhez, bejegyzések megosztásához, megválaszolásához. A fiókodból más kiszolgálókon is kommunikálhatsz.", + "sign_in_banner.text": "Jelentkezzünk be profilok vagy hashtagek követéséhez, kedvencnek jelöléséhez, bejegyzések megosztásához, megválaszolásához. A fiókból más kiszolgálókon is kommunikálhatunk.", "status.admin_account": "Moderációs felület megnyitása @{name} fiókhoz", - "status.admin_domain": "A következő moderációs felületének megnyitása: @{domain}", + "status.admin_domain": "Moderációs felület megnyitása {domain} esetében", "status.admin_status": "Bejegyzés megnyitása a moderációs felületen", "status.block": "@{name} letiltása", "status.bookmark": "Könyvjelzőzés", @@ -555,7 +559,8 @@ "status.copy": "Link másolása bejegyzésbe", "status.delete": "Törlés", "status.detailed_status": "Részletes beszélgetési nézet", - "status.direct": "Közvetlen üzenet @{name} számára", + "status.direct": "@{name} személyes említése", + "status.direct_indicator": "Személyes említés", "status.edit": "Szerkesztés", "status.edited": "Szerkesztve: {date}", "status.edited_x_times": "{count, plural, one {{count} alkalommal} other {{count} alkalommal}} szerkesztve", @@ -593,19 +598,19 @@ "status.show_less_all": "Kevesebbet mindenhol", "status.show_more": "Többet", "status.show_more_all": "Többet mindenhol", - "status.show_original": "Eredeti mutatása", + "status.show_original": "Eredeti megjelenítése", "status.translate": "Fordítás", "status.translated_from_with": "{lang} nyelvről fordítva {provider} szolgáltatással", "status.uncached_media_warning": "Nem érhető el", "status.unmute_conversation": "Beszélgetés némításának feloldása", "status.unpin": "Kitűzés eltávolítása a profilodról", - "subscribed_languages.lead": "A változtatás után csak a kiválasztott nyelvű bejegyzések fognak megjelenni a kezdőlapon és az idővonalakon. Ha egy sincs kiválasztva, akkor minden nyelven megjelennek a bejegyzések.", + "subscribed_languages.lead": "A változtatás után csak a kiválasztott nyelvű bejegyzések fognak megjelenni a kezdőoldalon és az idővonalakon. Ha egy sincs kiválasztva, akkor az összes nyelvű bejegyzések megjelennek.", "subscribed_languages.save": "Változások mentése", - "subscribed_languages.target": "Feliratkozott nyelvek módosítása a következőnél: {target}", + "subscribed_languages.target": "Feliratkozott nyelvek módosítása {target} esetében", "suggestions.dismiss": "Javaslat elvetése", - "suggestions.header": "Esetleg érdekelhet…", - "tabs_bar.federated_timeline": "Föderációs", - "tabs_bar.home": "Kezdőlap", + "suggestions.header": "Esetleg érdeklődésre tarthat számot…", + "tabs_bar.federated_timeline": "Összekapcsolt", + "tabs_bar.home": "Kezdőoldal", "tabs_bar.local_timeline": "Helyi", "tabs_bar.notifications": "Értesítések", "time_remaining.days": "{number, plural, one {# nap} other {# nap}} van hátra", @@ -619,29 +624,29 @@ "timeline_hint.resources.statuses": "Régi bejegyzések", "trends.counter_by_accounts": "{count, plural, one {{counter} ember} other {{counter} ember}} az elmúlt {days, plural,one {napban} other {{days} napban}}", "trends.trending_now": "Most felkapott", - "ui.beforeunload": "A piszkozatod el fog veszni, ha elhagyod a Mastodont.", + "ui.beforeunload": "A vázlat elveszik a Mastodon elhagyásakor.", "units.short.billion": "{count}Mrd", "units.short.million": "{count}M", "units.short.thousand": "{count}K", - "upload_area.title": "Húzd ide a feltöltéshez", - "upload_button.label": "Média hozzáadása", - "upload_error.limit": "Túllépted a fájlfeltöltési korlátot.", + "upload_area.title": "Húzás a feltöltéshez", + "upload_button.label": "Képek, videó vagy audió fájl hozzáadása", + "upload_error.limit": "A fájlfeltöltési korlát elérésre került.", "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.audio_description": "Leírás be a siket vagy hallássérült embereknek", + "upload_form.description": "Leírás be vak vagy gyengénlátó embereknek", "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.thumbnail": "Bélyegkép megváltoztatása", "upload_form.undo": "Törlés", - "upload_form.video_description": "Írja le a hallás- vagy látássérültek számára", + "upload_form.video_description": "Leírás be a siket, hallássérült, vak vagy gyengénlátó embereknek", "upload_modal.analyzing_picture": "Kép elemzése…", - "upload_modal.apply": "Alkalmaz", + "upload_modal.apply": "Alkalmazás", "upload_modal.applying": "Alkalmazás…", "upload_modal.choose_image": "Kép kiválasztása", "upload_modal.description_placeholder": "A gyors, barna róka átugrik a lusta kutya fölött", "upload_modal.detect_text": "Szöveg felismerése a képről", "upload_modal.edit_media": "Média szerkesztése", - "upload_modal.hint": "Kattints vagy húzd a kört az előnézetben arra a fókuszpontra, mely minden megjelenített bélyegképen látható kell, legyen.", + "upload_modal.hint": "Kattintás vagy kör húzása az előnézetben arra a fókuszpontra, mely minden megjelenített bélyegképen láthatónak kell lenni.", "upload_modal.preparing_ocr": "OCR előkészítése…", "upload_modal.preview_label": "Előnézet ({ratio})", "upload_progress.label": "Feltöltés...", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index cb1dd1bd2d..e77641312e 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -20,7 +20,7 @@ "account.blocked": "Արգելափակուած է", "account.browse_more_on_origin_server": "Դիտել աւելին իրական պրոֆիլում", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "Նամակ գրել @{name} -ին", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Ծանուցումները անջատել @{name} գրառումների համար", "account.domain_blocked": "Տիրոյթը արգելափակուած է", "account.edit_profile": "Խմբագրել անձնական էջը", @@ -102,7 +102,7 @@ "column.blocks": "Արգելափակուած օգտատէրեր", "column.bookmarks": "Էջանիշեր", "column.community": "Տեղական հոսք", - "column.direct": "Հասցէագրուած", + "column.direct": "Private mentions", "column.directory": "Զննել անձնական էջերը", "column.domain_blocks": "Թաքցուած տիրոյթները", "column.favourites": "Հաւանածներ", @@ -162,6 +162,8 @@ "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.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Ելք", "confirmations.logout.message": "Համոզո՞ւած ես, որ ուզում ես դուրս գալ", "confirmations.mute.confirm": "Լռեցնել", @@ -214,7 +216,7 @@ "empty_column.blocks": "Դու դեռ ոչ մէկի չես արգելափակել։", "empty_column.bookmarked_statuses": "Դու դեռ չունես որեւէ էջանշուած գրառում։ Երբ էջանշես, դրանք կը երեւան այստեղ։", "empty_column.community": "Տեղական հոսքը դատարկ է։ Հրապարակային մի բան գրի՛ր շարժիչը գործարկելու համար։", - "empty_column.direct": "Դու դեռ չունես ոչ մի հասցէագրուած հաղորդագրութիւն։ Երբ ուղարկես կամ ստանաս որեւէ անձնական նամակ, այն կերեւայ այստեղ։", + "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, 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": "Դու դեռ չունես որեւէ հաւանած գրառում։ Երբ հաւանես, դրանք կերեւան այստեղ։", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Էջանիշեր", "navigation_bar.community_timeline": "Տեղական հոսք", "navigation_bar.compose": "Ստեղծել նոր գրառում", - "navigation_bar.direct": "Հասցէագրուած նամակներ", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Բացայայտել", "navigation_bar.domain_blocks": "Թաքցուած տիրոյթներ", "navigation_bar.edit_profile": "Խմբագրել անձնական էջը", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Սպամ", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Փնտրել", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Որոնել կամ դնել URL", - "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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "Բոլորը", "search_results.hashtags": "Պիտակներ", "search_results.nothing_found": "Could not find anything for these search terms", @@ -555,7 +559,8 @@ "status.copy": "Պատճէնել գրառման յղումը", "status.delete": "Ջնջել", "status.detailed_status": "Շղթայի ընդլայնուած դիտում", - "status.direct": "Նամակ գրել {name} -ին", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Խմբագրել", "status.edited": "Խմբագրուել է՝ {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index a6db3207db..6e8a33d37d 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -20,7 +20,7 @@ "account.blocked": "Terblokir", "account.browse_more_on_origin_server": "Lihat lebih lanjut di profil asli", "account.cancel_follow_request": "Batalkan permintaan ikut", - "account.direct": "Pesan Langsung @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Berhenti memberitahu saya ketika @{name} memposting", "account.domain_blocked": "Domain diblokir", "account.edit_profile": "Ubah profil", @@ -102,7 +102,7 @@ "column.blocks": "Pengguna yang diblokir", "column.bookmarks": "Markah", "column.community": "Linimasa Lokal", - "column.direct": "Pesan langsung", + "column.direct": "Private mentions", "column.directory": "Jelajahi profil", "column.domain_blocks": "Domain tersembunyi", "column.favourites": "Favorit", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Anda belum menyimpan perubahan deskripsi atau pratinjau media, buang saja?", "confirmations.domain_block.confirm": "Sembunyikan keseluruhan domain", "confirmations.domain_block.message": "Apakah Anda benar-benar yakin untuk memblokir keseluruhan {domain}? Dalam kasus tertentu beberapa pemblokiran atau penyembunyian lebih baik.", + "confirmations.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Keluar", "confirmations.logout.message": "Apakah Anda yakin ingin keluar?", "confirmations.mute.confirm": "Bisukan", @@ -214,7 +216,7 @@ "empty_column.blocks": "Anda belum memblokir siapa pun.", "empty_column.bookmarked_statuses": "Anda belum memiliki kiriman termarkah. Saat Anda menandainya sebagai markah, mereka 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.direct": "You don't have any private mentions yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Tidak ada topik tersembunyi.", "empty_column.explore_statuses": "Tidak ada yang sedang tren pada saat ini. Periksa lagi nanti!", "empty_column.favourited_statuses": "Anda belum memiliki kiriman favorit. Ketika Anda mengirim atau menerimanya, mereka akan muncul di sini.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Fokus kolom", "keyboard_shortcuts.compose": "untuk fokus ke area penulisan", "keyboard_shortcuts.description": "Deskripsi", - "keyboard_shortcuts.direct": "untuk membuka kolom pesan langsung", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "untuk pindah ke bawah dalam sebuah daftar", "keyboard_shortcuts.enter": "Buka kiriman", "keyboard_shortcuts.favourite": "untuk memfavoritkan", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Markah", "navigation_bar.community_timeline": "Linimasa lokal", "navigation_bar.compose": "Tulis toot baru", - "navigation_bar.direct": "Pesan langsung", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Temukan", "navigation_bar.domain_blocks": "Domain tersembunyi", "navigation_bar.edit_profile": "Ubah profil", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Pelanggaran peraturan", "report_notification.open": "Buka laporan", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Pencarian", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Cari atau ketik URL", - "search_popout.search_format": "Format pencarian mahir", - "search_popout.tips.full_text": "Teks simpel memberikan kiriman yang Anda telah tulis, favorit, boost, atau status yang menyebut Anda, serta nama pengguna, nama yang ditampilkan, dan tagar yang cocok.", - "search_popout.tips.hashtag": "tagar", - "search_popout.tips.status": "kiriman", - "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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "Semua", "search_results.hashtags": "Tagar", "search_results.nothing_found": "Tidak dapat menemukan apa pun untuk istilah-istilah pencarian ini", @@ -555,7 +559,8 @@ "status.copy": "Salin tautan ke kiriman", "status.delete": "Hapus", "status.detailed_status": "Tampilan detail percakapan", - "status.direct": "Pesan langsung @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Edit", "status.edited": "Diedit {date}", "status.edited_x_times": "Diedit {count, plural, other {{count} kali}}", diff --git a/app/javascript/mastodon/locales/ig.json b/app/javascript/mastodon/locales/ig.json index 69e4ae08a7..41280827ea 100644 --- a/app/javascript/mastodon/locales/ig.json +++ b/app/javascript/mastodon/locales/ig.json @@ -20,7 +20,7 @@ "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Browse more on the original profile", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "Direct message @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain blocked", "account.edit_profile": "Edit profile", @@ -102,7 +102,7 @@ "column.blocks": "Ojiarụ egbochiri", "column.bookmarks": "Ebenrụtụakā", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.direct": "Private mentions", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "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.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Log out", "confirmations.logout.message": "Are you sure you want to log out?", "confirmations.mute.confirm": "Mute", @@ -214,7 +216,7 @@ "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.direct": "You don't have any private mentions yet. When you send or receive one, 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.", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Ebenrụtụakā", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new post", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Search", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Search or paste URL", - "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.status": "status", - "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", - "search_popout.tips.user": "ojiarụ", - "search_results.accounts": "People", + "search_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "All", "search_results.hashtags": "Hashtags", "search_results.nothing_found": "Could not find anything for these search terms", @@ -555,7 +559,8 @@ "status.copy": "Copy link to status", "status.delete": "Hichapụ", "status.detailed_status": "Detailed conversation view", - "status.direct": "Direct message @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Edit", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index fedabed58e..7a83ec3013 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -20,7 +20,7 @@ "account.blocked": "Restriktita", "account.browse_more_on_origin_server": "Videz pluse che originala profilo", "account.cancel_follow_request": "Desendez sequodemando", - "account.direct": "Direct Message @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Cesez avizar me kande @{name} postas", "account.domain_blocked": "Domain hidden", "account.edit_profile": "Modifikar profilo", @@ -102,7 +102,7 @@ "column.blocks": "Blokusita uzeri", "column.bookmarks": "Libromarki", "column.community": "Lokala tempolineo", - "column.direct": "Direta mesaji", + "column.direct": "Private mentions", "column.directory": "Videz profili", "column.domain_blocks": "Hidden domains", "column.favourites": "Favorati", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Vu havas nesparita chanji di mediodeskript o prevido, vu volas jus efacar?", "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.", + "confirmations.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Ekirez", "confirmations.logout.message": "Ka tu certe volas ekirar?", "confirmations.mute.confirm": "Silencigez", @@ -214,7 +216,7 @@ "empty_column.blocks": "Vu ne restriktis irga uzanti til nun.", "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": "Vu ne havas irga direta mesaji til nun. Kande vu sendas o ganas, ol montresos hike.", + "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "There are no hidden domains yet.", "empty_column.explore_statuses": "Nulo esas tendenca nun. Videz itere pose!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", "keyboard_shortcuts.description": "Deskripto", - "keyboard_shortcuts.direct": "apertar kolumno di direta mesaji", + "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", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Libromarki", "navigation_bar.community_timeline": "Lokala tempolineo", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direta mesaji", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Deskovrez", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Modifikar profilo", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spamo", "report_notification.categories.violation": "Regulnesequo", "report_notification.open": "Apertez raporto", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Serchez", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Search or paste URL", - "search_popout.search_format": "Avancata trovformato", - "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": "hashtago", - "search_popout.tips.status": "status", - "search_popout.tips.text": "Simpla textoretrovenuri quo parigas trovnomi, uzantonomi e hashtagi", - "search_popout.tips.user": "uzanto", - "search_results.accounts": "Personi", + "search_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "Omna", "search_results.hashtags": "Hashtagi", "search_results.nothing_found": "Ne povas ganar irgo per ca trovvorti", @@ -555,7 +559,8 @@ "status.copy": "Copy link to status", "status.delete": "Efacar", "status.detailed_status": "Detala konversvido", - "status.direct": "Direta mesajigez @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Modifikez", "status.edited": "Modifikesis ye {date}", "status.edited_x_times": "Modifikesis {count, plural, one {{count} foyo} other {{count} foyi}}", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 0d5b08b683..b9d6504734 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -20,7 +20,7 @@ "account.blocked": "Útilokaður", "account.browse_more_on_origin_server": "Skoða nánari upplýsingar á notandasniðinu", "account.cancel_follow_request": "Taka fylgjendabeiðni til baka", - "account.direct": "Bein skilaboð til @{name}", + "account.direct": "Minnast einslega á @{name}", "account.disable_notifications": "Hætta að láta mig vita þegar @{name} sendir inn", "account.domain_blocked": "Lén útilokað", "account.edit_profile": "Breyta notandasniði", @@ -102,7 +102,7 @@ "column.blocks": "Útilokaðir notendur", "column.bookmarks": "Bókamerki", "column.community": "Staðvær tímalína", - "column.direct": "Bein skilaboð", + "column.direct": "Minnst einslega á", "column.directory": "Skoða notendasnið", "column.domain_blocks": "Útilokuð lén", "column.favourites": "Eftirlæti", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Þú ert með óvistaðar breytingar á lýsingu myndefnis eða forskoðunar, henda þeim samt?", "confirmations.domain_block.confirm": "Útiloka allt lénið", "confirmations.domain_block.message": "Ertu alveg algjörlega viss um að þú viljir loka á allt {domain}? Í flestum tilfellum er vænlegra að nota færri en markvissari útilokanir eða að þagga niður tiltekna aðila. Þú munt ekki sjá efni frá þessu léni í neinum opinberum tímalínum eða í tilkynningunum þínum. Fylgjendur þínir frá þessu léni verða fjarlægðir.", + "confirmations.edit.confirm": "Breyta", + "confirmations.edit.message": "Ef þú breytir núna verður skrifað yfir skilaboðin sem þú ert að semja núna. Ertu viss um að þú viljir halda áfram?", "confirmations.logout.confirm": "Skrá út", "confirmations.logout.message": "Ertu viss um að þú viljir skrá þig út?", "confirmations.mute.confirm": "Þagga", @@ -214,7 +216,7 @@ "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.direct": "Þú ert ekki ennþá með neitt þar sem minnst er einslega á einhvern. Þegar þú sendir eða tekur við slíku, mun það birtast hér.", "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.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Setja virkni í dálk", "keyboard_shortcuts.compose": "Setja virkni á textainnsetningarreit", "keyboard_shortcuts.description": "Lýsing", - "keyboard_shortcuts.direct": "Opna dálk með beinum skilaboðum", + "keyboard_shortcuts.direct": "til að opna dálk þar sem minnst er einslega á e-n", "keyboard_shortcuts.down": "Fara neðar í listanum", "keyboard_shortcuts.enter": "Opna færslu", "keyboard_shortcuts.favourite": "Eftirlætisfærsla", @@ -374,7 +376,7 @@ "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.direct": "Minnst einslega á", "navigation_bar.discover": "Uppgötva", "navigation_bar.domain_blocks": "Útilokuð lén", "navigation_bar.edit_profile": "Breyta notandasniði", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Ruslpóstur", "report_notification.categories.violation": "Brot á reglum", "report_notification.open": "Opin kæra", + "search.no_recent_searches": "Engar nýlegar leitir", "search.placeholder": "Leita", + "search.quick_action.account_search": "Notandasnið sem samsvara {x}", + "search.quick_action.go_to_account": "Fara á notandasnið {x}", + "search.quick_action.go_to_hashtag": "Fara á myllumerkið {x}", + "search.quick_action.open_url": "Opna slóð í Mastodon", + "search.quick_action.status_search": "Færslur sem samsvara {x}", "search.search_or_paste": "Leita eða líma slóð", - "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.", - "search_popout.tips.hashtag": "myllumerki", - "search_popout.tips.status": "færsla", - "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_popout.quick_actions": "Flýtiaðgerðir", + "search_popout.recent": "Nýlegar leitir", + "search_results.accounts": "Notendasnið", "search_results.all": "Allt", "search_results.hashtags": "Myllumerki", "search_results.nothing_found": "Gat ekki fundið neitt sem samsvarar þessum leitarorðum", @@ -555,7 +559,8 @@ "status.copy": "Afrita tengil í færslu", "status.delete": "Eyða", "status.detailed_status": "Nákvæm spjallþráðasýn", - "status.direct": "Bein skilaboð @{name}", + "status.direct": "Minnast einslega á @{name}", + "status.direct_indicator": "Minnast einslega á", "status.edit": "Breyta", "status.edited": "Breytt {date}", "status.edited_x_times": "Breytt {count, plural, one {{count} sinni} other {{count} sinnum}}", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 7914b54ab1..ab1cc02afc 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -20,7 +20,7 @@ "account.blocked": "Bloccato", "account.browse_more_on_origin_server": "Sfoglia di più sul profilo originale", "account.cancel_follow_request": "Annulla la richiesta di seguire", - "account.direct": "Messaggio diretto a @{name}", + "account.direct": "Menziona privatamente @{name}", "account.disable_notifications": "Smetti di avvisarmi quando @{name} pubblica un post", "account.domain_blocked": "Dominio bloccato", "account.edit_profile": "Modifica profilo", @@ -102,7 +102,7 @@ "column.blocks": "Utenti bloccati", "column.bookmarks": "Segnalibri", "column.community": "Cronologia locale", - "column.direct": "Messaggi diretti", + "column.direct": "Menzioni private", "column.directory": "Sfoglia profili", "column.domain_blocks": "Domini bloccati", "column.favourites": "Preferiti", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Hai delle modifiche non salvate alla descrizione o anteprima del media, scartarle comunque?", "confirmations.domain_block.confirm": "Blocca l'intero dominio", "confirmations.domain_block.message": "Sei davvero sicuro di voler bloccare l'intero {domain}? In gran parte dei casi, è sufficiente e preferibile bloccare o silenziare alcuni profili. Non visualizzerai i contenuti da quel dominio in alcuna cronologia pubblica o tra le tue notifiche. I tuoi seguaci da quel dominio saranno rimossi.", + "confirmations.edit.confirm": "Modifica", + "confirmations.edit.message": "Modificare ora sovrascriverà il messaggio che stai correntemente componendo. Sei sicuro di voler procedere?", "confirmations.logout.confirm": "Disconnettiti", "confirmations.logout.message": "Sei sicuro di volerti disconnettere?", "confirmations.mute.confirm": "Silenzia", @@ -214,7 +216,7 @@ "empty_column.blocks": "Non hai ancora bloccato alcun utente.", "empty_column.bookmarked_statuses": "Non hai ancora salvato nei segnalibri alcun post. Quando lo farai, apparirà qui.", "empty_column.community": "La cronologia locale è vuota. Scrivi qualcosa pubblicamente per dare inizio alla festa!", - "empty_column.direct": "Non hai ancora alcun messaggio diretto. Quando ne invierai o riceverai uno, apparirà qui.", + "empty_column.direct": "Non hai ancora alcuna menzione privata. Quando ne invierai o riceverai una, apparirà qui.", "empty_column.domain_blocks": "Ancora nessun dominio bloccato.", "empty_column.explore_statuses": "Nulla è in tendenza al momento. Ricontrolla più tardi!", "empty_column.favourited_statuses": "Non hai ancora alcun post preferito. Quando ne salverai uno tra i preferiti, apparirà qui.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Focalizza alla colonna", "keyboard_shortcuts.compose": "Focalizza l'area di composizione testuale", "keyboard_shortcuts.description": "Descrizione", - "keyboard_shortcuts.direct": "per aprire la colonna dei messaggi diretti", + "keyboard_shortcuts.direct": "per aprire la colonna menzioni private", "keyboard_shortcuts.down": "Scorri in basso nell'elenco", "keyboard_shortcuts.enter": "Apre il post", "keyboard_shortcuts.favourite": "Salva il post tra i preferiti", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Segnalibri", "navigation_bar.community_timeline": "Cronologia locale", "navigation_bar.compose": "Componi nuovo toot", - "navigation_bar.direct": "Messaggi diretti", + "navigation_bar.direct": "Menzioni private", "navigation_bar.discover": "Scopri", "navigation_bar.domain_blocks": "Domini bloccati", "navigation_bar.edit_profile": "Modifica il profilo", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Violazione delle regole", "report_notification.open": "Apri segnalazione", + "search.no_recent_searches": "Nessuna ricerca recente", "search.placeholder": "Cerca", + "search.quick_action.account_search": "Profili corrispondenti a {x}", + "search.quick_action.go_to_account": "Vai al profilo {x}", + "search.quick_action.go_to_hashtag": "Vai all'hashtag {x}", + "search.quick_action.open_url": "Apri URL in Mastodon", + "search.quick_action.status_search": "Post corrispondenti a {x}", "search.search_or_paste": "Cerca o incolla URL", - "search_popout.search_format": "Formato di ricerca avanzato", - "search_popout.tips.full_text": "Restituisce in testo semplice i post che hai scritto, salvato tra i preferiti, rebloggato o in cui sei stato menzionato, nonché nomi utenti, nomi visualizzati e hashtag corrispondenti.", - "search_popout.tips.hashtag": "hashtag", - "search_popout.tips.status": "post", - "search_popout.tips.text": "Restituisce in testo semplice i nomi utente, i nomi visualizzati e gli hashtag corrispondenti", - "search_popout.tips.user": "utente", - "search_results.accounts": "Persone", + "search_popout.quick_actions": "Azioni rapide", + "search_popout.recent": "Ricerche recenti", + "search_results.accounts": "Profili", "search_results.all": "Tutto", "search_results.hashtags": "Hashtag", "search_results.nothing_found": "Impossibile trovare qualcosa per questi termini di ricerca", @@ -555,7 +559,8 @@ "status.copy": "Copia link al post", "status.delete": "Elimina", "status.detailed_status": "Vista conversazione dettagliata", - "status.direct": "Messaggio diretto a @{name}", + "status.direct": "Menziona privatamente @{name}", + "status.direct_indicator": "Menzione privata", "status.edit": "Modifica", "status.edited": "Modificato il {date}", "status.edited_x_times": "Modificato {count, plural, one {{count} volta} other {{count} volte}}", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index e5c752f32f..803736eaa9 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -20,7 +20,7 @@ "account.blocked": "ブロック済み", "account.browse_more_on_origin_server": "リモートで表示", "account.cancel_follow_request": "フォローリクエストの取り消し", - "account.direct": "@{name}さんにダイレクトメッセージ", + "account.direct": "@{name}さんに非公開でメンション", "account.disable_notifications": "@{name}さんの投稿時の通知を停止", "account.domain_blocked": "ドメインブロック中", "account.edit_profile": "プロフィール編集", @@ -102,7 +102,7 @@ "column.blocks": "ブロックしたユーザー", "column.bookmarks": "ブックマーク", "column.community": "ローカルタイムライン", - "column.direct": "ダイレクトメッセージ", + "column.direct": "非公開の返信", "column.directory": "ディレクトリ", "column.domain_blocks": "ブロックしたドメイン", "column.favourites": "お気に入り", @@ -120,10 +120,6 @@ "column_header.pin": "ピン留めする", "column_header.show_settings": "設定を表示", "column_header.unpin": "ピン留めを外す", - "column.heading": "その他", - "column.subheading": "その他のオプション", - "column_subheading.lists": "リスト", - "column_subheading.navigation": "ナビゲーション", "column_subheading.settings": "設定", "community.column_settings.local_only": "ローカルのみ表示", "community.column_settings.media_only": "メディアのみ表示", @@ -166,6 +162,8 @@ "confirmations.discard_edit_media.message": "メディアの説明またはプレビューに保存されていない変更があります。それでも破棄しますか?", "confirmations.domain_block.confirm": "ドメイン全体をブロック", "confirmations.domain_block.message": "本当に{domain}全体を非表示にしますか? 多くの場合は個別にブロックやミュートするだけで充分であり、また好ましいです。公開タイムラインにそのドメインのコンテンツが表示されなくなり、通知も届かなくなります。そのドメインのフォロワーはアンフォローされます。", + "confirmations.edit.confirm": "編集", + "confirmations.edit.message": "今編集すると現在作成中のメッセージが上書きされます。本当に実行しますか?", "confirmations.logout.confirm": "ログアウト", "confirmations.logout.message": "本当にログアウトしますか?", "confirmations.mute.confirm": "ミュート", @@ -218,7 +216,7 @@ "empty_column.blocks": "まだ誰もブロックしていません。", "empty_column.bookmarked_statuses": "まだ何もブックマーク登録していません。ブックマーク登録するとここに表示されます。", "empty_column.community": "ローカルタイムラインはまだ使われていません。何か書いてみましょう!", - "empty_column.direct": "ダイレクトメッセージはまだありません。ダイレクトメッセージをやりとりすると、ここに表示されます。", + "empty_column.direct": "非公開の返信はまだありません。非公開でやりとりをするとここに表示されます。", "empty_column.domain_blocks": "ブロックしているドメインはありません。", "empty_column.explore_statuses": "まだ何もありません。後で確認してください。", "empty_column.favourited_statuses": "まだ何もお気に入り登録していません。お気に入り登録するとここに表示されます。", @@ -248,7 +246,7 @@ "explore.trending_tags": "ハッシュタグ", "filter_modal.added.context_mismatch_explanation": "このフィルターカテゴリーはあなたがアクセスした投稿のコンテキストには適用されません。この投稿のコンテキストでもフィルターを適用するにはフィルターを編集する必要があります。", "filter_modal.added.context_mismatch_title": "コンテキストが一致しません!", - "filter_modal.added.expired_explanation": "このフィルターカテゴリは有効期限が切れています。適用するには有効期限を更新してください。", + "filter_modal.added.expired_explanation": "このフィルターカテゴリーは有効期限が切れています。適用するには有効期限を更新してください。", "filter_modal.added.expired_title": "フィルターの有効期限が切れています!", "filter_modal.added.review_and_configure": "このフィルターカテゴリーを確認して設定するには、{settings_link}に移動します。", "filter_modal.added.review_and_configure_title": "フィルター設定", @@ -316,7 +314,7 @@ "keyboard_shortcuts.column": "左からn番目のカラムの最新に移動", "keyboard_shortcuts.compose": "投稿の入力欄に移動", "keyboard_shortcuts.description": "説明", - "keyboard_shortcuts.direct": "ダイレクトメッセージのカラムを開く", + "keyboard_shortcuts.direct": "非公開の返信のカラムを開く", "keyboard_shortcuts.down": "カラム内一つ下に移動", "keyboard_shortcuts.enter": "投稿の詳細を表示", "keyboard_shortcuts.favourite": "お気に入り", @@ -378,7 +376,7 @@ "navigation_bar.bookmarks": "ブックマーク", "navigation_bar.community_timeline": "ローカルタイムライン", "navigation_bar.compose": "投稿の新規作成", - "navigation_bar.direct": "ダイレクトメッセージ", + "navigation_bar.direct": "非公開の返信", "navigation_bar.discover": "見つける", "navigation_bar.domain_blocks": "ブロックしたドメイン", "navigation_bar.edit_profile": "プロフィールを編集", @@ -524,15 +522,17 @@ "report_notification.categories.spam": "スパム", "report_notification.categories.violation": "ルール違反", "report_notification.open": "通報を開く", + "search.no_recent_searches": "検索履歴はありません", "search.placeholder": "検索", + "search.quick_action.account_search": "{x} に該当するプロフィール", + "search.quick_action.go_to_account": "{x} のプロフィールを見る", + "search.quick_action.go_to_hashtag": "{x} に該当するハッシュタグ", + "search.quick_action.open_url": "MastodonでURLを開く", + "search.quick_action.status_search": "{x} に該当する投稿", "search.search_or_paste": "検索またはURLを入力", - "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_popout.quick_actions": "クイック操作", + "search_popout.recent": "最近の検索", + "search_results.accounts": "ユーザー", "search_results.all": "すべて", "search_results.hashtags": "ハッシュタグ", "search_results.nothing_found": "この検索条件では何も見つかりませんでした", @@ -559,7 +559,8 @@ "status.copy": "投稿へのリンクをコピー", "status.delete": "削除", "status.detailed_status": "詳細な会話ビュー", - "status.direct": "@{name}さんにダイレクトメッセージ", + "status.direct": "@{name}さんに非公開で投稿", + "status.direct_indicator": "非公開の返信", "status.edit": "編集", "status.edited": "{date}に編集", "status.edited_x_times": "{count}回編集", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index 2158a8e0f3..35e808ac16 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -20,7 +20,7 @@ "account.blocked": "დაიბლოკა", "account.browse_more_on_origin_server": "Browse more on the original profile", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "პირდაპირი წერილი @{name}-ს", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "დომენი დამალულია", "account.edit_profile": "პროფილის ცვლილება", @@ -102,7 +102,7 @@ "column.blocks": "დაბლოკილი მომხმარებლები", "column.bookmarks": "Bookmarks", "column.community": "ლოკალური თაიმლაინი", - "column.direct": "Direct messages", + "column.direct": "Private mentions", "column.directory": "Browse profiles", "column.domain_blocks": "დამალული დომენები", "column.favourites": "ფავორიტები", @@ -162,6 +162,8 @@ "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.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Log out", "confirmations.logout.message": "Are you sure you want to log out?", "confirmations.mute.confirm": "გაჩუმება", @@ -214,7 +216,7 @@ "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": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, 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.", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "ლოკალური თაიმლაინი", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "აღმოაჩინე", "navigation_bar.domain_blocks": "დამალული დომენები", "navigation_bar.edit_profile": "შეცვალე პროფილი", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "No recent searches", "search.placeholder": "ძებნა", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Search or paste URL", - "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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "All", "search_results.hashtags": "ჰეშტეგები", "search_results.nothing_found": "Could not find anything for these search terms", @@ -555,7 +559,8 @@ "status.copy": "Copy link to status", "status.delete": "წაშლა", "status.detailed_status": "Detailed conversation view", - "status.direct": "პირდაპირი წერილი @{name}-ს", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Edit", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index c3eb3d37c5..4460e4b65a 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -20,7 +20,7 @@ "account.blocked": "Yettusewḥel", "account.browse_more_on_origin_server": "Snirem ugar deg umeɣnu aneẓli", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "Izen usrid i @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Ḥbes ur iyi-d-ttazen ara ilɣa mi ara d-isuffeɣ @{name}", "account.domain_blocked": "Taɣult yeffren", "account.edit_profile": "Ẓreg amaɣnu", @@ -102,7 +102,7 @@ "column.blocks": "Imiḍanen yettusḥebsen", "column.bookmarks": "Ticraḍ", "column.community": "Tasuddemt tadigant", - "column.direct": "Iznan usriden", + "column.direct": "Private mentions", "column.directory": "Inig deg imaɣnuten", "column.domain_blocks": "Taɣulin yeffren", "column.favourites": "Ismenyifen", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "confirmations.domain_block.confirm": "Ffer taɣult meṛṛa", "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.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Ffeɣ", "confirmations.logout.message": "D tidet tebɣiḍ ad teffɣeḍ?", "confirmations.mute.confirm": "Sgugem", @@ -214,7 +216,7 @@ "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": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, 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.", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Ticraḍ", "navigation_bar.community_timeline": "Tasuddemt tadigant", "navigation_bar.compose": "Aru tajewwiqt tamaynut", - "navigation_bar.direct": "Iznan usridden", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Ẓer", "navigation_bar.domain_blocks": "Tiɣula yeffren", "navigation_bar.edit_profile": "Ẓreg amaɣnu", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Aspam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Ldi aneqqis", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Nadi", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Nadi neɣ senṭeḍ URL", - "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.", - "search_popout.tips.hashtag": "ahacṭag", - "search_popout.tips.status": "addad", - "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", - "search_popout.tips.user": "amseqdac", - "search_results.accounts": "Medden", + "search_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "Akk", "search_results.hashtags": "Ihacṭagen", "search_results.nothing_found": "Could not find anything for these search terms", @@ -555,7 +559,8 @@ "status.copy": "Nɣel assaɣ ɣer tasuffeɣt", "status.delete": "Kkes", "status.detailed_status": "Detailed conversation view", - "status.direct": "Izen usrid i @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Ẓreg", "status.edited": "Tettwaẓreg deg {date}", "status.edited_x_times": "Tettwaẓreg {count, plural, one {{count} n tikkelt} other {{count} n tikkal}}", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index 297885a19e..a2aea14595 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -20,7 +20,7 @@ "account.blocked": "Бұғатталған", "account.browse_more_on_origin_server": "Бастапқы профильден шолу", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "@{name} жекесіне жазу", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "@{name} постары туралы ескертпеу", "account.domain_blocked": "Домен бұғатталған", "account.edit_profile": "Профильді өңдеу", @@ -102,7 +102,7 @@ "column.blocks": "Бұғатталғандар", "column.bookmarks": "Бетбелгілер", "column.community": "Жергілікті желі", - "column.direct": "Direct messages", + "column.direct": "Private mentions", "column.directory": "Профильдерді аралау", "column.domain_blocks": "Жасырылған домендер", "column.favourites": "Таңдаулылар", @@ -162,6 +162,8 @@ "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.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Шығу", "confirmations.logout.message": "Шығатыныңызға сенімдісіз бе?", "confirmations.mute.confirm": "Үнсіз қылу", @@ -214,7 +216,7 @@ "empty_column.blocks": "Ешкімді бұғаттамағансыз.", "empty_column.bookmarked_statuses": "Ешқандай жазба Бетбелгілер тізіміне қосылмапты. Қосылғаннан кейін осында жинала бастайды.", "empty_column.community": "Жергілікті желі бос. Сіз бастап жазыңыз!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, 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": "Ешқандай жазба 'Таңдаулылар' тізіміне қосылмапты. Қосылғаннан кейін осында жинала бастайды.", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Бетбелгілер", "navigation_bar.community_timeline": "Жергілікті желі", "navigation_bar.compose": "Жаңа жазба бастау", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "шарлау", "navigation_bar.domain_blocks": "Жабық домендер", "navigation_bar.edit_profile": "Профиль түзету", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Іздеу", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Search or paste URL", - "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.", - "search_popout.tips.hashtag": "хэштег", - "search_popout.tips.status": "статус", - "search_popout.tips.text": "Simple text returns matching display names, usernames аnd hashtags", - "search_popout.tips.user": "қолданушы", - "search_results.accounts": "Адамдар", + "search_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "All", "search_results.hashtags": "Хэштегтер", "search_results.nothing_found": "Could not find anything for these search terms", @@ -555,7 +559,8 @@ "status.copy": "Жазба сілтемесін көшір", "status.delete": "Өшіру", "status.detailed_status": "Толық пікірталас көрінісі", - "status.direct": "Хат жіберу @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Edit", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index 4c7ed9a84f..04edb85220 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -20,7 +20,7 @@ "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Browse more on the original profile", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "Direct message @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain hidden", "account.edit_profile": "Edit profile", @@ -102,7 +102,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.direct": "Private mentions", "column.directory": "Browse profiles", "column.domain_blocks": "Hidden domains", "column.favourites": "Favourites", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "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.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Log out", "confirmations.logout.message": "Are you sure you want to log out?", "confirmations.mute.confirm": "Mute", @@ -214,7 +216,7 @@ "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.direct": "You don't have any private mentions yet. When you send or receive one, 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.", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Search", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Search or paste URL", - "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.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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "All", "search_results.hashtags": "Hashtags", "search_results.nothing_found": "Could not find anything for these search terms", @@ -555,7 +559,8 @@ "status.copy": "Copy link to status", "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", - "status.direct": "Direct message @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Edit", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index e5a73258d5..7d7659569e 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -20,7 +20,7 @@ "account.blocked": "차단됨", "account.browse_more_on_origin_server": "원본 프로필에서 더 탐색하기", "account.cancel_follow_request": "팔로우 요청 취소", - "account.direct": "@{name}에게 다이렉트 메시지", + "account.direct": "@{name} 님에게 개인적으로 멘션", "account.disable_notifications": "@{name} 의 게시물 알림 끄기", "account.domain_blocked": "도메인 차단됨", "account.edit_profile": "프로필 편집", @@ -71,7 +71,7 @@ "admin.dashboard.monthly_retention": "가입 후 월별 사용자 유지율", "admin.dashboard.retention.average": "평균", "admin.dashboard.retention.cohort": "가입한 달", - "admin.dashboard.retention.cohort_size": "새로운 사용자", + "admin.dashboard.retention.cohort_size": "새 사용자", "alert.rate_limited.message": "{retry_time, time, medium}에 다시 시도해 주세요.", "alert.rate_limited.title": "빈도 제한됨", "alert.unexpected.message": "예상하지 못한 에러가 발생했습니다.", @@ -102,7 +102,7 @@ "column.blocks": "차단한 사용자", "column.bookmarks": "북마크", "column.community": "로컬 타임라인", - "column.direct": "다이렉트 메시지", + "column.direct": "개인적인 멘션", "column.directory": "프로필 둘러보기", "column.domain_blocks": "차단한 도메인", "column.favourites": "좋아요", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "미디어 설명이나 미리보기에 대한 저장하지 않은 변경사항이 있습니다. 버리시겠습니까?", "confirmations.domain_block.confirm": "도메인 전체를 차단", "confirmations.domain_block.message": "정말로 {domain} 전체를 차단하시겠습니까? 대부분의 경우 개별 차단이나 뮤트로 충분합니다. 모든 공개 타임라인과 알림에서 해당 도메인에서 작성된 콘텐츠를 보지 못합니다. 해당 도메인에 속한 팔로워와의 관계가 사라집니다.", + "confirmations.edit.confirm": "수정", + "confirmations.edit.message": "지금 수정하면 작성 중인 메시지를 덮어쓰게 됩니다. 정말 진행합니까?", "confirmations.logout.confirm": "로그아웃", "confirmations.logout.message": "정말로 로그아웃 하시겠습니까?", "confirmations.mute.confirm": "뮤트", @@ -214,7 +216,7 @@ "empty_column.blocks": "아직 아무도 차단하지 않았습니다.", "empty_column.bookmarked_statuses": "아직 북마크에 저장한 게시물이 없습니다. 게시물을 북마크 지정하면 여기에 나타납니다.", "empty_column.community": "로컬 타임라인에 아무것도 없습니다. 아무거나 적어 보세요!", - "empty_column.direct": "아직 다이렉트 메시지가 없습니다. 다이렉트 메시지를 보내거나 받은 경우, 여기에 표시 됩니다.", + "empty_column.direct": "개인적인 멘션이 없습니다. 보내거나 받으면 여기에 표시됩니다.", "empty_column.domain_blocks": "아직 차단한 도메인이 없습니다.", "empty_column.explore_statuses": "아직 유행하는 것이 없습니다. 나중에 다시 확인하세요!", "empty_column.favourited_statuses": "아직 마음에 들어한 게시물이 없습니다. 게시물을 좋아요 하면 여기에 나타납니다.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "해당 컬럼에 포커스", "keyboard_shortcuts.compose": "작성창에 포커스", "keyboard_shortcuts.description": "설명", - "keyboard_shortcuts.direct": "다이렉트 메시지 컬럼 열기", + "keyboard_shortcuts.direct": "개인적인 멘션 컬럼 열기", "keyboard_shortcuts.down": "리스트에서 아래로 이동", "keyboard_shortcuts.enter": "게시물 열기", "keyboard_shortcuts.favourite": "관심글 지정", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "북마크", "navigation_bar.community_timeline": "로컬 타임라인", "navigation_bar.compose": "새 게시물 작성", - "navigation_bar.direct": "다이렉트 메시지", + "navigation_bar.direct": "개인적인 멘션", "navigation_bar.discover": "발견하기", "navigation_bar.domain_blocks": "차단한 도메인", "navigation_bar.edit_profile": "프로필 편집", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "스팸", "report_notification.categories.violation": "규칙 위반", "report_notification.open": "신고 열기", + "search.no_recent_searches": "최근 검색 기록이 없습니다", "search.placeholder": "검색", + "search.quick_action.account_search": "{x}에 맞는 프로필", + "search.quick_action.go_to_account": "{x} 프로필로 이동", + "search.quick_action.go_to_hashtag": "{x} 해시태그로 이동", + "search.quick_action.open_url": "마스토돈에서 URL 열기", + "search.quick_action.status_search": "{x}에 맞는 게시물", "search.search_or_paste": "검색하거나 URL 붙여넣기", - "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_popout.quick_actions": "빠른 작업", + "search_popout.recent": "최근 검색", + "search_results.accounts": "프로필", "search_results.all": "전부", "search_results.hashtags": "해시태그", "search_results.nothing_found": "검색어에 대한 결과를 찾을 수 없습니다", @@ -555,7 +559,8 @@ "status.copy": "게시물 링크 복사", "status.delete": "삭제", "status.detailed_status": "대화 자세히 보기", - "status.direct": "@{name}에게 다이렉트 메시지", + "status.direct": "@{name} 님에게 개인적으로 멘션", + "status.direct_indicator": "개인적인 멘션", "status.edit": "수정", "status.edited": "{date}에 편집됨", "status.edited_x_times": "{count}번 수정됨", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index ad53c35771..12124a6129 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -20,7 +20,7 @@ "account.blocked": "Astengkirî", "account.browse_more_on_origin_server": "Li pelên resen bêtir bigere", "account.cancel_follow_request": "Daxwaza şopandinê vekişîne", - "account.direct": "Peyamekê bişîne @{name}", + "account.direct": "Privately mention @{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", @@ -102,7 +102,7 @@ "column.blocks": "Bikarhênerên astengkirî", "column.bookmarks": "Şûnpel", "column.community": "Demnameya herêmî", - "column.direct": "Peyamên rasterast", + "column.direct": "Private mentions", "column.directory": "Li profîlan bigere", "column.domain_blocks": "Navperên astengkirî", "column.favourites": "Bijarte", @@ -162,6 +162,8 @@ "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": "Tevahiya navperê asteng bike", "confirmations.domain_block.message": "Tu pê bawerî ku tu dixwazî tevahiya {domain} asteng bikî? Di gelek rewşan de astengkirin an jî bêdengkirin têrê dike û tê hilbijartin. Tu nikarî naveroka vê navperê di demnameyê an jî agahdariyên xwe de bibînî. Şopînerên te yê di vê navperê wê werin jêbirin.", + "confirmations.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Derkeve", "confirmations.logout.message": "Ma tu dixwazî ku derkevî?", "confirmations.mute.confirm": "Bêdeng bike", @@ -214,7 +216,7 @@ "empty_column.blocks": "Te tu bikarhêner asteng nekiriye.", "empty_column.bookmarked_statuses": "Hîn tu peyamên te yên şûnpelkirî tune ne. Dema ku tu yekî şûnpel bikî, ew ê li vir xuya bibe.", "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în peyamên te yên rasterast tune ne. Dema ku tu yekî bişînî an jî wergirî, ew ê li vir xuya bibe.", + "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Hîn tu navperên ku hatine astengkirin 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.", @@ -312,7 +314,7 @@ "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 bo vekirina stûnê peyamên rasterast", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "Di lîsteyê de dakêşe jêr", "keyboard_shortcuts.enter": "Şandiyê veke", "keyboard_shortcuts.favourite": "Şandiya bijarte", @@ -374,7 +376,7 @@ "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.direct": "Private mentions", "navigation_bar.discover": "Vekolê", "navigation_bar.domain_blocks": "Navperên astengkirî", "navigation_bar.edit_profile": "Profîlê serrast bike", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Nexwestî (Spam)", "report_notification.categories.violation": "Binpêkirina rêzîkê", "report_notification.open": "Ragihandinê veke", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Bigere", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Bigere yan jî girêdanê pêve bike", - "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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "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", @@ -555,7 +559,8 @@ "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.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "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", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index db4f0022e4..b20f93e541 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -1,5 +1,5 @@ { - "about.blocks": "Moderated servers", + "about.blocks": "Leurennow koswys", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.no_reason_available": "Reason not available", @@ -20,7 +20,7 @@ "account.blocked": "Lettys", "account.browse_more_on_origin_server": "Peuri moy y'n profil derowel", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "Messach didro dhe @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Hedhi ow gwarnya pan wra @{name} postya", "account.domain_blocked": "Gorfarth lettys", "account.edit_profile": "Golegi profil", @@ -102,7 +102,7 @@ "column.blocks": "Devnydhyoryon lettys", "column.bookmarks": "Folennosow", "column.community": "Amserlin leel", - "column.direct": "Direct messages", + "column.direct": "Private mentions", "column.directory": "Peuri profilys", "column.domain_blocks": "Gorfarthow lettys", "column.favourites": "Re drudh", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "confirmations.domain_block.confirm": "Lettya gorfarth dhien", "confirmations.domain_block.message": "Owgh hwi wir, wir sur a vynnes lettya'n {domain} dhien? Y'n brassa rann a gasow, boghes lettyansow medrys po tawheansow yw lowr ha gwell. Ny wrewgh hwi gweles dalgh a'n worfarth na yn py amserlin boblek pynag po yn agas gwarnyansow. Agas holyoryon an worfarth na a vydh diles.", + "confirmations.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Digelmi", "confirmations.logout.message": "Owgh hwi sur a vynnes digelmi?", "confirmations.mute.confirm": "Tawhe", @@ -214,7 +216,7 @@ "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": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, 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.", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Folennosow", "navigation_bar.community_timeline": "Amserlin leel", "navigation_bar.compose": "Komposya post nowydh", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Diskudha", "navigation_bar.domain_blocks": "Gorfarthow lettys", "navigation_bar.edit_profile": "Golegi profil", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Hwilas", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Search or paste URL", - "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.", - "search_popout.tips.hashtag": "bòlnos", - "search_popout.tips.status": "post", - "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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "All", "search_results.hashtags": "Bòlnosow", "search_results.nothing_found": "Could not find anything for these search terms", @@ -555,7 +559,8 @@ "status.copy": "Dasskrifa kolm dhe'n post", "status.delete": "Dilea", "status.detailed_status": "Gwel kesklapp a-vanyl", - "status.direct": "Messach didro dhe @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Edit", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/mastodon/locales/la.json b/app/javascript/mastodon/locales/la.json index 2634a6f066..00de10f737 100644 --- a/app/javascript/mastodon/locales/la.json +++ b/app/javascript/mastodon/locales/la.json @@ -20,7 +20,7 @@ "account.blocked": "Impeditum est", "account.browse_more_on_origin_server": "Browse more on the original profile", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "Direct message @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Dominium impeditum", "account.edit_profile": "Recolere notionem", @@ -102,7 +102,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Signa paginales", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.direct": "Private mentions", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Dilecti", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "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.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Log out", "confirmations.logout.message": "Are you sure you want to log out?", "confirmations.mute.confirm": "Confutare", @@ -214,7 +216,7 @@ "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.direct": "You don't have any private mentions yet. When you send or receive one, 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.", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new post", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Quaerere", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Search or paste URL", - "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.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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "All", "search_results.hashtags": "Hashtags", "search_results.nothing_found": "Could not find anything for these search terms", @@ -555,7 +559,8 @@ "status.copy": "Copy link to status", "status.delete": "Oblitterare", "status.detailed_status": "Detailed conversation view", - "status.direct": "Direct message @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Recolere", "status.edited": "Recultum {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/locales/locale-data/README.md b/app/javascript/mastodon/locales/locale-data/README.md similarity index 100% rename from app/javascript/locales/locale-data/README.md rename to app/javascript/mastodon/locales/locale-data/README.md diff --git a/app/javascript/locales/locale-data/oc.js b/app/javascript/mastodon/locales/locale-data/oc.js similarity index 100% rename from app/javascript/locales/locale-data/oc.js rename to app/javascript/mastodon/locales/locale-data/oc.js diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index a2dac91ca1..d1da039df5 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -20,7 +20,7 @@ "account.blocked": "Užblokuota", "account.browse_more_on_origin_server": "Browse more on the original profile", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "Direct message @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain hidden", "account.edit_profile": "Edit profile", @@ -102,7 +102,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.direct": "Private mentions", "column.directory": "Browse profiles", "column.domain_blocks": "Hidden domains", "column.favourites": "Mėgstamiausi", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "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.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Log out", "confirmations.logout.message": "Are you sure you want to log out?", "confirmations.mute.confirm": "Mute", @@ -214,7 +216,7 @@ "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.direct": "You don't have any private mentions yet. When you send or receive one, 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.", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Search", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Search or paste URL", - "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.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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "All", "search_results.hashtags": "Hashtags", "search_results.nothing_found": "Could not find anything for these search terms", @@ -555,7 +559,8 @@ "status.copy": "Copy link to status", "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", - "status.direct": "Direct message @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Edit", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index ba14ec5c0c..4f1032ae26 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -12,7 +12,7 @@ "about.powered_by": "Decentralizētu sociālo tīklu nodrošina {mastodon}", "about.rules": "Servera noteikumi", "account.account_note_header": "Piezīme", - "account.add_or_remove_from_list": "Pievienot vai noņemt no saraksta", + "account.add_or_remove_from_list": "Pievienot vai Noņemt no sarakstiem", "account.badges.bot": "Robots", "account.badges.group": "Grupa", "account.block": "Bloķēt @{name}", @@ -20,7 +20,7 @@ "account.blocked": "Bloķēts", "account.browse_more_on_origin_server": "Pārlūkot vairāk sākotnējā profilā", "account.cancel_follow_request": "Atsaukt sekošanas pieprasījumu", - "account.direct": "Privāta ziņa @{name}", + "account.direct": "Pieminēt @{name} privāti", "account.disable_notifications": "Pārtraukt man paziņot, kad @{name} publicē ierakstu", "account.domain_blocked": "Domēns ir bloķēts", "account.edit_profile": "Rediģēt profilu", @@ -102,10 +102,10 @@ "column.blocks": "Bloķētie lietotāji", "column.bookmarks": "Grāmatzīmes", "column.community": "Vietējā laika līnija", - "column.direct": "Privātie ziņojumi", + "column.direct": "Privāti pieminēti", "column.directory": "Pārlūkot profilus", "column.domain_blocks": "Bloķētie domēni", - "column.favourites": "Izlase", + "column.favourites": "Izlases", "column.follow_requests": "Sekošanas pieprasījumi", "column.home": "Sākums", "column.lists": "Saraksti", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Tev ir nesaglabātas izmaiņas multivides aprakstā vai priekšskatījumā. Vēlies tās atmest?", "confirmations.domain_block.confirm": "Bloķēt visu domēnu", "confirmations.domain_block.message": "Vai tu tiešām vēlies bloķēt visu domēnu {domain}? Parasti pietiek, ja nobloķē vai apklusini kādu. Tu neredzēsi saturu vai paziņojumus no šī domēna nevienā laika līnijā. Tavi sekotāji no šī domēna tiks noņemti.", + "confirmations.edit.confirm": "Rediģēt", + "confirmations.edit.message": "Rediģējot, tiks pārrakstīts ziņojums, kuru tu šobrīd raksti. Vai tiešām vēlies turpināt?", "confirmations.logout.confirm": "Iziet", "confirmations.logout.message": "Vai tiešām vēlies izrakstīties?", "confirmations.mute.confirm": "Apklusināt", @@ -214,11 +216,11 @@ "empty_column.blocks": "Pašreiz tu neesi nevienu bloķējis.", "empty_column.bookmarked_statuses": "Pašreiz tev nav neviena grāmatzīmēm pievienota ieraksta. Kad tādu pievienosi, tas parādīsies šeit.", "empty_column.community": "Vietējā laika līnija ir tukša. Uzraksti kaut ko publiski, lai viss notiktu!", - "empty_column.direct": "Pašreiz tev nav privātu ziņu. Tiklīdz tādu nosūtīsi vai saņemsi, tās parādīsies šeit.", + "empty_column.direct": "Jums vēl nav nevienas privātas pieminēšanas. Nosūtot vai saņemot to, tas tiks parādīts šeit.", "empty_column.domain_blocks": "Vēl nav neviena bloķēta domēna.", "empty_column.explore_statuses": "Pašlaik nekā aktuāla nav. Pārbaudi vēlāk!", - "empty_column.favourited_statuses": "Pašreiz 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 kāds to izdarīs, tas parādīsies šeit.", + "empty_column.favourited_statuses": "Tev vēl nav nevienas iecienītākās ziņas. Kad pievienosi kādu izlasei, tas tiks parādīts šeit.", + "empty_column.favourites": "Šo ziņu neviens vēl nav pievienojis izlasei. Kad kāds to izdarīs, tas parādīsies šeit.", "empty_column.follow_recommendations": "Neizdevās ģenerēt tev pielāgotus 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ākos tēmturus.", "empty_column.follow_requests": "Šobrīd tev nav sekošanas pieprasījumu. Kad kāds pieteiksies tev sekot, pieprasījums parādīsies šeit.", "empty_column.followed_tags": "Tu vēl neesi sekojis nevienam tēmturim. Kad to izdarīsi, tie tiks parādīti šeit.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Fokusēt kolonnu", "keyboard_shortcuts.compose": "Fokusēt veidojamā teksta lauku", "keyboard_shortcuts.description": "Apraksts", - "keyboard_shortcuts.direct": "lai atvērtu privāto ziņojumu kolonnu", + "keyboard_shortcuts.direct": "lai atvērtu privāto pieminējumu sleju", "keyboard_shortcuts.down": "Pārvietoties lejup sarakstā", "keyboard_shortcuts.enter": "Atvērt ziņu", "keyboard_shortcuts.favourite": "Pievienot izlasei", @@ -324,7 +326,7 @@ "keyboard_shortcuts.legend": "Parādīt šo leģendu", "keyboard_shortcuts.local": "Atvērt vietējo laika līniju", "keyboard_shortcuts.mention": "Pieminēt autoru", - "keyboard_shortcuts.muted": "Atvērt apklusināto lietotāju sarakstu", + "keyboard_shortcuts.muted": "Atvērt noklusināto lietotāju sarakstu", "keyboard_shortcuts.my_profile": "Atvērt savu profilu", "keyboard_shortcuts.notifications": "Atvērt paziņojumu kolonnu", "keyboard_shortcuts.open_media": "Atvērt multividi", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Grāmatzīmes", "navigation_bar.community_timeline": "Vietējā laika līnija", "navigation_bar.compose": "Veidot jaunu ziņu", - "navigation_bar.direct": "Privātie ziņojumi", + "navigation_bar.direct": "Privāti pieminēti", "navigation_bar.discover": "Atklāt", "navigation_bar.domain_blocks": "Bloķētie domēni", "navigation_bar.edit_profile": "Rediģēt profilu", @@ -396,7 +398,7 @@ "not_signed_in_indicator.not_signed_in": "Lai piekļūtu šim resursam, tev ir jāpierakstās.", "notification.admin.report": "{name} sūdzējās par {target}", "notification.admin.sign_up": "{name} pierakstījās", - "notification.favourite": "{name} patika tava ziņa", + "notification.favourite": "{name} pievienoja tavu ziņu izlasei", "notification.follow": "{name} uzsāka tev sekot", "notification.follow_request": "{name} nosūtīja tev sekošanas pieprasījumu", "notification.mention": "{name} pieminēja tevi", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spams", "report_notification.categories.violation": "Noteikumu pārkāpums", "report_notification.open": "Atvērt sūdzību", + "search.no_recent_searches": "Nav nesen veiktu meklējumu", "search.placeholder": "Meklēšana", + "search.quick_action.account_search": "Profili atbilst {x}", + "search.quick_action.go_to_account": "Doties uz profilu {x}", + "search.quick_action.go_to_hashtag": "Doties uz tēmturi {x}", + "search.quick_action.open_url": "Atvērt URL Mastodonā", + "search.quick_action.status_search": "Ziņas atbilst {x}", "search.search_or_paste": "Meklē vai iekopē URL", - "search_popout.search_format": "Paplašināts meklēšanas formāts", - "search_popout.tips.full_text": "Vienkāršs teksts atgriež ierakstus, kurus rakstīji, atzīmēji kā favorītus, pastiprināji vai pieminēji, kā arī atbilstošus lietotājvārdus, parādāmos vārdus un tēmturus.", - "search_popout.tips.hashtag": "tēmturis", - "search_popout.tips.status": "ieraksts", - "search_popout.tips.text": "Vienkāršs teksts atgriež atbilstošus parādāmos vārdus, lietotājvārdus un tēmturus", - "search_popout.tips.user": "lietotājs", - "search_results.accounts": "Cilvēki", + "search_popout.quick_actions": "Ātrās darbības", + "search_popout.recent": "Nesen meklētais", + "search_results.accounts": "Profili", "search_results.all": "Visi", "search_results.hashtags": "Tēmturi", "search_results.nothing_found": "Nevarēja atrast neko šiem meklēšanas vienumiem", @@ -555,7 +559,8 @@ "status.copy": "Kopēt saiti uz ziņu", "status.delete": "Dzēst", "status.detailed_status": "Detalizēts sarunas skats", - "status.direct": "Privāta ziņa @{name}", + "status.direct": "Pieminēt @{name} privāti", + "status.direct_indicator": "Pieminēts privāti", "status.edit": "Rediģēt", "status.edited": "Rediģēts {date}", "status.edited_x_times": "Rediģēts {count, plural, one {{count} reizi} other {{count} reizes}}", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index b9e5cda1e4..c3778501b9 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -20,7 +20,7 @@ "account.blocked": "Блокиран", "account.browse_more_on_origin_server": "Browse more on the original profile", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "Директна порана @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Скриен домен", "account.edit_profile": "Измени профил", @@ -102,7 +102,7 @@ "column.blocks": "Блокирани корисници", "column.bookmarks": "Bookmarks", "column.community": "Локална временска зона", - "column.direct": "Direct messages", + "column.direct": "Private mentions", "column.directory": "Види профили", "column.domain_blocks": "Скриени домеини", "column.favourites": "Омилени", @@ -162,6 +162,8 @@ "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.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Одјави се", "confirmations.logout.message": "Дали сте сигурни дека сакате да се одјавите?", "confirmations.mute.confirm": "Заќути", @@ -214,7 +216,7 @@ "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": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, 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.", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Уреди профил", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Барај", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Search or paste URL", - "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.", - "search_popout.tips.hashtag": "хештег", - "search_popout.tips.status": "состојба", - "search_popout.tips.text": "Прост текст враќа совпаднати имиња, корисници и хештагови", - "search_popout.tips.user": "user", - "search_results.accounts": "People", + "search_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "All", "search_results.hashtags": "Hashtags", "search_results.nothing_found": "Could not find anything for these search terms", @@ -555,7 +559,8 @@ "status.copy": "Copy link to status", "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", - "status.direct": "Direct message @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Edit", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index 3574ede02d..cfea1b34ee 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -20,7 +20,7 @@ "account.blocked": "തടഞ്ഞു", "account.browse_more_on_origin_server": "യഥാർത്ഥ പ്രൊഫൈലിലേക്ക് പോവുക", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "@{name}-ന്(ക്ക്) നേരിട്ട് സന്ദേശം അയക്കുക", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "@{name} പോസ്റ്റുചെയ്യുന്നത് എന്നെ അറിയിക്കുന്നത് നിർത്തുക", "account.domain_blocked": "മേഖല തടഞ്ഞു", "account.edit_profile": "പ്രൊഫൈൽ തിരുത്തുക", @@ -102,7 +102,7 @@ "column.blocks": "തടയപ്പെട്ട ഉപയോക്താക്കൾ", "column.bookmarks": "ബുക്ക്മാർക്കുകൾ", "column.community": "പ്രാദേശികമായ സമയരേഖ", - "column.direct": "നേരിട്ടുള്ള സന്ദേശങ്ങൾ", + "column.direct": "Private mentions", "column.directory": "പ്രൊഫൈലുകൾ മറിച്ചുനോക്കുക", "column.domain_blocks": "മറയ്ക്കപ്പെട്ട മേഖലകൾ", "column.favourites": "പ്രിയപ്പെട്ടവ", @@ -162,6 +162,8 @@ "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.", + "confirmations.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "പുറത്തുകടക്കുക", "confirmations.logout.message": "നിങ്ങൾക്ക് ലോഗ് ഔട്ട് ചെയ്യണമെന്ന് ഉറപ്പാണോ?", "confirmations.mute.confirm": "നിശ്ശബ്ദമാക്കുക", @@ -214,7 +216,7 @@ "empty_column.blocks": "നിങ്ങൾ ഇതുവരെ ഒരു ഉപയോക്താക്കളെയും തടഞ്ഞിട്ടില്ല.", "empty_column.bookmarked_statuses": "നിങ്ങൾക് ഇതുവരെ അടയാളപ്പെടുത്തിയ ടൂട്ടുകൾ ഇല്ല. അടയാളപ്പെടുത്തിയാൽ അത് ഇവിടെ വരും.", "empty_column.community": "പ്രാദേശികമായ സമയരേഖ ശൂന്യമാണ്. എന്തെങ്കിലും പരസ്യമായി എഴുതി തുടക്കം കുറിക്കു!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, 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": "നിങ്ങൾക്ക് ഇത് വരെ ഒരു പ്രിയപ്പെട്ട ടൂട്ടും ഇല്ല. നിങ്ങൾ അങ്ങനെ ഒന്ന് പ്രിയപ്പെടുന്ന പക്ഷം അതിവിടെ കാണപ്പെടുന്നതാണ്.", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "ബുക്ക്മാർക്കുകൾ", "navigation_bar.community_timeline": "പ്രാദേശിക സമയരേഖ", "navigation_bar.compose": "പുതിയ ടൂട്ട് എഴുതുക", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "കണ്ടെത്തുക", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "പ്രൊഫൈൽ തിരുത്തുക", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "No recent searches", "search.placeholder": "തിരയുക", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Search or paste URL", - "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": "ഹാഷ്ടാഗ്", - "search_popout.tips.status": "ടൂട്ട്", - "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", - "search_popout.tips.user": "ഉപയോക്താവ്", - "search_results.accounts": "ആളുകൾ", + "search_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "All", "search_results.hashtags": "ഹാഷ്ടാഗുകൾ", "search_results.nothing_found": "Could not find anything for these search terms", @@ -555,7 +559,8 @@ "status.copy": "ടൂട്ടിലേക്ക് ലിങ്ക് പകർത്തുക", "status.delete": "മായ്ക്കുക", "status.detailed_status": "വിശദമായ സംഭാഷണ കാഴ്‌ച", - "status.direct": "@{name} ന് നേരിട്ട് മെസേജ് അയക്കുക", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Edit", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index 1ba6aa9579..b778c704ec 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -20,7 +20,7 @@ "account.blocked": "ब्लॉक केले आहे", "account.browse_more_on_origin_server": "मूळ प्रोफाइलवर अधिक ब्राउझ करा", "account.cancel_follow_request": "फॉलो विनंती मागे घ्या", - "account.direct": "थेट संदेश @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "जेव्हा @{name} पोस्ट करतात तेव्हा मला सूचित करणे थांबवा", "account.domain_blocked": "Domain hidden", "account.edit_profile": "प्रोफाइल एडिट करा", @@ -54,7 +54,7 @@ "account.posts_with_replies": "Toots and replies", "account.report": "@{name} ची तक्रार करा", "account.requested": "Awaiting approval", - "account.requested_follow": "{name} has requested to follow you", + "account.requested_follow": "{name} ने आपल्याला फॉलो करण्याची रिक्वेस्ट केली आहे", "account.share": "@{name} चे प्रोफाइल शेअर करा", "account.show_reblogs": "{name}चे सर्व बुस्ट्स दाखवा", "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", @@ -102,7 +102,7 @@ "column.blocks": "ब्लॉक केलेले खातेधारक", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.direct": "Private mentions", "column.directory": "Browse profiles", "column.domain_blocks": "गुप्त डोमेन्स", "column.favourites": "आवडते", @@ -162,6 +162,8 @@ "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.", + "confirmations.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Log out", "confirmations.logout.message": "तुमची खात्री आहे की तुम्ही लॉग आउट करू इच्छिता?", "confirmations.mute.confirm": "आवाज बंद करा", @@ -214,7 +216,7 @@ "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.direct": "You don't have any private mentions yet. When you send or receive one, 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.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", "keyboard_shortcuts.description": "वर्णन", - "keyboard_shortcuts.direct": "थेट संदेश स्तंभ उघडण्यासाठी", + "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", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Search", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Search or paste URL", - "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.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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "All", "search_results.hashtags": "Hashtags", "search_results.nothing_found": "Could not find anything for these search terms", @@ -555,7 +559,8 @@ "status.copy": "Copy link to status", "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", - "status.direct": "Direct message @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Edit", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index a003f42f4b..456706ce6c 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -20,7 +20,7 @@ "account.blocked": "Disekat", "account.browse_more_on_origin_server": "Layari selebihnya di profil asal", "account.cancel_follow_request": "Menarik balik permintaan mengikut", - "account.direct": "Mesej terus @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Berhenti maklumkan saya apabila @{name} mengirim hantaran", "account.domain_blocked": "Domain disekat", "account.edit_profile": "Sunting profil", @@ -102,7 +102,7 @@ "column.blocks": "Pengguna yang disekat", "column.bookmarks": "Tanda buku", "column.community": "Garis masa tempatan", - "column.direct": "Mesej terus", + "column.direct": "Private mentions", "column.directory": "Layari profil", "column.domain_blocks": "Domain disekat", "column.favourites": "Kegemaran", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Anda belum menyimpan perubahan pada penerangan atau pratonton media. Anda ingin membuangnya?", "confirmations.domain_block.confirm": "Sekat keseluruhan domain", "confirmations.domain_block.message": "Adakah anda betul-betul, sungguh-sungguh pasti anda ingin menyekat keseluruhan {domain}? Selalunya, beberapa sekatan atau pembisuan tersasar sudah memadai dan lebih diutamakan. Anda tidak akan nampak kandungan daripada domain tersebut di mana-mana garis masa awam mahupun pemberitahuan anda. Pengikut anda daripada domain tersebut juga akan dibuang.", + "confirmations.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Log keluar", "confirmations.logout.message": "Adakah anda pasti anda ingin log keluar?", "confirmations.mute.confirm": "Bisukan", @@ -214,7 +216,7 @@ "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 belum mempunyai mesej terus. Apabila anda menghantar atau menerima mesej, mesej-mesej akan dipaparkan di sini.", + "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Belum ada domain yang disekat.", "empty_column.explore_statuses": "Tiada apa-apa yang sohor kini sekarang. Semaklah kemudian!", "empty_column.favourited_statuses": "Anda belum ada hantaran yang digemari. Apabila anda menggemari sesuatu, ia akan muncul di sini.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Tumpu pada lajur", "keyboard_shortcuts.compose": "to focus the compose textarea", "keyboard_shortcuts.description": "Keterangan", - "keyboard_shortcuts.direct": "untuk membuka lajur mesej terus", + "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": "Hantaran kegemaran", @@ -374,7 +376,7 @@ "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.direct": "Private mentions", "navigation_bar.discover": "Teroka", "navigation_bar.domain_blocks": "Domain disekat", "navigation_bar.edit_profile": "Sunting profil", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Langgaran peraturan", "report_notification.open": "Buka laporan", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Cari", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Cari atau tampal URL", - "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.", - "search_popout.tips.hashtag": "tanda pagar", - "search_popout.tips.status": "hantaran", - "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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "Semua", "search_results.hashtags": "Tanda pagar", "search_results.nothing_found": "Tidak dapat menemui apa-apa untuk istilah carian tersebut", @@ -555,7 +559,8 @@ "status.copy": "Salin pautan ke hantaran", "status.delete": "Padam", "status.detailed_status": "Paparan perbualan terperinci", - "status.direct": "Mesej terus @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Sunting", "status.edited": "Disunting {date}", "status.edited_x_times": "Disunting {count, plural, other {{count} kali}}", diff --git a/app/javascript/mastodon/locales/my.json b/app/javascript/mastodon/locales/my.json index 3c1cec63f2..197addd1b1 100644 --- a/app/javascript/mastodon/locales/my.json +++ b/app/javascript/mastodon/locales/my.json @@ -20,7 +20,7 @@ "account.blocked": "ဘလော့ထားသည်", "account.browse_more_on_origin_server": "မူရင်းပရိုဖိုင်တွင် ပိုမိုကြည့်ရှုပါ။", "account.cancel_follow_request": "ဖောလိုးပယ်ဖျက်ခြင်း", - "account.direct": "@{name} ကိုတိုက်ရိုက်စာပို့မည်", + "account.direct": "@{name} သာသိရှိနိုင်အောင်မန်းရှင်းခေါ်မည်", "account.disable_notifications": "@{name} ပို့စ်တင်သည့်အခါ ကျွန်ုပ်ကို အသိပေးခြင်းရပ်ပါ။", "account.domain_blocked": "ဒိုမိန်း ပိတ်ပင်ထားခဲ့သည်\n", "account.edit_profile": "ကိုယ်ရေးမှတ်တမ်းပြင်ဆင်မည်", @@ -62,7 +62,7 @@ "account.unblock_domain": " {domain} ဒိုမိန်းကိုပြန်ဖွင့်မည်", "account.unblock_short": "ဘလော့ဖြုတ်ရန်", "account.unendorse": "အကောင့်ပရိုဖိုင်တွင်မဖော်ပြပါ", - "account.unfollow": "ဖောလိုးဖြုတ်မည်", + "account.unfollow": "စောင့်ကြည့်ခြင်းအား ပယ်ဖျက်မည်", "account.unmute": "{name} ကို ပြန်ဖွင့်ရန်", "account.unmute_notifications": "{name}ထံမှသတိပေးချက်ပြန်ဖွင့်မည်", "account.unmute_short": "ပြန်ဖွင့်ရန်", @@ -102,11 +102,11 @@ "column.blocks": "ဘလော့ထားသောအကောင့်များ", "column.bookmarks": "မှတ်တမ်းများ", "column.community": "ဒေသတွင်း အချိန်ဇယား", - "column.direct": "တိုက်ရိုက်မက်ဆေ့ခ်ျများ", + "column.direct": "သီးသန့်ဖော်ပြခြင်း", "column.directory": "ပရိုဖိုင်များကို ရှာဖွေမည်\n", "column.domain_blocks": " ဒိုမိန်းကိုပိတ်မည်", "column.favourites": "အကြိုက်ဆုံးများ", - "column.follow_requests": "တောင်းဆိုချက်များကိုလိုက်နာပါ။", + "column.follow_requests": "စောင့်ကြည့်ရန် တောင်းဆိုမှုများ", "column.home": "ပင်မစာမျက်နှာ", "column.lists": "စာရင်းများ", "column.mutes": "မပေါ်အောင်ပိတ်ထားသောအသုံးပြုသူများ", @@ -123,7 +123,7 @@ "column_subheading.settings": "ဆက်တင်များ", "community.column_settings.local_only": "ပြည်တွင်း၌သာ", "community.column_settings.media_only": "Media only", - "community.column_settings.remote_only": "Remote only", + "community.column_settings.remote_only": "အဝေးမှသာ", "compose.language.change": "ဘာသာစကား ပြောင်းမည်", "compose.language.search": "ဘာသာစကားကိုရှာမည်", "compose_form.direct_message_warning_learn_more": "ထပ်သိရှိလိုသည်", @@ -153,15 +153,17 @@ "confirmations.block.confirm": "ဘလော့မည်", "confirmations.block.message": "အကောင့်မှ ထွက်ရန် သေချာပါသလား?", "confirmations.cancel_follow_request.confirm": "ပန်ကြားချက်ကို ပယ်ဖျက်မည်", - "confirmations.cancel_follow_request.message": "{name} ကိုဖော်လိုပယ်ဖျက်ရန် သေချာပါသလား။", + "confirmations.cancel_follow_request.message": "{name} ကို စောင့်ကြည့်ခြင်းအားပယ်ဖျက်ရန် သေချာပါသလား။", "confirmations.delete.confirm": "ဖျက်မည်", "confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete_list.confirm": "ဖျက်မည်", "confirmations.delete_list.message": "ဖျက်ရန် သေချာပါသလား?", "confirmations.discard_edit_media.confirm": "ဖယ်ထုတ်ပါ", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.message": "သင်သည် မီဒီယာဖော်ပြချက် သို့မဟုတ် အစမ်းကြည့်ရှုခြင်းတွင် မသိမ်းဆည်းရသေးသော အပြောင်းအလဲများရှိသည်။ မည်သို့ပင်ဖြစ်စေ ဖျက်ပစ်မည်လား။", "confirmations.domain_block.confirm": "Hide entire domain", "confirmations.domain_block.message": "{domain} တစ်ခုလုံးကို ဘလော့လုပ်ရန် တကယ် သေချာပါသလား? များသောအားဖြင့် အနည်းစုကို ပစ်မှတ်ထား ဘလော့လုပ်ခြင်းသည် လုံလောက်ပါသည်။ ထို ဒိုမိန်းမှ အကြောင်းအရာ တစ်ခုမှ မြင်ရမည်မဟုတ်သည့်အပြင် ထို ဒိုမိန်းတွင်ရှိသော သင်၏ စောင့်ကြည့်သူများပါ ဖယ်ရှားပစ်မည်ဖြစ်သည်။", + "confirmations.edit.confirm": "ပြင်ရန်", + "confirmations.edit.message": "ယခုပြင်ဆင်ခြင်းတွင် သင်လက်ရှိမက်ဆေ့ချ်ကို ဖျက်ပစ်ပြီး အသစ်ရေးပါမည်။ ရှေ့ဆက်လိုသည်မှာ သေချာပါသလား။", "confirmations.logout.confirm": "အကောင့်မှထွက်မည်", "confirmations.logout.message": "အကောင့်မှ ထွက်ရန် သေချာပါသလား?", "confirmations.mute.confirm": "ပိတ်ထားရန်", @@ -171,29 +173,29 @@ "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": "စာပြန်မည်", "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 ကိုကြည့်မည်", "conversation.with": "{အမည်များ} ဖြင့်", "copypaste.copied": "ကူယူပြီးပါပြီ", "copypaste.copy": "ကူးယူပါ", - "directory.federated": "From known fediverse", + "directory.federated": "သင် သိသော ဖက်ဒီမှ", "directory.local": "{domain} မှသာလျှင်\n", "directory.new_arrivals": "အသစ်ရောက်ရှိမှုများ", "directory.recently_active": "မကြာသေးခင်က ဖွင့်ထားသော", "disabled_account_banner.account_settings": "အကောင့်ဆက်တင်များ", "disabled_account_banner.text": "{disabledAccount} သည်လတ်တလောပိတ်ခံထားရသည်", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.community_timeline": "အကောင့်များမှ လတ်တလောတင်ထားသည့်အများမြင်ပို့စ်များမှာ {domain} တွင် တင်ထားသောပို့စ်များဖြစ်သည်။", "dismissable_banner.dismiss": "ပယ်ရန်", "dismissable_banner.explore_links": "ဤသတင်းများကို ယခုအချိန်တွင် ဗဟိုချုပ်ကိုင်မှုလျှော့ချထားသော ကွန်ရက်၏ အခြားဆာဗာများမှ လူများက ပြောဆိုနေကြပါသည်။", "dismissable_banner.explore_statuses": "ဤစာများနှင့် ဗဟိုချုပ်ကိုင်မှုလျှော့ချထားသော ကွန်ရက်ရှိ အခြားဆာဗာများမှ ဤပို့စ်များသည် ယခုဆာဗာပေါ်တွင် ဆွဲဆောင်မှု ရှိလာပါသည်။", "dismissable_banner.explore_tags": "ဤ hashtag များသည် ယခုအချိန်တွင် ဗဟိုချုပ်ကိုင်မှုလျှော့ချထားသော ကွန်ရက်၏ အခြားဆာဗာများပေါ်ရှိ လူများကြားတွင် ဆွဲဆောင်မှုရှိလာပါသည်", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.public_timeline": "ဗဟိုချုပ်ကိုင်မှုလျှော့ချထားသော ဤဆာဗာနှင့် အခြားဆာဗာတို့တွင် တင်ထားသည့် လတ်တလော အများမြင်ပို့စ်များဖြစ်သည်။", "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", + "embed.preview": "ဒါမျိုးမြင်ရမှာပါ။", + "emoji_button.activity": "လုပ်ဆောင်ချက်", "emoji_button.clear": "ရှင်းလင်းမည်", "emoji_button.custom": "စိတ်ကြိုက်", "emoji_button.flags": "Flags", @@ -213,28 +215,28 @@ "empty_column.account_unavailable": "ပရိုဖိုင် မရနိုင်ပါ", "empty_column.blocks": "ပိတ်ထားသောအကောင့်များမရှိသေးပါ", "empty_column.bookmarked_statuses": "သင့်တွင် မှတ်သားထားသော ပို့စ်များ မရှိသေးပါ။ တစ်ခုကို အမှတ်အသားပြုလိုက်ပါက ၎င်းကို ဤနေရာတွင် ပြထားပါမည်။", - "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "သင့်တွင် တိုက်ရိုက်မက်ဆေ့ချ်များ မရှိသေးပါ။ ပေးပို့ထားပါက သို့မဟုတ် လက်ခံထားပါက ၎င်းတို့ကို ဤနေရာတွင် ပြထားပါမည်။", + "empty_column.community": "ဒေသတွင်းစာမျက်နှာမှာ အလွတ်ဖြစ်နေသည်။ အများမြင်နိုင်ရန်အတွက် တစ်ခုခုရေးပါ။", + "empty_column.direct": "သင့်တွင် သီးသန့်ဖော်ပြချက်များ မရှိသေးပါ။ ပေးပို့ခြင်း သို့မဟုတ် လက်ခံသောအခါ၊ ၎င်းသည် ဤနေရာတွင် ပေါ်လာလိမ့်မည်။", "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": "သင့်အတွက် အကြံဉာဏ်များ မရရှိနိုင်ပါ။ သင်သိနိုင်သည့်လူများ သို့မဟုတ် ခေတ်စားနေသည့် hashtags များ ရှာဖွေရန်တို့အတွက် ရှာဖွေမှုကို အသုံးပြုနိုင်သည်။", "empty_column.follow_requests": "သင့်တွင် စောင့်ကြည့်ရန် တောင်းဆိုမှုများ မရှိသေးပါ။ သင်လက်ခံရရှိပါက ၎င်းကို ဤနေရာတွင် ပြထားပါမည်။", - "empty_column.followed_tags": "You have not followed any hashtags yet. When you do, they will show up here.", - "empty_column.hashtag": "There is nothing in this hashtag yet.", - "empty_column.home": "Your home timeline is empty! Follow more people to fill it up. {suggestions}", + "empty_column.followed_tags": "သင်သည် မည်သည့် hashtag ကိုမျှ စောင့်မကြည့်ရသေးပါ။ စောင့်ကြည့်ပါက ဤနေရာတွင် ပြပေးပါမည်။", + "empty_column.hashtag": "ဤ hashtag တွင် မည်သည့်အရာမျှ မရှိသေးပါ။", + "empty_column.home": "သင့်ပင်မစာမျက်နှာမှာ အလွတ်ဖြစ်နေပါသည်။ ဖြည့်ရန်အတွက် လူများကို စောင့်ကြည့်ပါ {suggestions}", "empty_column.home.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": "သင့်တွင် List မရှိသေးပါ။ List အသစ်ဖွင့်လျှင် ဤနေရာတွင်ကြည့်ရှုနိုင်မည်", "empty_column.mutes": "ပိတ်ထားသောအကောင့်များမရှိသေးပါ", "empty_column.notifications": "သတိပေးချက်မရှိသေးပါ။ သတိပေးချက်အသစ်ရှိလျှင် ဤနေရာတွင်ကြည့်ရှုနိုင်သည်", - "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.", + "empty_column.public": "ဤနေရာတွင် မည်သည့်အရာမျှမရှိပါ။ တစ်ခုခုရေးပါ သို့မဟုတ် ဖြည့်စွက်ရန်အတွက် အခြားဆာဗာ အသုံးပြုသူများကို စောင့်ကြည့်ပါ။", + "error.unexpected_crash.explanation": " ကျွန်ုပ်တို့၏ကုဒ်တွင် ချွတ်ယွင်းချက်တစ်ခု သို့မဟုတ် ဘရောက်ဆာနှင့် အဆင်မပြေမှုတို့ကြောင့် ဤစာမျက်နှာကို မှန်ကန်စွာ မပြသနိုင်ပါ။", "error.unexpected_crash.explanation_addons": "ဤစာမျက်နှာကို မှန်ကန်စွာ မပြသနိုင်ခဲ့ပါ။ ဤအမှားသည် Browser add-on ထည့်သွင်းထားမှုများ သို့မဟုတ် အလိုအလျောက် ဘာသာပြန်ကိရိယာများကြောင့် ဖြစ်နိုင်သည်။", "error.unexpected_crash.next_steps": "စာမျက်နှာကို ပြန်လည်စတင်ကြည့်ပါ။ ၎င်းမှာ အကူအညီမဖြစ်ပါက သင်သည် အခြား Browser သို့မဟုတ် မူရင်းအက်ပ်မှတစ်ဆင့် Mastodon ကို ဆက်လက်အသုံးပြုနိုင်ပါမည်။", - "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", + "error.unexpected_crash.next_steps_addons": "၎င်းတို့ကို ပိတ်ပြီး စာမျက်နှာကို ပြန်လည်စတင်ကြည့်ပါ။ အဆင်မပြေပါက အခြားဘရောက်ဆာ သို့မဟုတ် မူရင်းအက်ပ်မှတစ်ဆင့် Mastodon ကို ဆက်ပြီးအသုံးပြုနိုင်ပါမည်။", + "errors.unexpected_crash.copy_stacktrace": "stacktrace ကို ကလစ်ဘုတ်သို့ ကူးယူပါ", "errors.unexpected_crash.report_issue": "အဆင်မပြေမှုကို တိုင်ကြားရန်", "explore.search_results": "ရှာဖွေမှုရလဒ်များ", "explore.suggested_follows": "သင့်အတွက်", @@ -242,16 +244,16 @@ "explore.trending_links": "သတင်းများ", "explore.trending_statuses": "ပို့စ်တင်မယ်", "explore.trending_tags": "ဟက်ရှ်တက်များ", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.context_mismatch_explanation": "ဤစစ်ထုတ်မှု အမျိုးအစားသည် ဤပို့စ်ကို သင်ဝင်ရောက်ခဲ့ခြင်းနှင့် မသက်ဆိုင်ပါ။ ပို့စ်ကို စစ်ထုတ်လိုပါက စစ်ထုတ်မှုကို ပြင်ဆင်ရမည်ဖြစ်သည်။", + "filter_modal.added.context_mismatch_title": "အကြောင်းအရာ မကိုက်ညီပါ။", + "filter_modal.added.expired_explanation": "ဤစစ်ထုတ်မှုအမျိုးအစားမှာ သက်တမ်းကုန်သွားပါပြီ။ အသုံးပြုလိုပါက သက်တမ်းကုန်ဆုံးရက်ကို ပြောင်းလဲနိုင်ပါသည်။", + "filter_modal.added.expired_title": "သက်တမ်းကုန်နေသော စစ်ထုတ်မှု။", + "filter_modal.added.review_and_configure": "ဤစစ်ထုတ်မှုအမျိုးအစားကို ပြန်လည်သုံးသပ်ပြီး ထပ်မံပြင်ဆင်သတ်မှတ်ရန်၊ {settings_link} သို့ သွားပါ။", "filter_modal.added.review_and_configure_title": "စစ်ထုတ်မှု သတ်မှတ်ချက်များ", - "filter_modal.added.settings_link": "settings page", + "filter_modal.added.settings_link": "သတ်မှတ်ချက်များစာမျက်နှာ", "filter_modal.added.short_explanation": "ဤပို့စ်ကို အောက်ပါ စစ်ထုတ်မှုအမျိုးအစားတွင် ပေါင်းထည့်ထားပါသည် - {title}။", "filter_modal.added.title": "စစ်ထုတ်မှု ထည့်သွင်းပြီးပါပြီ။", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.context_mismatch": "ဤအကြောင်းအရာနှင့် မသက်ဆိုင်ပါ", "filter_modal.select_filter.expired": "သက်တမ်းကုန်သွားပါပြီ", "filter_modal.select_filter.prompt_new": "အမျိုးအစားအသစ် - {name}", "filter_modal.select_filter.search": "ရှာရန် သို့မဟုတ် ဖန်တီးရန်", @@ -260,11 +262,11 @@ "filter_modal.title.status": "ပို့စ်တစ်ခု စစ်ထုတ်ပါ", "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!", - "follow_request.authorize": "Authorize", + "follow_recommendations.lead": "သင်စောင့်ကြည့်ထားသူများ၏ ပို့စ်များမှာ သင့်ပင်မစာမျက်နှာတွင် အချိန်နှင့်တပြေးညီ ပေါ်လာပါမည်။ မကြောက်ပါနှင့်။ အချိန်မရွေး စောင့်ကြည့်ခြင်းအား ရပ်တန့်နိုင်ပါသည်။", + "follow_request.authorize": "လုပ်ပိုင်ခွင့်", "follow_request.reject": "ဖယ်ရှားပါ", - "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.", - "followed_tags": "Followed hashtags", + "follow_requests.unlocked_explanation": "သင့်အကောင့်ကို လော့ခ်ချမထားသော်လည်း၊ {domain} ဝန်ထမ်းများသည် ဤအကောင့်များမှ လိုက်နာရန်တောင်းဆိုမှုများကို ကိုယ်တိုင်ပြန်လည်စစ်ဆေးလိုမည်ဟု ထင်မြင်ယူဆပါသည်။", + "followed_tags": "Hashtag ကို စောင့်ကြည့်ပါမည်", "footer.about": "အကြောင်း", "footer.directory": "ပရိုဖိုင်များလမ်းညွှန်", "footer.get_app": "အက်ပ်ကို ရယူပါ", @@ -279,29 +281,29 @@ "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": "Enter hashtags…", - "hashtag.column_settings.tag_mode.all": "All of these", - "hashtag.column_settings.tag_mode.any": "Any of these", - "hashtag.column_settings.tag_mode.none": "None of these", + "hashtag.column_settings.select.placeholder": "hashtag သို့ ဝင်ရောက်နေခြင်း...", + "hashtag.column_settings.tag_mode.all": "ဤအရာအားလုံး", + "hashtag.column_settings.tag_mode.any": "ဤအရာထဲမှ တစ်ခု", + "hashtag.column_settings.tag_mode.none": "တစ်ခုမှ မဟုတ်ပါ။", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", "hashtag.follow": "Hashtag ကို စောင့်ကြည့်မယ်", "hashtag.unfollow": "Hashtag ကို မစောင့်ကြည့်ပါ", "home.column_settings.basic": "အခြေခံ", - "home.column_settings.show_reblogs": "Show boosts", + "home.column_settings.show_reblogs": "Boost များကို ပြပါ", "home.column_settings.show_replies": "ပြန်စာများကို ပြပါ", "home.hide_announcements": "ကြေညာချက်များကို ဖျောက်ပါ", "home.show_announcements": "ကြေညာချက်များကို ပြပါ", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", + "interaction_modal.description.favourite": "Mastodon အကောင့်တစ်ခုဖြင့် ဤပို့စ်ကို နှစ်သက်ကြောင်းနှင့် စာရေးသူအား သင်နှစ်သက်ကြောင်း အသိပေးပြီးနောက် ၎င်းကို နောက်မှ သိမ်းဆည်းနိုင်သည်။", + "interaction_modal.description.follow": "Mastodon အကောင့်ဖြင့် သင်၏ ပင်မစာမျက်နှာတွင် ၎င်းတို့၏ ပို့စ်များကို ရရှိရန်အတွက် {name} ကို စောင့်ကြည့်နိုင်ပါသည်။", + "interaction_modal.description.reblog": "Mastodon အကောင့်တစ်ခုဖြင့် သင်၏စောင့်ကြည့်သူများကို မျှဝေရန်အတွက် ဤပို့စ်ကို Boost လုပ်ပါ။", + "interaction_modal.description.reply": "Mastodon အကောင့်တစ်ခုဖြင့် သင် ဤပို့စ်ကို တုံ့ပြန်နိုင်ပါသည်။", + "interaction_modal.on_another_server": "တခြားဆာဗာပေါ်တွင်", "interaction_modal.on_this_server": "ဤဆာဗာတွင်", - "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.other_server_instructions": "သင်အကြိုက်ဆုံး Mastodon အက်ပ် သို့မဟုတ် သင့် Mastodon ဆာဗာ၏ ဝဘ်ရှိ ရှာဖွေမှုနေရာတွင် ဤ URL ကို ကူးယူပြီး ထည့်ပါ။", + "interaction_modal.preamble": "Mastodon မှာ ဗဟိုချုပ်ကိုင်မှု မရှိခြင်းကြောင့် ဤတစ်ခုအတွက် သင့်တွင်အကောင့်မရှိပါက အခြား Mastodon ဆာဗာ သို့မဟုတ် အဆင်ပြေသောပလက်ဖောင်းတွင် ရှိသော သင့်လက်ရှိအကောင့်ဖြင့် အသုံးပြုနိုင်ပါသည်။", "interaction_modal.title.favourite": "အကြိုက်ဆုံး {name} ၏ ပို့စ်", "interaction_modal.title.follow": "{name} ကို စောင့်ကြည့်မယ်", - "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reblog": "{name} ၏ ပို့စ်ကို Boost လုပ်ပါ", "interaction_modal.title.reply": "{name} ၏ ပို့စ်ကို စာပြန်မယ်", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", "keyboard_shortcuts.description": "ဖော်ပြချက်", - "keyboard_shortcuts.direct": "တိုက်ရိုက်မက်ဆေ့ချ်ကော်လံကို ဖွင့်ရန်", + "keyboard_shortcuts.direct": "သီးသန့်ဖော်ပြချက်များကော်လံကိုဖွင့်ရန်", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -341,10 +343,10 @@ "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search", "keyboard_shortcuts.up": "to move up in the list", "lightbox.close": "ပိတ်ပါ", - "lightbox.compress": "Compress image view box", + "lightbox.compress": "ရုပ်ပုံမြင်ကွင်းအကွက်ကို ချုံ့ပါ", "lightbox.expand": "ပုံကိုဖွင့်ပါ", "lightbox.next": "ရှေ့သို့", - "lightbox.previous": "Previous", + "lightbox.previous": "ရှေ့သို့", "limited_account_hint.action": "ဘာပဲဖြစ်ဖြစ် ပရိုဖိုင်ကို ပြပါ", "limited_account_hint.title": "ဤပရိုဖိုင်ကို {domain} ၏ စိစစ်သူများမှ ဖျောက်ထားသည်။", "lists.account.add": "စာရင်းထဲသို့ထည့်ပါ", @@ -354,10 +356,10 @@ "lists.edit.submit": "ခေါင်းစဥ် ပြောင်းလဲရန်", "lists.new.create": "စာရင်းသွင်းပါ", "lists.new.title_placeholder": "စာရင်းသစ်ခေါင်းစဥ်", - "lists.replies_policy.followed": "Any followed user", + "lists.replies_policy.followed": "မည်သည့်စောင့်ကြည့်သူမဆို", "lists.replies_policy.list": "စာရင်းထဲမှ အဖွဲ့ဝင်များ", "lists.replies_policy.none": "တစ်ယောက်မှမရှိပါ", - "lists.replies_policy.title": "Show replies to:", + "lists.replies_policy.title": "ပြန်စာများကို ပြရန် -", "lists.search": "မိမိဖောလိုးထားသူများမှရှာဖွေမည်", "lists.subheading": "သင့်၏စာရင်းများ", "load_pending": "{count, plural, one {# new item} other {# new items}}", @@ -373,31 +375,31 @@ "navigation_bar.blocks": "ဘလော့ထားသောအကောင့်များ", "navigation_bar.bookmarks": "မှတ်ထားသည်များ", "navigation_bar.community_timeline": "ဒေသစံတော်ချိန်", - "navigation_bar.compose": "Compose new post", - "navigation_bar.direct": "တိုက်ရိုက်မက်ဆေ့ချ်များ", - "navigation_bar.discover": "Discover", + "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.explore": "စူးစမ်းရန်", "navigation_bar.favourites": "အကြိုက်ဆုံးများ", - "navigation_bar.filters": "Muted words", + "navigation_bar.filters": "စကားလုံးများ ပိတ်ထားပါ", "navigation_bar.follow_requests": "တောင်းဆိုချက်များကို စောင့်ကြည့်ပါ", - "navigation_bar.followed_tags": "Followed hashtags", + "navigation_bar.followed_tags": "Hashtag ကို စောင့်ကြည့်မယ်", "navigation_bar.follows_and_followers": "စောင့်ကြည့်သူများနှင့် စောင့်ကြည့်စာရင်း", "navigation_bar.lists": "စာရင်းများ", "navigation_bar.logout": "ထွက်မယ်", - "navigation_bar.mutes": "Muted users", + "navigation_bar.mutes": "အသုံးပြုသူများကို ပိတ်ထားပါ", "navigation_bar.personal": "ကိုယ်ရေးကိုယ်တာ", "navigation_bar.pins": "ပင်တွဲထားသောပို့စ်များ", - "navigation_bar.preferences": "Preferences", - "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.preferences": "စိတ်ကြိုက်သတ်မှတ်ချက်များ", + "navigation_bar.public_timeline": "ဖက်ဒီစာမျက်နှာ", "navigation_bar.search": "ရှာရန်", "navigation_bar.security": "လုံခြုံရေး", "not_signed_in_indicator.not_signed_in": "ဤရင်းမြစ်သို့ ဝင်ရောက်ရန်အတွက် သင်သည် အကောင့်ဝင်ရန် လိုအပ်ပါသည်။", - "notification.admin.report": "{name} reported {target}", + "notification.admin.report": "{name} က {target} ကို တိုင်ကြားခဲ့သည်", "notification.admin.sign_up": "{name} က အကောင့်ဖွင့်ထားသည်", "notification.favourite": "{name} favourited your status", - "notification.follow": "{name} သင့်ကို စောင့်ကြည့်ခဲ့သည်", + "notification.follow": "{name} က သင့်ကို စောင့်ကြည့်ခဲ့သည်", "notification.follow_request": "{name} က သင့်ကို စောင့်ကြည့်ရန် တောင်းဆိုထားသည်", "notification.mention": "{name} က သင့်ကို ဖော်ပြခဲ့သည်", "notification.own_poll": "စစ်တမ်းကောက်မှု ပြီးဆုံးပါပြီ", @@ -407,45 +409,45 @@ "notification.update": "{name} က ပို့စ်တစ်ခုကို ပြင်ဆင်ခဲ့သည်", "notifications.clear": "အသိပေးချက်များအား ရှင်းလင်းပါ", "notifications.clear_confirmation": "သတိပေးချက်အားလုံးကို အပြီးတိုင်ဖယ်ရှားမည်", - "notifications.column_settings.admin.report": "New reports:", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.report": "တိုင်ကြားစာအသစ်များ -", + "notifications.column_settings.admin.sign_up": "အကောင့်အသစ်များ -", "notifications.column_settings.alert": "Desktop သတိပေးချက်များ", "notifications.column_settings.favourite": "ကြိုက်နှစ်သက်မှုများ", "notifications.column_settings.filter_bar.advanced": "ခေါင်းစဥ်အားလုံးများကိုဖော်ပြပါ", - "notifications.column_settings.filter_bar.category": "Quick filter bar", + "notifications.column_settings.filter_bar.category": "အမြန်စစ်ထုတ်မှုဘား", "notifications.column_settings.filter_bar.show_bar": "စစ်ထုတ်မှုဘားကို ပြပါ", "notifications.column_settings.follow": "စောင့်ကြည့်သူအသစ်များ -", - "notifications.column_settings.follow_request": "New follow requests:", - "notifications.column_settings.mention": "Mentions:", + "notifications.column_settings.follow_request": "စောင့်ကြည့်ရန် တောင်းဆိုမှုအသစ်များ -", + "notifications.column_settings.mention": "ဖော်ပြချက်များ -", "notifications.column_settings.poll": "စစ်တမ်းရလဒ်", "notifications.column_settings.push": "အသိပေးချက်များအား ရအောင်ပို့ခြင်း", - "notifications.column_settings.reblog": "Boosts:", + "notifications.column_settings.reblog": "Boosts -", "notifications.column_settings.show": "ကော်လံတွင်ပြပါ", "notifications.column_settings.sound": "အသံဖွင့်မည်", "notifications.column_settings.status": "ပို့စ်အသစ်များ -", "notifications.column_settings.unread_notifications.category": "မဖတ်ရသေးသောအသိပေးချက်များ -", - "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.unread_notifications.highlight": "မဖတ်ရသေးသော အသိပေးချက်များကို ဖော်ပြပါ", "notifications.column_settings.update": "ပြင်ဆင်ထားမှုများ -", "notifications.filter.all": "အားလုံး", "notifications.filter.boosts": "အားပေးမည်", "notifications.filter.favourites": "ကြိုက်နှစ်သက်မှုများ", - "notifications.filter.follows": "ဖောလိုးမည်", + "notifications.filter.follows": "စောင့်ကြည့်မယ်", "notifications.filter.mentions": " မန်းရှင်းမည်", "notifications.filter.polls": "စစ်တမ်းရလဒ်", "notifications.filter.statuses": "သင်စောင့်ကြည့်သူများထံမှ အပ်ဒိတ်များ", "notifications.grant_permission": "ခွင့်ပြုချက်ပေးမည်", "notifications.group": "အသိပေးချက်များ {count} ခု", "notifications.mark_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_banner.enable": "Enable desktop notifications", - "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_denied": "ဘရောက်ဆာခွင့်ပြုချက်များ တောင်းဆိုမှုအား ငြင်းခဲ့သောကြောင့် ဒက်စ်တော့ အသိပေးချက်များကို မရရှိနိုင်ပါ", + "notifications.permission_denied_alert": "ဘရောက်ဆာခွင့်ပြုချက်ကို ငြင်းပယ်ခဲ့သောကြောင့် ဒက်စ်တော့ အသိပေးချက်များကို ဖွင့်၍မရပါ", + "notifications.permission_required": "လိုအပ်သောခွင့်ပြုချက်ကို မပေးထားသောကြောင့် ဒက်စ်တော့ အသိပေးချက်များကို မရရှိနိုင်ပါ။", + "notifications_permission_banner.enable": "ဒက်စ်တော့ အသိပေးချက်များကို ဖွင့်ပါ", + "notifications_permission_banner.how_to_control": "Mastodon မဖွင့်သည့်အခါ အကြောင်းကြားချက်များကို လက်ခံရယူရန်၊ ဒက်စ်တော့ အသိပေးချက်များကို ဖွင့်ပါ။ ၎င်းတို့ကို ဖွင့်ပြီးသည်နှင့် ၎င်းတို့ကို ဖွင့်ပြီးသည်နှင့် အထက် {icon} ခလုတ်မှ ဒက်စ်တော့ အသိပေးချက်များကို ထုတ်ပေးသည့် အပြန်အလှန်တုံ့ပြန်မှု အမျိုးအစားများကို သင် အတိအကျ ထိန်းချုပ်နိုင်သည်။", + "notifications_permission_banner.title": "လက်လွတ်မခံပါနှင့်", + "picture_in_picture.restore": "ပြန်ထားပါ", "poll.closed": "ပိတ်သွားပြီ", "poll.refresh": "ပြန်ဖွင့်မည်", - "poll.total_people": "{count, plural, one {# person} other {# people}}", + "poll.total_people": "{count, plural, one {# person} other {# people}}\n", "poll.total_votes": "{count, plural, one {# vote} other {# votes}}", "poll.vote": "မဲပေးမည်", "poll.voted": "သင်ဤအဖြေကိုမဲပေးခဲ့သည်", @@ -456,20 +458,20 @@ "privacy.direct.long": "မန်းရှင်းခေါ်သူသီးသန့်", "privacy.direct.short": "Direct", "privacy.private.long": "ဖော်လိုးလုပ်သူသီးသန့်", - "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all", - "privacy.public.short": "Public", - "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", - "privacy.unlisted.short": "Unlisted", - "privacy_policy.last_updated": "Last updated {date}", + "privacy.private.short": "စောင့်ကြည့်သူများသာ", + "privacy.public.long": "အားလုံး မြင်နိုင်သည်", + "privacy.public.short": "အများကိုပြမည်", + "privacy.unlisted.long": "အားလုံးမြင်နိုင်သော်လည်း ရှာဖွေမှုများမှ ဖယ်ထုတ်ထားသည်", + "privacy.unlisted.short": "စာရင်းမသွင်းထားပါ", + "privacy_policy.last_updated": "နောက်ဆုံး ပြင်ဆင်ခဲ့သည့်ရက်စွဲ {date}", "privacy_policy.title": "ကိုယ်ရေးအချက်အလက်မူဝါဒ", "refresh": "ပြန်လည်စတင်ပါ", "regeneration_indicator.label": "လုပ်ဆောင်နေသည်…", - "regeneration_indicator.sublabel": "Your home feed is being prepared!", + "regeneration_indicator.sublabel": "သင့်ပင်မစာမျက်နှာကို ပြင်ဆင်နေပါသည်။", "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": "အခုလေးတင်", "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", @@ -479,12 +481,12 @@ "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.block_explanation": "၎င်းတို့ရဲ့ ပို့စ်တွေကို မြင်ရမှာမဟုတ်ဘူး။ သင့်ပို့စ်များကို မမြင်နိုင်သလို သင့်ကို စောင့်ကြည့်၍ရမည်လည်းမဟုတ်ပါ။ ၎င်းတို့ကို ပိတ်ပင်ထားပါသည်။", "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": "ဤ {type} တွင် ဘာဖြစ်နေသည်ကို ပြောပြပါ", "report.category.title_account": "ကိုယ်ရေးမှတ်တမ်း", "report.category.title_status": "ပို့စ်", "report.close": "ပြီးပြီ", @@ -492,100 +494,103 @@ "report.forward": "{target} သို့တစ်ဆင့်ပို့ပေးမည်", "report.forward_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.mute_explanation": "၎င်းတို့၏ပို့စ်များကို သင်မြင်ရမည်မဟုတ်ပါ။ ၎င်းတို့မှာ သင့်ကို စောင့်ကြည့်၍ ပို့စ်များကို မြင်နိုင်ဆဲဖြစ်ပြီး ၎င်းတို့ကို အသံပိတ်ထားကြောင်း သိမည်မဟုတ်ပါ။\n", "report.next": "ရှေ့သို့", "report.placeholder": "Type or paste additional comments", "report.reasons.dislike": "မကြိုက်ပါ", "report.reasons.dislike_description": "ပိုမိုမြင်လိုသည်ရှိပါသလား", "report.reasons.other": "တစ်ခုခုဖြစ်နေသည်", - "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.reasons.other_description": "ဤအချက်မှာ အခြားအမျိုးအစားများနှင့် မကိုက်ညီပါ။", + "report.reasons.spam": "၎င်းမှာ 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": "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.", + "report.thanks.take_action": "ဤသည်မှာ Mastodon တွင် သင်မြင်ရသည့်အရာများ ထိန်းချုပ်ရန်အတွက် ရွေးချယ်ရမည့်နေရာဖြစ်သည် -", + "report.thanks.take_action_actionable": "၎င်းကို ကျွန်ုပ်တို့ သုံးသပ်နေချိန်တွင် သင်သည် @{name} ကို အရေးယူနိုင်သည် -", + "report.thanks.title": "ဒါကို မမြင်ချင်ဘူးလား။", + "report.thanks.title_actionable": "တိုင်ကြားခြင်းအတွက် ကျေးဇူးတင်ပါသည်၊ ဤအရာကို ကျွန်ုပ်တို့ စစ်ဆေးပါမည်။", + "report.unfollow": "@{name} ကို မစောင့်ကြည့်တော့ပါ", + "report.unfollow_explanation": "သင် ဤအကောင့်ကို စောင့်ကြည့်နေသည်။ သင့်ပင်မစာမျက်နှာတွင် ၎င်းတို့၏ပို့စ်များကို ထပ်ပြီးမတွေ့ချင်တော့ပါက စောင့်ကြည့်ခြင်းကို ရပ်တန့်နိုင်ပါသည်။", "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", "report_notification.categories.other": "အခြား", "report_notification.categories.spam": "Spam", - "report_notification.categories.violation": "Rule violation", - "report_notification.open": "Open report", + "report_notification.categories.violation": "စည်းကမ်းဖောက်ဖျက်ခြင်း", + "report_notification.open": "အစီရင်ခံစာကိုဖွင့်ပါ", + "search.no_recent_searches": "လတ်တလောရှာဖွေမှုများမရှိပါ။", "search.placeholder": "ရှာဖွေရန်", + "search.quick_action.account_search": "{x} နှင့် ကိုက်ညီသော ပရိုဖိုင်များ", + "search.quick_action.go_to_account": "ပရိုဖိုင် {x} သို့သွားမည်", + "search.quick_action.go_to_hashtag": "hashtag {x} သို့သွားမည်", + "search.quick_action.open_url": "Mastodon တွင် URL ကိုဖွင့်မည်", + "search.quick_action.status_search": "{x} နှင့် ကိုက်ညီသော ပို့စ်များ", "search.search_or_paste": "URL ရိုက်ထည့်ပါ သို့မဟုတ် ရှာဖွေပါ", - "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.", - "search_popout.tips.hashtag": "ဟက်ရှ်တက်ခ်", - "search_popout.tips.status": "ပို့စ်", - "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", - "search_popout.tips.user": "အသုံးပြုသူ", - "search_results.accounts": "လူပုဂ္ဂိုလ်", + "search_popout.quick_actions": "အမြန်လုပ်ဆောင်မှုများ", + "search_popout.recent": "လတ်တလော ရှာဖွေမှုများ", + "search_results.accounts": "စာမျက်နှာ", "search_results.all": "အားလုံး", "search_results.hashtags": "ဟက်ရှ်တက်များ", "search_results.nothing_found": "ရှာဖွေလိုသောအရာမရှိပါ", "search_results.statuses": "ပို့စ်တင်မယ်", - "search_results.statuses_fts_disabled": "Searching posts by their content is not enabled on this Mastodon server.", + "search_results.statuses_fts_disabled": "ဤ Mastodon ဆာဗာတွင် ၎င်းတို့၏ အကြောင်းအရာအလိုက် ပို့စ်များရှာဖွေခြင်းကို ဖွင့်မထားပါ။", "search_results.title": "{q} ကို ရှာပါ", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.about_active_users": "ပြီးခဲ့သည့် ရက်ပေါင်း ၃၀ အတွင်း ဤဆာဗာကို အသုံးပြုသူများ (လအလိုက် လက်ရှိအသုံးပြုသူများ)", "server_banner.active_users": "လက်ရှိအသုံးပြုသူများ", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.administered_by": "မှ စီမံခန့်ခွဲသည် -", + "server_banner.introduction": "{domain} သည် {mastodon} မှ ပံ့ပိုးပေးထားသော ဗဟိုချုပ်ကိုင်မှုမရှိသည့် လူမှုကွန်ရက်တစ်ခုဖြစ်သည်။", "server_banner.learn_more": "ပိုမိုသိရှိရန်", - "server_banner.server_stats": "Server stats:", + "server_banner.server_stats": "ဆာဗာအား လက်ရှိအသုံးပြုသူများ -", "sign_in_banner.create_account": "အကောင့်ဖန်တီးမည်", "sign_in_banner.sign_in": "အကောင့်ဝင်မည်", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts. You can also interact from your account on a different server.", - "status.admin_account": "Open moderation interface for @{name}", - "status.admin_domain": "Open moderation interface for {domain}", + "sign_in_banner.text": "ပရိုဖိုင်များ သို့မဟုတ် hashtags များ၊ အကြိုက်ဆုံး၊ မျှဝေပြီး ပို့စ်များနှင့် ပို့စ် ပြန်ကြားစာများ ကြည့်ရှုရန်အတွက် အကောင့်ဝင်ရောက်ပါ။ အခြားဆာဗာတစ်ခုပေါ်ရှိ သင့်အကောင့်မှလည်း အပြန်အလှန် ဖလှယ်နိုင်ပါသည်။", + "status.admin_account": "@{name} အတွက် စိစစ်ခြင်းကြားခံနယ်ကို ဖွင့်ပါ", + "status.admin_domain": "{domain} အတွက် စိစစ်ခြင်းကြားခံနယ်ကို ဖွင့်ပါ", "status.admin_status": "Open this status in the moderation interface", "status.block": "@{name} ကိုဘလော့မည်", "status.bookmark": "မှတ်ထားသည်များ", "status.cancel_reblog_private": "Unboost", - "status.cannot_reblog": "This post cannot be boosted", + "status.cannot_reblog": "ဤပို့စ်ကို Boost ၍ မရပါ", "status.copy": "Copy link to status", "status.delete": "ဖျက်ရန်", - "status.detailed_status": "Detailed conversation view", - "status.direct": "@{name} ကို တိုက်ရိုက်စာပို့မည်", + "status.detailed_status": "အသေးစိတ်စကားပြောဆိုမှုမြင်ကွင်း", + "status.direct": "@{name} ကို သီးသန့်ဖော်ပြမည်\n", + "status.direct_indicator": "သီးသန့်ဖော်ပြခြင်း။", "status.edit": "ပြင်ဆင်ရန်", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edited": "{date} ကို ပြင်ဆင်ပြီးပါပြီ", + "status.edited_x_times": "{count, plural, one {{count} time} other {{count} times}} ပြင်ဆင်ခဲ့သည်", "status.embed": "Embed", "status.favourite": "ကြိုက်နှစ်သက်မှုများ", - "status.filter": "Filter this post", - "status.filtered": "Filtered", + "status.filter": "ဤပို့စ်ကို စစ်ထုတ်ပါ", + "status.filtered": "စစ်ထုတ်ထားသည်", "status.hide": "ပို့စ်ကိုပိတ်ထားမည်", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {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.history.created": "{name} က {date} က ဖန်တီးခဲ့သည်", + "status.history.edited": "{name} က {date} က ပြင်ဆင်ခဲ့သည်", + "status.load_more": "ပို၍ဆောင်ရွက်ပါ", + "status.media_hidden": "မီဒီယာကို ဖျောက်ထားပါ", + "status.mention": "@{name} ကို ဖော်ပြထားသည်", + "status.more": "နောက်ထပ်", + "status.mute": "@{name} ကို ပိတ်ထားရန်", + "status.mute_conversation": "စကားဝိုင်းကို ပိတ်ထားရန်", "status.open": "ပို့စ်ကိုချဲ့ထွင်မည်", - "status.pin": "Pin on profile", + "status.pin": "ပရိုဖိုင်တွင် ပင်ထားပါ", "status.pinned": "ပင်တွဲထားသောပို့စ်", "status.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 post yet. When someone does, they will show up here.", - "status.redraft": "Delete & re-draft", + "status.reblog_private": "မူရင်းပုံစံဖြင့် Boost လုပ်ပါ", + "status.reblogged_by": "{name} က Boost လုပ်ထားသည်", + "status.reblogs.empty": "ဤပို့စ်ကို မည်သူမှ Boost လုပ်ထားခြင်းမရှိသေးပါ။ တစ်ယောက်ယောက်မှ Boost လုပ်ပါက ဤနေရာတွင်ပေါ်လာပါမည်။", + "status.redraft": "ဖျက်ပြီး ပြန်ရေးပါ", "status.remove_bookmark": "မှတ်ထားသည်များကို ဖယ်ရှားပါ", "status.replied_to": "{name} ကို စာပြန်ခဲ့သည်", "status.reply": "စာပြန်ရန်", - "status.replyAll": "Reply to thread", - "status.report": "Report @{name}", + "status.replyAll": "thread သို့ စာပြန်ပါ", + "status.report": "@{name} ကို တိုင်ကြားရန်", "status.sensitive_warning": "သတိထားရသော အကြောင်းအရာ", "status.share": "မျှဝေ", "status.show_filter_reason": "မည်သို့ပင်ဖြစ်စေ ပြပါ", @@ -597,13 +602,13 @@ "status.translate": "ဘာသာပြန်ပါ", "status.translated_from_with": "{provider} ကို အသုံးပြု၍ {lang} မှ ဘာသာပြန်ထားသည်", "status.uncached_media_warning": "မရနိုင်ပါ", - "status.unmute_conversation": "Unmute conversation", - "status.unpin": "Unpin from profile", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "status.unmute_conversation": "စကားဝိုင်းကို ပိတ်ထားရန်", + "status.unpin": "ပရိုဖိုင်မှ ပင်ဖြုတ်ပါ။", + "subscribed_languages.lead": "ပြောင်းလဲပြီးနောက် ရွေးချယ်ထားသော ဘာသာစကားများ၏ ပို့စ်များကိုသာ သင့် ပင်မစာမျက်နှာနှင့် စာရင်းစာမျက်နှာတွင်သာ ပေါ်လာမည်ဖြစ်ပါသည်။ ဘာသာစကားအားလုံး၏ ပို့စ်များအား ကြည့်ရှုလိုပါက အပြောင်းအလဲမပြုလုပ်ပါနှင့်။", "subscribed_languages.save": "ပြောင်းလဲမှုများကို သိမ်းဆည်းပါ", "subscribed_languages.target": "{target} အတွက် စာရင်းသွင်းထားသော ဘာသာစကားများကို ပြောင်းပါ", - "suggestions.dismiss": "Dismiss suggestion", - "suggestions.header": "You might be interested in…", + "suggestions.dismiss": "အကြံပြုချက်ကို ဖယ်လိုက်ပါ", + "suggestions.header": "စိတ်ဝင်စားနိုင်သည်...", "tabs_bar.federated_timeline": "ဖက်ဒီ", "tabs_bar.home": "ပင်မစာမျက်နှာ", "tabs_bar.local_timeline": "ပြည်တွင်း", @@ -611,7 +616,7 @@ "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.moments": "အခိုက်အတန့်များ ကျန်ရှိနေသေးသည်", "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left", "timeline_hint.remote_resource_not_displayed": "အခြားဆာဗာများမှ {resource} ကို ပြသမည်မဟုတ်ပါ။", "timeline_hint.resources.followers": "စောင့်ကြည့်သူများ", @@ -619,11 +624,11 @@ "timeline_hint.resources.statuses": "ပို့စ်အဟောင်းများ", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "လက်ရှိခေတ်စားနေသော ပို့စ်များ", - "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", + "ui.beforeunload": "Mastodon မှ ထွက်ခွာပါက သင့်မူကြမ်း ဆုံးရှုံးသွားပါမည်။", "units.short.billion": "{count}B", "units.short.million": "{count}M", "units.short.thousand": "{count}K", - "upload_area.title": "Drag & drop to upload", + "upload_area.title": "ပို့စ်တင်ရန် ဆွဲချလိုက်ပါ", "upload_button.label": "ပုံများ၊ ဗီဒီယို သို့မဟုတ် အသံဖိုင်တစ်ခု ထည့်ပါ", "upload_error.limit": "ဖိုင်အများဆုံးတင်နိုင်မည့်ကန့်သတ်ချက်ကို ကျော်သွားပါပြီ။", "upload_error.poll": "စစ်တမ်းနှင့်အတူဖိုင်များတင်ခွင့်မပြုပါ", @@ -631,19 +636,19 @@ "upload_form.description": "အမြင်အာရုံချို့ယွင်းသော ခက်ခဲသောသူများအတွက် ဖော်ပြထားသည်", "upload_form.description_missing": "ဖော်ပြချက် မထည့်ပါ", "upload_form.edit": "ပြင်ရန်", - "upload_form.thumbnail": "Change thumbnail", + "upload_form.thumbnail": "ပုံသေးကို ပြောင်းပါ", "upload_form.undo": "ဖျက်ရန်", "upload_form.video_description": "အမြင်အာရုံနှင့်အကြားအာရုံ ချို့ယွင်းသော ခက်ခဲသောသူများအတွက် ဖော်ပြထားသည်", - "upload_modal.analyzing_picture": "Analyzing picture…", - "upload_modal.apply": "Apply", - "upload_modal.applying": "Applying…", + "upload_modal.analyzing_picture": "ပုံအား ပိုင်းခြားစိတ်ဖြာနေသည်...", + "upload_modal.apply": "သုံးပါ", + "upload_modal.applying": "အသုံးချနေသည်...", "upload_modal.choose_image": "ပုံရွေးပါ", "upload_modal.description_placeholder": "သီဟိုဠ်မှ ဉာဏ်ကြီးရှင်သည် အာယုဝဍ္ဎနဆေးညွှန်းစာကို ဇလွန်ဈေးဘေး ဗာဒံပင်ထက် အဓိဋ္ဌာန်လျက် ဂဃနဏဖတ်ခဲ့သည်", - "upload_modal.detect_text": "Detect text from picture", + "upload_modal.detect_text": "ပုံမှစာသားကို ရှာဖွေပါ", "upload_modal.edit_media": "မီဒီယာကို ပြင်ဆင်ရန်", - "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.hint": "ပုံသေးအားလုံးတွင် အမြဲတမ်းကြည့်ရှုနိုင်သည့် focal point ကို ရွေးချယ်ရန် Preview ပေါ်ရှိ စက်ဝိုင်းကို နှိပ်ပါ သို့မဟုတ် ဖိဆွဲပါ။", "upload_modal.preparing_ocr": "OCR ပြင်ဆင်နေသည်…", - "upload_modal.preview_label": "Preview ({ratio})", + "upload_modal.preview_label": "({ratio}) အစမ်းကြည့်ရှုရန်", "upload_progress.label": "တင်နေသည်...", "upload_progress.processing": "လုပ်ဆောင်နေသည်…", "video.close": "ဗီဒီယိုကို ပိတ်ပါ", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 91ca4ebf24..bb33a6f0c5 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -20,7 +20,7 @@ "account.blocked": "Geblokkeerd", "account.browse_more_on_origin_server": "Zie meer op het originele profiel", "account.cancel_follow_request": "Volgverzoek annuleren", - "account.direct": "@{name} een direct bericht sturen", + "account.direct": "@{name} een privébericht sturen", "account.disable_notifications": "Geen melding meer geven wanneer @{name} een bericht plaatst", "account.domain_blocked": "Domein geblokkeerd", "account.edit_profile": "Profiel bewerken", @@ -55,7 +55,7 @@ "account.report": "@{name} rapporteren", "account.requested": "Wachten op goedkeuring. Klik om het volgverzoek te annuleren", "account.requested_follow": "{name} wil je graag volgen", - "account.share": "Profiel van @{name} delen", + "account.share": "Account van @{name} delen", "account.show_reblogs": "Boosts van @{name} tonen", "account.statuses_counter": "{count, plural, one {{counter} bericht} other {{counter} berichten}}", "account.unblock": "@{name} deblokkeren", @@ -102,7 +102,7 @@ "column.blocks": "Geblokkeerde gebruikers", "column.bookmarks": "Bladwijzers", "column.community": "Lokale tijdlijn", - "column.direct": "Directe berichten", + "column.direct": "Privéberichten", "column.directory": "Gebruikersgids", "column.domain_blocks": "Geblokkeerde domeinen", "column.favourites": "Favorieten", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Je hebt niet-opgeslagen wijzigingen in de mediabeschrijving of voorvertonning, wil je deze toch weggooien?", "confirmations.domain_block.confirm": "Blokkeer alles van deze server", "confirmations.domain_block.message": "Weet je het echt heel erg zeker dat je alles van {domain} wilt blokkeren? 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.edit.confirm": "Bewerken", + "confirmations.edit.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.logout.confirm": "Uitloggen", "confirmations.logout.message": "Weet je zeker dat je wilt uitloggen?", "confirmations.mute.confirm": "Negeren", @@ -214,7 +216,7 @@ "empty_column.blocks": "Jij hebt nog geen enkele gebruiker geblokkeerd.", "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.direct": "Je hebt nog geen directe berichten. Wanneer je er een verzend of ontvangt, komt deze hier te staan.", + "empty_column.direct": "Je hebt nog geen privéberichten. Wanneer je er een verstuurt of ontvangt, zullen deze hier verschijnen.", "empty_column.domain_blocks": "Er zijn nog geen geblokkeerde domeinen.", "empty_column.explore_statuses": "Momenteel zijn er geen trends. Kom later terug!", "empty_column.favourited_statuses": "Jij hebt nog geen favoriete berichten. Wanneer je een bericht als favoriet markeert, valt deze hier te zien.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Op één van de kolommen focussen", "keyboard_shortcuts.compose": "Tekstveld om een bericht te schrijven focussen", "keyboard_shortcuts.description": "Omschrijving", - "keyboard_shortcuts.direct": "Directe berichten tonen", + "keyboard_shortcuts.direct": "om de kolom met privéberichten te openen", "keyboard_shortcuts.down": "Naar beneden in de lijst bewegen", "keyboard_shortcuts.enter": "Volledig bericht tonen", "keyboard_shortcuts.favourite": "Als favoriet markeren", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Bladwijzers", "navigation_bar.community_timeline": "Lokale tijdlijn", "navigation_bar.compose": "Nieuw bericht schrijven", - "navigation_bar.direct": "Directe berichten", + "navigation_bar.direct": "Privéberichten", "navigation_bar.discover": "Ontdekken", "navigation_bar.domain_blocks": "Geblokkeerde domeinen", "navigation_bar.edit_profile": "Profiel bewerken", @@ -454,7 +456,7 @@ "poll_button.remove_poll": "Poll verwijderen", "privacy.change": "Zichtbaarheid van bericht aanpassen", "privacy.direct.long": "Alleen aan vermelde gebruikers tonen", - "privacy.direct.short": "Direct bericht", + "privacy.direct.short": "Privébericht", "privacy.private.long": "Alleen aan volgers tonen", "privacy.private.short": "Alleen volgers", "privacy.public.long": "Voor iedereen zichtbaar", @@ -485,7 +487,7 @@ "report.categories.violation": "De inhoud overtreedt een of meerdere serverregels", "report.category.subtitle": "Kies wat het beste overeenkomt", "report.category.title": "Vertel ons wat er met dit {type} aan de hand is", - "report.category.title_account": "profiel", + "report.category.title_account": "account", "report.category.title_status": "bericht", "report.close": "Klaar", "report.comment.title": "Zijn er nog andere dingen waarvan je denkt dat wij dat moeten weten?", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Overtreden regel(s)", "report_notification.open": "Rapportage openen", + "search.no_recent_searches": "Geen recente zoekopdrachten", "search.placeholder": "Zoeken", + "search.quick_action.account_search": "Accounts die overeenkomen met {x}", + "search.quick_action.go_to_account": "Ga naar account {x}", + "search.quick_action.go_to_hashtag": "Ga naar hashtag {x}", + "search.quick_action.open_url": "URL in Mastodon openen", + "search.quick_action.status_search": "Berichten die overeenkomen met {x}", "search.search_or_paste": "Zoek of voer een URL in", - "search_popout.search_format": "Geavanceerd zoeken", - "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": "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_popout.quick_actions": "Snelle acties", + "search_popout.recent": "Recente zoekopdrachten", + "search_results.accounts": "Accounts", "search_results.all": "Alles", "search_results.hashtags": "Hashtags", "search_results.nothing_found": "Deze zoektermen leveren geen resultaat op", @@ -555,11 +559,12 @@ "status.copy": "Link naar bericht kopiëren", "status.delete": "Verwijderen", "status.detailed_status": "Uitgebreide gespreksweergave", - "status.direct": "@{name} een direct bericht sturen", + "status.direct": "@{name} een privébericht sturen", + "status.direct_indicator": "Privébericht", "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.embed": "Embedden", "status.favourite": "Favoriet", "status.filter": "Dit bericht filteren", "status.filtered": "Gefilterd", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 33026253a1..40b59ac4df 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -20,7 +20,7 @@ "account.blocked": "Blokkert", "account.browse_more_on_origin_server": "Sjå gjennom meir på den opphavlege profilen", "account.cancel_follow_request": "Trekk attende fylgeførespurnad", - "account.direct": "Send melding til @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Slutt å varsle meg når @{name} skriv innlegg", "account.domain_blocked": "Domenet er sperra", "account.edit_profile": "Rediger profil", @@ -47,7 +47,7 @@ "account.mention": "Nemn @{name}", "account.moved_to": "{name} seier at deira nye konto no er:", "account.mute": "Målbind @{name}", - "account.mute_notifications": "Målbind varsel frå @{name}", + "account.mute_notifications": "Demp varsel frå @{name}", "account.muted": "Målbunden", "account.open_original_page": "Opne originalsida", "account.posts": "Tut", @@ -102,7 +102,7 @@ "column.blocks": "Blokkerte brukarar", "column.bookmarks": "Bokmerke", "column.community": "Lokal tidsline", - "column.direct": "Direktemeldingar", + "column.direct": "Private mentions", "column.directory": "Sjå gjennom profilar", "column.domain_blocks": "Skjulte domene", "column.favourites": "Favorittar", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Du har ulagra endringar i mediaskildringa eller førehandsvisinga. Vil du forkaste dei likevel?", "confirmations.domain_block.confirm": "Skjul alt frå domenet", "confirmations.domain_block.message": "Er du heilt, heilt sikker på at du vil skjula heile {domain}? I dei fleste tilfelle er det godt nok og føretrekt med nokre få målretta blokkeringar eller målbindingar. Du kjem ikkje til å sjå innhald frå domenet i fødererte tidsliner eller i varsla dine. Fylgjarane dine frå domenet vert fjerna.", + "confirmations.edit.confirm": "Rediger", + "confirmations.edit.message": "Å redigera no vil overskriva den meldinga du er i ferd med å skriva. Er du sikker på at du vil halda fram?", "confirmations.logout.confirm": "Logg ut", "confirmations.logout.message": "Er du sikker på at du vil logga ut?", "confirmations.mute.confirm": "Målbind", @@ -214,14 +216,14 @@ "empty_column.blocks": "Du har ikkje blokkert nokon enno.", "empty_column.bookmarked_statuses": "Du har ikkje lagra noko bokmerke enno. Når du set bokmerke på eit innlegg, dukkar det opp her.", "empty_column.community": "Den lokale tidslina er tom. Skriv noko offentleg å få ballen til å rulle!", - "empty_column.direct": "Du har ingen direktemeldingar enno. Når du sender eller får ei, vil ho dukka opp her.", + "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Det er ingen skjulte domene til no.", "empty_column.explore_statuses": "Ingenting er i støytet nett no. Prøv igjen seinare!", "empty_column.favourited_statuses": "Du har ingen favoritt-tut ennå. Når du merkjer eit 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": "Det ser ikkje ut til at noko forslag kunne genererast til deg. Prøv søkjefunksjonen for å finna folk du kjenner, eller utforsk populære emneknaggar.", "empty_column.follow_requests": "Du har ingen følgjeførespurnadar ennå. Når du får ein, så vil den dukke opp her.", - "empty_column.followed_tags": "You have not followed any hashtags yet. When you do, they will show up here.", + "empty_column.followed_tags": "Du fylgjer ingen emneknaggar enno. Når du gjer det, vil dei syna her.", "empty_column.hashtag": "Det er ingenting i denne emneknaggen enno.", "empty_column.home": "Heime-tidslina di er tom! Følg fleire folk for å fylle ho med innhald. {suggestions}", "empty_column.home.suggestions": "Sjå nokre forslag", @@ -264,7 +266,7 @@ "follow_request.authorize": "Autoriser", "follow_request.reject": "Avvis", "follow_requests.unlocked_explanation": "Sjølv om kontoen din ikkje er låst tenkte dei som driv {domain} at du kanskje ville gå gjennom førespurnadar frå desse kontoane manuelt.", - "followed_tags": "Followed hashtags", + "followed_tags": "Fylgde emneknaggar", "footer.about": "Om", "footer.directory": "Profilmappe", "footer.get_app": "Få appen", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Fokuskolonne", "keyboard_shortcuts.compose": "for å fokusera tekstfeltet for skriving", "keyboard_shortcuts.description": "Skildring", - "keyboard_shortcuts.direct": "for å opna direktemeldingskolonna", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "Flytt nedover i lista", "keyboard_shortcuts.enter": "Opne innlegg", "keyboard_shortcuts.favourite": "Merk som favoritt", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Bokmerke", "navigation_bar.community_timeline": "Lokal tidsline", "navigation_bar.compose": "Lag nytt tut", - "navigation_bar.direct": "Direktemeldingar", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Oppdag", "navigation_bar.domain_blocks": "Skjulte domene", "navigation_bar.edit_profile": "Rediger profil", @@ -382,7 +384,7 @@ "navigation_bar.favourites": "Favorittar", "navigation_bar.filters": "Målbundne ord", "navigation_bar.follow_requests": "Fylgjeførespurnader", - "navigation_bar.followed_tags": "Fulgte emneknagger", + "navigation_bar.followed_tags": "Fylgde emneknaggar", "navigation_bar.follows_and_followers": "Fylgje og fylgjarar", "navigation_bar.lists": "Lister", "navigation_bar.logout": "Logg ut", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Søppelpost", "report_notification.categories.violation": "Regelbrot", "report_notification.open": "Opne rapport", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Søk", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Søk eller lim inn URL", - "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.", - "search_popout.tips.hashtag": "emneknagg", - "search_popout.tips.status": "innlegg", - "search_popout.tips.text": "Enkel tekst returnerer samsvarande visningsnamn, brukarnamn og emneknaggar", - "search_popout.tips.user": "brukar", - "search_results.accounts": "Folk", + "search_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "Alt", "search_results.hashtags": "Emneknaggar", "search_results.nothing_found": "Kunne ikkje finne noko for desse søkeorda", @@ -544,7 +548,7 @@ "server_banner.server_stats": "Tenarstatistikk:", "sign_in_banner.create_account": "Opprett konto", "sign_in_banner.sign_in": "Logg inn", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts. You can also interact from your account on a different server.", + "sign_in_banner.text": "Logg inn for å fylgja profilar eller emneknaggar, og for å lika, dela og svara på innlegg. Du kan òg samhandla med aktivitet på denne tenaren frå kontoar på andre tenarar.", "status.admin_account": "Opne moderasjonsgrensesnitt for @{name}", "status.admin_domain": "Opna moderatorgrensesnittet for {domain}", "status.admin_status": "Opne denne statusen i moderasjonsgrensesnittet", @@ -555,7 +559,8 @@ "status.copy": "Kopier lenke til status", "status.delete": "Slett", "status.detailed_status": "Detaljert samtalevisning", - "status.direct": "Send melding til @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Rediger", "status.edited": "Redigert {date}", "status.edited_x_times": "Redigert {count, plural, one {{count} gong} other {{count} gonger}}", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 0cc3f121b4..a03c51b0ab 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -20,7 +20,7 @@ "account.blocked": "Blokkert", "account.browse_more_on_origin_server": "Bla mer på den opprinnelige profilen", "account.cancel_follow_request": "Trekk tilbake følge-forespørselen", - "account.direct": "Send direktemelding til @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Slutt å varsle meg når @{name} legger ut innlegg", "account.domain_blocked": "Domene blokkert", "account.edit_profile": "Rediger profil", @@ -102,7 +102,7 @@ "column.blocks": "Blokkerte brukere", "column.bookmarks": "Bokmerker", "column.community": "Lokal tidslinje", - "column.direct": "Direktemeldinger", + "column.direct": "Private mentions", "column.directory": "Bla gjennom profiler", "column.domain_blocks": "Skjulte domener", "column.favourites": "Favoritter", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Du har ulagrede endringer i mediebeskrivelsen eller i forhåndsvisning, forkast dem likevel?", "confirmations.domain_block.confirm": "Skjul alt fra domenet", "confirmations.domain_block.message": "Er du sikker på at du vil skjule hele domenet {domain}? I de fleste tilfeller er det bedre med målrettet blokkering eller demping.", + "confirmations.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Logg ut", "confirmations.logout.message": "Er du sikker på at du vil logge ut?", "confirmations.mute.confirm": "Demp", @@ -214,7 +216,7 @@ "empty_column.blocks": "Du har ikke blokkert noen brukere enda.", "empty_column.bookmarked_statuses": "Du har ikke noen bokmerkede innlegg enda. Når du har noen bokmerkede innlegg, vil de 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. Etter du har sendt eller mottatt en, så vil den dukke opp her.", + "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Det er ingen skjulte domener enda.", "empty_column.explore_statuses": "Ingenting er populært akkurat nå. Prøv igjen senere!", "empty_column.favourited_statuses": "Du har ikke noen favorittinnlegg enda. Når du favorittmarkerer et inlegg, vil det dukke opp her.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Gå til en kolonne", "keyboard_shortcuts.compose": "Gå til komponeringsfeltet", "keyboard_shortcuts.description": "Beskrivelse", - "keyboard_shortcuts.direct": "for å åpne kolonne med direktemeldinger", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "Flytt nedover i listen", "keyboard_shortcuts.enter": "Åpne innlegg", "keyboard_shortcuts.favourite": "Marker innlegg som favoritt", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Bokmerker", "navigation_bar.community_timeline": "Lokal tidslinje", "navigation_bar.compose": "Skriv et nytt innlegg", - "navigation_bar.direct": "Direktemeldinger", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Oppdag", "navigation_bar.domain_blocks": "Skjulte domener", "navigation_bar.edit_profile": "Rediger profil", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Søppelpost", "report_notification.categories.violation": "Regelbrudd", "report_notification.open": "Åpne rapport", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Søk", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Søk eller lim inn URL", - "search_popout.search_format": "Avansert søkeformat", - "search_popout.tips.full_text": "Enkel tekst gir resultater for innlegg du har skrevet, favorittmarkert, fremhevet, eller har blitt nevnt i, i tillegg til samsvarende brukernavn, visningsnavn og emneknagger.", - "search_popout.tips.hashtag": "emneknagg", - "search_popout.tips.status": "status", - "search_popout.tips.text": "Enkel tekst returnerer matchende visningsnavn, brukernavn og emneknagger", - "search_popout.tips.user": "bruker", - "search_results.accounts": "Folk", + "search_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "Alle", "search_results.hashtags": "Emneknagger", "search_results.nothing_found": "Fant ikke noe for disse søkeordene", @@ -555,7 +559,8 @@ "status.copy": "Kopier lenken til innlegget", "status.delete": "Slett", "status.detailed_status": "Detaljert samtalevisning", - "status.direct": "Send direktemelding til @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Rediger", "status.edited": "Redigert {date}", "status.edited_x_times": "Redigert {count, plural,one {{count} gang} other {{count} ganger}}", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 4bce24d073..c333c2ecee 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -20,7 +20,7 @@ "account.blocked": "Blocat", "account.browse_more_on_origin_server": "Navigar sul perfil original", "account.cancel_follow_request": "Retirar la demanda d’abonament", - "account.direct": "Escriure un MP a @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Quitar de m’avisar quand @{name} publica quicòm", "account.domain_blocked": "Domeni amagat", "account.edit_profile": "Modificar lo perfil", @@ -102,7 +102,7 @@ "column.blocks": "Personas blocadas", "column.bookmarks": "Marcadors", "column.community": "Flux public local", - "column.direct": "Messatges dirèctes", + "column.direct": "Private mentions", "column.directory": "Percórrer los perfils", "column.domain_blocks": "Domenis resconduts", "column.favourites": "Favorits", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "confirmations.domain_block.confirm": "Amagar tot lo domeni", "confirmations.domain_block.message": "Volètz vertadièrament blocar complètament {domain} ? De còps cal pas que blocar o rescondre unas personas solament.\nVeiretz pas cap de contengut d’aquel domeni dins cap de flux public o dins vòstras notificacions. Vòstres seguidors d’aquel domeni seràn levats.", + "confirmations.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Desconnexion", "confirmations.logout.message": "Volètz vertadièrament vos desconnectar ?", "confirmations.mute.confirm": "Rescondre", @@ -214,7 +216,7 @@ "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.direct": "You don't have any private mentions yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "I a pas encara cap de domeni amagat.", "empty_column.explore_statuses": "I a pas res en tendéncia pel moment. Tornatz mai tard !", "empty_column.favourited_statuses": "Avètz pas encara cap de tut favorit. Quand n’auretz un, apareisserà aquí.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "centrar un estatut a una colomna", "keyboard_shortcuts.compose": "anar al camp tèxte", "keyboard_shortcuts.description": "descripcion", - "keyboard_shortcuts.direct": "dobrir la colomna de messatges dirèctes", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "far davalar dins la lista", "keyboard_shortcuts.enter": "dobrir los estatuts", "keyboard_shortcuts.favourite": "apondre als favorits", @@ -374,7 +376,7 @@ "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.direct": "Private mentions", "navigation_bar.discover": "Trobar", "navigation_bar.domain_blocks": "Domenis resconduts", "navigation_bar.edit_profile": "Modificar lo perfil", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Messatge indesirable", "report_notification.categories.violation": "Violacion de las règlas", "report_notification.open": "Dobrir lo senhalament", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Recercar", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Recercar o picar una URL", - "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.", - "search_popout.tips.hashtag": "etiqueta", - "search_popout.tips.status": "estatut", - "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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "Tot", "search_results.hashtags": "Etiquetas", "search_results.nothing_found": "Cap de resultat per aquestes tèrmes de recèrca", @@ -555,7 +559,8 @@ "status.copy": "Copiar lo ligam de l’estatut", "status.delete": "Escafar", "status.detailed_status": "Vista detalhada de la convèrsa", - "status.direct": "Messatge per @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Modificar", "status.edited": "Modificat {date}", "status.edited_x_times": "Modificat {count, plural, un {{count} còp} other {{count} còps}}", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index e22ab1f22f..d330c136ca 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -20,7 +20,7 @@ "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Browse more on the original profile", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "Direct message @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain blocked", "account.edit_profile": "Edit profile", @@ -102,7 +102,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.direct": "Private mentions", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "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.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Log out", "confirmations.logout.message": "Are you sure you want to log out?", "confirmations.mute.confirm": "Mute", @@ -214,7 +216,7 @@ "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.direct": "You don't have any private mentions yet. When you send or receive one, 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.", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Search", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Search or paste URL", - "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.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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "All", "search_results.hashtags": "Hashtags", "search_results.nothing_found": "Could not find anything for these search terms", @@ -555,7 +559,8 @@ "status.copy": "Copy link to status", "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", - "status.direct": "Direct message @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Edit", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 50966c266e..77d1d7c853 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -17,10 +17,10 @@ "account.badges.group": "Grupa", "account.block": "Blokuj @{name}", "account.block_domain": "Blokuj wszystko z {domain}", - "account.blocked": "Zablokowany(-a)", + "account.blocked": "Zablokowano", "account.browse_more_on_origin_server": "Zobacz więcej na oryginalnym profilu", "account.cancel_follow_request": "Wycofaj żądanie obserwowania", - "account.direct": "Wyślij wiadomość bezpośrednią do @{name}", + "account.direct": "Prywatna wzmianka @{name}", "account.disable_notifications": "Przestań powiadamiać mnie o wpisach @{name}", "account.domain_blocked": "Ukryto domenę", "account.edit_profile": "Edytuj profil", @@ -102,7 +102,7 @@ "column.blocks": "Zablokowani użytkownicy", "column.bookmarks": "Zakładki", "column.community": "Lokalna oś czasu", - "column.direct": "Wiadomości bezpośrednie", + "column.direct": "Prywatne wzmianki", "column.directory": "Przeglądaj profile", "column.domain_blocks": "Ukryte domeny", "column.favourites": "Ulubione", @@ -120,10 +120,6 @@ "column_header.pin": "Przypnij", "column_header.show_settings": "Pokaż ustawienia", "column_header.unpin": "Cofnij przypięcie", - "column.heading": "Różne", - "column.subheading": "Różne opcje", - "column_subheading.lists": "Listy", - "column_subheading.navigation": "Nawigacja", "column_subheading.settings": "Ustawienia", "community.column_settings.local_only": "Tylko Lokalne", "community.column_settings.media_only": "Tylko multimedia", @@ -166,6 +162,8 @@ "confirmations.discard_edit_media.message": "Masz niezapisane zmiany w opisie lub podglądzie, odrzucić je mimo to?", "confirmations.domain_block.confirm": "Ukryj wszystko z domeny", "confirmations.domain_block.message": "Czy na pewno chcesz zablokować całą domenę {domain}? Zwykle lepszym rozwiązaniem jest blokada lub wyciszenie kilku użytkowników.", + "confirmations.edit.confirm": "Edytuj", + "confirmations.edit.message": "Edytowanie wpisu nadpisze wiadomość, którą obecnie piszesz. Czy na pewno chcesz to zrobić?", "confirmations.logout.confirm": "Wyloguj", "confirmations.logout.message": "Czy na pewno chcesz się wylogować?", "confirmations.mute.confirm": "Wycisz", @@ -218,7 +216,7 @@ "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.direct": "Nie masz jeszcze żadnych prywatnych wzmianek. Kiedy je wyślesz lub otrzymasz, pojawią się 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.", @@ -316,7 +314,7 @@ "keyboard_shortcuts.column": "aby przejść do wpisu z jednej z kolumn", "keyboard_shortcuts.compose": "aby przejść do pola tworzenia wpisu", "keyboard_shortcuts.description": "Opis", - "keyboard_shortcuts.direct": "aby otworzyć kolumnę wiadomości bezpośrednich", + "keyboard_shortcuts.direct": "aby otworzyć kolumnę z wzmiankami prywatnymi", "keyboard_shortcuts.down": "aby przejść na dół listy", "keyboard_shortcuts.enter": "aby otworzyć wpis", "keyboard_shortcuts.favourite": "aby dodać do ulubionych", @@ -378,7 +376,7 @@ "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.direct": "Prywatne wzmianki", "navigation_bar.discover": "Odkrywaj", "navigation_bar.domain_blocks": "Ukryte domeny", "navigation_bar.edit_profile": "Edytuj profil", @@ -390,7 +388,6 @@ "navigation_bar.follows_and_followers": "Obserwowani i obserwujący", "navigation_bar.lists": "Listy", "navigation_bar.logout": "Wyloguj", - "navigation_bar.misc": "Różne", "navigation_bar.mutes": "Wyciszeni użytkownicy", "navigation_bar.personal": "Osobiste", "navigation_bar.pins": "Przypięte wpisy", @@ -407,7 +404,7 @@ "notification.mention": "Wspomniało o Tobie przez {name}", "notification.own_poll": "Twoje głosowanie zakończyło się", "notification.poll": "Głosowanie w którym brałeś(-aś) udział zakończyło się", - "notification.reblog": "Podbito Twój post przez {name}", + "notification.reblog": "Twój post został podbity przez {name}", "notification.status": "Właśnie umieszczono wpis przez {name}", "notification.update": "{name} edytował post", "notifications.clear": "Wyczyść powiadomienia", @@ -525,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Naruszenie zasad", "report_notification.open": "Otwórz raport", + "search.no_recent_searches": "Brak ostatnich wyszukiwań", "search.placeholder": "Szukaj", + "search.quick_action.account_search": "Profile pasujące do {x}", + "search.quick_action.go_to_account": "Przejdź do profilu {x}", + "search.quick_action.go_to_hashtag": "Przejdź do hasztaga {x}", + "search.quick_action.open_url": "Otwórz adres URL w Mastodonie", + "search.quick_action.status_search": "Wpisy pasujące do {x}", "search.search_or_paste": "Wyszukaj lub wklej adres", - "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 hasztagów", - "search_popout.tips.user": "użytkownik", - "search_results.accounts": "Ludzie", + "search_popout.quick_actions": "Szybkie akcje", + "search_popout.recent": "Ostatnie wyszukiwania", + "search_results.accounts": "Profile", "search_results.all": "Wszystkie", "search_results.hashtags": "Hasztagi", "search_results.nothing_found": "Nie znaleziono innych wyników dla tego wyszukania", @@ -560,7 +559,8 @@ "status.copy": "Skopiuj odnośnik do wpisu", "status.delete": "Usuń", "status.detailed_status": "Szczegółowy widok konwersacji", - "status.direct": "Wyślij wiadomość bezpośrednią do @{name}", + "status.direct": "Prywatna wzmianka @{name}", + "status.direct_indicator": "Prywatna wzmianka", "status.edit": "Edytuj", "status.edited": "Edytowano {date}", "status.edited_x_times": "Edytowano {count, plural, one {{count} raz} other {{count} razy}}", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index f2e4a365e3..d10c9a8f75 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -20,7 +20,7 @@ "account.blocked": "Bloqueado", "account.browse_more_on_origin_server": "Veja mais no perfil original", "account.cancel_follow_request": "Cancelar solicitação para seguir", - "account.direct": "Enviar toot direto para @{name}", + "account.direct": "Mencione em privado @{name}", "account.disable_notifications": "Cancelar notificações de @{name}", "account.domain_blocked": "Domínio bloqueado", "account.edit_profile": "Editar perfil", @@ -102,7 +102,7 @@ "column.blocks": "Usuários bloqueados", "column.bookmarks": "Salvos", "column.community": "Linha local", - "column.direct": "Mensagens diretas", + "column.direct": "Menções privadas", "column.directory": "Explorar perfis", "column.domain_blocks": "Domínios bloqueados", "column.favourites": "Favoritos", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Há mudanças não salvas na descrição ou pré-visualização da mídia. Descartar assim mesmo?", "confirmations.domain_block.confirm": "Bloquear instância", "confirmations.domain_block.message": "Você tem certeza de que deseja bloquear tudo de {domain}? Você não verá mais o conteúdo desta instância em nenhuma linha do tempo pública ou nas suas notificações. Seus seguidores desta instância serão removidos.", + "confirmations.edit.confirm": "Editar", + "confirmations.edit.message": "Editar agora irá substituir a mensagem que está sendo criando. Tem certeza de que deseja continuar?", "confirmations.logout.confirm": "Sair", "confirmations.logout.message": "Você tem certeza de que deseja sair?", "confirmations.mute.confirm": "Silenciar", @@ -214,7 +216,7 @@ "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": "Você ainda não tem mensagens diretas. Quando você enviar ou receber uma, será exibida aqui.", + "empty_column.direct": "Você ainda não tem mensagens privadas. Quando você enviar ou receber uma, será exibida aqui.", "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.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "focar na coluna", "keyboard_shortcuts.compose": "focar no compositor", "keyboard_shortcuts.description": "Descrição", - "keyboard_shortcuts.direct": "para abrir a coluna de mensagens diretas", + "keyboard_shortcuts.direct": "para abrir a coluna de menções privadas", "keyboard_shortcuts.down": "mover para baixo", "keyboard_shortcuts.enter": "abrir toot", "keyboard_shortcuts.favourite": "favoritar toot", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Salvos", "navigation_bar.community_timeline": "Linha do tempo local", "navigation_bar.compose": "Compor novo toot", - "navigation_bar.direct": "Mensagens diretas", + "navigation_bar.direct": "Menções privadas", "navigation_bar.discover": "Descobrir", "navigation_bar.domain_blocks": "Domínios bloqueados", "navigation_bar.edit_profile": "Editar perfil", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Violação de regra", "report_notification.open": "Abrir denúncia", + "search.no_recent_searches": "Nenhuma busca recente", "search.placeholder": "Pesquisar", + "search.quick_action.account_search": "Perfis correspondentes a {x}", + "search.quick_action.go_to_account": "Ir para a página do perfil {x}", + "search.quick_action.go_to_hashtag": "Ir para a hashtag {x}", + "search.quick_action.open_url": "Abrir link no Mastodon", + "search.quick_action.status_search": "Publicações correspondentes a {x}", "search.search_or_paste": "Buscar ou colar URL", - "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.", - "search_popout.tips.hashtag": "hashtag", - "search_popout.tips.status": "toot", - "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_popout.quick_actions": "Ações rápidas", + "search_popout.recent": "Buscas Recentes", + "search_results.accounts": "Perfis", "search_results.all": "Tudo", "search_results.hashtags": "Hashtags", "search_results.nothing_found": "Não foi possível encontrar nada para estes termos de busca", @@ -555,7 +559,8 @@ "status.copy": "Copiar link", "status.delete": "Excluir", "status.detailed_status": "Visão detalhada da conversa", - "status.direct": "Enviar toot direto para @{name}", + "status.direct": "Mencione em privado @{name}", + "status.direct_indicator": "Menção privada", "status.edit": "Editar", "status.edited": "Editado em {date}", "status.edited_x_times": "Editado {count, plural, one {{count} hora} other {{count} vezes}}", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index ae0a2df318..e93ff73cf7 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -20,7 +20,7 @@ "account.blocked": "Bloqueado(a)", "account.browse_more_on_origin_server": "Encontrar mais no perfil original", "account.cancel_follow_request": "Retirar pedido para seguir", - "account.direct": "Enviar mensagem direta para @{name}", + "account.direct": "Mencionar @{name} em privado", "account.disable_notifications": "Parar de me notificar das publicações de @{name}", "account.domain_blocked": "Domínio bloqueado", "account.edit_profile": "Editar perfil", @@ -102,7 +102,7 @@ "column.blocks": "Utilizadores Bloqueados", "column.bookmarks": "Marcadores", "column.community": "Cronologia local", - "column.direct": "Mensagens diretas", + "column.direct": "Menções privadas", "column.directory": "Explorar perfis", "column.domain_blocks": "Domínios bloqueados", "column.favourites": "Preferidos", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Tem alterações por guardar na descrição ou pré-visualização do conteúdo. Descartar mesmo assim?", "confirmations.domain_block.confirm": "Esconder tudo deste domínio", "confirmations.domain_block.message": "De certeza que queres bloquear completamente o domínio {domain}? Na maioria dos casos, silenciar ou bloquear alguns utilizadores é suficiente e é o recomendado. Não irás ver conteúdo daquele domínio em cronologia alguma nem nas tuas notificações. Os teus seguidores daquele domínio serão removidos.", + "confirmations.edit.confirm": "Editar", + "confirmations.edit.message": "Editar agora irá sobrescrever a mensagem que está a compor. Tem a certeza de que deseja continuar?", "confirmations.logout.confirm": "Terminar sessão", "confirmations.logout.message": "Tem a certeza de que quer terminar a sessão?", "confirmations.mute.confirm": "Silenciar", @@ -214,7 +216,7 @@ "empty_column.blocks": "Ainda não bloqueaste qualquer utilizador.", "empty_column.bookmarked_statuses": "Ainda não adicionou nenhuma publicação aos itens salvos. Quando adicionar, eles serão exibidos aqui.", "empty_column.community": "A cronologia local está vazia. Escreve algo público para começar!", - "empty_column.direct": "Ainda não tem qualquer mensagem direta. Quando enviar ou receber alguma, ela irá aparecer aqui.", + "empty_column.direct": "Ainda não tem qualquer menção privada. Quando enviar ou receber uma, ela irá aparecer aqui.", "empty_column.domain_blocks": "Ainda não há qualquer domínio escondido.", "empty_column.explore_statuses": "Nada está em alta no momento. Volte mais tarde!", "empty_column.favourited_statuses": "Ainda não tens quaisquer publicações nos marcadores. Quando tiveres, aparecerão aqui.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "para focar uma publicação numa das colunas", "keyboard_shortcuts.compose": "para focar na área de publicação", "keyboard_shortcuts.description": "Descrição", - "keyboard_shortcuts.direct": "para abrir a coluna das mensagens diretas", + "keyboard_shortcuts.direct": "para abrir a coluna de menções privadas", "keyboard_shortcuts.down": "para mover para baixo na lista", "keyboard_shortcuts.enter": "para expandir uma publicação", "keyboard_shortcuts.favourite": "Juntar aos marcadores", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Cronologia local", "navigation_bar.compose": "Escrever novo toot", - "navigation_bar.direct": "Mensagens diretas", + "navigation_bar.direct": "Menções privadas", "navigation_bar.discover": "Descobrir", "navigation_bar.domain_blocks": "Domínios escondidos", "navigation_bar.edit_profile": "Editar perfil", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Violação de regra", "report_notification.open": "Abrir denúncia", + "search.no_recent_searches": "Nenhuma pesquisa recente", "search.placeholder": "Pesquisar", + "search.quick_action.account_search": "Perfis com correspondência a {x}", + "search.quick_action.go_to_account": "Ir para o perfil {x}", + "search.quick_action.go_to_hashtag": "Ir para a hashtag {x}", + "search.quick_action.open_url": "Abrir ligação no Mastodon", + "search.quick_action.status_search": "Publicações com correspondência a {x}", "search.search_or_paste": "Pesquisar ou introduzir URL", - "search_popout.search_format": "Formato avançado de pesquisa", - "search_popout.tips.full_text": "Texto simples devolve publicações que escreveu, marcou, reforçou, ou em que foi mencionado, tal como nomes de utilizador, alcunhas e #etiquetas.", - "search_popout.tips.hashtag": "etiqueta", - "search_popout.tips.status": "publicação", - "search_popout.tips.text": "O texto simples retorna a correspondência de nomes, utilizadores e #etiquetas", - "search_popout.tips.user": "utilizador", - "search_results.accounts": "Pessoas", + "search_popout.quick_actions": "Ações rápidas", + "search_popout.recent": "Pesquisas recentes", + "search_results.accounts": "Perfis", "search_results.all": "Tudo", "search_results.hashtags": "Etiquetas", "search_results.nothing_found": "Não foi possível encontrar resultados para as expressões pesquisadas", @@ -555,7 +559,8 @@ "status.copy": "Copiar ligação para a publicação", "status.delete": "Eliminar", "status.detailed_status": "Vista pormenorizada da conversa", - "status.direct": "Mensagem direta @{name}", + "status.direct": "Mencionar @{name} em privado", + "status.direct_indicator": "Menção privada", "status.edit": "Editar", "status.edited": "Editado em {date}", "status.edited_x_times": "Editado {count, plural,one {{count} vez} other {{count} vezes}}", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index 787727d56d..aa6710685c 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -20,7 +20,7 @@ "account.blocked": "Blocat", "account.browse_more_on_origin_server": "Vezi mai multe pe profilul original", "account.cancel_follow_request": "Retrage cererea de urmărire", - "account.direct": "Trimite-i un mesaj direct lui @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Nu îmi mai trimite notificări când postează @{name}", "account.domain_blocked": "Domeniu blocat", "account.edit_profile": "Modifică profilul", @@ -102,7 +102,7 @@ "column.blocks": "Utilizatori blocați", "column.bookmarks": "Marcaje", "column.community": "Cronologie locală", - "column.direct": "Mesaje directe", + "column.direct": "Private mentions", "column.directory": "Explorează profiluri", "column.domain_blocks": "Domenii blocate", "column.favourites": "Favorite", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Ai modificări nesalvate în descrierea sau previzualizarea media, renunți oricum?", "confirmations.domain_block.confirm": "Blochează întregul domeniu", "confirmations.domain_block.message": "Ești absolut sigur că vrei să blochezi tot domeniul {domain}? În cele mai multe cazuri, raportarea sau blocarea anumitor lucruri este suficientă și de preferat. Nu vei mai vedea niciun conținut din acest domeniu în vreun flux public sau în vreo notificare. Abonații tăi din acest domeniu vor fi eliminați.", + "confirmations.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Deconectare", "confirmations.logout.message": "Ești sigur că vrei să te deconectezi?", "confirmations.mute.confirm": "Ignoră", @@ -214,7 +216,7 @@ "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.direct": "You don't have any private mentions yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Momentan nu există domenii blocate.", "empty_column.explore_statuses": "Nimic nu figurează în tendințe în acest moment. Verifică din nou mai târziu!", "empty_column.favourited_statuses": "Momentan nu ai nicio postare favorită. Când vei adăuga una, va apărea aici.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Focalizează pe coloană", "keyboard_shortcuts.compose": "Focalizează pe zona de text", "keyboard_shortcuts.description": "Descriere", - "keyboard_shortcuts.direct": "pentru a deschide coloana cu mesaje directe", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "Coboară în listă", "keyboard_shortcuts.enter": "Deschide postarea", "keyboard_shortcuts.favourite": "Adaugă postarea la favorite", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Marcaje", "navigation_bar.community_timeline": "Cronologie locală", "navigation_bar.compose": "Compune o nouă postare", - "navigation_bar.direct": "Mesaje directe", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Descoperă", "navigation_bar.domain_blocks": "Domenii blocate", "navigation_bar.edit_profile": "Modifică profilul", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Mesaje nedorite", "report_notification.categories.violation": "Încălcare a regulilor", "report_notification.open": "Deschide raportarea", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Caută", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Caută sau lipește un URL", - "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.", - "search_popout.tips.hashtag": "hashtag", - "search_popout.tips.status": "stare", - "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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "Toate", "search_results.hashtags": "Hashtag-uri", "search_results.nothing_found": "Nu am putut găsi nimic care să corespundă termenilor de căutare", @@ -555,7 +559,8 @@ "status.copy": "Copiează link-ul postării", "status.delete": "Șterge", "status.detailed_status": "Conversația detaliată", - "status.direct": "Mesaj direct către @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Modifică", "status.edited": "Modificat în data de {date}", "status.edited_x_times": "Modificată {count, plural, one {o dată} few {de {count} ori} other {de {count} de ori}}", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 32845ab64f..4e3a1c627a 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -20,7 +20,7 @@ "account.blocked": "Заблокировано", "account.browse_more_on_origin_server": "Посмотреть в оригинальном профиле", "account.cancel_follow_request": "Отозвать запрос на подписку", - "account.direct": "Написать @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Не уведомлять о постах от @{name}", "account.domain_blocked": "Домен заблокирован", "account.edit_profile": "Редактировать профиль", @@ -102,7 +102,7 @@ "column.blocks": "Заблокированные пользователи", "column.bookmarks": "Закладки", "column.community": "Локальная лента", - "column.direct": "Личные сообщения", + "column.direct": "Private mentions", "column.directory": "Просмотр профилей", "column.domain_blocks": "Заблокированные домены", "column.favourites": "Избранное", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "У вас есть несохранённые изменения описания мультимедиа или предпросмотра, отменить их?", "confirmations.domain_block.confirm": "Да, заблокировать узел", "confirmations.domain_block.message": "Вы точно уверены, что хотите заблокировать {domain} полностью? В большинстве случаев нескольких блокировок и игнорирований вполне достаточно. Вы перестанете видеть публичную ленту и уведомления оттуда. Ваши подписчики из этого домена будут удалены.", + "confirmations.edit.confirm": "Редактировать", + "confirmations.edit.message": "В данный момент, редактирование перезапишет составляемое вами сообщение. Вы уверены, что хотите продолжить?", "confirmations.logout.confirm": "Выйти", "confirmations.logout.message": "Вы уверены, что хотите выйти?", "confirmations.mute.confirm": "Игнорировать", @@ -214,7 +216,7 @@ "empty_column.blocks": "Вы ещё никого не заблокировали.", "empty_column.bookmarked_statuses": "У вас пока нет постов в закладках. Как добавите один, он отобразится здесь.", "empty_column.community": "Локальная лента пуста. Напишите что-нибудь, чтобы разогреть народ!", - "empty_column.direct": "У вас пока нет личных сообщений. Как только вы отправите или получите одно, оно появится здесь.", + "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Скрытых доменов пока нет.", "empty_column.explore_statuses": "Нет актуального. Проверьте позже!", "empty_column.favourited_statuses": "Вы не добавили ни один пост в «Избранное». Как только вы это сделаете, он появится здесь.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "фокус на одном из столбцов", "keyboard_shortcuts.compose": "фокус на поле ввода", "keyboard_shortcuts.description": "Описание", - "keyboard_shortcuts.direct": "чтобы открыть колонку с личными сообщениями", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "вниз по списку", "keyboard_shortcuts.enter": "открыть пост", "keyboard_shortcuts.favourite": "в избранное", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Закладки", "navigation_bar.community_timeline": "Локальная лента", "navigation_bar.compose": "Создать новый пост", - "navigation_bar.direct": "Личные сообщения", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Изучайте", "navigation_bar.domain_blocks": "Скрытые домены", "navigation_bar.edit_profile": "Изменить профиль", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Спам", "report_notification.categories.violation": "Нарушение правил", "report_notification.open": "Открыть жалобу", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Поиск", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Поиск (или вставьте URL)", - "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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "Все", "search_results.hashtags": "Хэштеги", "search_results.nothing_found": "Ничего не найдено по этому запросу", @@ -555,7 +559,8 @@ "status.copy": "Скопировать ссылку на пост", "status.delete": "Удалить", "status.detailed_status": "Подробный просмотр обсуждения", - "status.direct": "Написать @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Изменить", "status.edited": "Последнее изменение: {date}", "status.edited_x_times": "{count, plural, one {{count} изменение} many {{count} изменений} other {{count} изменения}}", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index e9deab43dc..9b16be4f88 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -20,14 +20,14 @@ "account.blocked": "अवरुद्धम्", "account.browse_more_on_origin_server": "अधिकं मूलव्यक्तिगतविवरणे दृश्यताम्", "account.cancel_follow_request": "अनुसरणयाचनामपनय", - "account.direct": "प्रत्यक्षसन्देशः @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "यदा @{name} स्थापयति तदा माम्मा ज्ञापय", "account.domain_blocked": "प्रदेशो निषिद्धः", "account.edit_profile": "सम्पाद्यताम्", "account.enable_notifications": "यदा @{name} स्थापयति तदा मां ज्ञापय", "account.endorse": "व्यक्तिगतविवरणे वैशिष्ट्यम्", "account.featured_tags.last_status_at": "{date} दिने गतस्थापनम्", - "account.featured_tags.last_status_never": "न स्थापनम्", + "account.featured_tags.last_status_never": "न पत्रम्", "account.featured_tags.title": "{name} इत्यस्य विशेषहैस्टैगः", "account.follow": "अनुस्रियताम्", "account.followers": "अनुसर्तारः", @@ -50,14 +50,14 @@ "account.mute_notifications": "@{name} सूचनाः निष्क्रियन्ताम्", "account.muted": "निःशब्दम्", "account.open_original_page": "मूलपृष्ठमुट्घाटय", - "account.posts": "दौत्यानि", - "account.posts_with_replies": "दौत्यानि प्रत्युत्तराणि च", + "account.posts": "पत्राणि", + "account.posts_with_replies": "पत्राणि प्रत्युत्तराणि च", "account.report": "आविद्यताम् @{name}", "account.requested": "स्वीकृतिः प्रतीक्ष्यते । नश्यतामित्यस्मिन्नुद्यतां निराकर्तुम् ।", - "account.requested_follow": "{name} has requested to follow you", + "account.requested_follow": "{name} त्वामनुसर्तुमयाचीत्", "account.share": "@{name} मित्रस्य विवरणं विभाज्यताम्", "account.show_reblogs": "@{name} मित्रस्य प्रकाशनानि दृश्यन्ताम्", - "account.statuses_counter": "{count, plural, one {{counter} दौत्यम्} two {{counter} दौत्ये} other {{counter} दौत्यानि}}", + "account.statuses_counter": "{count, plural, one {{counter} पत्रम्} two{{counter} पत्रे} other {{counter} पत्राणि}}", "account.unblock": "निषेधता नश्यताम् @{name}", "account.unblock_domain": "प्रदेशनिषेधता नश्यताम् {domain}", "account.unblock_short": "अनवरुन्धि", @@ -93,16 +93,16 @@ "bundle_modal_error.close": "पिधीयताम्", "bundle_modal_error.message": "आरोपणे कश्चन दोषो जातः", "bundle_modal_error.retry": "पुनः यतताम्", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", - "column.about": "About", + "closed_registrations.other_server_instructions": "यतोहि मस्टोडोनक्रेन्द्रीयकृतमस्ति, अन्यास्मिन्सर्वरि एकौण्टं स्रष्टुं शक्नोषि एवञ्च एतेन संयोक्तुं शक्नोषि।", + "closed_registrations_modal.description": "{domain} मध्ये एकौण्टं करणमधुना न सम्भवति, किन्तु कृपया अवधीयतां यन्मास्टोडोनमुपयोक्तुं {domain} मध्ये एकौण्टं करणं नावश्यकम्।", + "closed_registrations_modal.find_another_server": "अन्य सर्वरमन्विच्छ", + "closed_registrations_modal.preamble": "मास्टोडोनस्ति अक्रेन्द्रीयकृतमतः कुहापि एकौण्टं स्रष्टुमर्हसि, अस्मिन्सर्वरि सदस्यैश्च संयोक्तुं शक्नोषि। स्वस्य सर्वरं स्रष्टुमपि शक्नोषि।", + "closed_registrations_modal.title": "मास्टोडोनि पञ्जीकरणम्", + "column.about": "विषये", "column.blocks": "निषिद्धभोक्तारः", "column.bookmarks": "पुटचिह्नानि", "column.community": "स्थानीयसमयतालिका", - "column.direct": "Direct messages", + "column.direct": "Private mentions", "column.directory": "व्यक्तित्वानि दृश्यन्ताम्", "column.domain_blocks": "निषिद्धप्रदेशाः", "column.favourites": "प्रियाः", @@ -111,7 +111,7 @@ "column.lists": "सूचयः", "column.mutes": "निःशब्दाः भोक्तारः", "column.notifications": "सूचनाः", - "column.pins": "कीलितदौत्यानि", + "column.pins": "कीलितपत्राणि", "column.public": "सङ्घीयसमयतालिका", "column_back_button.label": "पूर्वम्", "column_header.hide_settings": "विन्यासाः छाद्यन्ताम्", @@ -124,12 +124,12 @@ "community.column_settings.local_only": "केवलं स्थानीयम्", "community.column_settings.media_only": "सामग्री केवलम्", "community.column_settings.remote_only": "दर्गमः केवलम्", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "भाषां परिवर्तय", + "compose.language.search": "भाषाः अन्विच्छ", "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 post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.", - "compose_form.lock_disclaimer": "तव लेखा न प्रवेष्टुमशक्या {locked} । कोऽप्यनुसर्ता ते केवलमनुसर्तृृणां कृते स्थितानि दौत्यानि द्रष्टुं शक्नोति ।", + "compose_form.encryption_warning": "मस्टोडोनि पत्राणि न अन्ततोऽन्तं सङ्कूटितानि। मास्टोडिनि संवेदनशीलसूचनां मा प्रेषय।", + "compose_form.hashtag_warning": "पत्रमिदमसार्वजनिकान्न कस्मिन्नपि प्रचलितवस्तुषु सूचितमिदं प्रेषणम्। केवलं सार्वजनिकप्रेषराणि प्रचलितवस्तुचिह्नेन अन्वेषयितुं शक्यते।", + "compose_form.lock_disclaimer": "तव लेखा न प्रवेष्टुमशक्या {locked} । कोऽप्यनुसर्ता ते केवलमनुसर्तृृणां कृते स्थितानि पत्राणि द्रष्टुं शक्नोति ।", "compose_form.lock_disclaimer.lock": "अवरुद्धः", "compose_form.placeholder": "मनसि ते किमस्ति?", "compose_form.poll.add_option": "मतमपरं युज्यताम्", @@ -138,10 +138,10 @@ "compose_form.poll.remove_option": "मतमेतन्नश्यताम्", "compose_form.poll.switch_to_multiple": "मतदानं परिवर्तयित्वा बहुवैकल्पिकमतदानं क्रियताम्", "compose_form.poll.switch_to_single": "मतदानं परिवर्तयित्वा निर्विकल्पमतदानं क्रियताम्", - "compose_form.publish": "Publish", - "compose_form.publish_form": "Publish", + "compose_form.publish": "प्रकाशीकुरु", + "compose_form.publish_form": "प्रकाशीकुरु", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "परिवर्तनानि रक्ष", "compose_form.sensitive.hide": "संवेदनशीलसामग्रीत्यङ्यताम्", "compose_form.sensitive.marked": "संवेदनशीलसामग्रीत्यङ्कितम्", "compose_form.sensitive.unmarked": "संवेदनशीलसामग्रीति नाङ्कितम्", @@ -152,49 +152,51 @@ "confirmations.block.block_and_report": "अवरुध्य आविद्यताम्", "confirmations.block.confirm": "निषेधः", "confirmations.block.message": "निश्चयेनाऽवरोधो विधेयः {name}?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {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.cancel_follow_request.confirm": "अनुरोधनमपनय", + "confirmations.cancel_follow_request.message": "{name} अनुसरणस्यानुरोधमपनेतुं दृढीकृतं वा?", + "confirmations.delete.confirm": "मार्जय", + "confirmations.delete.message": "निश्चयेन पत्रमिदं मार्जितुमिच्छसि?", + "confirmations.delete_list.confirm": "मार्जय", + "confirmations.delete_list.message": "सूचिरियं निश्चयेन स्थायित्वेन च मार्जितुमिच्छसि वा?", + "confirmations.discard_edit_media.confirm": "अपास्य", + "confirmations.discard_edit_media.message": "माध्यमवर्णनां प्रदर्शनञ्च अरक्षितानि परिवर्तनानि सन्ति, तानि अपासितुमिच्छसि वा?", "confirmations.domain_block.confirm": "निषिद्धः प्रदेशः क्रियताम्", "confirmations.domain_block.message": "नूनं निश्चयेनैव विनष्टुमिच्छति पूर्णप्रदेशमेव {domain} ? अधिकांशसन्दर्भेऽस्थायित्वेन निषेधता निःशब्दत्वञ्च पर्याप्तं चयनीयञ्च । न तस्मात् प्रदेशात्सर्वे विषया द्रष्टुमशक्याः किस्यांश्चिदपि सर्वजनिकसमयतालिकायां वा स्वीयसूचनापटले । सर्वेऽनुसर्तारस्ते प्रदेशात् ये सन्ति ते नश्यन्ते ।", + "confirmations.edit.confirm": "सम्पादय", + "confirmations.edit.message": "सम्पादनमिदानीं लिख्यते तर्हि पूर्वलिखितसन्देशं विनश्य पुनः लिख्यते। निश्चयेनैवं कर्तव्यम्?", "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.confirm": "मार्जय पुनश्च लिख्यताम्", + "confirmations.redraft.message": "किं वा निश्चयेन नष्टुमिच्छसि पत्रमेतत्तथा च पुनः लेखितुं? प्रकाशनानि प्रीतयश्च विनष्टा भविष्यन्ति, प्रत्युत्तराण्यपि नश्यन्ते ।", "confirmations.reply.confirm": "उत्तरम्", "confirmations.reply.message": "प्रत्युत्तरमिदानीं लिख्यते तर्हि पूर्वलिखितसन्देशं विनश्य पुनः लिख्यते । निश्चयेनैवं कर्तव्यम् ?", "confirmations.unfollow.confirm": "अनुसरणं नश्यताम्", "confirmations.unfollow.message": "निश्चयेनैवाऽनुसरणं नश्यतां {name} मित्रस्य?", - "conversation.delete": "वार्तालापो नश्यताम्", + "conversation.delete": "वार्तालापं मार्जय", "conversation.mark_as_read": "पठितमित्यङ्क्यताम्", "conversation.open": "वार्तालापो दृश्यताम्", "conversation.with": "{names} जनैः साकम्", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "प्रतिलिपिंकृतम्", + "copypaste.copy": "प्रतिलिपिः", "directory.federated": "सुपरिचितं Fediverse इति स्थानात्", "directory.local": "{domain} प्रदेशात्केवलम्", "directory.new_arrivals": "नवामगमाः", "directory.recently_active": "नातिपूर्वं सक्रियः", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", - "embed.instructions": "दौत्यमेतत् स्वीयजालस्थाने स्थापयितुमधो लिखितो विध्यादेशो युज्यताम्", + "disabled_account_banner.account_settings": "एकौण्टः सेटिङ्ग्स्", + "disabled_account_banner.text": "तव एकौण्ट् {disabledAccount} अधुना निष्कृतमस्ति।", + "dismissable_banner.community_timeline": "तानि तेषां जनानां नूतनतमानि सार्वजनिकानि पत्राणि सन्ति येषामेकौण्टः {domain} द्वारा होस्त् भवन्ति।", + "dismissable_banner.dismiss": "अपास्य", + "dismissable_banner.explore_links": "एतासां वार्तानां विषये अधुना अकेन्द्रीकृतजालस्य अस्मिनन्येषु च सर्वर्षु जनैश्चर्चा क्रियते।", + "dismissable_banner.explore_statuses": "अकेन्द्रीकृतजालस्य अस्मदन्येभ्यश्च सर्वर्भ्यः एतानि पत्राणि इदानीमस्मिन्सर्वरि कर्षणं प्राप्नुवन्ति।", + "dismissable_banner.explore_tags": "अकेन्द्रीकृतजालस्य अस्मदन्येभ्यश्च सर्वर्भ्यः एतानि प्रचलितवस्तूनि इदानीमस्मिन्सर्वरि कर्षणं प्राप्नुवन्ति।", + "dismissable_banner.public_timeline": "एतानि अकेन्द्रीकृतजालस्य अस्मिनन्येषु च सर्वर्षु जनेभ्योऽद्यतनतमानि सार्वजनिकपत्राणि सन्ति येषां विषये सर्वरयं वेत्ति।", + "embed.instructions": "पत्रमेतत्स्वीयजालस्थाने स्थापयितुमधो लिखितो विध्यादेशो युज्यताम्", "embed.preview": "अत्रैवं दृश्यते तत्:", "emoji_button.activity": "आचरणम्", - "emoji_button.clear": "Clear", + "emoji_button.clear": "मार्जय", "emoji_button.custom": "स्वीयानुकूलम्", "emoji_button.flags": "ध्वजाः", "emoji_button.food": "भोजनं पेयञ्च", @@ -208,119 +210,119 @@ "emoji_button.search_results": "अन्वेषणपरिणामाः", "emoji_button.symbols": "चिह्नानि", "emoji_button.travel": "यात्रा च स्थानानि", - "empty_column.account_suspended": "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.bookmarked_statuses": "नैकमपि पुटचिह्नयुक्तपत्राणि सन्ति । यदा भविष्यति तदत्र दृश्यते ।", "empty_column.community": "स्थानीयसमयतालिका रिक्ता । सार्वजनिकत्वेनाऽत्र किमपि लिख्यताम् ।", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, 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.explore_statuses": "अधुना किमपि न प्रचलति। परे पुनः पश्य!", + "empty_column.favourited_statuses": "न तव अधुना पर्यन्तं प्रियपत्राणि सन्ति। यदा प्रीतिरित्यङ्क्यतेऽत्र दृश्यते।", + "empty_column.favourites": "नैतत्पत्रं प्रियमस्ति कस्मै अपि। यदा कस्मै प्रियं भवति तदाऽत्र दृश्यते।", + "empty_column.follow_recommendations": "तुभ्यं कोऽपि प्रबोधो न जनयितुं न शक्यतेऽति प्रतीयते। अन्वेष्यप्रणालिं प्रयोक्तुं जनानवलोकयितुं शक्नोषि उत प्रचलितवस्तूनि अन्वेषितुं शक्नोषि।", "empty_column.follow_requests": "नाऽनुसरणानुरोधस्ते वर्तते । यदैको प्राप्यतेऽत्र दृश्यते ।", - "empty_column.followed_tags": "You have not followed any hashtags yet. When you do, they will show up here.", + "empty_column.followed_tags": "कान्यपि प्रचलितवस्तूनीदानीमपि नान्वसार्षीः। यदा अनुसरसि तदा तानि इह दृश्यन्ते।", "empty_column.hashtag": "नाऽस्मिन् प्रचलितवस्तुचिह्ने किमपि ।", "empty_column.home": "गृहसमयतालिका रिक्ताऽस्ति । गम्यतां {public} वाऽन्वेषणैः प्रारभ्यतां मेलनं क्रियताञ्च ।", - "empty_column.home.suggestions": "See some suggestions", - "empty_column.list": "न किमपि वर्तते सूच्यामस्याम् । यदा सूच्याः सदस्या नवदौत्यानि प्रकटीकुर्वन्ति तदाऽत्राऽऽयान्ति ।", - "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. 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.", - "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": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", - "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": "Authorize", - "follow_request.reject": "Reject", - "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.", - "followed_tags": "Followed hashtags", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", - "footer.status": "Status", - "generic.saved": "Saved", - "getting_started.heading": "Getting started", - "hashtag.column_header.tag_mode.all": "and {additional}", - "hashtag.column_header.tag_mode.any": "or {additional}", - "hashtag.column_header.tag_mode.none": "without {additional}", - "hashtag.column_settings.select.no_options_message": "No suggestions found", - "hashtag.column_settings.select.placeholder": "Enter hashtags…", - "hashtag.column_settings.tag_mode.all": "All of these", - "hashtag.column_settings.tag_mode.any": "Any of these", - "hashtag.column_settings.tag_mode.none": "None of these", + "empty_column.home.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": "परिणामानविच्छ", + "explore.suggested_follows": "तुभ्यम्", + "explore.title": "अन्विच्छ", + "explore.trending_links": "वार्ताः", + "explore.trending_statuses": "पत्राणि", + "explore.trending_tags": "प्रचलितवस्तूनि", + "filter_modal.added.context_mismatch_explanation": "यस्मिन्सन्दर्भे त्वया पत्रमिदं प्राप्तं तस्मिनयं फिल्तर्वर्गो न प्रवर्तते। यदि इच्छसि पत्रं फिल्तर्कर्तुमस्मिन्सन्दर्भेऽपि, त्वया फिल्तर्सम्पादयितव्यम्।", + "filter_modal.added.context_mismatch_title": "सन्दर्भोऽसमः!", + "filter_modal.added.expired_explanation": "फिल्तर्वर्गोऽयं समाप्तः, तस्य संयोजनाय त्वया समाप्तिदिवसः परिवर्तितव्यः।", + "filter_modal.added.expired_title": "गतप्राणः फिल्तार्!", + "filter_modal.added.review_and_configure": "फिल्तर्वर्गमिममवलोकनाय अधिकविन्यासाय च, {settings_link} प्रति याहि।", + "filter_modal.added.review_and_configure_title": "विन्यासान्फिल्तरं कुरु", + "filter_modal.added.settings_link": "विन्यासपृष्ठम्", + "filter_modal.added.short_explanation": "पत्रमिदं निम्नलिखितः फिल्तर्वर्गेन योजितः: {title}।", + "filter_modal.added.title": "फिल्तर्योजितम्!", + "filter_modal.select_filter.context_mismatch": "अस्मिन्सन्दर्भे न प्रवर्तते", + "filter_modal.select_filter.expired": "समाप्तम्", + "filter_modal.select_filter.prompt_new": "नूतनवर्गः: {name}", + "filter_modal.select_filter.search": "अन्विच्छ उत सृज", + "filter_modal.select_filter.subtitle": "वर्तमानवर्गं प्रयोजय उत नूतनं सृज", + "filter_modal.select_filter.title": "पत्रमिदं फिल्तरं कुरु", + "filter_modal.title.status": "पत्रं फिल्तरं कुरु", + "follow_recommendations.done": "कृतम्", + "follow_recommendations.heading": "जनमनुसर यस्मात्पत्राणि द्रष्टुमिच्छसि! सन्ति इह काश्चित्सूचनाः।", + "follow_recommendations.lead": "जनेभ्यः पत्राणि याननुसरसि कालिकक्रमेण दर्शिष्यन्ते तव गृहनिरासे। दोषान्मा बिभीहि, कदापि सरलरूपेण ते जनाननुसरणं वारयितुं शक्नोषि!", + "follow_request.authorize": "प्रमाणीकुरु", + "follow_request.reject": "प्रत्याख्याहि", + "follow_requests.unlocked_explanation": "यद्यपि ते एकौण्ट् तालयन्त्रेण न बन्धितं, {domain} अधिकारिगणोऽचिचिन्तद्यदेतेभ्य एकौण्ट्भ्योऽनुसरणानुरोधानां समीक्षां स्वहस्तेन चिकीर्षसीति।", + "followed_tags": "अनुसरितानि प्रचलितवस्तूनि", + "footer.about": "विषये", + "footer.directory": "मुखपार्श्वविभागः", + "footer.get_app": "एप् लभस्व", + "footer.invite": "जनं निमन्त्रय", + "footer.keyboard_shortcuts": "कीफलकहर्स्वमार्गाः", + "footer.privacy_policy": "गोपनीयतानीतिः", + "footer.source_code": "स्रोतविद्यादेशं दर्शय", + "footer.status": "स्थितिः", + "generic.saved": "रक्षितम्", + "getting_started.heading": "आरम्भकरणम्", + "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": "Include additional tags in this column", - "hashtag.follow": "Follow hashtag", - "hashtag.unfollow": "Unfollow hashtag", - "home.column_settings.basic": "Basic", - "home.column_settings.show_reblogs": "Show boosts", - "home.column_settings.show_replies": "Show replies", - "home.hide_announcements": "Hide announcements", - "home.show_announcements": "Show announcements", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", - "intervals.full.days": "{number, plural, one {# day} other {# days}}", - "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", - "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", + "hashtag.follow": "प्रचलितवस्तु अनुसर", + "hashtag.unfollow": "प्रचलितवस्तु अनुसरणं वारय", + "home.column_settings.basic": "मूलभूतम्", + "home.column_settings.show_reblogs": "बुस्त् दर्शय", + "home.column_settings.show_replies": "उत्तराणि दर्शय", + "home.hide_announcements": "विज्ञापनानि प्रच्छादय", + "home.show_announcements": "विज्ञापनानि दर्शय", + "interaction_modal.description.favourite": "मास्टोडोनि एकौण्टा, पत्रमिदं प्रियं कर्तुं शक्नोषि तस्य लेखकं प्रशंसां करोषीति ज्ञापयितुमिदं पश्चाद्रक्षितुञ्च।", + "interaction_modal.description.follow": "मास्टोडोनि एकौण्टा {name} नाम्ना उपभोक्तारमनुसर्तुं शक्नोषि तस्य पत्राणि लब्धुं ते गृहनिरासे।", + "interaction_modal.description.reblog": "मास्टोडिनि एकौण्टा पत्रमिदं बुस्तिति कर्तुं शक्नोषि ते स्वानुसारिणो भागं कर्तुम्।", + "interaction_modal.description.reply": "मास्टोडोनि एकौण्टा पत्रमिदं प्रतिवादयितुं शक्नोषि।", + "interaction_modal.on_another_server": "अन्यस्मिन्सर्वरि", + "interaction_modal.on_this_server": "अस्मिन्सर्वरि", + "interaction_modal.other_server_instructions": "एतत् URL प्रतिलिपिं कृत्वा स्वस्य प्रियस्य मास्टोडोन ऐपोऽन्वेषणक्षेत्रे उत स्वस्य मास्तोडोन्सर्वरो जालमध्यस्थे चिनु।", + "interaction_modal.preamble": "यतो मास्टोडोन्विकेन्द्रीयकृतोऽस्ति, अन्येन मास्टोडोन्सर्वरा उत सुसङ्गतेन आश्रयेण ते वर्तमानौकौण्टं प्रयोक्तुं शक्नोषि यदि अस्मिन्कोऽपि ते एकौण्ट् नास्ति।", + "interaction_modal.title.favourite": "प्रियस्य {name} नाम्ना उपभोक्तुः पत्रम्।", + "interaction_modal.title.follow": "{name} अनुसर", + "interaction_modal.title.reblog": "{name} नाम्ना उपभोक्तुः पत्रं बुस्त्कुरु", + "interaction_modal.title.reply": "{name} नाम्ना उपभोक्तुःपत्रं प्रतिवादय", + "intervals.full.days": "{number, plural, one {# दिनम्} other {# दिनानि}}", + "intervals.full.hours": "{number, plural, one {# होरा} other {# होराः}}", + "intervals.full.minutes": "{number, plural, one {# क्षणम्} other {# क्षणानि}}", "keyboard_shortcuts.back": "to navigate back", "keyboard_shortcuts.blocked": "to open blocked users list", - "keyboard_shortcuts.boost": "to boost", + "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.description": "Description", + "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", + "keyboard_shortcuts.enter": "पत्रं उद्घाटय", + "keyboard_shortcuts.favourite": "पत्रं प्रियं कुरु", "keyboard_shortcuts.favourites": "to open favourites list", "keyboard_shortcuts.federated": "to open federated timeline", "keyboard_shortcuts.heading": "Keyboard Shortcuts", "keyboard_shortcuts.home": "to open home timeline", - "keyboard_shortcuts.hotkey": "Hotkey", + "keyboard_shortcuts.hotkey": "होत्की", "keyboard_shortcuts.legend": "to display this legend", "keyboard_shortcuts.local": "to open local timeline", "keyboard_shortcuts.mention": "to mention author", @@ -328,259 +330,262 @@ "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": "कीलितपत्राणां सूचिमुद्घाटय", "keyboard_shortcuts.profile": "to open author's profile", - "keyboard_shortcuts.reply": "to reply", + "keyboard_shortcuts.reply": "पत्राय प्रतिवादय", "keyboard_shortcuts.requests": "to open follow requests list", "keyboard_shortcuts.search": "to focus search", "keyboard_shortcuts.spoilers": "to show/hide CW field", "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": "नूतनपत्रमारभस्व", "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search", "keyboard_shortcuts.up": "to move up in the list", - "lightbox.close": "Close", - "lightbox.compress": "Compress image view box", - "lightbox.expand": "Expand image view box", - "lightbox.next": "Next", - "lightbox.previous": "Previous", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", - "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.new.create": "Add list", - "lists.new.title_placeholder": "New list title", - "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": "Show replies to:", - "lists.search": "Search among people you follow", - "lists.subheading": "Your lists", - "load_pending": "{count, plural, one {# new item} other {# new items}}", - "loading_indicator.label": "Loading...", - "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", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", - "mute_modal.duration": "Duration", - "mute_modal.hide_notifications": "Hide notifications from this user?", - "mute_modal.indefinite": "Indefinite", - "navigation_bar.about": "About", - "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.discover": "Discover", + "lightbox.close": "पिधीयताम्", + "lightbox.compress": "सङ्कुच चित्रप्रदर्शनपेटकम्", + "lightbox.expand": "चित्रप्रदर्शनपेटकं विस्तारय", + "lightbox.next": "परः", + "lightbox.previous": "पूर्वः", + "limited_account_hint.action": "प्रोफैलं दर्शय कथञ्चित्", + "limited_account_hint.title": "{domain} इत्यस्य प्रशासकैरयं प्रोफैल्प्रच्छन्नः।", + "lists.account.add": "सूचेर्मध्ये योजय", + "lists.account.remove": "सूचेर्मार्जय", + "lists.delete": "सूचिं मार्जय", + "lists.edit": "सूचिं सम्पादय", + "lists.edit.submit": "उपाधिं परिवर्तय", + "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": "तव सूचयः", + "load_pending": "{count, plural, one {# नूतनवस्तु} other {# नूतनवस्तूनि}}", + "loading_indicator.label": "आरोपयति...", + "media_gallery.toggle_visible": "{number, plural, one {चित्रं प्रच्छादय} other {चित्राणि प्रच्छादय}}", + "missing_indicator.label": "नोपलब्धम्", + "missing_indicator.sublabel": "उपायोऽयं नोपलब्धुं शक्यते", + "moved_to_account_banner.text": "तव एकौण्ट् {disabledAccount} अधुना निष्कृतो यतोहि {movedToAccount} अस्मिन्त्वमसार्षीः।", + "mute_modal.duration": "परिमाणम्", + "mute_modal.hide_notifications": "अस्मादुपभोक्तुर्विज्ञापनानि प्रच्छादयितुमिच्छसि वा?", + "mute_modal.indefinite": "अ॑परिमितम्", + "navigation_bar.about": "विषये", + "navigation_bar.blocks": "निषिद्धभोक्तारः", + "navigation_bar.bookmarks": "पुटचिह्नानि", + "navigation_bar.community_timeline": "स्थानीयसमयतालिका", + "navigation_bar.compose": "नूतनपत्रं रचय", + "navigation_bar.direct": "Private mentions", + "navigation_bar.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", - "navigation_bar.followed_tags": "Followed hashtags", - "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.lists": "Lists", - "navigation_bar.logout": "Logout", - "navigation_bar.mutes": "Muted users", - "navigation_bar.personal": "Personal", - "navigation_bar.pins": "Pinned toots", - "navigation_bar.preferences": "Preferences", - "navigation_bar.public_timeline": "Federated timeline", - "navigation_bar.search": "Search", - "navigation_bar.security": "Security", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", - "notification.admin.report": "{name} reported {target}", - "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.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", - "notifications.clear": "Clear notifications", - "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", - "notifications.column_settings.admin.report": "New reports:", - "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.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.unread_notifications.category": "Unread notifications", - "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", - "notifications.column_settings.update": "Edits:", - "notifications.filter.all": "All", - "notifications.filter.boosts": "Boosts", - "notifications.filter.favourites": "Favourites", - "notifications.filter.follows": "Follows", - "notifications.filter.mentions": "Mentions", - "notifications.filter.polls": "Poll results", - "notifications.filter.statuses": "Updates from people you follow", - "notifications.grant_permission": "Grant permission.", - "notifications.group": "{count} notifications", - "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_banner.enable": "Enable desktop notifications", - "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", - "poll.closed": "Closed", - "poll.refresh": "Refresh", - "poll.total_people": "{count, plural, one {# person} other {# people}}", - "poll.total_votes": "{count, plural, one {# vote} other {# votes}}", - "poll.vote": "Vote", - "poll.voted": "You voted for this answer", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", - "poll_button.add_poll": "Add a poll", - "poll_button.remove_poll": "Remove poll", - "privacy.change": "Adjust status privacy", - "privacy.direct.long": "Visible for mentioned users only", + "navigation_bar.edit_profile": "प्रोफैलं सम्पाद्यताम्", + "navigation_bar.explore": "अन्विच्छ", + "navigation_bar.favourites": "प्रियाः", + "navigation_bar.filters": "मूकीकृतानि पदानि", + "navigation_bar.follow_requests": "अनुसरणानुरोधाः", + "navigation_bar.followed_tags": "अनुसरितानि प्रचलितवस्तूनि", + "navigation_bar.follows_and_followers": "याननुसरति अनुसारिणश्च", + "navigation_bar.lists": "सूचयः", + "navigation_bar.logout": "निष्क्रमणं कुरु", + "navigation_bar.mutes": "निःशब्दा भोक्तारः", + "navigation_bar.personal": "व्यक्तिगतम्", + "navigation_bar.pins": "कीलितपत्राणि", + "navigation_bar.preferences": "अधिकरुचयः", + "navigation_bar.public_timeline": "सङ्घीयसमयतालिका", + "navigation_bar.search": "अन्विच्छ", + "navigation_bar.security": "सुरक्षा", + "not_signed_in_indicator.not_signed_in": "उपायमिमं लब्धुं सम्प्रवेश आवश्यकः।", + "notification.admin.report": "{name} {target} प्रतिवेदयञ्चकार", + "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} पत्रमेकं समपादयिष्ट", + "notifications.clear": "विज्ञापनानि मार्जय", + "notifications.clear_confirmation": "तव सर्वाणि विज्ञापनानि सर्वकालाय मार्जयितुमिच्छसि वा?", + "notifications.column_settings.admin.report": "नूतनावेदनानि", + "notifications.column_settings.admin.sign_up": "नूतनपञ्जीकरणम्:", + "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": "शोधकशालकां दर्शय", + "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": "अपठितविज्ञापनानि", + "notifications.column_settings.unread_notifications.highlight": "अपठितविज्ञापनानि उद्वर्णय", + "notifications.column_settings.update": "सम्पादनानि :", + "notifications.filter.all": "सर्वम्", + "notifications.filter.boosts": "बुस्तः", + "notifications.filter.favourites": "प्रियाः", + "notifications.filter.follows": "अनुसरति", + "notifications.filter.mentions": "उल्लिखितानि", + "notifications.filter.polls": "मतदानस्य परिणामः", + "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_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 {# मतानि}}", + "poll.vote": "मतम्", + "poll.voted": "एतदुत्तरं मतमदाः", + "poll.votes": "{votes, plural, one {# मतम्} other {# मतानि}}", + "poll_button.add_poll": "निर्वाचनं योजय", + "poll_button.remove_poll": "निर्वाचनं मार्जय", + "privacy.change": "पत्रस्य गोपनीयतां परिवर्तय", + "privacy.direct.long": "केवलमुल्लिखितोभोक्तृभ्यो दृश्यते", "privacy.direct.short": "Direct", - "privacy.private.long": "Visible for followers only", + "privacy.private.long": "केवलं येऽनुसरन्ति त्वां तेभ्यो दृश्यते", "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all", - "privacy.public.short": "Public", - "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", - "privacy.unlisted.short": "Unlisted", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", - "refresh": "Refresh", - "regeneration_indicator.label": "Loading…", - "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", - "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}h", - "relative_time.just_now": "now", - "relative_time.minutes": "{number}m", - "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.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", + "privacy.public.long": "सर्वेभ्यो दृश्यते", + "privacy.public.short": "सार्वजनिकम्", + "privacy.unlisted.long": "सर्वेभ्यो दृश्यते किन्तु आविष्कारविशेषताभ्योऽन्तरभूतं नास्ति", + "privacy.unlisted.short": "असूचीकृतम्", + "privacy_policy.last_updated": "अन्तिमवारं परिवर्तितम् {date}", + "privacy_policy.title": "गोपनीयतानीतिः", + "refresh": "नवीकुरु", + "regeneration_indicator.label": "आरोपयति…", + "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.just_now": "अधुना", + "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.mute": "मूकीकुरु", + "report.mute_explanation": "तेषां पत्राणि न द्रक्ष्यसि। तेऽधुनापि त्वामनुसृत्य तव पत्राणि द्रष्टुं शक्नुवन्ति किन्तु ते त्वया मूकीकृता इति ते न वेदिष्यन्ति।", + "report.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.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": "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.", - "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", - "report_notification.categories.spam": "Spam", - "report_notification.categories.violation": "Rule violation", - "report_notification.open": "Open report", - "search.placeholder": "Search", - "search.search_or_paste": "Search or paste URL", - "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.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.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.title": "Search for {q}", - "search_results.total": "{count, number} {count, plural, one {result} other {results}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", - "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts. You can also interact from your account on a different server.", - "status.admin_account": "Open moderation interface for @{name}", - "status.admin_domain": "Open moderation interface for {domain}", - "status.admin_status": "Open this status in the moderation interface", - "status.block": "Block @{name}", - "status.bookmark": "Bookmark", - "status.cancel_reblog_private": "Unboost", - "status.cannot_reblog": "This post cannot be boosted", - "status.copy": "Copy link to status", - "status.delete": "Delete", - "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.embed": "Embed", - "status.favourite": "Favourite", - "status.filter": "Filter this post", - "status.filtered": "Filtered", - "status.hide": "Hide post", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {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.open": "Expand this status", - "status.pin": "Pin on profile", - "status.pinned": "Pinned toot", - "status.read_more": "Read more", - "status.reblog": "Boost", + "report.thanks.take_action": "इमे इह तव विकल्पास्सन्ति मास्टोडोनि यत्पश्यसि तद्यन्त्रयितुम् :", + "report.thanks.take_action_actionable": "एतस्य अस्माभिरवलोकनस्य समये @{name} इत्यस्योपरि अभियोगयितुं शक्नोषि :", + "report.thanks.title": "इदं द्रष्टुं नेच्छसि वा?", + "report.thanks.title_actionable": "अवेदनाय धन्यवादः, वयं एतदवलोकयिष्यामि।", + "report.unfollow": "@{name} विसर", + "report.unfollow_explanation": "समयोऽयमनुसरसि। तव गृहनिरासे तस्य पत्राणि न द्रष्टुं तं विसर।", + "report_notification.attached_statuses": "{count, plural, one {{count} पत्रं} other {{count} पत्राणि}} संयुज्यते/संयुज्यन्ते", + "report_notification.categories.other": "अन्य", + "report_notification.categories.spam": "फल्गुसन्देशाः", + "report_notification.categories.violation": "नियमोल्लङ्घनम्", + "report_notification.open": "आवेदनमुद्धाटय", + "search.no_recent_searches": "No recent searches", + "search.placeholder": "अन्विच्छ", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", + "search.search_or_paste": "URL अन्विच्छ वा लेपनं कुरु", + "search_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", + "search_results.all": "सर्वम्", + "search_results.hashtags": "प्रचलितवस्तूनि", + "search_results.nothing_found": "एतेभ्योऽन्वेषणपदेभ्यः किमपि न प्राप्तम्", + "search_results.statuses": "पत्राणि", + "search_results.statuses_fts_disabled": "तेषां पूरकेन पत्रान्वेषणमस्मिन्मास्टोडोन्सर्वरि सक्रीयं नास्ति।", + "search_results.title": "{q} कृते अन्विष्य", + "search_results.total": "{count, number} {count, plural, one {परिणामः} other {परिणामाः}}", + "server_banner.about_active_users": "विगतेषु ३० दिनेषु सर्वरमिममुपयुज्यमाणा जनाः (मासिकसक्रियोपभोक्तारः)", + "server_banner.active_users": "सक्रियोपभोक्तारः", + "server_banner.administered_by": "इत्यनेन अधिकृतः : ", + "server_banner.introduction": "{domain} {mastodon} इत्यनेन सामर्थितो विकेन्द्रीयसामाजिकजालकर्मणोंऽशोऽस्ति।", + "server_banner.learn_more": "अधिकं ज्ञायताम्", + "server_banner.server_stats": "सर्वरः स्थितिविषयकानि :", + "sign_in_banner.create_account": "समयं संसृज", + "sign_in_banner.sign_in": "सम्प्रवेशं कुरु", + "sign_in_banner.text": "प्रोफैल्युत प्रचलितवस्तूनि अनुसर्तुं, प्रियं, भागः, पत्राणि प्रतिवादयितुञ्च सम्प्रवेशः कर्तव्यः। अन्यसर्वर्यपि तव समयात्संवादयितुं शक्नोषि।", + "status.admin_account": "@{name} कृते अनतिक्रममध्यस्थमुद्धाटय", + "status.admin_domain": "{domain} कृते अनतिक्रममध्यस्थमुद्धाटय", + "status.admin_status": "पत्रमिदमुद्घाटय अनतिक्रममध्यस्थे", + "status.block": "अवरुध्यताम् @{name}", + "status.bookmark": "पुटचिह्नीकुरु", + "status.cancel_reblog_private": "विबुस्तं कुरु", + "status.cannot_reblog": "पत्रमिदं बुस्तं कर्तुं न शक्यते", + "status.copy": "सञ्चयं पत्रे प्रतिलिपिं कुरु", + "status.delete": "मार्जय", + "status.detailed_status": "विस्तृतसंभाषणदृश्यम्", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", + "status.edit": "सम्पादय", + "status.edited": "सम्पादितं {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} वारम्} other {{count} वारम्}}", + "status.embed": "निहितम्", + "status.favourite": "प्रियम्", + "status.filter": "पत्रमिदं फिल्तरं कुरु", + "status.filtered": "फिल्तर्कृतम्", + "status.hide": "प्रेषरणं प्रच्छादय", + "status.history.created": "{name} असृजत् {date}", + "status.history.edited": "{name} समपादयत् {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": "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.redraft": "Delete & re-draft", + "status.reblogs.empty": "न केनापि पत्रमिदं बुस्त्कृतम्। यदा कोऽपि करोति, तानि इह दृश्यन्ते।", + "status.redraft": "मार्जय पुनश्च लिख्यताम्", "status.remove_bookmark": "Remove bookmark", "status.replied_to": "Replied to {name}", "status.reply": "Reply", @@ -616,7 +621,7 @@ "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": "पूरातनपत्राणि", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", @@ -632,7 +637,7 @@ "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", - "upload_form.undo": "Delete", + "upload_form.undo": "मार्जय", "upload_form.video_description": "Describe for people with hearing loss or visual impairment", "upload_modal.analyzing_picture": "Analyzing picture…", "upload_modal.apply": "Apply", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 100f8ecbd3..905d457389 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -20,7 +20,7 @@ "account.blocked": "Blocadu", "account.browse_more_on_origin_server": "Esplora de prus in su profilu originale", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "Messàgiu deretu a @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Non mi notìfiches prus cando @{name} pùblichet messàgios", "account.domain_blocked": "Domìniu blocadu", "account.edit_profile": "Modìfica profilu", @@ -102,7 +102,7 @@ "column.blocks": "Persones blocadas", "column.bookmarks": "Sinnalibros", "column.community": "Lìnia de tempus locale", - "column.direct": "Messàgios diretos", + "column.direct": "Private mentions", "column.directory": "Nàviga in is profilos", "column.domain_blocks": "Domìnios blocados", "column.favourites": "Preferidos", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "confirmations.domain_block.confirm": "Bloca totu su domìniu", "confirmations.domain_block.message": "Boles de seguru, ma a beru a beru, blocare {domain}? In sa parte manna de is casos, pagos blocos o silentziamentos de persones sunt sufitzientes e preferìbiles. No as a bìdere cuntenutos dae custu domìniu in peruna lìnia de tempus pùblica o in is notìficas tuas. Sa gente chi ti sighit dae cussu domìniu at a èssere bogada.", + "confirmations.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Essi·nche", "confirmations.logout.message": "Seguru chi boles essire?", "confirmations.mute.confirm": "A sa muda", @@ -214,7 +216,7 @@ "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": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, 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.", @@ -374,7 +376,7 @@ "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.direct": "Private mentions", "navigation_bar.discover": "Iscoberi", "navigation_bar.domain_blocks": "Domìnios blocados", "navigation_bar.edit_profile": "Modìfica profilu", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Chirca", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Search or paste URL", - "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.", - "search_popout.tips.hashtag": "eticheta", - "search_popout.tips.status": "publicatzione", - "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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "All", "search_results.hashtags": "Etichetas", "search_results.nothing_found": "Could not find anything for these search terms", @@ -555,7 +559,8 @@ "status.copy": "Còpia su ligòngiu a sa publicatzione tua", "status.delete": "Cantzella", "status.detailed_status": "Visualizatzione de detàlliu de arresonada", - "status.direct": "Messàgiu deretu a @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Edit", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/mastodon/locales/sco.json b/app/javascript/mastodon/locales/sco.json index c428d66835..8794806b2f 100644 --- a/app/javascript/mastodon/locales/sco.json +++ b/app/javascript/mastodon/locales/sco.json @@ -20,7 +20,7 @@ "account.blocked": "Dingied", "account.browse_more_on_origin_server": "Luik mair oan the oreeginal profile", "account.cancel_follow_request": "Resile follae requeest", - "account.direct": "Direck message @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Stap notifyin me whan @{name} posts", "account.domain_blocked": "Domain dingied", "account.edit_profile": "Edit profile", @@ -102,7 +102,7 @@ "column.blocks": "Dingied uisers", "column.bookmarks": "Buikmairks", "column.community": "Local timeline", - "column.direct": "Direck messages", + "column.direct": "Private mentions", "column.directory": "Broose profiles", "column.domain_blocks": "Dingied domains", "column.favourites": "Best anes", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Ye'v chynges tae the media description or preview thit ye'v no saved, fling them awa onie weys?", "confirmations.domain_block.confirm": "Dingie the hail domain", "confirmations.domain_block.message": "Ye a hunner percent shair thit ye'r wantin tae dingie the hail {domain}? In maist cases a haunfae tairgtit dingies an wheeshts are eneuch an preferit. Ye wullnae see content fae that domain in onie public timelines or in yer notes. Yer follaers fae that domain wull be taen awa.", + "confirmations.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Log oot", "confirmations.logout.message": "Ye shair thit ye'r wantin tae log oot?", "confirmations.mute.confirm": "Wheesht", @@ -214,7 +216,7 @@ "empty_column.blocks": "Ye huvnae dingied onie uisers yit.", "empty_column.bookmarked_statuses": "Ye dinnae hae onie buikmairkt posts yit. Efter ye buikmairk ane, it'll shaw up here.", "empty_column.community": "The loval timeline is toum. Screive socht public fir tae get gaun!", - "empty_column.direct": "Ye dinnae hae onie direck messages yit. Ance ye sen or get ane, it'll shaw up here.", + "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "There nae dingied domains yit.", "empty_column.explore_statuses": "Naethin is trendin the noo. Check back efter!", "empty_column.favourited_statuses": "Ye dinnae hae onie favourite posts yit. Whan ye favourite ane, it'll shaw up here.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Focus column", "keyboard_shortcuts.compose": "Focus compose text area", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "tae open direct messages column", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "Muive doon in the list", "keyboard_shortcuts.enter": "Open post", "keyboard_shortcuts.favourite": "Favourite post", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Buikmairks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Scrieve new post", - "navigation_bar.direct": "Direck messages", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Fin", "navigation_bar.domain_blocks": "Dingied domains", "navigation_bar.edit_profile": "Edit profile", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Mince", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Seirch", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Seirch or paste URL", - "search_popout.search_format": "Advanced seirch format", - "search_popout.tips.full_text": "Simple text gie ye posts thit ye'v wrate, favouritit, heezed, or hae been menshied in, as weil as matchinnuisernemms, displey nemms, an hashtags.", - "search_popout.tips.hashtag": "hashtag", - "search_popout.tips.status": "post", - "search_popout.tips.text": "Simple text gies ye matchin dipley nemms, uisernemms an hashtags", - "search_popout.tips.user": "uiser", - "search_results.accounts": "Fowk", + "search_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "Aw", "search_results.hashtags": "Hashtags", "search_results.nothing_found": "Cuidnae fin ocht fir thir seirch terms", @@ -555,7 +559,8 @@ "status.copy": "Copy link tae post", "status.delete": "Delete", "status.detailed_status": "Detailt conversation view", - "status.direct": "Direck message @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Edit", "status.edited": "Editit {date}", "status.edited_x_times": "Editit {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index a5ffbc615b..82366c29cc 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -20,7 +20,7 @@ "account.blocked": "අවහිර කර ඇත", "account.browse_more_on_origin_server": "මුල් පැතිකඩෙහි තවත් පිරික්සන්න", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "@{name} සෘජු පණිවිඩය", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "@{name} පළ කරන විට මට දැනුම් නොදෙන්න", "account.domain_blocked": "වසම අවහිර කර ඇත", "account.edit_profile": "පැතිකඩ සංස්කරණය", @@ -102,7 +102,7 @@ "column.blocks": "අවහිර කළ අය", "column.bookmarks": "පොත් යොමු", "column.community": "දේශීය කාලරේඛාව", - "column.direct": "සෘජු පණිවිඩ", + "column.direct": "Private mentions", "column.directory": "පැතිකඩ පිරික්සන්න", "column.domain_blocks": "අවහිර කළ වසම්", "column.favourites": "ප්‍රියතමයන්", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "ඔබට මාධ්‍ය විස්තරයට හෝ පෙරදසුනට නොසුරකින ලද වෙනස්කම් තිබේ, කෙසේ වෙතත් ඒවා ඉවත දමන්නද?", "confirmations.domain_block.confirm": "සම්පූර්ණ වසම අවහිර කරන්න", "confirmations.domain_block.message": "ඔබට සම්පූර්ණ {domain}අවහිර කිරීමට අවශ්‍ය බව ඔබට සැබවින්ම විශ්වාසද? බොහෝ අවස්ථාවලදී ඉලක්කගත බ්ලොක් හෝ නිශ්ශබ්ද කිරීම් කිහිපයක් ප්රමාණවත් වන අතර වඩාත් යෝග්ය වේ. ඔබ කිසිදු පොදු කාලරාමුවක හෝ ඔබගේ දැනුම්දීම් වල එම වසමේ අන්තර්ගතය නොදකිනු ඇත. එම වසමෙන් ඔබගේ අනුගාමිකයින් ඉවත් කරනු ලැබේ.", + "confirmations.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "නික්මෙන්න", "confirmations.logout.message": "ඔබට නික්මෙන්න අවශ්‍ය බව විශ්වාසද?", "confirmations.mute.confirm": "නිශ්ශබ්ද", @@ -214,7 +216,7 @@ "empty_column.blocks": "කිසිදු පරිශීලකයෙකු අවහිර කර නැත.", "empty_column.bookmarked_statuses": "ඔබට තවමත් පිටු සලකුණු කළ මෙවලම් කිසිවක් නොමැත. ඔබ එකක් පිටු සලකුණු කළ විට, එය මෙහි පෙන්වනු ඇත.", "empty_column.community": "දේශීය කාලරේඛාව හිස් ය. පන්දුව පෙරළීමට ප්‍රසිද්ධියේ යමක් ලියන්න!", - "empty_column.direct": "ඔබට තවමත් සෘජු පණිවිඩ කිසිවක් නොමැත. ඔබ එකක් යවන විට හෝ ලැබුණු විට, එය මෙහි පෙන්වනු ඇත.", + "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "අවහිර කරන ලද වසම් නැත.", "empty_column.explore_statuses": "දැන් කිසිවක් නැඹුරු නොවේ. පසුව නැවත පරීක්ෂා කරන්න!", "empty_column.favourited_statuses": "ඔබට තවමත් ප්‍රියතම දත් කිසිවක් නැත. ඔබ කැමති එකක් වූ විට, එය මෙහි පෙන්වනු ඇත.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "එක් තීරුවක තත්ත්වය නාභිගත කිරීමට", "keyboard_shortcuts.compose": "රචනා පාඨ ප්‍රදේශය නාභිගත කිරීමට", "keyboard_shortcuts.description": "සවිස්තරය", - "keyboard_shortcuts.direct": "සෘජු පණිවිඩ තීරුව විවෘත කිරීමට", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "ලැයිස්තුවේ පහළට ගමන් කිරීමට", "keyboard_shortcuts.enter": "ලිපිය අරින්න", "keyboard_shortcuts.favourite": "කැමති කිරීමට", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "පොත්යොමු", "navigation_bar.community_timeline": "දේශීය කාලරේඛාව", "navigation_bar.compose": "නව ටූට් සාදන්න", - "navigation_bar.direct": "සෘජු පණිවිඩ", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "සොයා ගන්න", "navigation_bar.domain_blocks": "අවහිර කළ වසම්", "navigation_bar.edit_profile": "පැතිකඩ සංස්කරණය", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "ආයාචිත", "report_notification.categories.violation": "නීතිය කඩ කිරීම", "report_notification.open": "විවෘත වාර්තාව", + "search.no_recent_searches": "No recent searches", "search.placeholder": "සොයන්න", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Search or paste URL", - "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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "සියල්ල", "search_results.hashtags": "හැෂ් ටැග්", "search_results.nothing_found": "මෙම සෙවුම් පද සඳහා කිසිවක් සොයාගත නොහැකි විය", @@ -555,7 +559,8 @@ "status.copy": "තත්වයට සබැඳිය පිටපත් කරන්න", "status.delete": "මකන්න", "status.detailed_status": "විස්තරාත්මක සංවාද දැක්ම", - "status.direct": "@{name} සෘජු පණිවිඩයක්", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "සංස්කරණය", "status.edited": "සංශෝධිතයි {date}", "status.edited_x_times": "සංශෝධිතයි {count, plural, one {වාර {count}} other {වාර {count}}}", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 03c237a649..d8c39fabfe 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -20,7 +20,7 @@ "account.blocked": "Blokovaný/á", "account.browse_more_on_origin_server": "Prehľadávaj viac na pôvodnom profile", "account.cancel_follow_request": "Stiahni žiadosť o nasledovanie", - "account.direct": "Priama správa pre @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Prestaň ma oboznamovať, keď má @{name} príspevky", "account.domain_blocked": "Doména ukrytá", "account.edit_profile": "Uprav profil", @@ -102,7 +102,7 @@ "column.blocks": "Blokovaní užívatelia", "column.bookmarks": "Záložky", "column.community": "Miestna časová os", - "column.direct": "Priame správy", + "column.direct": "Private mentions", "column.directory": "Prehľadávaj profily", "column.domain_blocks": "Skryté domény", "column.favourites": "Obľúbené", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Máte neuložené zmeny v popise alebo náhľade média, zahodiť ich aj tak?", "confirmations.domain_block.confirm": "Skry celú doménu", "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.edit.confirm": "Uprav", + "confirmations.edit.message": "Úpravou teraz prepíšeš správu, ktorú práve zostavuješ. Si si istý/á, že chceš pokračovať?", "confirmations.logout.confirm": "Odhlás sa", "confirmations.logout.message": "Si si istý/á, že sa chceš odhlásiť?", "confirmations.mute.confirm": "Nevšímaj si", @@ -214,7 +216,7 @@ "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.direct": "You don't have any private mentions yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Žiadne domény ešte niesú skryté.", "empty_column.explore_statuses": "Momentálne nie je nič trendové. Pozrite sa neskôr!", "empty_column.favourited_statuses": "Nemáš obľúbené ešte žiadne príspevky. Keď si nejaký obľúbiš, bude zobrazený práve tu.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "zameraj sa na príspevok v jednom zo stĺpcov", "keyboard_shortcuts.compose": "zameraj sa na písaciu plochu", "keyboard_shortcuts.description": "Popis", - "keyboard_shortcuts.direct": "pre otvorenie panelu priamých správ", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "posunúť sa dole v zozname", "keyboard_shortcuts.enter": "Otvor príspevok", "keyboard_shortcuts.favourite": "pridaj do obľúbených", @@ -374,7 +376,7 @@ "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.direct": "Private mentions", "navigation_bar.discover": "Objavuj", "navigation_bar.domain_blocks": "Skryté domény", "navigation_bar.edit_profile": "Uprav profil", @@ -509,10 +511,10 @@ "report.statuses.title": "Sú k dispozícii príspevky podporujúce toto hlásenie?", "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.take_action": "Tu sú tvoje možnosti kontrolovať, čo vidíš na Mastodone:", + "report.thanks.take_action_actionable": "Kým to vyhodnotíme, môžeš podniknúť kroky voči @{name}:", "report.thanks.title": "Nechceš to vidieť?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.thanks.title_actionable": "Vďaka za nahlásenie, pozrieme sa na to.", "report.unfollow": "Nesleduj @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Porušenie pravidla", "report_notification.open": "Otvor hlásenie", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Hľadaj", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Hľadaj, alebo vlož URL adresu", - "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.", - "search_popout.tips.hashtag": "haštag", - "search_popout.tips.status": "príspevok", - "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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "Všetky", "search_results.hashtags": "Haštagy", "search_results.nothing_found": "Pre tieto výrazy nemožno nič nájsť", @@ -555,7 +559,8 @@ "status.copy": "Skopíruj odkaz na príspevok", "status.delete": "Zmazať", "status.detailed_status": "Podrobný náhľad celej konverzácie", - "status.direct": "Priama správa pre @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Uprav", "status.edited": "Upravené {date}", "status.edited_x_times": "Upravený {count, plural, one {{count} krát} other {{count} krát}}", @@ -595,7 +600,7 @@ "status.show_more_all": "Všetkým ukáž viac", "status.show_original": "Ukáž pôvodný", "status.translate": "Preložiť", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Preložené z {lang} pomocou {provider}", "status.uncached_media_warning": "Nedostupný/é", "status.unmute_conversation": "Prestaň si nevšímať konverzáciu", "status.unpin": "Odopni z profilu", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index d706eac777..3c6da433b1 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -20,7 +20,7 @@ "account.blocked": "Blokirano", "account.browse_more_on_origin_server": "Brskaj več po izvirnem profilu", "account.cancel_follow_request": "Umakni zahtevo za sledenje", - "account.direct": "Neposredno sporočilo @{name}", + "account.direct": "Zasebno omeni @{name}", "account.disable_notifications": "Ne obveščaj me več, ko ima @{name} novo objavo", "account.domain_blocked": "Blokirana domena", "account.edit_profile": "Uredi profil", @@ -102,7 +102,7 @@ "column.blocks": "Blokirani uporabniki", "column.bookmarks": "Zaznamki", "column.community": "Krajevna časovnica", - "column.direct": "Neposredna sporočila", + "column.direct": "Zasebne omembe", "column.directory": "Prebrskaj profile", "column.domain_blocks": "Blokirane domene", "column.favourites": "Priljubljene", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Imate ne shranjene spremembe za medijski opis ali predogled; jih želite kljub temu opustiti?", "confirmations.domain_block.confirm": "Blokiraj celotno domeno", "confirmations.domain_block.message": "Ali ste res, res prepričani, da želite blokirati celotno {domain}? V večini primerov je nekaj ciljnih blokiranj ali utišanj dovolj in boljše. Vsebino iz te domene ne boste videli v javnih časovnicah ali obvestilih. Vaši sledilci iz te domene bodo odstranjeni.", + "confirmations.edit.confirm": "Uredi", + "confirmations.edit.message": "Urejanje bo prepisalo sporočilo, ki ga trenutno sestavljate. Ali ste prepričani, da želite nadaljevati?", "confirmations.logout.confirm": "Odjava", "confirmations.logout.message": "Ali ste prepričani, da se želite odjaviti?", "confirmations.mute.confirm": "Utišanje", @@ -214,7 +216,7 @@ "empty_column.blocks": "Niste še blokirali nobenega uporabnika.", "empty_column.bookmarked_statuses": "Zaenkrat še nimate zaznamovanih objav. Ko objavo zaznamujete, se pojavi tukaj.", "empty_column.community": "Krajevna časovnica je prazna. Napišite nekaj javnega, da se bo snežna kepa zakotalila!", - "empty_column.direct": "Nimate še nobenih neposrednih sporočil. Ko ga boste poslali ali prejeli, se bo prikazal tukaj.", + "empty_column.direct": "Nimate še nobenih zasebnih omemb. Ko jih boste poslali ali prejeli, se bodo prikazale tukaj.", "empty_column.domain_blocks": "Zaenkrat ni blokiranih domen.", "empty_column.explore_statuses": "Trenutno ni nič v trendu. Preverite znova kasneje!", "empty_column.favourited_statuses": "Nimate priljubljenih objav. Ko boste vzljubili kakšno, bo prikazana tukaj.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Pozornost na stolpec", "keyboard_shortcuts.compose": "Pozornost na območje za sestavljanje besedila", "keyboard_shortcuts.description": "Opis", - "keyboard_shortcuts.direct": "odpri stolpec za neposredna sporočila", + "keyboard_shortcuts.direct": "za odpiranje stolpca zasebnih omemb", "keyboard_shortcuts.down": "Premakni navzdol po seznamu", "keyboard_shortcuts.enter": "Odpri objavo", "keyboard_shortcuts.favourite": "Vzljubi objavo", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Zaznamki", "navigation_bar.community_timeline": "Krajevna časovnica", "navigation_bar.compose": "Sestavi novo objavo", - "navigation_bar.direct": "Neposredna sporočila", + "navigation_bar.direct": "Zasebne omembe", "navigation_bar.discover": "Odkrijte", "navigation_bar.domain_blocks": "Blokirane domene", "navigation_bar.edit_profile": "Uredi profil", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Neželeno", "report_notification.categories.violation": "Kršitev pravila", "report_notification.open": "Odpri prijavo", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Iskanje", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Iščite ali prilepite URL", - "search_popout.search_format": "Napredna oblika iskanja", - "search_popout.tips.full_text": "Enostavno besedilo vrne objave, ki ste jih napisali, vzljubili, izpostavili ali ste bili v njih omenjeni, kot tudi ujemajoča se uporabniška imena, prikazna imena in ključnike.", - "search_popout.tips.hashtag": "ključnik", - "search_popout.tips.status": "objava", - "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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profili", "search_results.all": "Vse", "search_results.hashtags": "Ključniki", "search_results.nothing_found": "Za ta iskalni niz ni zadetkov", @@ -555,7 +559,8 @@ "status.copy": "Kopiraj povezavo do objave", "status.delete": "Izbriši", "status.detailed_status": "Podroben pogled pogovora", - "status.direct": "Neposredno sporočilo @{name}", + "status.direct": "Zasebno omeni @{name}", + "status.direct_indicator": "Zasebna omemba", "status.edit": "Uredi", "status.edited": "Urejeno {date}", "status.edited_x_times": "Urejeno {count, plural, one {#-krat} two {#-krat} few {#-krat} other {#-krat}}", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 927cf7659e..93a00e51ec 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -20,7 +20,7 @@ "account.blocked": "E bllokuar", "account.browse_more_on_origin_server": "Shfletoni më tepër rreth profilit origjinal", "account.cancel_follow_request": "Tërhiq mbrapsht kërkesë për ndjekje", - "account.direct": "Mesazh i drejtpërdrejtë për @{name}", + "account.direct": "Përmendje private për @{name}", "account.disable_notifications": "Resht së njoftuari mua, kur poston @{name}", "account.domain_blocked": "Përkatësia u bllokua", "account.edit_profile": "Përpunoni profilin", @@ -102,7 +102,7 @@ "column.blocks": "Përdorues të bllokuar", "column.bookmarks": "Faqerojtës", "column.community": "Rrjedhë kohore vendore", - "column.direct": "Mesazhe të drejtpërdrejtë", + "column.direct": "Përmendje private", "column.directory": "Shfletoni profile", "column.domain_blocks": "Përkatësi të bllokuara", "column.favourites": "Të parapëlqyer", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Keni ndryshime të paruajtura te përshkrimi ose paraparja e medias, të hidhen tej, sido qoftë?", "confirmations.domain_block.confirm": "Bllokoje krejt përkatësinë", "confirmations.domain_block.message": "Jeni i sigurt, shumë i sigurt se doni të bllokohet krejt {domain}? Në shumicën e rasteve, ndoca bllokime ose heshtime me synim të caktuar janë të mjaftueshme dhe të parapëlqyera. S’keni për të parë lëndë nga kjo përkatësi në ndonjë rrjedhë kohore publike, apo te njoftimet tuaja. Ndjekësit tuaj prej asaj përkatësie do të hiqen.", + "confirmations.edit.confirm": "Përpunojeni", + "confirmations.edit.message": "Përpunimi tani do të sjellë mbishkrim të mesazhit që po hartoni aktualisht. Jeni i sigurt se doni të vazhdohet?", "confirmations.logout.confirm": "Dilni", "confirmations.logout.message": "Jeni i sigurt se doni të dilet?", "confirmations.mute.confirm": "Heshtoje", @@ -214,7 +216,7 @@ "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.direct": "S’keni ende ndonjë përmendje private. Kur dërgoni ose merrni një të tillë, 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.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Fokusi mbi një shtyllë", "keyboard_shortcuts.compose": "Fokusi te fusha e hartimit të mesazheve", "keyboard_shortcuts.description": "Përshkrim", - "keyboard_shortcuts.direct": "për hapje shtylle mesazhesh të drejtpërdrejtë", + "keyboard_shortcuts.direct": "që të hapni shtyllën e përmendjeve private", "keyboard_shortcuts.down": "Për zbritje poshtë nëpër listë", "keyboard_shortcuts.enter": "Për hapje postimi", "keyboard_shortcuts.favourite": "Për t’i vënë shenjë si të parapëlqyer një postimi", @@ -374,7 +376,7 @@ "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.direct": "Përmendje private", "navigation_bar.discover": "Zbuloni", "navigation_bar.domain_blocks": "Përkatësi të bllokuara", "navigation_bar.edit_profile": "Përpunoni profilin", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "I padëshiruar", "report_notification.categories.violation": "Cenim rregullash", "report_notification.open": "Hape raportimin", + "search.no_recent_searches": "Pa kërkime së fundi", "search.placeholder": "Kërkoni", + "search.quick_action.account_search": "Profile me përputhje me {x}", + "search.quick_action.go_to_account": "Kalo te profili {x}", + "search.quick_action.go_to_hashtag": "Kalo te hashtag-u {x}", + "search.quick_action.open_url": "Hape URL-në në Mastodon", + "search.quick_action.status_search": "Postime me përputhje me {x}", "search.search_or_paste": "Kërkoni, ose hidhni një URL", - "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.", - "search_popout.tips.hashtag": "hashtag", - "search_popout.tips.status": "mesazh", - "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_popout.quick_actions": "Veprime të shpejta", + "search_popout.recent": "Kërkime së fundi", + "search_results.accounts": "Profile", "search_results.all": "Krejt", "search_results.hashtags": "Hashtag-ë", "search_results.nothing_found": "S’u gjet gjë për këto terma kërkimi", @@ -555,7 +559,8 @@ "status.copy": "Kopjoje lidhjen për te mesazhi", "status.delete": "Fshije", "status.detailed_status": "Pamje e hollësishme bisede", - "status.direct": "Mesazh i drejtpërdrejtë për @{name}", + "status.direct": "Përmendje private për @{name}", + "status.direct_indicator": "Përmendje private", "status.edit": "Përpunojeni", "status.edited": "Përpunuar më {date}", "status.edited_x_times": "Përpunuar {count, plural, one {{count} herë} other {{count} herë}}", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index a3ffb413ce..f35d7025c1 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -4,12 +4,12 @@ "about.disclaimer": "Mastodon je besplatan softver otvorenog koda i zaštićeni znak kompanije Mastodon gGmbH.", "about.domain_blocks.no_reason_available": "Razlog nije naveden", "about.domain_blocks.preamble": "Mastodon vam generalno omogućava da vidite sadržaj i komunicirate sa korisnicima sa bilo kog drugog servera u fediverzumu. Ovo su izuzeci koji su napravljeni na ovom serveru.", - "about.domain_blocks.silenced.explanation": "U načelu nećete videti profile i sadržaj sa ovog servera, osim ako ga eksplicitno ne potražite ili se uključite tako što ćete ga pratiti.", + "about.domain_blocks.silenced.explanation": "Nećete videti profile i sadržaj sa ovog servera osim ako ih eksplicitno ne potražite ili ne zapratite neki profil sa servera.", "about.domain_blocks.silenced.title": "Ograničen", - "about.domain_blocks.suspended.explanation": "Podaci sa ovog servera neće se obrađivati, čuvati ili razmenjivati, što onemogućava bilo kakvu interakciju ili komunikaciju sa korisnicima sa ovog servera.", + "about.domain_blocks.suspended.explanation": "Podaci sa ovog servera neće se obrađivati, čuvati niti razmenjivati, što će onemogućiti bilo kakvu interakciju ili komunikaciju sa korisnicima sa ovog servera.", "about.domain_blocks.suspended.title": "Suspendovan", "about.not_available": "Ove informacije nisu dostupne na ovom serveru.", - "about.powered_by": "Decentralizovana društvena medija koju pokreće {mastodon}", + "about.powered_by": "Decentralizovana društvena mreža koju pokreće {mastodon}", "about.rules": "Pravila servera", "account.account_note_header": "Napomena", "account.add_or_remove_from_list": "Dodaj ili ukloni sa lista", @@ -20,7 +20,7 @@ "account.blocked": "Blokiran", "account.browse_more_on_origin_server": "Pregledajte još na originalnom profilu", "account.cancel_follow_request": "Povuci zahtev za praćenje", - "account.direct": "Direktna poruka @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Zaustavi obaveštavanje za objave korisnika @{name}", "account.domain_blocked": "Domen je blokiran", "account.edit_profile": "Uredi profil", @@ -38,11 +38,11 @@ "account.follows.empty": "Ovaj korisnik još uvek nikog ne prati.", "account.follows_you": "Prati vas", "account.go_to_profile": "Idi na profil", - "account.hide_reblogs": "Sakrij podržavanja od @{name}", - "account.joined_short": "Pridružio se", + "account.hide_reblogs": "Sakrij podržavanja @{name}", + "account.joined_short": "Datum pridruživanja", "account.languages": "Promeni pretplaćene jezike", "account.link_verified_on": "Vlasništvo nad ovom vezom je provereno {date}", - "account.locked_info": "Status privatnosti ovog naloga je podešen na zaključano. Vlasnik ručno pregleda ko ga može pratiti.", + "account.locked_info": "Status privatnosti ovog naloga je podešen na „zaključano”. Vlasnik ručno pregleda ko ga može pratiti.", "account.media": "Multimedija", "account.mention": "Pomeni korisnika @{name}", "account.moved_to": "Korisnik {name} je naznačio da je njegov novi nalog sada:", @@ -91,7 +91,7 @@ "bundle_column_error.routing.body": "Nije moguće pronaći traženu stranicu. Da li ste sigurni da je URL u adresnom polju ispravan?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Zatvori", - "bundle_modal_error.message": "Nešto nije bilo u redu pri učitavanju ove komponente.", + "bundle_modal_error.message": "Nešto je pošlo naopako tokom učitavanja ove komponente.", "bundle_modal_error.retry": "Pokušajte ponovo", "closed_registrations.other_server_instructions": "Pošto je Mastodon decentralizovan, možete napraviti nalog na drugom serveru ali i dalje komunicirati sa ovim.", "closed_registrations_modal.description": "Kreiranje naloga na {domain} trenutno nije moguće, ali imajte u vidu da vam ne treba nalog zasebno na {domain} da biste koristili Mastodon.", @@ -102,7 +102,7 @@ "column.blocks": "Blokirani korisnici", "column.bookmarks": "Obeleživači", "column.community": "Lokalna vremenska linija", - "column.direct": "Direktne poruke", + "column.direct": "Private mentions", "column.directory": "Pregledaj profile", "column.domain_blocks": "Blokirani domeni", "column.favourites": "Omiljeno", @@ -162,8 +162,10 @@ "confirmations.discard_edit_media.message": "Imate nesačuvane promene u opisu ili pregledu medija, da li ipak hoćete da ih odbacite?", "confirmations.domain_block.confirm": "Blokiraj ceo domen", "confirmations.domain_block.message": "Da li ste zaista sigurni da želite da blokirate ceo domen {domain}? U većini slučajeva, dovoljno je i poželjno nekoliko ciljanih blokiranja ili ignorisanja. Nećete videti sadržaj sa tog domena ni u jednoj javnoj vremenskoj liniji ili u vašim obaveštenjima. Vaši pratioci sa tog domena će biti uklonjeni.", - "confirmations.logout.confirm": "Odjavi se", - "confirmations.logout.message": "Da li se sigurni da želite da se odjavite?", + "confirmations.edit.confirm": "Uredi", + "confirmations.edit.message": "Uređivanjem će se obrisati poruka koju trenutno sastavljate. Da li ste sigurni da želite da nastavite?", + "confirmations.logout.confirm": "Odjava", + "confirmations.logout.message": "Da li ste sigurni da želite da se odjavite?", "confirmations.mute.confirm": "Ignoriši", "confirmations.mute.explanation": "Ovo će sakriti objave od korisnika i objave koje ga pominju, ali će mu i dalje biti dozvoljeno da vidi vaše objave i da vas prati.", "confirmations.mute.message": "Da li stvarno želite da ignorišete korisnika {name}?", @@ -187,13 +189,13 @@ "disabled_account_banner.text": "Vaš nalog {disabledAccount} je trenutno onemogućen.", "dismissable_banner.community_timeline": "Ovo su najnovije javne objave ljudi čije naloge hostuje {domain}.", "dismissable_banner.dismiss": "Odbaci", - "dismissable_banner.explore_links": "O ovim vestima upravo sada razgovaraju ljudi na ovom i drugim serverima decentralizovane mreže.", + "dismissable_banner.explore_links": "O ovim vestima trenutno razgovaraju ljudi na ovom i drugim serverima decentralizovane mreže.", "dismissable_banner.explore_statuses": "Ove objave sa ovog i drugih servera u decentralizovanoj mreži postaju sve popularnije na ovom serveru.", "dismissable_banner.explore_tags": "Ove heš oznake postaju sve popularnije među ljudima na ovom i drugim serverima decentralizovane mreže.", "dismissable_banner.public_timeline": "Ovo su najnovije javne objave ljudi na ovom i drugim serverima decentralizovane mreže za koje ovaj server zna.", "embed.instructions": "Ugradite ovu objavu na svoj veb sajt kopiranjem koda ispod.", "embed.preview": "Evo kako će to izgledati:", - "emoji_button.activity": "Aktivnost", + "emoji_button.activity": "Aktivnosti", "emoji_button.clear": "Obriši", "emoji_button.custom": "Prilagođeno", "emoji_button.flags": "Zastavice", @@ -214,30 +216,30 @@ "empty_column.blocks": "Još uvek niste blokirali nijednog korisnika.", "empty_column.bookmarked_statuses": "Još uvek nemate objava dodanih u obeleživače. Kada dodate neku, pojaviće se ovde.", "empty_column.community": "Lokalna vremenska linija je prazna. Napišite nešto javno da započnete!", - "empty_column.direct": "Još uvek nemate nijednu direktnu poruku. Kada pošaljete ili primite neku, pojaviće se ovde.", + "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Još uvek nema blokiranih domena.", "empty_column.explore_statuses": "Trenutno ništa nije u trendu. Proverite ponovo kasnije!", "empty_column.favourited_statuses": "Još uvek nemate objava označenih kao omiljene. Kada označite neku, pojaviće se ovde.", "empty_column.favourites": "Niko još nije označio ovu objavu kao omiljenu. Kada neko to uradi, pojaviće se ovde.", "empty_column.follow_recommendations": "Izgleda da ne mogu da se generišu bilo kakvi predlozi za vas. Možete pokušati da koristite pretragu kako biste potražili ljude koje možda poznajete ili istražili popularne heš oznake.", - "empty_column.follow_requests": "Još uvek nemate zahteva za praćenje. Kada primite zahtev, pojaviće se ovde.", - "empty_column.followed_tags": "Još uvek niste zapratili nijednu heš oznaku. Kada to uradite, one će se pojaviti ovde.", + "empty_column.follow_requests": "Još uvek nemate nijedan zahtev za praćenje. Kada primite zahtev, on će se pojaviti ovde.", + "empty_column.followed_tags": "Još uvek niste zapratili nijednu heš oznaku. Kada to uradite, one će se pojaviti ovde.", "empty_column.hashtag": "Još uvek nema ničega u ovoj heš oznaci.", "empty_column.home": "Vaša početna vremenska linija je prazna! Pratite više ljudi da biste je popunili. {suggestions}", "empty_column.home.suggestions": "Pogledajte neke predloge", "empty_column.list": "U ovoj listi još nema ničega. Kada članovi ove liste objave nešto novo, pojaviće se ovde.", - "empty_column.lists": "Još uvek nemate nijednu listu. Kada napravite jednu, pojaviće se ovde.", + "empty_column.lists": "Još uvek nemate nijednu listu. Kada napravite jednu, ona će se pojaviti ovde.", "empty_column.mutes": "Još uvek ne ignorišete nijednog korisnika.", "empty_column.notifications": "Još uvek nemate nikakva obaveštenja. Kada drugi ljudi budu u interakciji sa vama, videćete to ovde.", "empty_column.public": "Ovde nema ničega! Napišite nešto javno ili ručno pratite korisnike sa drugih servera da biste ovo popunili", "error.unexpected_crash.explanation": "Zbog greške u našem kodu ili problema sa kompatibilnošću pregledača, ova stranica se nije mogla pravilno prikazati.", "error.unexpected_crash.explanation_addons": "Ova stranica se nije mogla pravilno prikazati. Ovu grešku verovatno uzrokuju dodaci pregledača ili alati za automatsko prevođenje.", "error.unexpected_crash.next_steps": "Pokušajte da osvežite stranicu. Ako to ne pomogne, možda ćete i dalje moći da koristite Mastodon putem drugog pregledača ili matične aplikacije.", - "error.unexpected_crash.next_steps_addons": "Pokušajte da ih onemogućite i osvežite stranicu. Ako to ne pomogne, možda ćete i dalje moći da koristite Mastodon preko drugog pregledača ili matične aplikacije.", + "error.unexpected_crash.next_steps_addons": "Pokušajte da ih onemogućite i osvežite stranicu. Ako to ne pomogne, možete da nastavite da koristite Mastodon korišćenjem drugog pregledača ili matične aplikacije.", "errors.unexpected_crash.copy_stacktrace": "Kopiraj „stacktrace” u klipbord", "errors.unexpected_crash.report_issue": "Prijavi problem", "explore.search_results": "Rezultati pretrage", - "explore.suggested_follows": "Za tebe", + "explore.suggested_follows": "Za Vas", "explore.title": "Istraži", "explore.trending_links": "Vesti", "explore.trending_statuses": "Objave", @@ -249,7 +251,7 @@ "filter_modal.added.review_and_configure": "Za pregled i dalju konfiguraciju ove kategorije filtera, idite na {settings_link}.", "filter_modal.added.review_and_configure_title": "Podešavanja filtera", "filter_modal.added.settings_link": "stranica podešavanja", - "filter_modal.added.short_explanation": "Ova objava je dodata u sledeću kategoriju filtera: {title}.", + "filter_modal.added.short_explanation": "Ova objava je dodata u sledeću filter kategoriju: {title}.", "filter_modal.added.title": "Filter je dodat!", "filter_modal.select_filter.context_mismatch": "ne odnosi se na ovaj kontekst", "filter_modal.select_filter.expired": "isteklo", @@ -264,7 +266,7 @@ "follow_request.authorize": "Odobri", "follow_request.reject": "Odbij", "follow_requests.unlocked_explanation": "Iako vaš nalog nije zaključan, osoblje {domain} smatra da biste možda želeli da ručno pregledate zahteve za praćenje sa ovih naloga.", - "followed_tags": "Praćene heš oznake", + "followed_tags": "Praćene heš oznake", "footer.about": "Osnovni podaci", "footer.directory": "Direktorijum profila", "footer.get_app": "Preuzmite aplikaciju", @@ -280,13 +282,13 @@ "hashtag.column_header.tag_mode.none": "bez {additional}", "hashtag.column_settings.select.no_options_message": "Nisu pronađeni predlozi", "hashtag.column_settings.select.placeholder": "Unesite heš oznake…", - "hashtag.column_settings.tag_mode.all": "Sve ove", + "hashtag.column_settings.tag_mode.all": "Sve", "hashtag.column_settings.tag_mode.any": "Bilo koje od ovih", "hashtag.column_settings.tag_mode.none": "Nijedan od ovih", "hashtag.column_settings.tag_toggle": "Uključi dodatne oznake za ovu kolonu", - "hashtag.follow": "Prati heš oznaku", + "hashtag.follow": "Zaprati heš oznaku", "hashtag.unfollow": "Otprati heš oznaku", - "home.column_settings.basic": "Osnovno", + "home.column_settings.basic": "Osnovna", "home.column_settings.show_reblogs": "Prikaži podržavanja", "home.column_settings.show_replies": "Prikaži odgovore", "home.hide_announcements": "Sakrij najave", @@ -300,7 +302,7 @@ "interaction_modal.other_server_instructions": "Kopirajte i nalepite ovu URL adresu u polje pretrage svoje omiljene Mastodon aplikacije ili veb okruženje svog Mastodon servera.", "interaction_modal.preamble": "Pošto je Mastodon decentralizovan, možete koristiti svoj postojeći nalog koji hostuje drugi Mastodon server ili kompatibilna platforma ako nemate nalog na ovom.", "interaction_modal.title.favourite": "Označi objavu korisnika {name} kao omiljenu", - "interaction_modal.title.follow": "Prati {name}", + "interaction_modal.title.follow": "Zaprati {name}", "interaction_modal.title.reblog": "Podrži objavu korisnika {name}", "interaction_modal.title.reply": "Odgovori na objavu korisnika {name}", "intervals.full.days": "{number, plural, one {# dan} few {# dana} other {# dana}}", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Fokusiraj kolonu", "keyboard_shortcuts.compose": "Fokusiraj polje za sastavljanje objave", "keyboard_shortcuts.description": "Opis", - "keyboard_shortcuts.direct": "za otvaranje kolone direktnih poruka", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "Premesti nadole u listi", "keyboard_shortcuts.enter": "Otvori objavu", "keyboard_shortcuts.favourite": "Označi objavu kao omiljenu", @@ -354,10 +356,10 @@ "lists.edit.submit": "Promeni naslov", "lists.new.create": "Dodaj listu", "lists.new.title_placeholder": "Naslov nove liste", - "lists.replies_policy.followed": "Svaki praćeni korisnik", - "lists.replies_policy.list": "Članovi liste", - "lists.replies_policy.none": "Niko", - "lists.replies_policy.title": "Prikaži odgovore na:", + "lists.replies_policy.followed": "Svakom praćenom korisniku", + "lists.replies_policy.list": "Članovima liste", + "lists.replies_policy.none": "Nikome", + "lists.replies_policy.title": "Prikaži odgovore:", "lists.search": "Pretraži među ljudima koje pratite", "lists.subheading": "Vaše liste", "load_pending": "{count, plural, one {# nova stavka} few {# nove stavke} other {# novih stavki}}", @@ -368,13 +370,13 @@ "moved_to_account_banner.text": "Vaš nalog {disabledAccount} je trenutno onemogućen jer ste prešli na {movedToAccount}.", "mute_modal.duration": "Trajanje", "mute_modal.hide_notifications": "Sakriti obaveštenja od ovog korisnika?", - "mute_modal.indefinite": "Neodređen", + "mute_modal.indefinite": "Neodređeno", "navigation_bar.about": "Osnovni podaci", "navigation_bar.blocks": "Blokirani korisnici", "navigation_bar.bookmarks": "Obeleživači", "navigation_bar.community_timeline": "Lokalna vremenska linija", "navigation_bar.compose": "Sastavi novu objavu", - "navigation_bar.direct": "Direktne poruke", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Otkrij", "navigation_bar.domain_blocks": "Blokirani domeni", "navigation_bar.edit_profile": "Uredi profil", @@ -382,7 +384,7 @@ "navigation_bar.favourites": "Omiljeno", "navigation_bar.filters": "Ignorisane reči", "navigation_bar.follow_requests": "Zahtevi za praćenje", - "navigation_bar.followed_tags": "Praćene heš oznake", + "navigation_bar.followed_tags": "Praćene heš oznake", "navigation_bar.follows_and_followers": "Praćenja i pratioci", "navigation_bar.lists": "Liste", "navigation_bar.logout": "Odjava", @@ -393,9 +395,9 @@ "navigation_bar.public_timeline": "Združena vremenska linija", "navigation_bar.search": "Pretraga", "navigation_bar.security": "Bezbednost", - "not_signed_in_indicator.not_signed_in": "Morate da se prijavite da pristupite ovom resursu.", - "notification.admin.report": "{name} je prijavio {target}", - "notification.admin.sign_up": "{name} se registrovao", + "not_signed_in_indicator.not_signed_in": "Morate da se prijavite da biste pristupili ovom resursu.", + "notification.admin.report": "{name} je prijavio/-la {target}", + "notification.admin.sign_up": "{name} se registrovao/-la", "notification.favourite": "{name} je označio vašu objavu kao omiljenu", "notification.follow": "{name} vas je zapratio", "notification.follow_request": "{name} je zatražio da vas prati", @@ -412,7 +414,7 @@ "notifications.column_settings.alert": "Obaveštenja na radnoj površini", "notifications.column_settings.favourite": "Omiljeni:", "notifications.column_settings.filter_bar.advanced": "Prikaži sve kategorije", - "notifications.column_settings.filter_bar.category": "Traka za brzi filter", + "notifications.column_settings.filter_bar.category": "Traka za brzo filtriranje", "notifications.column_settings.filter_bar.show_bar": "Prikaži traku sa filterima", "notifications.column_settings.follow": "Novi pratioci:", "notifications.column_settings.follow_request": "Novi zahtevi za praćenje:", @@ -436,13 +438,13 @@ "notifications.grant_permission": "Odobri dozvolu.", "notifications.group": "{count} obaveštenja", "notifications.mark_as_read": "Označi svako obaveštenje kao pročitano", - "notifications.permission_denied": "Obaveštenja na radnoj površini nisu dostupna zbog prethodno odbijenog zahteva za dozvolom pregledača", + "notifications.permission_denied": "Obaveštenja na radnoj površini nisu dostupna zbog prethodno odbijenog zahteva za dozvolu pregledača", "notifications.permission_denied_alert": "Obaveštenja na radnoj površini ne mogu biti omogućena, jer je dozvola pregledača ranije bila odbijena", "notifications.permission_required": "Obaveštenja na radnoj površini nisu dostupna jer potrebna dozvola nije dodeljena.", "notifications_permission_banner.enable": "Omogućiti obaveštenja na radnoj površini", "notifications_permission_banner.how_to_control": "Da biste primali obaveštenja kada Mastodon nije otvoren, omogućite obaveštenja na radnoj površini. Kada su obaveštenja na radnoj površini omogućena vrste interakcija koje ona generišu mogu se podešavati pomoću dugmeta {icon}.", "notifications_permission_banner.title": "Nikada ništa ne propustite", - "picture_in_picture.restore": "Vrati to nazad", + "picture_in_picture.restore": "Vrati nazad", "poll.closed": "Zatvoreno", "poll.refresh": "Osveži", "poll.total_people": "{count, plural, one {# osoba} few {# osobe} other {# osoba}}", @@ -453,13 +455,13 @@ "poll_button.add_poll": "Dodaj anketu", "poll_button.remove_poll": "Ukloni anketu", "privacy.change": "Promeni privatnost objave", - "privacy.direct.long": "Vidljivo samo za pomenute korisnike", + "privacy.direct.long": "Vidljivo samo pomenutim korisnicima", "privacy.direct.short": "Samo pomenute osobe", - "privacy.private.long": "Vidljivo samo za pratioce", - "privacy.private.short": "Samo pratioci", + "privacy.private.long": "Vidljivo samo pratiocima", + "privacy.private.short": "Samo pratiocima", "privacy.public.long": "Vidljivo za sve", "privacy.public.short": "Javno", - "privacy.unlisted.long": "Vidljivo za sve, ali isključeno iz funkcije otkrivanja", + "privacy.unlisted.long": "Vidljivo svima, ali isključeno iz funkcija otkrivanja", "privacy.unlisted.short": "Neizlistano", "privacy_policy.last_updated": "Poslednje ažuriranje {date}", "privacy_policy.title": "Politika privatnosti", @@ -479,34 +481,34 @@ "relative_time.today": "danas", "reply_indicator.cancel": "Otkaži", "report.block": "Blokiraj", - "report.block_explanation": "Nećete videti objave korisnika. Ni on neće videti vaše objave niti će moći da vas prati. Takođe može da zna da je blokiran.", + "report.block_explanation": "Nećete videti objave korisnika. Ni on neće videti Vaše objave niti će moći da Vas prati. Takođe će moći da sazna da je blokiran.", "report.categories.other": "Ostalo", "report.categories.spam": "Spam", "report.categories.violation": "Sadržaj krši jedno ili više pravila servera", "report.category.subtitle": "Odaberite najpribližnije", - "report.category.title": "Recite nam šta je problem sa ovim {type}", - "report.category.title_account": "profilom", + "report.category.title": "Recite nam šta je problem sa {type}", + "report.category.title_account": "ovim profilom", "report.category.title_status": "objavom", "report.close": "Gotovo", - "report.comment.title": "Da li ima nešto dodatno što treba da znamo?", + "report.comment.title": "Da li ima još nešto što biste hteli da nam date do znanja?", "report.forward": "Proslediti {target}", "report.forward_hint": "Nalog je sa drugog servera. Poslati anonimnu kopiju prijave i tamo?", "report.mute": "Ignoriši", - "report.mute_explanation": "Nećete videti objave korisnika. On i i dalje može da vas prati i vidi vaše objave i neće znati da je ignorisan.", + "report.mute_explanation": "Nećete videti objave korisnika. On će i dalje moći da Vas prati i vidi Vaše objave i neće znati da je ignorisan.", "report.next": "Sledeće", "report.placeholder": "Dodatni komentari", "report.reasons.dislike": "Ne sviđa mi se", - "report.reasons.dislike_description": "Ovo nije nešto što želiš da vidite", + "report.reasons.dislike_description": "Ovo nije nešto što želite da vidite", "report.reasons.other": "Nešto drugo", "report.reasons.other_description": "Problem se ne uklapa u druge kategorije", "report.reasons.spam": "Ovo je spam", "report.reasons.spam_description": "Zlonamerne veze, lažno angažovanje ili odgovori koji se ponavljaju", "report.reasons.violation": "Krši pravila servera", - "report.reasons.violation_description": "Svesni ste da krši neka određena pravila", - "report.rules.subtitle": "Izaberi sve što važi", + "report.reasons.violation_description": "Svesni ste da krši određena pravila", + "report.rules.subtitle": "Izaberite sva pravila koja su prekršena", "report.rules.title": "Koja pravila su prekršena?", - "report.statuses.subtitle": "Izaberi sve što važi", - "report.statuses.title": "Da li postoje bilo kakve objave koje podržavaju ovu prijavu?", + "report.statuses.subtitle": "Izaberite sve što važi", + "report.statuses.title": "Ima li bilo kakvih objava koje potkrepljuju ovu prijavu?", "report.submit": "Pošalji", "report.target": "Prijavljujem {target}", "report.thanks.take_action": "Ovo su Vaše opcije da kontrolišete šta vidite na Mastodon-u:", @@ -520,30 +522,32 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Kršenje pravila", "report_notification.open": "Otvori prijavu", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Pretraga", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Pretražite ili unesite adresu", - "search_popout.search_format": "Napredni format pretrage", - "search_popout.tips.full_text": "Jednostavan tekst vraća objave koje ste napisali, dodali u omiljene, podržali ili u kojima ste bili pomenuti, kao i podudaranje korisničkih imena, prikazana imena i heš oznake.", - "search_popout.tips.hashtag": "heš oznaka", - "search_popout.tips.status": "objava", - "search_popout.tips.text": "Jednostavan tekst vraća podudaranje imena za prikaz, korisnička imena i heš oznake", - "search_popout.tips.user": "korisnik", - "search_results.accounts": "Ljudi", + "search_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "Sve", "search_results.hashtags": "Heš oznake", "search_results.nothing_found": "Nije moguće pronaći ništa za ove termine za pretragu", "search_results.statuses": "Objave", "search_results.statuses_fts_disabled": "Pretraga objava po sadržaju nije omogućena na ovom Mastodon serveru.", - "search_results.title": "Pretraži {q}", + "search_results.title": "Traži {q}", "search_results.total": "{count, number} {count, plural, one {rezultat} few {rezultata} other {rezultata}}", "server_banner.about_active_users": "Ljudi koji su koristili ovaj server u prethodnih 30 dana (mesečno aktivnih korisnika)", "server_banner.active_users": "aktivnih korisnika", - "server_banner.administered_by": "Administrirano od strane:", + "server_banner.administered_by": "Administrira:", "server_banner.introduction": "{domain} je deo decentralizovane društvene mreže koju pokreće {mastodon}.", "server_banner.learn_more": "Saznajte više", "server_banner.server_stats": "Statistike servera:", - "sign_in_banner.create_account": "Napravi nalog", - "sign_in_banner.sign_in": "Prijavi se", + "sign_in_banner.create_account": "Napravite nalog", + "sign_in_banner.sign_in": "Prijavite se", "sign_in_banner.text": "Prijavite se da biste pratili profile ili heš oznake, označili objave kao omiljene, delili i odgovarali na njih. Takođe možete komunicirati sa svog naloga na drugom serveru.", "status.admin_account": "Otvori moderatorsko okruženje za @{name}", "status.admin_domain": "Otvori moderatorsko okruženje za {domain}", @@ -555,7 +559,8 @@ "status.copy": "Kopiraj vezu u objavu", "status.delete": "Izbriši", "status.detailed_status": "Detaljan prikaz razgovora", - "status.direct": "Direktna poruka @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Uredi", "status.edited": "Uređeno {date}", "status.edited_x_times": "Uređeno {count, plural, one {{count} put} other {{count} puta}}", @@ -584,7 +589,7 @@ "status.remove_bookmark": "Ukloni obeleživač", "status.replied_to": "Odgovor za {name}", "status.reply": "Odgovori", - "status.replyAll": "Odgovori na diskusiju", + "status.replyAll": "Odgovori na niz", "status.report": "Prijavi @{name}", "status.sensitive_warning": "Osetljiv sadržaj", "status.share": "Podeli", @@ -599,7 +604,7 @@ "status.uncached_media_warning": "Nije dostupno", "status.unmute_conversation": "Ne ignoriši razgovor", "status.unpin": "Otkači sa profila", - "subscribed_languages.lead": "Samo objave na označenim jezicima će se pojavljivati na početnoj liniji i na listama posle ove izmene. Odaberite ništa da primate objave na svim jezicima.", + "subscribed_languages.lead": "Samo objave na označenim jezicima će se pojavljivati na početnoj liniji i na listama posle ove izmene. Kada nijedan jezik nije izabran, primaćete objave na svim jezicima.", "subscribed_languages.save": "Sačuvaj izmene", "subscribed_languages.target": "Promeni jezike na koje je {target} prijavljen", "suggestions.dismiss": "Odbaci predlog", @@ -615,9 +620,9 @@ "time_remaining.seconds": "Ostalo {number, plural, one {# sekund} few {# sekunde} other {# sekundi}}", "timeline_hint.remote_resource_not_displayed": "{resource} sa drugih servera se ne prikazuju.", "timeline_hint.resources.followers": "Pratioci", - "timeline_hint.resources.follows": "Praćeni", + "timeline_hint.resources.follows": "Praćenja", "timeline_hint.resources.statuses": "Starije objave", - "trends.counter_by_accounts": "{count, plural, one {{counter} osoba} few {{counter} osobe} other {{counter} osoba}} u proteklih {days, plural, one {dan} few {{days} dana} other {{days} dana}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} osoba} few {{counter} osobe} other {{counter} osoba}} u proteklih {days, plural, one {dan} other {{days} dana}}", "trends.trending_now": "U trendu sada", "ui.beforeunload": "Vaš nacrt će biti izgubljen ako napustite Mastodon.", "units.short.billion": "{count} mlrd.", @@ -626,9 +631,9 @@ "upload_area.title": "Prevucite i otpustite za otpremanje", "upload_button.label": "Dodaj slike, video ili audio datoteku", "upload_error.limit": "Dostignuto je ograničenje za otpremanje datoteka.", - "upload_error.poll": "Otpremanje datoteka nije dozvoljeno sa anketama.", - "upload_form.audio_description": "Opišite za osobe sa oštećenim sluhom", - "upload_form.description": "Opišite za osobe sa oštećenim vidom", + "upload_error.poll": "Otpremanje datoteka nije dozvoljeno kod anketa.", + "upload_form.audio_description": "Dodajte opis za osobe sa oštećenim sluhom", + "upload_form.description": "Dodajte opis za osobe sa oštećenim vidom", "upload_form.description_missing": "Nema dodatog opisa", "upload_form.edit": "Uredi", "upload_form.thumbnail": "Promeni sličicu", @@ -639,8 +644,8 @@ "upload_modal.applying": "Primena…", "upload_modal.choose_image": "Odaberite sliku", "upload_modal.description_placeholder": "Ljubazni fenjerdžija čađavog lica hoće da mi pokaže štos", - "upload_modal.detect_text": "Otkrij tekst sa slike", - "upload_modal.edit_media": "Uredi miltimediju", + "upload_modal.detect_text": "Pronađi tekst sa slike", + "upload_modal.edit_media": "Uredi multimediju", "upload_modal.hint": "Kliknite ili prevucite kružić na pregledu za izbor tačke fokusa koja će uvek biti vidljiva na svim sličicama.", "upload_modal.preparing_ocr": "Priprema OCR-a…", "upload_modal.preview_label": "Pregled ({ratio})", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index ea39d230a2..bfdd031f87 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -4,12 +4,12 @@ "about.disclaimer": "Mastodon је бесплатан софтвер отвореног кода и заштићени знак компаније Mastodon gGmbH.", "about.domain_blocks.no_reason_available": "Разлог није наведен", "about.domain_blocks.preamble": "Мастодон вам генерално омогућава да видите садржај и комуницирате са корисницима са било ког другог сервера у федиверзуму. Ово су изузеци који су направљени на овом серверу.", - "about.domain_blocks.silenced.explanation": "У начелу нећете видети профиле и садржај са овог сервера, осим ако га експлицитно не потражите или се укључите тако што ћете га пратити.", + "about.domain_blocks.silenced.explanation": "Нећете видети профиле и садржај са овог сервера осим ако их експлицитно не потражите или не запратите неки профил са сервера.", "about.domain_blocks.silenced.title": "Ограничен", - "about.domain_blocks.suspended.explanation": "Подаци са овог сервера неће се обрађивати, чувати или размењивати, што онемогућава било какву интеракцију или комуникацију са корисницима са овог сервера.", + "about.domain_blocks.suspended.explanation": "Подаци са овог сервера неће се обрађивати, чувати нити размењивати, што ће онемогућити било какву интеракцију или комуникацију са корисницима са овог сервера.", "about.domain_blocks.suspended.title": "Суспендован", "about.not_available": "Ове информације нису доступне на овом серверу.", - "about.powered_by": "Децентрализована друштвена медија коју покреће {mastodon}", + "about.powered_by": "Децентрализована друштвена мрежа коју покреће {mastodon}", "about.rules": "Правила сервера", "account.account_note_header": "Напомена", "account.add_or_remove_from_list": "Додај или уклони са листа", @@ -20,7 +20,7 @@ "account.blocked": "Блокиран", "account.browse_more_on_origin_server": "Прегледајте још на оригиналном профилу", "account.cancel_follow_request": "Повуци захтев за праћење", - "account.direct": "Директна порука @{name}", + "account.direct": "Приватно помени @{name}", "account.disable_notifications": "Заустави обавештавање за објаве корисника @{name}", "account.domain_blocked": "Домен је блокиран", "account.edit_profile": "Уреди профил", @@ -38,11 +38,11 @@ "account.follows.empty": "Овај корисник још увек никог не прати.", "account.follows_you": "Прати вас", "account.go_to_profile": "Иди на профил", - "account.hide_reblogs": "Сакриј подржавања од @{name}", - "account.joined_short": "Придружио се", + "account.hide_reblogs": "Сакриј подржавања @{name}", + "account.joined_short": "Датум придруживања", "account.languages": "Промени претплаћене језике", "account.link_verified_on": "Власништво над овом везом је проверено {date}", - "account.locked_info": "Статус приватности овог налога је подешен на закључано. Власник ручно прегледа ко га може пратити.", + "account.locked_info": "Статус приватности овог налога је подешен на „закључано”. Власник ручно прегледа ко га може пратити.", "account.media": "Мултимедија", "account.mention": "Помени корисника @{name}", "account.moved_to": "Корисник {name} је назначио да је његов нови налог сада:", @@ -91,7 +91,7 @@ "bundle_column_error.routing.body": "Није могуће пронаћи тражену страницу. Да ли сте сигурни да је URL у адресном пољу исправан?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Затвори", - "bundle_modal_error.message": "Нешто није било у реду при учитавању ове компоненте.", + "bundle_modal_error.message": "Нешто је пошло наопако током учитавања ове компоненте.", "bundle_modal_error.retry": "Покушајте поново", "closed_registrations.other_server_instructions": "Пошто је Mastodon децентрализован, можете направити налог на другом серверу али и даље комуницирати са овим.", "closed_registrations_modal.description": "Креирање налога на {domain} тренутно није могуће, али имајте у виду да вам не треба налог засебно на {domain} да бисте користили Mastodon.", @@ -102,7 +102,7 @@ "column.blocks": "Блокирани корисници", "column.bookmarks": "Обележивачи", "column.community": "Локална временска линија", - "column.direct": "Директне поруке", + "column.direct": "Приватна помињања", "column.directory": "Прегледај профиле", "column.domain_blocks": "Блокирани домени", "column.favourites": "Омиљено", @@ -129,7 +129,7 @@ "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": "Додајте избор", @@ -155,22 +155,24 @@ "confirmations.cancel_follow_request.confirm": "Повуци захтев", "confirmations.cancel_follow_request.message": "Да ли сте сигурни да желите да повучете захтев да пратите {name}?", "confirmations.delete.confirm": "Избриши", - "confirmations.delete.message": "Да ли сте сигурни да желите изришете ову објаву?", + "confirmations.delete.message": "Да ли сте сигурни да желите да избришете ову објаву?", "confirmations.delete_list.confirm": "Избриши", "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.edit.confirm": "Уреди", + "confirmations.edit.message": "Уређивањем ће се обрисати порука коју тренутно састављате. Да ли сте сигурни да желите да наставите?", + "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": "Избриши разговор", @@ -179,7 +181,7 @@ "conversation.with": "Са {names}", "copypaste.copied": "Копирано", "copypaste.copy": "Копирај", - "directory.federated": "Са знаног фидеверзума", + "directory.federated": "Са знаног федиверзума", "directory.local": "Само са {domain}", "directory.new_arrivals": "Новопридошли", "directory.recently_active": "Недавно активни", @@ -187,13 +189,13 @@ "disabled_account_banner.text": "Ваш налог {disabledAccount} је тренутно онемогућен.", "dismissable_banner.community_timeline": "Ово су најновије јавне објаве људи чије налоге хостује {domain}.", "dismissable_banner.dismiss": "Одбаци", - "dismissable_banner.explore_links": "О овим вестима управо сада разговарају људи на овом и другим серверима децентрализоване мреже.", + "dismissable_banner.explore_links": "О овим вестима тренутно разговарају људи на овом и другим серверима децентрализоване мреже.", "dismissable_banner.explore_statuses": "Ове објаве са овог и других сервера у децентрализованој мрежи постају све популарније на овом серверу.", "dismissable_banner.explore_tags": "Ове хеш ознаке постају све популарније међу људима на овом и другим серверима децентрализоване мреже.", "dismissable_banner.public_timeline": "Ово су најновије јавне објаве људи на овом и другим серверима децентрализоване мреже за које овај сервер зна.", "embed.instructions": "Уградите ову објаву на свој веб сајт копирањем кода испод.", "embed.preview": "Ево како ће то изгледати:", - "emoji_button.activity": "Активност", + "emoji_button.activity": "Активности", "emoji_button.clear": "Обриши", "emoji_button.custom": "Прилагођено", "emoji_button.flags": "Заставице", @@ -214,30 +216,30 @@ "empty_column.blocks": "Још увек нисте блокирали ниједног корисника.", "empty_column.bookmarked_statuses": "Још увек немате објава доданих у обележиваче. Када додате неку, појавиће се овде.", "empty_column.community": "Локална временска линија је празна. Напишите нешто јавно да започнете!", - "empty_column.direct": "Још увек немате ниједну директну поруку. Када пошаљете или примите неку, појавиће се овде.", + "empty_column.direct": "Још увек немате приватних помињања. Када пошаљете или примите једно, оно ће се појавити овде.", "empty_column.domain_blocks": "Још увек нема блокираних домена.", "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.followed_tags": "Још увек нисте запратили ниједну хеш ознаку. Када то урадите, оне ће се појавити овде.", "empty_column.hashtag": "Још увек нема ничега у овој хеш ознаци.", "empty_column.home": "Ваша почетна временска линија је празна! Пратите више људи да бисте је попунили. {suggestions}", "empty_column.home.suggestions": "Погледајте неке предлоге", "empty_column.list": "У овој листи још нема ничега. Када чланови ове листе објаве нешто ново, појавиће се овде.", - "empty_column.lists": "Још увек немате ниједну листу. Када направите једну, појавиће се овде.", + "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": "Покушајте да освежите страницу. Ако то не помогне, можда ћете и даље моћи да користите Mastodon путем другог прегледача или матичне апликације.", - "error.unexpected_crash.next_steps_addons": "Покушајте да их онемогућите и освежите страницу. Ако то не помогне, можда ћете и даље моћи да користите Mastodon преко другог прегледача или матичне апликације.", + "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.suggested_follows": "За Вас", "explore.title": "Истражи", "explore.trending_links": "Вести", "explore.trending_statuses": "Објаве", @@ -249,7 +251,7 @@ "filter_modal.added.review_and_configure": "За преглед и даљу конфигурацију ове категорије филтера, идите на {settings_link}.", "filter_modal.added.review_and_configure_title": "Подешавања филтера", "filter_modal.added.settings_link": "страница подешавања", - "filter_modal.added.short_explanation": "Ова објава је додата у следећу категорију филтера: {title}.", + "filter_modal.added.short_explanation": "Ова објава је додата у следећу филтер категорију: {title}.", "filter_modal.added.title": "Филтер је додат!", "filter_modal.select_filter.context_mismatch": "не односи се на овај контекст", "filter_modal.select_filter.expired": "истекло", @@ -280,13 +282,13 @@ "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": "Све оve", + "hashtag.column_settings.tag_mode.all": "Све", "hashtag.column_settings.tag_mode.any": "Било које од ових", "hashtag.column_settings.tag_mode.none": "Ниједан од ових", "hashtag.column_settings.tag_toggle": "Укључи додатне ознаке за ову колону", - "hashtag.follow": "Прати хеш ознаку", + "hashtag.follow": "Запрати хеш ознаку", "hashtag.unfollow": "Отпрати хеш ознаку", - "home.column_settings.basic": "Основно", + "home.column_settings.basic": "Основна", "home.column_settings.show_reblogs": "Прикажи подржавања", "home.column_settings.show_replies": "Прикажи одговоре", "home.hide_announcements": "Сакриј најаве", @@ -300,7 +302,7 @@ "interaction_modal.other_server_instructions": "Копирајте и налепите ову URL адресу у поље претраге своје омиљене Mastodon апликације или веб окружење свог Mastodon сервера.", "interaction_modal.preamble": "Пошто је Mastodon децентрализован, можете користити свој постојећи налог који хостује други Mastodon сервер или компатибилна платформа ако немате налог на овом.", "interaction_modal.title.favourite": "Означи објаву корисника {name} као омиљену", - "interaction_modal.title.follow": "Прати {name}", + "interaction_modal.title.follow": "Запрати {name}", "interaction_modal.title.reblog": "Подржи објаву корисника {name}", "interaction_modal.title.reply": "Одговори на објаву корисника {name}", "intervals.full.days": "{number, plural, one {# дан} few {# дана} other {# дана}}", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Фокусирај колону", "keyboard_shortcuts.compose": "Фокусирај поље за састављање објаве", "keyboard_shortcuts.description": "Опис", - "keyboard_shortcuts.direct": "за отварање колоне директних порука", + "keyboard_shortcuts.direct": "за отварање колоне приватних помињања", "keyboard_shortcuts.down": "Премести надоле у листи", "keyboard_shortcuts.enter": "Отвори објаву", "keyboard_shortcuts.favourite": "Означи објаву као омиљену", @@ -335,7 +337,7 @@ "keyboard_shortcuts.search": "Фокусирај траку претраге", "keyboard_shortcuts.spoilers": "Прикажи/сакриј поље текста упозорења о садржају (CW)", "keyboard_shortcuts.start": "Отвори колону „први кораци”", - "keyboard_shortcuts.toggle_hidden": "Прикажи/сакриј текст иза CW-а", + "keyboard_shortcuts.toggle_hidden": "Прикажи/сакриј текст иза упозорења", "keyboard_shortcuts.toggle_sensitivity": "Прикажи/сакриј мултимедију", "keyboard_shortcuts.toot": "Започни нову објаву", "keyboard_shortcuts.unfocus": "Уклони фокус са поља за унос текста/претраге", @@ -354,27 +356,27 @@ "lists.edit.submit": "Промени наслов", "lists.new.create": "Додај листу", "lists.new.title_placeholder": "Наслов нове листе", - "lists.replies_policy.followed": "Сваки праћени корисник", - "lists.replies_policy.list": "Чланови листе", - "lists.replies_policy.none": "Нико", - "lists.replies_policy.title": "Прикажи одговоре на:", + "lists.replies_policy.followed": "Сваком праћеном кориснику", + "lists.replies_policy.list": "Члановима листе", + "lists.replies_policy.none": "Никоме", + "lists.replies_policy.title": "Прикажи одговоре:", "lists.search": "Претражи међу људима које пратите", "lists.subheading": "Ваше листе", "load_pending": "{count, plural, one {# нова ставка} few {# нове ставке} other {# нових ставки}}", "loading_indicator.label": "Учитавање...", "media_gallery.toggle_visible": "{number, plural, one {Сакриј слику} few {Сакриј слике} other {Сакриј слике}}", "missing_indicator.label": "Није пронађено", - "missing_indicator.sublabel": "Овај ресурс није могуће пронаћи", + "missing_indicator.sublabel": "Овај ресурс није било могуће пронаћи", "moved_to_account_banner.text": "Ваш налог {disabledAccount} је тренутно онемогућен јер сте прешли на {movedToAccount}.", "mute_modal.duration": "Трајање", "mute_modal.hide_notifications": "Сакрити обавештења од овог корисника?", - "mute_modal.indefinite": "Неодређен", + "mute_modal.indefinite": "Неодређено", "navigation_bar.about": "Основни подаци", "navigation_bar.blocks": "Блокирани корисници", "navigation_bar.bookmarks": "Обележивачи", "navigation_bar.community_timeline": "Локална временска линија", "navigation_bar.compose": "Састави нову објаву", - "navigation_bar.direct": "Директне поруке", + "navigation_bar.direct": "Приватна помињања", "navigation_bar.discover": "Откриј", "navigation_bar.domain_blocks": "Блокирани домени", "navigation_bar.edit_profile": "Уреди профил", @@ -393,9 +395,9 @@ "navigation_bar.public_timeline": "Здружена временска линија", "navigation_bar.search": "Претрага", "navigation_bar.security": "Безбедност", - "not_signed_in_indicator.not_signed_in": "Морате да се пријавите да приступите овом ресурсу.", - "notification.admin.report": "{name} је пријавио {target}", - "notification.admin.sign_up": "{name} се регистровао", + "not_signed_in_indicator.not_signed_in": "Морате да се пријавите да бисте приступили овом ресурсу.", + "notification.admin.report": "{name} је пријавио/-ла {target}", + "notification.admin.sign_up": "{name} се регистровао/-ла", "notification.favourite": "{name} је означио вашу објаву као омиљену", "notification.follow": "{name} вас је запратио", "notification.follow_request": "{name} је затражио да вас прати", @@ -412,7 +414,7 @@ "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.category": "Трака за брзо филтрирање", "notifications.column_settings.filter_bar.show_bar": "Прикажи траку са филтерима", "notifications.column_settings.follow": "Нови пратиоци:", "notifications.column_settings.follow_request": "Нови захтеви за праћење:", @@ -436,13 +438,13 @@ "notifications.grant_permission": "Одобри дозволу.", "notifications.group": "{count} обавештења", "notifications.mark_as_read": "Означи свако обавештење као прочитано", - "notifications.permission_denied": "Обавештења на радној површини нису доступна због претходно одбијеног захтева за дозволом прегледача", + "notifications.permission_denied": "Обавештења на радној површини нису доступна због претходно одбијеног захтева за дозволу прегледача", "notifications.permission_denied_alert": "Обавештења на радној површини не могу бити омогућена, јер је дозвола прегледача раније била одбијена", "notifications.permission_required": "Обавештења на радној површини нису доступна јер потребна дозвола није додељена.", "notifications_permission_banner.enable": "Омогућити обавештења на радној површини", "notifications_permission_banner.how_to_control": "Да бисте примали обавештења када Mastodon није отворен, омогућите обавештења на радној површини. Kада су обавештења на радној површини омогућена врсте интеракција које она генеришу могу се подешавати помоћу дугмета {icon}.", "notifications_permission_banner.title": "Никада ништа не пропустите", - "picture_in_picture.restore": "Врати то назад", + "picture_in_picture.restore": "Врати назад", "poll.closed": "Затворено", "poll.refresh": "Освежи", "poll.total_people": "{count, plural, one {# особа} few {# особе} other {# особа}}", @@ -453,13 +455,13 @@ "poll_button.add_poll": "Додај анкету", "poll_button.remove_poll": "Уклони анкету", "privacy.change": "Промени приватност објаве", - "privacy.direct.long": "Видљиво само за поменуте кориснике", + "privacy.direct.long": "Видљиво само поменутим корисницима", "privacy.direct.short": "Само поменуте особе", - "privacy.private.long": "Видљиво само за пратиоце", - "privacy.private.short": "Само пратиоци", + "privacy.private.long": "Видљиво само пратиоцима", + "privacy.private.short": "Само пратиоцима", "privacy.public.long": "Видљиво за све", "privacy.public.short": "Јавно", - "privacy.unlisted.long": "Видљиво за све, али искључено из функције откривања", + "privacy.unlisted.long": "Видљиво свима, али искључено из функција откривања", "privacy.unlisted.short": "Неизлистано", "privacy_policy.last_updated": "Последње ажурирање {date}", "privacy_policy.title": "Политика приватности", @@ -479,34 +481,34 @@ "relative_time.today": "данас", "reply_indicator.cancel": "Откажи", "report.block": "Блокирај", - "report.block_explanation": "Нећете видети објаве корисника. Ни он неће видети ваше објаве нити ће моћи да вас прати. Такође може да зна да је блокиран.", + "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": "Реците нам шта је проблем са {type}", + "report.category.title_account": "овим профилом", "report.category.title_status": "објавом", "report.close": "Готово", - "report.comment.title": "Да ли има нешто додатно што треба да знамо?", + "report.comment.title": "Да ли има још нешто што бисте хтели да нам дате до знања?", "report.forward": "Проследити {target}", "report.forward_hint": "Налог је са другог сервера. Послати анонимну копију пријаве и тамо?", "report.mute": "Игнориши", - "report.mute_explanation": "Нећете видети објаве корисника. Он и и даље може да вас прати и види ваше објаве и неће знати да је игнорисан.", + "report.mute_explanation": "Нећете видети објаве корисника. Он ће и даље моћи да Вас прати и види Ваше објаве и неће знати да је игнорисан.", "report.next": "Следеће", "report.placeholder": "Додатни коментари", "report.reasons.dislike": "Не свиђа ми се", - "report.reasons.dislike_description": "Ово није нешто што желиш да видите", + "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.reasons.violation_description": "Свесни сте да крши одређена правила", + "report.rules.subtitle": "Изаберите сва правила која су прекршена", "report.rules.title": "Која правила су прекршена?", - "report.statuses.subtitle": "Изабери све што важи", - "report.statuses.title": "Да ли постоје било какве објаве које подржавају ову пријаву?", + "report.statuses.subtitle": "Изаберите све што важи", + "report.statuses.title": "Има ли било каквих објава које поткрепљују ову пријаву?", "report.submit": "Пошаљи", "report.target": "Пријављујем {target}", "report.thanks.take_action": "Ово су Ваше опције да контролишете шта видите на Mastodon-у:", @@ -520,30 +522,32 @@ "report_notification.categories.spam": "Спам", "report_notification.categories.violation": "Кршење правила", "report_notification.open": "Отвори пријаву", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Претрага", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Претражите или унесите адресу", - "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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Профили", "search_results.all": "Све", "search_results.hashtags": "Хеш ознаке", "search_results.nothing_found": "Није могуће пронаћи ништа за ове термине за претрагу", "search_results.statuses": "Објаве", "search_results.statuses_fts_disabled": "Претрага објава по садржају није омогућена на овом Mastodon серверу.", - "search_results.title": "Претражи {q}", + "search_results.title": "Тражи {q}", "search_results.total": "{count, number} {count, plural, one {резултат} few {резултата} other {резултата}}", "server_banner.about_active_users": "Људи који су користили овај сервер у претходних 30 дана (месечно активних корисника)", "server_banner.active_users": "активних корисника", - "server_banner.administered_by": "Администрирано од стране:", + "server_banner.administered_by": "Администрира:", "server_banner.introduction": "{domain} је део децентрализоване друштвене мреже коју покреће {mastodon}.", "server_banner.learn_more": "Сазнајте више", "server_banner.server_stats": "Статистике сервера:", - "sign_in_banner.create_account": "Направи налог", - "sign_in_banner.sign_in": "Пријави се", + "sign_in_banner.create_account": "Направите налог", + "sign_in_banner.sign_in": "Пријавите се", "sign_in_banner.text": "Пријавите се да бисте пратили профиле или хеш ознаке, означили објаве као омиљене, делили и одговарали на њих. Такође можете комуницирати са свог налога на другом серверу.", "status.admin_account": "Отвори модераторско окружење за @{name}", "status.admin_domain": "Отвори модераторско окружење за {domain}", @@ -555,7 +559,8 @@ "status.copy": "Копирај везу у објаву", "status.delete": "Избриши", "status.detailed_status": "Детаљан приказ разговора", - "status.direct": "Директна порука @{name}", + "status.direct": "Приватно помени @{name}", + "status.direct_indicator": "Приватно помињање", "status.edit": "Уреди", "status.edited": "Уређено {date}", "status.edited_x_times": "Уређено {count, plural, one {{count} пут} other {{count} пута}}", @@ -584,7 +589,7 @@ "status.remove_bookmark": "Уклони обележивач", "status.replied_to": "Одговор за {name}", "status.reply": "Одговори", - "status.replyAll": "Одговори на дискусију", + "status.replyAll": "Одговори на низ", "status.report": "Пријави @{name}", "status.sensitive_warning": "Осетљив садржај", "status.share": "Подели", @@ -599,7 +604,7 @@ "status.uncached_media_warning": "Није доступно", "status.unmute_conversation": "Не игнориши разговор", "status.unpin": "Откачи са профила", - "subscribed_languages.lead": "Само објаве на означеним језицима ће се појављивати на почетној линији и на листама после ове измене. Одаберите ништа да примате објаве на свим језицима.", + "subscribed_languages.lead": "Само објаве на означеним језицима ће се појављивати на почетној линији и на листама после ове измене. Када ниједан језик није изабран, примаћете објаве на свим језицима.", "subscribed_languages.save": "Сачувај измене", "subscribed_languages.target": "Промени језике на које је {target} пријављен", "suggestions.dismiss": "Одбаци предлог", @@ -615,9 +620,9 @@ "time_remaining.seconds": "Остало {number, plural, one {# секунд} few {# секунде} other {# секунди}}", "timeline_hint.remote_resource_not_displayed": "{resource} са других сервера се не приказују.", "timeline_hint.resources.followers": "Пратиоци", - "timeline_hint.resources.follows": "Праћени", + "timeline_hint.resources.follows": "Праћења", "timeline_hint.resources.statuses": "Старије објаве", - "trends.counter_by_accounts": "{count, plural, one {{counter} особа} few {{counter} особе} other {{counter} особа}} у протеклих {days, plural, one {дан} few {{days} дана} other {{days} дана}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} особа} few {{counter} особе} other {{counter} особа}} у протеклих {days, plural, one {дан} other {{days} дана}}", "trends.trending_now": "У тренду сада", "ui.beforeunload": "Ваш нацрт ће бити изгубљен ако напустите Mastodon.", "units.short.billion": "{count} млрд.", @@ -626,9 +631,9 @@ "upload_area.title": "Превуците и отпустите за отпремање", "upload_button.label": "Додај слике, видео или аудио датотеку", "upload_error.limit": "Достигнуто је ограничење за отпремање датотека.", - "upload_error.poll": "Отпремање датотека није дозвољено са анкетама.", - "upload_form.audio_description": "Опишите за особе са оштећеним слухом", - "upload_form.description": "Опишите за особе са оштећеним видом", + "upload_error.poll": "Отпремање датотека није дозвољено код анкета.", + "upload_form.audio_description": "Додајте опис за особе са оштећеним слухом", + "upload_form.description": "Додајте опис за особе са оштећеним видом", "upload_form.description_missing": "Нема додатог описа", "upload_form.edit": "Уреди", "upload_form.thumbnail": "Промени сличицу", @@ -639,8 +644,8 @@ "upload_modal.applying": "Примена…", "upload_modal.choose_image": "Одаберите слику", "upload_modal.description_placeholder": "Љубазни фењерџија чађавог лица хоће да ми покаже штос", - "upload_modal.detect_text": "Откриј текст са слике", - "upload_modal.edit_media": "Уреди милтимедију", + "upload_modal.detect_text": "Пронађи текст са слике", + "upload_modal.edit_media": "Уреди мултимедију", "upload_modal.hint": "Кликните или превуците кружић на прегледу за избор тачке фокуса која ће увек бити видљива на свим сличицама.", "upload_modal.preparing_ocr": "Припрема OCR-а…", "upload_modal.preview_label": "Преглед ({ratio})", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 47efca424b..0b78b78566 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -3,7 +3,7 @@ "about.contact": "Kontakt:", "about.disclaimer": "Mastodon är fri programvara med öppen källkod och ett varumärke tillhörande Mastodon gGmbH.", "about.domain_blocks.no_reason_available": "Okänd orsak", - "about.domain_blocks.preamble": "Som regel låter Mastodon dig interagera med användare från andra servrar i fediversumet och se deras innehåll. Detta är de undantag som gjorts på just denna servern.", + "about.domain_blocks.preamble": "Som regel låter Mastodon dig interagera med användare från andra servrar i fediversumet och se deras innehåll. Detta är de undantag som gjorts på just denna server.", "about.domain_blocks.silenced.explanation": "Såvida du inte uttryckligen söker upp dem eller samtycker till att se dem genom att följa dem kommer du i allmänhet inte se profiler från den här servern, eller deras innehåll.", "about.domain_blocks.silenced.title": "Begränsat", "about.domain_blocks.suspended.explanation": "Inga data från denna server kommer behandlas, lagras eller bytas ut, vilket omöjliggör kommunikation med användare på denna server.", @@ -20,7 +20,7 @@ "account.blocked": "Blockerad", "account.browse_more_on_origin_server": "Läs mer på den ursprungliga profilen", "account.cancel_follow_request": "Återkalla din begäran om att få följa", - "account.direct": "Skicka direktmeddelande till @{name}", + "account.direct": "Nämn @{name} privat", "account.disable_notifications": "Sluta notifiera mig när @{name} gör inlägg", "account.domain_blocked": "Domän blockerad", "account.edit_profile": "Redigera profil", @@ -32,9 +32,9 @@ "account.follow": "Följ", "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.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.following_counter": "{count, plural, one {{counter} följd} other {{counter} följda}}", "account.follows.empty": "Denna användare följer inte någon än.", "account.follows_you": "Följer dig", "account.go_to_profile": "Gå till profilen", @@ -42,7 +42,7 @@ "account.joined_short": "Gick med", "account.languages": "Ändra vilka språk du helst vill se i ditt flöde", "account.link_verified_on": "Ägarskap för denna länk kontrollerades den {date}", - "account.locked_info": "För detta konto har ägaren valt att manuellt godkänna vem som kan följa dem.", + "account.locked_info": "För detta konto har ägaren valt att manuellt godkänna vem som kan följa hen.", "account.media": "Media", "account.mention": "Nämn @{name}", "account.moved_to": "{name} har indikerat att hen har ett nytt konto:", @@ -57,7 +57,7 @@ "account.requested_follow": "{name} har begärt att följa dig", "account.share": "Dela @{name}s profil", "account.show_reblogs": "Visa boostar från @{name}", - "account.statuses_counter": "{count, plural, one {{counter} Inlägg} other {{counter} Inlägg}}", + "account.statuses_counter": "{count, plural, one {{counter} inlägg} other {{counter} inlägg}}", "account.unblock": "Avblockera @{name}", "account.unblock_domain": "Avblockera {domain}", "account.unblock_short": "Avblockera", @@ -102,7 +102,7 @@ "column.blocks": "Blockerade användare", "column.bookmarks": "Bokmärken", "column.community": "Lokal tidslinje", - "column.direct": "Direktmeddelanden", + "column.direct": "Privata nämningar", "column.directory": "Bläddra bland profiler", "column.domain_blocks": "Blockerade domäner", "column.favourites": "Favoriter", @@ -159,13 +159,15 @@ "confirmations.delete_list.confirm": "Radera", "confirmations.delete_list.message": "Är du säker på att du vill radera denna lista permanent?", "confirmations.discard_edit_media.confirm": "Kasta", - "confirmations.discard_edit_media.message": "Du har o-sparade ändringar till mediabeskrivningen eller förhandsgranskningen, kasta bort dem ändå?", + "confirmations.discard_edit_media.message": "Du har osparade ändringar till mediabeskrivningen eller förhandsgranskningen, kasta bort dem ändå?", "confirmations.domain_block.confirm": "Dölj hela domänen", "confirmations.domain_block.message": "Är du verkligen, verkligen säker på att du vill blockera hela {domain}? I de flesta fall är några riktade blockeringar eller nedtystade konton tillräckligt och att föredra. Du kommer inte se innehåll från den domänen i den allmänna tidslinjen eller i dina aviseringar. Dina följare från den domänen komer att tas bort.", + "confirmations.edit.confirm": "Redigera", + "confirmations.edit.message": "Om du svarar nu kommer det att ersätta meddelandet du håller på att skapa. Är du säker på att du vill fortsätta?", "confirmations.logout.confirm": "Logga ut", "confirmations.logout.message": "Är du säker på att du vill logga ut?", "confirmations.mute.confirm": "Tysta", - "confirmations.mute.explanation": "Detta kommer dölja inlägg från dem och inlägg som nämner dem, men de tillåts fortfarande se dina inlägg och följa dig.", + "confirmations.mute.explanation": "Detta kommer dölja inlägg från hen och inlägg som nämner hen, men hen tillåts fortfarande se dina inlägg och följa dig.", "confirmations.mute.message": "Är du säker på att du vill tysta {name}?", "confirmations.redraft.confirm": "Radera & gör om", "confirmations.redraft.message": "Är du säker på att du vill radera detta inlägg och göra om det? Favoritmarkeringar, boostar och svar till det ursprungliga inlägget kommer förlora sitt sammanhang.", @@ -214,14 +216,14 @@ "empty_column.blocks": "Du har ännu ej blockerat några användare.", "empty_column.bookmarked_statuses": "Du har inte bokmärkt några inlägg än. När du bokmärker ett inlägg 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är du skickar eller tar emot ett direktmeddelande kommer det att visas här.", + "empty_column.direct": "Du har inga privata nämningar. När du skickar eller tar emot ett direktmeddelande kommer det att visas här.", "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 inlägg än. När du favoritmarkerar ett inlägg kommer det visas här.", "empty_column.favourites": "Ingen har favoritmarkerat detta inlägg än. När någon gör det kommer de synas 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.", "empty_column.follow_requests": "Du har inga följarförfrågningar än. När du får en kommer den visas här.", - "empty_column.followed_tags": "Du följer inga hashtags ännu. När du gör det kommer de att dyka upp här.", + "empty_column.followed_tags": "Du följer inga hashtaggar ännu. När du gör det kommer de att dyka upp här.", "empty_column.hashtag": "Det finns inget i denna hashtag ännu.", "empty_column.home": "Din hemma-tidslinje är tom! Följ fler användare för att fylla den. {suggestions}", "empty_column.home.suggestions": "Se några förslag", @@ -292,7 +294,7 @@ "home.hide_announcements": "Dölj notiser", "home.show_announcements": "Visa notiser", "interaction_modal.description.favourite": "Med ett Mastodon-konto kan du favoritmarkera detta inlägg för att visa författaren att du gillar det och för att spara det till senare.", - "interaction_modal.description.follow": "Med ett Mastodon-konto kan du följa {name} för att se deras inlägg i ditt hemflöde.", + "interaction_modal.description.follow": "Med ett Mastodon-konto kan du följa {name} för att se hens inlägg i ditt hemflöde.", "interaction_modal.description.reblog": "Med ett Mastodon-konto kan du boosta detta inlägg för att dela den med dina egna följare.", "interaction_modal.description.reply": "Med ett Mastodon-konto kan du svara på detta inlägg.", "interaction_modal.on_another_server": "På en annan server", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "för att fokusera en status i en av kolumnerna", "keyboard_shortcuts.compose": "för att fokusera skrivfältet", "keyboard_shortcuts.description": "Beskrivning", - "keyboard_shortcuts.direct": "för att öppna Direktmeddelanden", + "keyboard_shortcuts.direct": "för att öppna privata nämningskolumnen", "keyboard_shortcuts.down": "för att flytta nedåt i listan", "keyboard_shortcuts.enter": "Öppna inlägg", "keyboard_shortcuts.favourite": "Favoritmarkera inlägg", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Bokmärken", "navigation_bar.community_timeline": "Lokal tidslinje", "navigation_bar.compose": "Författa nytt inlägg", - "navigation_bar.direct": "Direktmeddelanden", + "navigation_bar.direct": "Privata nämningar", "navigation_bar.discover": "Upptäck", "navigation_bar.domain_blocks": "Dolda domäner", "navigation_bar.edit_profile": "Redigera profil", @@ -479,7 +481,7 @@ "relative_time.today": "idag", "reply_indicator.cancel": "Ångra", "report.block": "Blockera", - "report.block_explanation": "Du kommer inte se deras inlägg. De kommer inte kunna se dina inlägg eller följa dig. De kommer kunna se att de är blockerade.", + "report.block_explanation": "Du kommer inte se hens inlägg. Hen kommer inte kunna se dina inlägg eller följa dig. Hen kommer kunna se att hen är blockerad.", "report.categories.other": "Övrigt", "report.categories.spam": "Skräppost", "report.categories.violation": "Innehåll bryter mot en eller flera serverregler", @@ -492,7 +494,7 @@ "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.mute": "Tysta", - "report.mute_explanation": "Du kommer inte se deras inlägg. De kan fortfarande följa dig och se dina inlägg. De kommer inte veta att de är tystade.", + "report.mute_explanation": "Du kommer inte se hens inlägg. Hen kan fortfarande följa dig och se dina inlägg. Hen kommer inte veta att hen är tystad.", "report.next": "Nästa", "report.placeholder": "Ytterligare kommentarer", "report.reasons.dislike": "Jag tycker inte om det", @@ -514,21 +516,23 @@ "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": "Du följer detta konto. Avfölj dem för att inte se deras inlägg i ditt hemflöde.", + "report.unfollow_explanation": "Du följer detta konto. Avfölj hen för att inte se hens inlägg i ditt hemflöde.", "report_notification.attached_statuses": "bifogade {count, plural, one {{count} inlägg} other {{count} inlägg}}", "report_notification.categories.other": "Övrigt", "report_notification.categories.spam": "Skräppost", "report_notification.categories.violation": "Regelöverträdelse", "report_notification.open": "Öppna rapport", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Sök", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Sök eller klistra in URL", - "search_popout.search_format": "Avancerat sökformat", - "search_popout.tips.full_text": "Enkel text returnerar inlägg du har skrivit, favoritmarkerat, boostat eller blivit nämnd i, samt matchar användarnamn, visningsnamn och hashtaggar.", - "search_popout.tips.hashtag": "hash-tagg", - "search_popout.tips.status": "inlägg", - "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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "Alla", "search_results.hashtags": "Hashtaggar", "search_results.nothing_found": "Kunde inte hitta något för dessa sökord", @@ -555,7 +559,8 @@ "status.copy": "Kopiera inläggslänk", "status.delete": "Radera", "status.detailed_status": "Detaljerad samtalsvy", - "status.direct": "Direktmeddela @{name}", + "status.direct": "Nämn @{name} privat", + "status.direct_indicator": "Privat nämning", "status.edit": "Redigera", "status.edited": "Ändrad {date}", "status.edited_x_times": "Redigerad {count, plural, one {{count} gång} other {{count} gånger}}", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index 9d23c3dd0e..c8f0337cb5 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -20,7 +20,7 @@ "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Ôbocz wiyncyj we ôryginalnym profilu", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "Direct message @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domena zablokowanŏ", "account.edit_profile": "Edit profile", @@ -102,7 +102,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.direct": "Private mentions", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "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.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Log out", "confirmations.logout.message": "Are you sure you want to log out?", "confirmations.mute.confirm": "Mute", @@ -214,7 +216,7 @@ "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.direct": "You don't have any private mentions yet. When you send or receive one, 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.", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Search", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Search or paste URL", - "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.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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "All", "search_results.hashtags": "Hashtags", "search_results.nothing_found": "Could not find anything for these search terms", @@ -555,7 +559,8 @@ "status.copy": "Copy link to status", "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", - "status.direct": "Direct message @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Edit", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 0cd309ed80..76e1447471 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -20,7 +20,7 @@ "account.blocked": "முடக்கப்பட்டது", "account.browse_more_on_origin_server": "மேலும் உலாவ சுயவிவரத்திற்குச் செல்க", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "நேரடி செய்தி @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "@{name} பதிவிட்டல் எனக்கு தெரியபடுத்த வேண்டாம்", "account.domain_blocked": "மறைக்கப்பட்டத் தளங்கள்", "account.edit_profile": "சுயவிவரத்தை மாற்று", @@ -102,7 +102,7 @@ "column.blocks": "தடுக்கப்பட்ட பயனர்கள்", "column.bookmarks": "அடையாளக்குறிகள்", "column.community": "சுய நிகழ்வு காலவரிசை", - "column.direct": "நேரடி செய்திகள்", + "column.direct": "Private mentions", "column.directory": "சுயவிவரங்களை உலாவு", "column.domain_blocks": "மறைந்திருக்கும் திரளங்கள்", "column.favourites": "பிடித்தவைகள்", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "சேமிக்கப்படாத மாற்றங்கள் ஊடக விளக்கம் அல்லது முன்னோட்டத்தில் உள்ளது. அவற்றை நிராகரிக்கவா?", "confirmations.domain_block.confirm": "முழு களத்தையும் மறை", "confirmations.domain_block.message": "நீங்கள் முழு {domain} களத்தையும் நிச்சயமாக, நிச்சயமாகத் தடுக்க விரும்புகிறீர்களா? பெரும்பாலும் சில குறிப்பிட்ட பயனர்களைத் தடுப்பதே போதுமானது. முழு களத்தையும் தடுத்தால், அதிலிருந்து வரும் எந்தப் பதிவையும் உங்களால் காண முடியாது, மேலும் அப்பதிவுகள் குறித்த அறிவிப்புகளும் உங்களுக்கு வராது. அந்தக் களத்தில் இருக்கும் பின்தொடர்பவர்கள் உங்கள் பக்கத்திலிருந்து நீக்கப்படுவார்கள்.", + "confirmations.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "வெளியேறு", "confirmations.logout.message": "நிச்சயமாக நீங்கள் வெளியேற விரும்புகிறீர்களா?", "confirmations.mute.confirm": "அமைதியாக்கு", @@ -214,7 +216,7 @@ "empty_column.blocks": "நீங்கள் இதுவரை எந்தப் பயனர்களையும் முடக்கியிருக்கவில்லை.", "empty_column.bookmarked_statuses": "உங்களிடம் அடையாளக்குறியிட்ட டூட்டுகள் எவையும் இல்லை. அடையாளக்குறியிட்ட பிறகு அவை இங்கே காட்டப்படும்.", "empty_column.community": "உங்கள் மாஸ்டடான் முச்சந்தியில் யாரும் இல்லை. எதையேனும் எழுதி ஆட்டத்தைத் துவக்குங்கள்!", - "empty_column.direct": "உங்களுக்குத் தனிப்பட்ட செய்திகள் ஏதும் இல்லை. செய்தியை நீங்கள் அனுப்பும்போதோ அல்லது பெறும்போதோ, அது இங்கே காண்பிக்கப்படும்.", + "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, 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": "உங்களுக்குப் பிடித்த டூட்டுகள் இதுவரை இல்லை. ஒரு டூட்டில் நீங்கள் விருப்பக்குறி இட்டால், அது இங்கே காண்பிக்கப்படும்.", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "அடையாளக்குறிகள்", "navigation_bar.community_timeline": "உள்ளூர் காலக்கெடு", "navigation_bar.compose": "புதியவற்றை எழுதுக toot", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "கண்டு பிடி", "navigation_bar.domain_blocks": "மறைந்த களங்கள்", "navigation_bar.edit_profile": "சுயவிவரத்தைத் திருத்தவும்", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "No recent searches", "search.placeholder": "தேடு", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Search or paste URL", - "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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "All", "search_results.hashtags": "ஹாஷ்டேக்குகளைச்", "search_results.nothing_found": "Could not find anything for these search terms", @@ -555,7 +559,8 @@ "status.copy": "நிலைக்கு இணைப்பை நகலெடு", "status.delete": "நீக்கு", "status.detailed_status": "விரிவான உரையாடல் காட்சி", - "status.direct": "நேரடி செய்தி @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Edit", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 875a8c9445..e553ac58c6 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -20,7 +20,7 @@ "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Browse more on the original profile", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "Direct message @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain blocked", "account.edit_profile": "Edit profile", @@ -102,7 +102,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.direct": "Private mentions", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "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.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Log out", "confirmations.logout.message": "Are you sure you want to log out?", "confirmations.mute.confirm": "Mute", @@ -214,7 +216,7 @@ "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.direct": "You don't have any private mentions yet. When you send or receive one, 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.", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Search", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Search or paste URL", - "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.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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "All", "search_results.hashtags": "Hashtags", "search_results.nothing_found": "Could not find anything for these search terms", @@ -555,7 +559,8 @@ "status.copy": "Copy link to status", "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", - "status.direct": "Direct message @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Edit", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index f4e3b7ff25..1bd8a65bd6 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -20,7 +20,7 @@ "account.blocked": "బ్లాక్ అయినవి", "account.browse_more_on_origin_server": "Browse more on the original profile", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "@{name}కు నేరుగా సందేశం పంపు", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "డొమైన్ దాచిపెట్టబడినది", "account.edit_profile": "ప్రొఫైల్ని సవరించండి", @@ -102,7 +102,7 @@ "column.blocks": "బ్లాక్ చేయబడిన వినియోగదారులు", "column.bookmarks": "Bookmarks", "column.community": "స్థానిక కాలక్రమం", - "column.direct": "Direct messages", + "column.direct": "Private mentions", "column.directory": "Browse profiles", "column.domain_blocks": "దాచిన డొమైన్లు", "column.favourites": "ఇష్టపడినవి", @@ -162,6 +162,8 @@ "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.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Log out", "confirmations.logout.message": "Are you sure you want to log out?", "confirmations.mute.confirm": "మ్యూట్ చేయి", @@ -214,7 +216,7 @@ "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": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, 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": "మీకు ఇష్టపడిన టూట్లు ఇంకా ఎమీ లేవు. మీరు ఒకదానిని ఇష్టపడినప్పుడు, అది ఇక్కడ కనిపిస్తుంది.", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "స్థానిక కాలక్రమం", "navigation_bar.compose": "కొత్త టూట్ను రాయండి", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "కనుగొను", "navigation_bar.domain_blocks": "దాచిన డొమైన్లు", "navigation_bar.edit_profile": "ప్రొఫైల్ని సవరించండి", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "No recent searches", "search.placeholder": "శోధన", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Search or paste URL", - "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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "All", "search_results.hashtags": "హాష్ ట్యాగ్లు", "search_results.nothing_found": "Could not find anything for these search terms", @@ -555,7 +559,8 @@ "status.copy": "లంకెను స్టేటస్కు కాపీ చేయి", "status.delete": "తొలగించు", "status.detailed_status": "వివరణాత్మక సంభాషణ వీక్షణ", - "status.direct": "@{name}కు నేరుగా సందేశం పంపు", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Edit", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index e2db4627ec..cd4c923514 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -20,7 +20,7 @@ "account.blocked": "ปิดกั้นอยู่", "account.browse_more_on_origin_server": "เรียกดูเพิ่มเติมในโปรไฟล์ดั้งเดิม", "account.cancel_follow_request": "ถอนคำขอติดตาม", - "account.direct": "ส่งข้อความโดยตรงถึง @{name}", + "account.direct": "กล่าวถึง @{name} แบบส่วนตัว", "account.disable_notifications": "หยุดแจ้งเตือนฉันเมื่อ @{name} โพสต์", "account.domain_blocked": "ปิดกั้นโดเมนอยู่", "account.edit_profile": "แก้ไขโปรไฟล์", @@ -67,8 +67,8 @@ "account.unmute_notifications": "เลิกซ่อนการแจ้งเตือนจาก @{name}", "account.unmute_short": "เลิกซ่อน", "account_note.placeholder": "คลิกเพื่อเพิ่มหมายเหตุ", - "admin.dashboard.daily_retention": "อัตราการเก็บรักษาผู้ใช้ตามวันหลังจากลงทะเบียน", - "admin.dashboard.monthly_retention": "อัตราการเก็บรักษาผู้ใช้ตามเดือนหลังจากลงทะเบียน", + "admin.dashboard.daily_retention": "อัตราการเก็บรักษาผู้ใช้ตามวันหลังจากการลงทะเบียน", + "admin.dashboard.monthly_retention": "อัตราการเก็บรักษาผู้ใช้ตามเดือนหลังจากการลงทะเบียน", "admin.dashboard.retention.average": "ค่าเฉลี่ย", "admin.dashboard.retention.cohort": "เดือนที่ลงทะเบียน", "admin.dashboard.retention.cohort_size": "ผู้ใช้ใหม่", @@ -102,7 +102,7 @@ "column.blocks": "ผู้ใช้ที่ปิดกั้นอยู่", "column.bookmarks": "ที่คั่นหน้า", "column.community": "เส้นเวลาในเซิร์ฟเวอร์", - "column.direct": "ข้อความโดยตรง", + "column.direct": "การกล่าวถึงแบบส่วนตัว", "column.directory": "เรียกดูโปรไฟล์", "column.domain_blocks": "โดเมนที่ปิดกั้นอยู่", "column.favourites": "รายการโปรด", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "คุณมีการเปลี่ยนแปลงคำอธิบายหรือตัวอย่างสื่อที่ยังไม่ได้บันทึก ละทิ้งการเปลี่ยนแปลงต่อไป?", "confirmations.domain_block.confirm": "ปิดกั้นทั้งโดเมน", "confirmations.domain_block.message": "คุณแน่ใจจริง ๆ หรือไม่ว่าต้องการปิดกั้นทั้ง {domain}? ในกรณีส่วนใหญ่ การปิดกั้นหรือการซ่อนแบบกำหนดเป้าหมายไม่กี่รายการนั้นเพียงพอและเป็นที่นิยม คุณจะไม่เห็นเนื้อหาจากโดเมนนั้นในเส้นเวลาสาธารณะใด ๆ หรือการแจ้งเตือนของคุณ จะเอาผู้ติดตามของคุณจากโดเมนนั้นออก", + "confirmations.edit.confirm": "แก้ไข", + "confirmations.edit.message": "การแก้ไขในตอนนี้จะเขียนทับข้อความที่คุณกำลังเขียนในปัจจุบัน คุณแน่ใจหรือไม่ว่าต้องการดำเนินการต่อ?", "confirmations.logout.confirm": "ออกจากระบบ", "confirmations.logout.message": "คุณแน่ใจหรือไม่ว่าต้องการออกจากระบบ?", "confirmations.mute.confirm": "ซ่อน", @@ -214,7 +216,7 @@ "empty_column.blocks": "คุณยังไม่ได้ปิดกั้นผู้ใช้ใด ๆ", "empty_column.bookmarked_statuses": "คุณยังไม่มีโพสต์ที่เพิ่มที่คั่นหน้าไว้ใด ๆ เมื่อคุณเพิ่มที่คั่นหน้าโพสต์ โพสต์จะปรากฏที่นี่", "empty_column.community": "เส้นเวลาในเซิร์ฟเวอร์ว่างเปล่า เขียนบางอย่างเป็นสาธารณะเพื่อเริ่มต้น!", - "empty_column.direct": "คุณยังไม่มีข้อความโดยตรงใด ๆ เมื่อคุณส่งหรือรับข้อความ ข้อความจะปรากฏที่นี่", + "empty_column.direct": "คุณยังไม่มีการกล่าวถึงแบบส่วนตัวใด ๆ เมื่อคุณส่งหรือรับการกล่าวถึง การกล่าวถึงจะปรากฏที่นี่", "empty_column.domain_blocks": "ยังไม่มีโดเมนที่ปิดกั้นอยู่", "empty_column.explore_statuses": "ไม่มีสิ่งใดที่กำลังนิยมในตอนนี้ กลับมาตรวจสอบในภายหลัง!", "empty_column.favourited_statuses": "คุณยังไม่มีโพสต์ที่ชื่นชอบใด ๆ เมื่อคุณชื่นชอบโพสต์ โพสต์จะปรากฏที่นี่", @@ -242,7 +244,7 @@ "explore.trending_links": "ข่าว", "explore.trending_statuses": "โพสต์", "explore.trending_tags": "แฮชแท็ก", - "filter_modal.added.context_mismatch_explanation": "หมวดหมู่ตัวกรองนี้ไม่ได้นำไปใช้กับบริบทที่คุณได้เข้าถึงโพสต์นี้ หากคุณต้องการกรองโพสต์ในบริบทนี้ด้วย คุณจะต้องแก้ไขตัวกรอง", + "filter_modal.added.context_mismatch_explanation": "หมวดหมู่ตัวกรองนี้ไม่นำไปใช้กับบริบทที่คุณได้เข้าถึงโพสต์นี้ หากคุณต้องการกรองโพสต์ในบริบทนี้ด้วย คุณจะต้องแก้ไขตัวกรอง", "filter_modal.added.context_mismatch_title": "บริบทไม่ตรงกัน!", "filter_modal.added.expired_explanation": "หมวดหมู่ตัวกรองนี้หมดอายุแล้ว คุณจะต้องเปลี่ยนวันหมดอายุสำหรับหมวดหมู่เพื่อนำไปใช้", "filter_modal.added.expired_title": "ตัวกรองหมดอายุแล้ว!", @@ -291,10 +293,10 @@ "home.column_settings.show_replies": "แสดงการตอบกลับ", "home.hide_announcements": "ซ่อนประกาศ", "home.show_announcements": "แสดงประกาศ", - "interaction_modal.description.favourite": "เมื่อมีบัญชีใน Mastodon คุณสามารถชื่นชอบโพสต์นี้เพื่อให้ผู้สร้างทราบว่าคุณชื่นชมโพสต์และบันทึกโพสต์ไว้สำหรับภายหลัง", - "interaction_modal.description.follow": "เมื่อมีบัญชีใน Mastodon คุณสามารถติดตาม {name} เพื่อรับโพสต์ของเขาในฟีดหน้าแรกของคุณ", - "interaction_modal.description.reblog": "เมื่อมีบัญชีใน Mastodon คุณสามารถดันโพสต์นี้เพื่อแบ่งปันโพสต์กับผู้ติดตามของคุณเอง", - "interaction_modal.description.reply": "เมื่อมีบัญชีใน Mastodon คุณสามารถตอบกลับโพสต์นี้", + "interaction_modal.description.favourite": "ด้วยบัญชีใน Mastodon คุณสามารถชื่นชอบโพสต์นี้เพื่อให้ผู้สร้างทราบว่าคุณชื่นชมโพสต์และบันทึกโพสต์ไว้สำหรับภายหลัง", + "interaction_modal.description.follow": "ด้วยบัญชีใน Mastodon คุณสามารถติดตาม {name} เพื่อรับโพสต์ของเขาในฟีดหน้าแรกของคุณ", + "interaction_modal.description.reblog": "ด้วยบัญชีใน Mastodon คุณสามารถดันโพสต์นี้เพื่อแบ่งปันโพสต์กับผู้ติดตามของคุณเอง", + "interaction_modal.description.reply": "ด้วยบัญชีใน Mastodon คุณสามารถตอบกลับโพสต์นี้", "interaction_modal.on_another_server": "ในเซิร์ฟเวอร์อื่น", "interaction_modal.on_this_server": "ในเซิร์ฟเวอร์นี้", "interaction_modal.other_server_instructions": "คัดลอกแล้ววาง URL นี้ลงในช่องค้นหาของแอป Mastodon โปรดของคุณหรือส่วนติดต่อเว็บของเซิร์ฟเวอร์ Mastodon ของคุณ", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "โฟกัสคอลัมน์", "keyboard_shortcuts.compose": "โฟกัสพื้นที่เขียนข้อความ", "keyboard_shortcuts.description": "คำอธิบาย", - "keyboard_shortcuts.direct": "เพื่อเปิดคอลัมน์ข้อความโดยตรง", + "keyboard_shortcuts.direct": "เพื่อเปิดคอลัมน์การกล่าวถึงแบบส่วนตัว", "keyboard_shortcuts.down": "ย้ายลงในรายการ", "keyboard_shortcuts.enter": "เปิดโพสต์", "keyboard_shortcuts.favourite": "ชื่นชอบโพสต์", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "ที่คั่นหน้า", "navigation_bar.community_timeline": "เส้นเวลาในเซิร์ฟเวอร์", "navigation_bar.compose": "เขียนโพสต์ใหม่", - "navigation_bar.direct": "ข้อความโดยตรง", + "navigation_bar.direct": "การกล่าวถึงแบบส่วนตัว", "navigation_bar.discover": "ค้นพบ", "navigation_bar.domain_blocks": "โดเมนที่ปิดกั้นอยู่", "navigation_bar.edit_profile": "แก้ไขโปรไฟล์", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "สแปม", "report_notification.categories.violation": "การละเมิดกฎ", "report_notification.open": "รายงานที่เปิด", + "search.no_recent_searches": "ไม่มีการค้นหาล่าสุด", "search.placeholder": "ค้นหา", + "search.quick_action.account_search": "โปรไฟล์ที่ตรงกับ {x}", + "search.quick_action.go_to_account": "ไปยังโปรไฟล์ {x}", + "search.quick_action.go_to_hashtag": "ไปยังแฮชแท็ก {x}", + "search.quick_action.open_url": "เปิด URL ใน Mastodon", + "search.quick_action.status_search": "โพสต์ที่ตรงกับ {x}", "search.search_or_paste": "ค้นหาหรือวาง URL", - "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_popout.quick_actions": "การกระทำด่วน", + "search_popout.recent": "การค้นหาล่าสุด", + "search_results.accounts": "โปรไฟล์", "search_results.all": "ทั้งหมด", "search_results.hashtags": "แฮชแท็ก", "search_results.nothing_found": "ไม่พบสิ่งใดสำหรับคำค้นหาเหล่านี้", @@ -555,7 +559,8 @@ "status.copy": "คัดลอกลิงก์ไปยังโพสต์", "status.delete": "ลบ", "status.detailed_status": "มุมมองการสนทนาโดยละเอียด", - "status.direct": "ส่งข้อความโดยตรงถึง @{name}", + "status.direct": "กล่าวถึง @{name} แบบส่วนตัว", + "status.direct_indicator": "การกล่าวถึงแบบส่วนตัว", "status.edit": "แก้ไข", "status.edited": "แก้ไขเมื่อ {date}", "status.edited_x_times": "แก้ไข {count, plural, other {{count} ครั้ง}}", @@ -629,7 +634,7 @@ "upload_error.poll": "ไม่อนุญาตการอัปโหลดไฟล์โดยมีการสำรวจความคิดเห็น", "upload_form.audio_description": "อธิบายสำหรับผู้ที่สูญเสียการได้ยิน", "upload_form.description": "อธิบายสำหรับผู้บกพร่องทางการมองเห็น", - "upload_form.description_missing": "ไม่มีการเพิ่มคำอธิบาย", + "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 5d085495bb..a7b8cd9161 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -20,7 +20,7 @@ "account.blocked": "Engellendi", "account.browse_more_on_origin_server": "Orijinal profilde daha fazlasına göz atın", "account.cancel_follow_request": "Takip isteğini geri çek", - "account.direct": "@{name} adlı kişiye mesaj gönder", + "account.direct": "@{name} kullanıcısına özelden değin", "account.disable_notifications": "@{name} kişisinin gönderi bildirimlerini kapat", "account.domain_blocked": "Alan adı engellendi", "account.edit_profile": "Profili düzenle", @@ -72,8 +72,8 @@ "admin.dashboard.retention.average": "Ortalama", "admin.dashboard.retention.cohort": "Kayıt ayı", "admin.dashboard.retention.cohort_size": "Yeni kullanıcılar", - "alert.rate_limited.message": "Lütfen {retry_time, time, medium} süresinden sonra tekrar deneyin.", - "alert.rate_limited.title": "Oran sınırlıdır", + "alert.rate_limited.message": "Lütfen {retry_time, time, medium} saatinden sonra tekrar deneyin.", + "alert.rate_limited.title": "Aşırı istek gönderildi", "alert.unexpected.message": "Beklenmedik bir hata oluştu.", "alert.unexpected.title": "Hay aksi!", "announcement.announcement": "Duyuru", @@ -102,7 +102,7 @@ "column.blocks": "Engellenen kullanıcılar", "column.bookmarks": "Yer İşaretleri", "column.community": "Yerel zaman tüneli", - "column.direct": "Doğrudan iletiler", + "column.direct": "Özel değinmeler", "column.directory": "Profillere göz at", "column.domain_blocks": "Engellenen alan adları", "column.favourites": "Favoriler", @@ -162,6 +162,8 @@ "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.edit.confirm": "Düzenle", + "confirmations.edit.message": "Şimdi düzenlersen şu an oluşturduğun iletinin üzerine yazılır. Devam etmek istediğine emin misin?", "confirmations.logout.confirm": "Oturumu kapat", "confirmations.logout.message": "Oturumu kapatmak istediğinden emin misin?", "confirmations.mute.confirm": "Sessize al", @@ -214,7 +216,7 @@ "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 doğrudan iletiniz yok. Bir tane gönderdiğinizde veya aldığınız burada listelenecekler.", + "empty_column.direct": "Henüz doğrudan değinmeniz yok. Bir tane gönderdiğinizde veya aldığınızda burada listelenecekler.", "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.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "sütunlardan birindeki duruma odaklanmak için", "keyboard_shortcuts.compose": "yazma alanına odaklanmak için", "keyboard_shortcuts.description": "Açıklama", - "keyboard_shortcuts.direct": "doğrudan iletiler sütununu açmak için", + "keyboard_shortcuts.direct": "özel değinmeler 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 favorilerine ekle", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Yer İşaretleri", "navigation_bar.community_timeline": "Yerel Zaman Tüneli", "navigation_bar.compose": "Yeni gönderi yaz", - "navigation_bar.direct": "Doğrudan iletiler", + "navigation_bar.direct": "Özel değinmeler", "navigation_bar.discover": "Keşfet", "navigation_bar.domain_blocks": "Engellenen alan adları", "navigation_bar.edit_profile": "Profili düzenle", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "İstenmeyen", "report_notification.categories.violation": "Kural ihlali", "report_notification.open": "Bildirim aç", + "search.no_recent_searches": "Son arama yok", "search.placeholder": "Ara", + "search.quick_action.account_search": "Eşleşen profiller {x}", + "search.quick_action.go_to_account": "Profile git {x}", + "search.quick_action.go_to_hashtag": "Etikete git {x}", + "search.quick_action.open_url": "URL'yi Mastodon'da Aç", + "search.quick_action.status_search": "Eşleşen gönderiler {x}", "search.search_or_paste": "Ara veya URL gir", - "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 etiketleri eşleşen gönderileri de döndürür.", - "search_popout.tips.hashtag": "etiket", - "search_popout.tips.status": "gönderi", - "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_popout.quick_actions": "Hızlı eylemler", + "search_popout.recent": "Son aramalar", + "search_results.accounts": "Profiller", "search_results.all": "Tümü", "search_results.hashtags": "Etiketler", "search_results.nothing_found": "Bu arama seçenekleriyle bir sonuç bulunamadı", @@ -555,7 +559,8 @@ "status.copy": "Bağlantı durumunu kopyala", "status.delete": "Sil", "status.detailed_status": "Ayrıntılı sohbet görünümü", - "status.direct": "@{name} adlı kişiye direkt mesaj", + "status.direct": "@{name} kullanıcısına özelden değin", + "status.direct_indicator": "Özel değinme", "status.edit": "Düzenle", "status.edited": "{date} tarihinde düzenlenmiş", "status.edited_x_times": "{count, plural, one {{count} kez} other {{count} kez}} düzenlendi", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index 41098618ce..64b0840a58 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -9,32 +9,32 @@ "about.domain_blocks.suspended.explanation": "Бу серверның бернинди мәгълүматлары да эшкәртелмәячәк, сакланмаячак яки алмаштырылмаячак, бу сервердан кулланучылар белән үзара бәйләнешне яки аралашуны мөмкин итми.", "about.domain_blocks.suspended.title": "Блокланган", "about.not_available": "Бу серверда бу мәгълүмат юк иде.", - "about.powered_by": "Децентрализованные социаль челтәрләр нигезендә {mastodon}", + "about.powered_by": "{mastodon} нигезендә үзәкчелеге бетерелгән социаль челтәр нигезендә", "about.rules": "Сервер кагыйдәләре", "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": "@{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.direct": "Privately mention @{name}", "account.disable_notifications": "@{name} язулары өчен белдерүләр сүндерү", "account.domain_blocked": "Домен блокланган", - "account.edit_profile": "Профильны үзгәртү", + "account.edit_profile": "Профильне үзгәртү", "account.enable_notifications": "@{name} язулары өчен белдерүләр яндыру", - "account.endorse": "Профильдә рекомендацияләү", + "account.endorse": "Профильдә тәкъдим итү", "account.featured_tags.last_status_at": "Соңгы хәбәр {date}", "account.featured_tags.last_status_never": "Хәбәрләр юк", "account.featured_tags.title": "{name} тәкъдим ителгән хэштеглар", - "account.follow": "Языл", - "account.followers": "Язылучылар", + "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.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.go_to_profile": "Профильгә күчү", @@ -50,19 +50,19 @@ "account.mute_notifications": "@{name} кулланучыдан хәбәрләргә әһәмият бирмәү", "account.muted": "Әһәмият бирмәнгән", "account.open_original_page": "Чыганак битен ачу", - "account.posts": "Пост", - "account.posts_with_replies": "Пост һәм җавап", + "account.posts": "Язма", + "account.posts_with_replies": "Язма һәм җавап", "account.report": "@{name} кулланучыга шикаять итү", "account.requested": "Awaiting approval", "account.requested_follow": "{name} Сезгә язылу соравын җиберде", - "account.share": "Уртаклашу @{name} профиль", + "account.share": "@{name} профиле белән уртаклашу", "account.show_reblogs": "Күрсәтергә көчәйтү нче @{name}", - "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", - "account.unblock": "Ачу @{name}", - "account.unblock_domain": "Доменны ачу {domain}", - "account.unblock_short": "Ачу", - "account.unendorse": "Профильдә күрсәтмәгез", - "account.unfollow": "Язылынмау", + "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": "Kабызыгыз @{name}", "account.unmute_notifications": "Кертергә хәбәрләр нче @{name}", "account.unmute_short": "Kабызыгыз", @@ -71,11 +71,11 @@ "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}.", + "admin.dashboard.retention.cohort_size": "Яңа кулланучы", + "alert.rate_limited.message": "Зинһар, {retry_time, time, medium} соң кабатлап карагыз.", "alert.rate_limited.title": "Тариф чикләнгән", "alert.unexpected.message": "Көтелмәгән хата булды.", - "alert.unexpected.title": "Ой!", + "alert.unexpected.title": "Абау!", "announcement.announcement": "Игълан", "attachments_list.unprocessed": "(чимал)", "audio.hide": "Аудионы яшерү", @@ -85,11 +85,11 @@ "bundle_column_error.error.body": "Соралган бит күрсәтелә алмый. Бу безнең кодтагы хата яки браузерга туры килү проблемасы аркасында булырга мөмкин.", "bundle_column_error.error.title": "Әй, юк!", "bundle_column_error.network.body": "Бу битне йөкләргә тырышканда хата булды. Бу сезнең Интернетка тоташу яки бу сервер белән вакытлыча проблема аркасында булырга мөмкин.", - "bundle_column_error.network.title": "Челтәр хата", + "bundle_column_error.network.title": "Челтәр хатасы", "bundle_column_error.retry": "Тагын сынап кара", "bundle_column_error.return": "Өйгә кайтыгыз", "bundle_column_error.routing.body": "Сорау бите табылмады. URL адресы дөрес күрсәтелгәненә ышанасызмы?", - "bundle_column_error.routing.title": "404\n", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Ябу", "bundle_modal_error.message": "Бу компонентны Йөкләгәндә нәрсәдер дөрес булмаган.", "bundle_modal_error.retry": "Тагын сынап кара", @@ -98,23 +98,23 @@ "closed_registrations_modal.find_another_server": "Башка серверны табыгыз", "closed_registrations_modal.preamble": "Mastodon үзәкләштерелмәгән, шуңа күрә сез счетыгызны кайда гына ясасагыз да, сез бу серверда теләсә кемгә иярә аласыз һәм аның белән аралаша аласыз. Сез аны хәтта үзегез урнаштыра аласыз!", "closed_registrations_modal.title": "Mastodon өчен теркәлү", - "column.about": "Турында", + "column.about": "Проект турында", "column.blocks": "Блокланган кулланучылар", "column.bookmarks": "Кыстыргычлар", - "column.community": "Localирле вакыт сызыгы", - "column.direct": "Туры хәбәрләр", + "column.community": "Локаль вакыт сызыгы", + "column.direct": "Private mentions", "column.directory": "Профильләрне карау", "column.domain_blocks": "Блокланган доменнар", "column.favourites": "Сайланма", - "column.follow_requests": "Сорауларны үтәгез", + "column.follow_requests": "Язылу сораулары", "column.home": "Баш бит", "column.lists": "Исемлек", "column.mutes": "Инвалид кулланучылар", "column.notifications": "Хәбәрләр", "column.pins": "Pinned toot", - "column.public": "Берләшкән вакыт масштабы", - "column_back_button.label": "Кире", - "column_header.hide_settings": "Көйләүләрне яшерегез", + "column.public": "Глобаль вакыт сызыгы", + "column_back_button.label": "Артка", + "column_header.hide_settings": "Көйләүләрне яшерү", "column_header.moveLeft_settings": "Багананы сулга күчерегез", "column_header.moveRight_settings": "Багананы уңга күчерегез", "column_header.pin": "Пин", @@ -125,8 +125,8 @@ "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Дистанцион гына идарә итү", "compose.language.change": "Телне үзгәртү", - "compose.language.search": "Эзләү телләре...", - "compose_form.direct_message_warning_learn_more": "Күбрәк укыгыз", + "compose.language.search": "Телләр эзләве...", + "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}. Апуәрбер теләгән кеше сезнең язма өчен иярә ала.", @@ -149,21 +149,23 @@ "compose_form.spoiler.unmarked": "Text is not hidden", "compose_form.spoiler_placeholder": "Кисәтүегезне монда языгыз", "confirmation_modal.cancel": "Баш тарту", - "confirmations.block.block_and_report": "Блоклау һәм хәбәр итү", + "confirmations.block.block_and_report": "Блоклау һәм шикаять итү", "confirmations.block.confirm": "Блоклау", - "confirmations.block.message": "Сез блокларга телисез {name}?", - "confirmations.cancel_follow_request.confirm": "Чыгару сорау", + "confirmations.block.message": "Сез {name} кулланучыны блокларга телисезме?", + "confirmations.cancel_follow_request.confirm": "Сорауны баш тарту", "confirmations.cancel_follow_request.message": "Сез абонемент соравыгызны кире кайтарырга телисез {name}?", "confirmations.delete.confirm": "Бетерү", "confirmations.delete.message": "Are you sure you want to delete this status?", "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": "Hide entire domain", "confirmations.domain_block.message": "Сез чыннан да барысын да блокларга телисез {domain}? Күпчелек очракта берничә максатлы блоклар яки тавышсызлар җитәрлек һәм өстенлекле. Сез бу доменнан эчтәлекне җәмәгать срокларында яки хәбәрләрегездә күрмәячәксез. Бу доменнан сезнең шәкертләр бетереләчәк.", + "confirmations.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Чыгу", - "confirmations.logout.message": "Сез системадан чыгарга телисезме?", + "confirmations.logout.message": "Сез чыгарга телисезме?", "confirmations.mute.confirm": "Тавышсыз", "confirmations.mute.explanation": "Бу алардан ураза тотуны һәм алар турында искә алуны яшерәчәк, ләкин бу аларга уразаларыгызны күрергә һәм язылырга мөмкинлек бирәчәк.", "confirmations.mute.message": "Сез тавышны сүндерергә телисез {name}?", @@ -171,14 +173,14 @@ "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": "Җавап бирү", "confirmations.reply.message": "Тһеавап хәзер сез ясаган хәбәрне яңадан язуга китерәчәк. Сез дәвам итәсегез киләме?", - "confirmations.unfollow.confirm": "Язылынмау", + "confirmations.unfollow.confirm": "Язылуны туктату", "confirmations.unfollow.message": "Сез язылудан баш тартырга телисез {name}?", "conversation.delete": "Сөйләшүне бетерегез", "conversation.mark_as_read": "Укылганны Ничек билгеләргә", "conversation.open": "Сөйләшүне карау", - "conversation.with": "Белән {names}", - "copypaste.copied": "Күчерелгән", - "copypaste.copy": "Күчерү", + "conversation.with": "{names} белән", + "copypaste.copied": "Күчереп алынган", + "copypaste.copy": "Күчереп алу", "directory.federated": "Билгеле галәмнән", "directory.local": "Кемнән {domain} гына", "directory.new_arrivals": "Яңа килүчеләр", @@ -186,7 +188,7 @@ "disabled_account_banner.account_settings": "Хисап көйләүләре", "disabled_account_banner.text": "Сезнең хисап {disabledAccount} хәзерге вакытта инвалид.", "dismissable_banner.community_timeline": "Бу счетлары урнаштырылган кешеләрдән иң соңгы җәмәгать хәбәрләре {domain}.", - "dismissable_banner.dismiss": "Чыгару", + "dismissable_banner.dismiss": "Ябу", "dismissable_banner.explore_links": "Бу яңалыклар турында хәзерге вакытта кешеләр һәм башка үзәкләштерелмәгән челтәр серверларында сөйләшәләр.", "dismissable_banner.explore_statuses": "Бу һәм бүтән серверларның үзәкләштерелмәгән челтәрдәге бу язмалары хәзерге вакытта бу серверда тартыла.", "dismissable_banner.explore_tags": "Бу хэштеглар хәзерге вакытта үзәкләштерелмәгән челтәрнең бүтән серверларында кешеләр арасында кызыксыну уята.", @@ -194,7 +196,7 @@ "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Менә ул нинди булыр:", "emoji_button.activity": "Активлык", - "emoji_button.clear": "Ачык", + "emoji_button.clear": "Чистарту", "emoji_button.custom": "Куелган", "emoji_button.flags": "Байраклар", "emoji_button.food": "Ашау һәм эчү", @@ -208,13 +210,13 @@ "emoji_button.search_results": "Эзләү нәтиҗәләре", "emoji_button.symbols": "Символлар", "emoji_button.travel": "Сәяхәт һәм урыннар", - "empty_column.account_suspended": "Хисап блокланган", + "empty_column.account_suspended": "Аккаунт блокланган", "empty_column.account_timeline": "No toots here!", "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.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.direct": "You don't have any private mentions yet. When you send or receive one, 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.", @@ -235,11 +237,11 @@ "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", + "errors.unexpected_crash.report_issue": "Хата турында белдерү", "explore.search_results": "Search results", - "explore.suggested_follows": "For you", + "explore.suggested_follows": "Сез өчен", "explore.title": "Explore", - "explore.trending_links": "News", + "explore.trending_links": "Яңалыклар", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", @@ -258,14 +260,14 @@ "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", "filter_modal.select_filter.title": "Filter this post", "filter_modal.title.status": "Filter a post", - "follow_recommendations.done": "Done", + "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!", "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", "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.", "followed_tags": "Имзаланган хэштеглар", - "footer.about": "Турында", + "footer.about": "Проект турында", "footer.directory": "Профильләр каталогы", "footer.get_app": "Кушымта алыгыз", "footer.invite": "Кешеләрне чакырыгыз", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", "keyboard_shortcuts.description": "Тасвирлама", - "keyboard_shortcuts.direct": "туры хәбәрләр баганасын ачу өчен", + "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", @@ -361,20 +363,20 @@ "lists.search": "Search among people you follow", "lists.subheading": "Your lists", "load_pending": "{count, plural, one {# new item} other {# new items}}", - "loading_indicator.label": "Loading...", + "loading_indicator.label": "Йөкләү...", "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", - "missing_indicator.label": "Not found", + "missing_indicator.label": "Табылмады", "missing_indicator.sublabel": "This resource could not be found", "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Дәвамлык", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", - "navigation_bar.about": "About", - "navigation_bar.blocks": "Blocked users", + "navigation_bar.about": "Проект турында", + "navigation_bar.blocks": "Блокланган кулланучылар", "navigation_bar.bookmarks": "Кыстыргычлар", - "navigation_bar.community_timeline": "Local timeline", + "navigation_bar.community_timeline": "Локаль вакыт сызыгы", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Профильны үзгәртү", @@ -384,14 +386,14 @@ "navigation_bar.follow_requests": "Follow requests", "navigation_bar.followed_tags": "Followed hashtags", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.lists": "Lists", - "navigation_bar.logout": "Logout", + "navigation_bar.lists": "Исемлекләр", + "navigation_bar.logout": "Чыгу", "navigation_bar.mutes": "Muted users", "navigation_bar.personal": "Personal", "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Caylaw", "navigation_bar.public_timeline": "Federated timeline", - "navigation_bar.search": "Search", + "navigation_bar.search": "Эзләү", "navigation_bar.security": "Хәвефсезлек", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -447,7 +449,7 @@ "poll.refresh": "Яңарту", "poll.total_people": "{count, plural, one {# person} other {# people}}", "poll.total_votes": "{count, plural, one {# vote} other {# votes}}", - "poll.vote": "Vote", + "poll.vote": "Тавыш бирү", "poll.voted": "You voted for this answer", "poll.votes": "{votes, plural, one {# vote} other {# votes}}", "poll_button.add_poll": "Add a poll", @@ -478,7 +480,7 @@ "relative_time.seconds": "{number}сек", "relative_time.today": "бүген", "reply_indicator.cancel": "Баш тарту", - "report.block": "Block", + "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": "Other", "report.categories.spam": "Spam", @@ -487,7 +489,7 @@ "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.close": "Булды", "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?", @@ -495,7 +497,7 @@ "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": "Миңа бу ошамый", "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", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Эзләү", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Search or paste URL", - "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.status": "status", - "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", - "search_popout.tips.user": "кулланучы", - "search_results.accounts": "Кешеләр", + "search_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "All", "search_results.hashtags": "Hashtags", "search_results.nothing_found": "Could not find anything for these search terms", @@ -540,10 +544,10 @@ "server_banner.active_users": "active users", "server_banner.administered_by": "Administered by:", "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", + "server_banner.learn_more": "Күбрәк белү", "server_banner.server_stats": "Server stats:", - "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.create_account": "Аккаунтны ясау", + "sign_in_banner.sign_in": "Керү", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts. You can also interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_domain": "Open moderation interface for {domain}", @@ -555,8 +559,9 @@ "status.copy": "Copy link to status", "status.delete": "Бетерү", "status.detailed_status": "Detailed conversation view", - "status.direct": "Direct message @{name}", - "status.edit": "Edit", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", + "status.edit": "Үзгәртү", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", @@ -583,7 +588,7 @@ "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", "status.replied_to": "Replied to {name}", - "status.reply": "Reply", + "status.reply": "Җавап бирү", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", "status.sensitive_warning": "Sensitive content", @@ -594,7 +599,7 @@ "status.show_more": "Күбрәк күрсәтү", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.translate": "Translate", + "status.translate": "Тәрҗемә итү", "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", @@ -636,7 +641,7 @@ "upload_form.video_description": "Describe for people with hearing loss or visual impairment", "upload_modal.analyzing_picture": "Analyzing picture…", "upload_modal.apply": "Куллан", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Куллану…", "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", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index e22ab1f22f..d330c136ca 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -20,7 +20,7 @@ "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Browse more on the original profile", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "Direct message @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain blocked", "account.edit_profile": "Edit profile", @@ -102,7 +102,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.direct": "Private mentions", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "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.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Log out", "confirmations.logout.message": "Are you sure you want to log out?", "confirmations.mute.confirm": "Mute", @@ -214,7 +216,7 @@ "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.direct": "You don't have any private mentions yet. When you send or receive one, 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.", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Search", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Search or paste URL", - "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.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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "All", "search_results.hashtags": "Hashtags", "search_results.nothing_found": "Could not find anything for these search terms", @@ -555,7 +559,8 @@ "status.copy": "Copy link to status", "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", - "status.direct": "Direct message @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Edit", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 7f509d039c..5278f845fe 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -20,7 +20,7 @@ "account.blocked": "Заблоковані", "account.browse_more_on_origin_server": "Переглянути більше в оригінальному профілі", "account.cancel_follow_request": "Відкликати запит на стеження", - "account.direct": "Надіслати пряме повідомлення @{name}", + "account.direct": "Особиста згадка @{name}", "account.disable_notifications": "Не повідомляти мене про дописи @{name}", "account.domain_blocked": "Домен заблоковано", "account.edit_profile": "Редагувати профіль", @@ -102,7 +102,7 @@ "column.blocks": "Заблоковані користувачі", "column.bookmarks": "Закладки", "column.community": "Локальна стрічка", - "column.direct": "Особисті повідомлення", + "column.direct": "Особисті згадки", "column.directory": "Переглянути профілі", "column.domain_blocks": "Заблоковані домени", "column.favourites": "Вподобане", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "У вас є незбережені зміни в описі медіа або попереднього перегляду, все одно відкинути їх?", "confirmations.domain_block.confirm": "Заблокувати весь домен", "confirmations.domain_block.message": "Ви точно, точно впевнені, що хочете заблокувати весь домен {domain}? У більшості випадків для нормальної роботи краще заблокувати або приховати лише деяких користувачів. Ви не зможете бачити контент з цього домену у будь-яких стрічках або ваших сповіщеннях. Ваші підписники з цього домену будуть відписані від вас.", + "confirmations.edit.confirm": "Змінити", + "confirmations.edit.message": "Редагування перезапише повідомлення, яке ви зараз пишете. Ви впевнені, що хочете продовжити?", "confirmations.logout.confirm": "Вийти", "confirmations.logout.message": "Ви впевнені, що хочете вийти?", "confirmations.mute.confirm": "Приховати", @@ -214,7 +216,7 @@ "empty_column.blocks": "Ви ще не заблокували жодного користувача.", "empty_column.bookmarked_statuses": "У вас ще немає дописів у закладках. Коли ви щось додасте до закладок, воно з'явиться тут.", "empty_column.community": "Локальна стрічка пуста. Напишіть щось, щоб розігріти народ!", - "empty_column.direct": "У вас ще немає прямих повідомлень. Коли ви щось отримаєте чи надішлете, воно з'явиться тут.", + "empty_column.direct": "У вас ще немає жодних особистих згадок. Коли ви надсилаєте чи отримуєте повідомлення, воно з'явиться тут.", "empty_column.domain_blocks": "Тут поки немає прихованих доменів.", "empty_column.explore_statuses": "Нема нічого популярного. Подивіться пізніше!", "empty_column.favourited_statuses": "У вас ще немає вподобаних дописів. Коли ви щось вподобаєте, воно з'явиться тут.", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "Фокусуватися на одній з колонок", "keyboard_shortcuts.compose": "Фокусуватися на полі введення", "keyboard_shortcuts.description": "Опис", - "keyboard_shortcuts.direct": "щоб відкрити колонку прямих повідомлень", + "keyboard_shortcuts.direct": "щоб відкрити стовпець особистих згадок", "keyboard_shortcuts.down": "Рухатися вниз стрічкою", "keyboard_shortcuts.enter": "Відкрити допис", "keyboard_shortcuts.favourite": "Вподобати допис", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Закладки", "navigation_bar.community_timeline": "Локальна стрічка", "navigation_bar.compose": "Написати новий допис", - "navigation_bar.direct": "Особисті повідомлення", + "navigation_bar.direct": "Особисті згадки", "navigation_bar.discover": "Дослідити", "navigation_bar.domain_blocks": "Заблоковані домени", "navigation_bar.edit_profile": "Редагувати профіль", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Спам", "report_notification.categories.violation": "Порушення правил", "report_notification.open": "Відкрити скаргу", + "search.no_recent_searches": "Немає останніх пошуків", "search.placeholder": "Пошук", + "search.quick_action.account_search": "Збіг профілів {x}", + "search.quick_action.go_to_account": "Перейти до профілю {x}", + "search.quick_action.go_to_hashtag": "Перейти до хештегу {x}", + "search.quick_action.open_url": "Відкрити URL-адресу в Mastodon", + "search.quick_action.status_search": "Збіг дописів {x}", "search.search_or_paste": "Введіть адресу або пошуковий запит", - "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_popout.quick_actions": "Швидкі дії", + "search_popout.recent": "Нещодавні запити", + "search_results.accounts": "Профілі", "search_results.all": "Усі", "search_results.hashtags": "Хештеґи", "search_results.nothing_found": "Нічого не вдалося знайти за цими пошуковими термінами", @@ -555,7 +559,8 @@ "status.copy": "Копіювати посилання на допис", "status.delete": "Видалити", "status.detailed_status": "Детальний вигляд бесіди", - "status.direct": "Пряме повідомлення до @{name}", + "status.direct": "Особиста згадка @{name}", + "status.direct_indicator": "Особиста згадка", "status.edit": "Редагувати", "status.edited": "Відредаговано {date}", "status.edited_x_times": "Відредаговано {count, plural, one {{count} раз} few {{count} рази} many {{counter} разів} other {{counter} разів}}", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index 8980ca5318..ffb6e1068b 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -20,7 +20,7 @@ "account.blocked": "مسدود کردہ", "account.browse_more_on_origin_server": "اصل پروفائل پر مزید براؤز کریں", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "راست پیغام @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "جب @{name} پوسٹ کرے تو مجھ مطلع نہ کریں", "account.domain_blocked": "پوشیدہ ڈومین", "account.edit_profile": "مشخص ترمیم کریں", @@ -102,7 +102,7 @@ "column.blocks": "مسدود صارفین", "column.bookmarks": "بُک مارکس", "column.community": "مقامی زمانی جدول", - "column.direct": "براہ راست پیغامات", + "column.direct": "Private mentions", "column.directory": "مشخصات کا مطالعہ کریں", "column.domain_blocks": "پوشیدہ ڈومین", "column.favourites": "پسندیدہ", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "confirmations.domain_block.confirm": "Hide entire domain", "confirmations.domain_block.message": "کیا آپ واقعی، واقعی یقین رکھتے ہیں کہ آپ پورے {domain} کو بلاک کرنا چاہتے ہیں؟ زیادہ تر معاملات میں چند ٹارگٹیڈ بلاکس یا خاموش کرنا کافی اور افضل ہیں۔ آپ اس ڈومین کا مواد کسی بھی عوامی ٹائم لائنز یا اپنی اطلاعات میں نہیں دیکھیں گے۔ اس ڈومین سے آپ کے پیروکاروں کو ہٹا دیا جائے گا۔", + "confirmations.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "لاگ آؤٹ", "confirmations.logout.message": "کیا واقعی آپ لاگ آؤٹ ہونا چاہتے ہیں؟", "confirmations.mute.confirm": "خاموش", @@ -214,7 +216,7 @@ "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": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, 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": "آپ کا کوئی پسندیدہ ٹوٹ نہیں ہے. جب آپ پسند کریں گے، یہاں نظر آئےگا.", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "بُک مارکس", "navigation_bar.community_timeline": "مقامی ٹائم لائن", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "دریافت کریں", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "پروفائل میں ترمیم کریں", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Search", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Search or paste URL", - "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.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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "All", "search_results.hashtags": "Hashtags", "search_results.nothing_found": "Could not find anything for these search terms", @@ -555,7 +559,8 @@ "status.copy": "Copy link to status", "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", - "status.direct": "Direct message @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Edit", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/mastodon/locales/uz.json b/app/javascript/mastodon/locales/uz.json index 0f450b32af..e7502bf239 100644 --- a/app/javascript/mastodon/locales/uz.json +++ b/app/javascript/mastodon/locales/uz.json @@ -20,7 +20,7 @@ "account.blocked": "Bloklangan", "account.browse_more_on_origin_server": "Asl profilda ko'proq ko'rish", "account.cancel_follow_request": "Kuzatuv so‘rovini bekor qilish", - "account.direct": "To'g'ridan-to'g'ri xabar @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "@{name} post qo‘yganida menga xabar berishni to‘xtating", "account.domain_blocked": "Domen bloklangan", "account.edit_profile": "Profilni tahrirlash", @@ -102,7 +102,7 @@ "column.blocks": "Bloklangan foydalanuvchilar", "column.bookmarks": "Xatcho‘plar", "column.community": "Mahalliy", - "column.direct": "To'g'ridan-to'g'ri xabarlar", + "column.direct": "Private mentions", "column.directory": "Profillarni ko'rish", "column.domain_blocks": "Bloklangan domenlar", "column.favourites": "Sevimlilar", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Sizda media tavsifi yoki oldindan ko‘rishda saqlanmagan o‘zgarishlar bor, ular baribir bekor qilinsinmi?", "confirmations.domain_block.confirm": "Butun domenni bloklash", "confirmations.domain_block.message": "Haqiqatan ham, {domain} ni butunlay bloklamoqchimisiz? Ko'pgina hollarda bir nechta maqsadli bloklar yoki ovozni o'chirish etarli va afzaldir. Siz oʻsha domendagi kontentni hech qanday umumiy vaqt jadvallarida yoki bildirishnomalaringizda koʻrmaysiz. Bu domendagi obunachilaringiz olib tashlanadi.", + "confirmations.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "Chiqish", "confirmations.logout.message": "Chiqishingizga aminmisiz?", "confirmations.mute.confirm": "Ovozsiz", @@ -214,7 +216,7 @@ "empty_column.blocks": "Siz hali hech qanday foydalanuvchini bloklamagansiz.", "empty_column.bookmarked_statuses": "Sizda hali xatcho‘p qo‘yilgan postlar yo‘q. Biriga xatcho‘p qo‘ysangiz, u shu yerda ko‘rinadi.", "empty_column.community": "Mahalliy vaqt jadvali boʻsh. To'pni aylantirish uchun hammaga ochiq narsa yozing!", - "empty_column.direct": "Sizda hali hech qanday to‘g‘ridan-to‘g‘ri xabar yo‘q. Siz yuborganingizda yoki qabul qilganingizda, u shu yerda ko'rinadi.", + "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Hali bloklangan domenlar mavjud emas.", "empty_column.explore_statuses": "Hozir hech narsa trendda emas. Keyinroq tekshiring!", "empty_column.favourited_statuses": "Sizda hali sevimli postlar yoʻq. Sizga yoqqanida, u shu yerda chiqadi.", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Xatcho‘plar", "navigation_bar.community_timeline": "Mahalliy", "navigation_bar.compose": "Yangi post yozing", - "navigation_bar.direct": "To'g'ridan-to'g'ri xabarlar", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Kashf qilish", "navigation_bar.domain_blocks": "Bloklangan domenlar", "navigation_bar.edit_profile": "Profilni tahrirlash", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "No recent searches", "search.placeholder": "Search", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Search or paste URL", - "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.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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "All", "search_results.hashtags": "Hashtags", "search_results.nothing_found": "Could not find anything for these search terms", @@ -555,7 +559,8 @@ "status.copy": "Copy link to status", "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", - "status.direct": "Direct message @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Edit", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 4ee65e72a0..7d51c70557 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "Bạn chưa lưu thay đổi đối với phần mô tả hoặc bản xem trước của media, vẫn bỏ luôn?", "confirmations.domain_block.confirm": "Ẩn toàn bộ máy chủ", "confirmations.domain_block.message": "Bạn thật sự muốn ẩn toàn bộ nội dung từ {domain}? Sẽ hợp lý hơn nếu bạn chỉ chặn hoặc ẩn một vài tài khoản cụ thể. Ẩn toàn bộ nội dung từ máy chủ sẽ khiến bạn không còn thấy nội dung từ máy chủ đó ở bất kỳ nơi nào, kể cả thông báo. Người quan tâm bạn từ máy chủ đó cũng sẽ bị xóa luôn.", + "confirmations.edit.confirm": "Sửa", + "confirmations.edit.message": "Nội dung tút cũ sẽ bị ghi đè, bạn có tiếp tục?", "confirmations.logout.confirm": "Đăng xuất", "confirmations.logout.message": "Bạn có thật sự muốn thoát?", "confirmations.mute.confirm": "Ẩn", @@ -270,7 +272,7 @@ "footer.get_app": "Ứng dụng", "footer.invite": "Mời bạn bè", "footer.keyboard_shortcuts": "Phím tắt", - "footer.privacy_policy": "Chính sách bảo mật", + "footer.privacy_policy": "Bảo mật", "footer.source_code": "Mã nguồn", "footer.status": "Trạng thái", "generic.saved": "Đã lưu", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "mở các mục", "keyboard_shortcuts.compose": "mở khung soạn tút", "keyboard_shortcuts.description": "Mô tả", - "keyboard_shortcuts.direct": "để mở cột tin nhắn", + "keyboard_shortcuts.direct": "mở mục nhắn riêng", "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", @@ -520,14 +522,16 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Vi phạm nội quy", "report_notification.open": "Mở báo cáo", + "search.no_recent_searches": "Không có tìm kiếm gần đây", "search.placeholder": "Tìm kiếm", + "search.quick_action.account_search": "Người trùng khớp {x}", + "search.quick_action.go_to_account": "Xem trang {x}", + "search.quick_action.go_to_hashtag": "Xem hashtag {x}", + "search.quick_action.open_url": "Mở liên kết trong Mastodon", + "search.quick_action.status_search": "Tút trùng khớp {x}", "search.search_or_paste": "Tìm kiếm hoặc nhập URL", - "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, đăng lại hoặc những tút có nhắc đến bạn. Bạn cũng có thể tìm tên người dùng, biệt danh 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, biệt danh và hashtag", - "search_popout.tips.user": "mọi người", + "search_popout.quick_actions": "Thao tác nhanh", + "search_popout.recent": "Tìm kiếm gần đây", "search_results.accounts": "Mọi người", "search_results.all": "Toàn bộ", "search_results.hashtags": "Hashtags", @@ -556,6 +560,7 @@ "status.delete": "Xóa", "status.detailed_status": "Xem chi tiết thêm", "status.direct": "Nhắn riêng @{name}", + "status.direct_indicator": "Nhắn riêng", "status.edit": "Sửa", "status.edited": "Đã sửa {date}", "status.edited_x_times": "Đã sửa {count, plural, other {{count} lần}}", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index 4f190a4bc3..f02d1a15de 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -20,7 +20,7 @@ "account.blocked": "ⵉⵜⵜⵓⴳⴷⵍ", "account.browse_more_on_origin_server": "ⵙⵜⴰⵔⴰ ⵓⴳⴳⴰⵔ ⴳ ⵉⴼⵔⵙ ⴰⵏⵚⵍⵉ", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "ⵜⵓⵣⵉⵏⵜ ⵜⵓⵙⵔⵉⴷⵜ @{name}", + "account.direct": "Privately mention @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "ⵉⵜⵜⵓⴳⴷⵍ ⵉⴳⵔ", "account.edit_profile": "ⵙⵏⴼⵍ ⵉⴼⵔⵙ", @@ -102,7 +102,7 @@ "column.blocks": "ⵉⵏⵙⵙⵎⵔⵙⵏ ⵜⵜⵓⴳⴷⵍⵏⵉⵏ", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.direct": "Private mentions", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "ⵜⵓⴼⵓⵜⵉⵏ", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "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.edit.confirm": "Edit", + "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.logout.confirm": "ⴼⴼⵖ", "confirmations.logout.message": "ⵉⵙ ⵏⵉⵜ ⵜⵅⵙⴷ ⴰⴷ ⵜⴼⴼⵖⴷ?", "confirmations.mute.confirm": "ⵥⵥⵉⵥⵏ", @@ -214,7 +216,7 @@ "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.direct": "You don't have any private mentions yet. When you send or receive one, 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.", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Private mentions", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "ⵙⵏⴼⵍ ⵉⴼⵔⵙ", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", + "search.no_recent_searches": "No recent searches", "search.placeholder": "ⵔⵣⵓ", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Search or paste URL", - "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.status": "status", - "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", - "search_popout.tips.user": "user", - "search_results.accounts": "ⵎⵉⴷⴷⵏ", + "search_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "All", "search_results.hashtags": "ⵀⴰⵛⵟⴰⴳ", "search_results.nothing_found": "Could not find anything for these search terms", @@ -555,7 +559,8 @@ "status.copy": "Copy link to status", "status.delete": "ⴽⴽⵙ", "status.detailed_status": "Detailed conversation view", - "status.direct": "ⵜⵓⵣⵉⵏⵜ ⵜⵓⵙⵔⵉⴷⵜ ⵉ @{name}", + "status.direct": "Privately mention @{name}", + "status.direct_indicator": "Private mention", "status.edit": "Edit", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 2cfed5224a..f9e31c450d 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -20,7 +20,7 @@ "account.blocked": "已屏蔽", "account.browse_more_on_origin_server": "在原始个人资料页面上浏览详情", "account.cancel_follow_request": "撤回关注请求", - "account.direct": "发送私信给 @{name}", + "account.direct": "私下提及 @{name}", "account.disable_notifications": "当 @{name} 发嘟时不要通知我", "account.domain_blocked": "域名已屏蔽", "account.edit_profile": "修改个人资料", @@ -37,7 +37,7 @@ "account.following_counter": "正在关注 {counter} 人", "account.follows.empty": "此用户目前尚未关注任何人。", "account.follows_you": "关注了你", - "account.go_to_profile": "转到个人资料界面", + "account.go_to_profile": "转到个人资料页", "account.hide_reblogs": "隐藏来自 @{name} 的转贴", "account.joined_short": "加入于", "account.languages": "更改订阅语言", @@ -53,7 +53,7 @@ "account.posts": "嘟文", "account.posts_with_replies": "嘟文和回复", "account.report": "举报 @{name}", - "account.requested": "正在等待对方同意。点击以取消发送关注请求", + "account.requested": "正在等待对方同意。点击取消发送关注请求", "account.requested_follow": "{name} 已经向你发送了关注请求", "account.share": "分享 @{name} 的个人资料页", "account.show_reblogs": "显示来自 @{name} 的转嘟", @@ -102,7 +102,7 @@ "column.blocks": "屏蔽的用户", "column.bookmarks": "书签", "column.community": "本站时间轴", - "column.direct": "私信", + "column.direct": "私下提及", "column.directory": "浏览用户资料", "column.domain_blocks": "已屏蔽的域名", "column.favourites": "喜欢", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "您还有未保存的媒体描述或预览修改,仍然丢弃它们吗?", "confirmations.domain_block.confirm": "屏蔽整个域名", "confirmations.domain_block.message": "你真的确定要屏蔽所有来自 {domain} 的内容吗?多数情况下,屏蔽或隐藏几个特定的用户就已经足够了。来自该网站的内容将不再出现在你的任何公共时间轴或通知列表里。来自该网站的关注者将会被移除。", + "confirmations.edit.confirm": "编辑", + "confirmations.edit.message": "编辑此消息将会覆盖当前正在撰写的信息。仍要继续吗?", "confirmations.logout.confirm": "登出", "confirmations.logout.message": "你确定要登出吗?", "confirmations.mute.confirm": "隐藏", @@ -200,7 +202,7 @@ "emoji_button.food": "食物和饮料", "emoji_button.label": "插入表情符号", "emoji_button.nature": "自然", - "emoji_button.not_found": "木有这个表情符号!(╯°□°)╯︵ ┻━┻", + "emoji_button.not_found": "未找到匹配的表情符号", "emoji_button.objects": "物体", "emoji_button.people": "人物", "emoji_button.recent": "常用", @@ -214,7 +216,7 @@ "empty_column.blocks": "你还未屏蔽任何用户。", "empty_column.bookmarked_statuses": "你还没有给任何嘟文添加过书签。在你添加书签后,嘟文就会显示在这里。", "empty_column.community": "本站时间轴暂时没有内容,快写点什么让它动起来吧!", - "empty_column.direct": "你还未使用过私信。当你发出或者收到私信时,它将显示在此。", + "empty_column.direct": "你还未使用过私下提及。当你发出或者收到私下提及时,它将显示在此。", "empty_column.domain_blocks": "暂且没有被屏蔽的站点。", "empty_column.explore_statuses": "目前没有热门话题,稍后再来看看吧!", "empty_column.favourited_statuses": "你还没有喜欢过任何嘟文。喜欢过的嘟文会显示在这里。", @@ -244,18 +246,18 @@ "explore.trending_tags": "话题标签", "filter_modal.added.context_mismatch_explanation": "此过滤器分类不适用访问过嘟文的环境中。如果你想要在环境中过滤嘟文,你必须编辑此过滤器。", "filter_modal.added.context_mismatch_title": "环境不匹配!", - "filter_modal.added.expired_explanation": "此过滤器分类已过期,你需要修改到期日期才能应用。", + "filter_modal.added.expired_explanation": "此过滤器类别已过期,你需要修改到期日期才能应用。", "filter_modal.added.expired_title": "过滤器已过期!", "filter_modal.added.review_and_configure": "要审核并进一步配置此过滤器分类,请前往{settings_link}。", "filter_modal.added.review_and_configure_title": "过滤器设置", "filter_modal.added.settings_link": "设置页面", - "filter_modal.added.short_explanation": "此嘟文已添加到以下过滤器分类:{title}。", + "filter_modal.added.short_explanation": "此嘟文已添加到以下过滤器类别:{title}。", "filter_modal.added.title": "过滤器已添加 !", - "filter_modal.select_filter.context_mismatch": "不适用于此环境", + "filter_modal.select_filter.context_mismatch": "不适用于这个情境", "filter_modal.select_filter.expired": "已过期", - "filter_modal.select_filter.prompt_new": "新分类:{name}", + "filter_modal.select_filter.prompt_new": "新类别:{name}", "filter_modal.select_filter.search": "搜索或创建", - "filter_modal.select_filter.subtitle": "使用一个已存在分类,或创建一个新分类", + "filter_modal.select_filter.subtitle": "使用一个已存在分类,或创建一个新类别", "filter_modal.select_filter.title": "过滤此嘟文", "filter_modal.title.status": "过滤一条嘟文", "follow_recommendations.done": "完成", @@ -267,7 +269,7 @@ "followed_tags": "关注的话题标签", "footer.about": "关于", "footer.directory": "用户目录", - "footer.get_app": "获取应用程序", + "footer.get_app": "获取应用", "footer.invite": "邀请", "footer.keyboard_shortcuts": "快捷键列表", "footer.privacy_policy": "隐私政策", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "选择某栏", "keyboard_shortcuts.compose": "选择输入框", "keyboard_shortcuts.description": "说明", - "keyboard_shortcuts.direct": "打开私信栏", + "keyboard_shortcuts.direct": "打开私下提及栏", "keyboard_shortcuts.down": "在列表中让光标下移", "keyboard_shortcuts.enter": "展开嘟文", "keyboard_shortcuts.favourite": "喜欢嘟文", @@ -361,8 +363,8 @@ "lists.search": "搜索你关注的人", "lists.subheading": "你的列表", "load_pending": "{count} 项", - "loading_indicator.label": "加载中……", - "media_gallery.toggle_visible": "隐藏图片", + "loading_indicator.label": "加载中…", + "media_gallery.toggle_visible": "{number, plural, other {隐藏图像}}", "missing_indicator.label": "找不到内容", "missing_indicator.sublabel": "无法找到此资源", "moved_to_account_banner.text": "您的账号 {disabledAccount} 已停用,因为您已迁移到 {movedToAccount} 。", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "书签", "navigation_bar.community_timeline": "本站时间轴", "navigation_bar.compose": "撰写新嘟文", - "navigation_bar.direct": "私信", + "navigation_bar.direct": "私下提及", "navigation_bar.discover": "发现", "navigation_bar.domain_blocks": "已屏蔽的域名", "navigation_bar.edit_profile": "修改个人资料", @@ -385,7 +387,7 @@ "navigation_bar.followed_tags": "关注的话题标签", "navigation_bar.follows_and_followers": "关注管理", "navigation_bar.lists": "列表", - "navigation_bar.logout": "登出", + "navigation_bar.logout": "退出登录", "navigation_bar.mutes": "已隐藏的用户", "navigation_bar.personal": "个人", "navigation_bar.pins": "置顶嘟文", @@ -501,7 +503,7 @@ "report.reasons.other_description": "该问题不符合其他类别", "report.reasons.spam": "它是垃圾信息", "report.reasons.spam_description": "恶意链接,虚假互动和重复回复", - "report.reasons.violation": "它违反了服务器规则", + "report.reasons.violation": "违反服务器规则", "report.reasons.violation_description": "你清楚它违反了特定的规则", "report.rules.subtitle": "选择所有适用选项", "report.rules.title": "哪些规则被违反了?", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "骚扰", "report_notification.categories.violation": "违反规则", "report_notification.open": "打开举报", + "search.no_recent_searches": "无最近搜索", "search.placeholder": "搜索", + "search.quick_action.account_search": "匹配 {x} 的个人资料", + "search.quick_action.go_to_account": "转到 {x} 个人资料", + "search.quick_action.go_to_hashtag": "转到标签 {x}", + "search.quick_action.open_url": "在 Mastodon 中打开链接", + "search.quick_action.status_search": "匹配 {x} 的帖子", "search.search_or_paste": "搜索或输入链接", - "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_popout.quick_actions": "快捷操作", + "search_popout.recent": "最近搜索", + "search_results.accounts": "个人资料", "search_results.all": "全部", "search_results.hashtags": "话题标签", "search_results.nothing_found": "无法找到符合这些搜索词的任何内容", @@ -555,7 +559,8 @@ "status.copy": "复制嘟文链接", "status.delete": "删除", "status.detailed_status": "详细的对话视图", - "status.direct": "私信 @{name}", + "status.direct": "私下提及 @{name}", + "status.direct_indicator": "私下提及", "status.edit": "编辑", "status.edited": "编辑于 {date}", "status.edited_x_times": "共编辑 {count, plural, one {{count} 次} other {{count} 次}}", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index 5c6f539aa7..d130662fcf 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -20,7 +20,7 @@ "account.blocked": "已封鎖", "account.browse_more_on_origin_server": "前往原始的個人檔案頁瀏覽更多", "account.cancel_follow_request": "撤回追蹤請求", - "account.direct": "私訊 @{name}", + "account.direct": "私下提及 @{name}", "account.disable_notifications": "當 @{name} 發文時不要再通知我", "account.domain_blocked": "網域被封鎖", "account.edit_profile": "修改個人檔案", @@ -102,7 +102,7 @@ "column.blocks": "封鎖名單", "column.bookmarks": "書籤", "column.community": "本站時間軸", - "column.direct": "私訊", + "column.direct": "私人提及", "column.directory": "瀏覽個人資料", "column.domain_blocks": "封鎖的服務站", "column.favourites": "最愛的文章", @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "您在媒體描述或預覽有尚未儲存的變更。確定要捨棄它們嗎?", "confirmations.domain_block.confirm": "封鎖整個網站", "confirmations.domain_block.message": "你真的真的確定要封鎖整個 {domain} ?多數情況下,封鎖或靜音幾個特定目標就已經有效,也是比較建議的做法。若然封鎖全站,你將不會再在這裏看到該站的內容和通知。來自該站的關注者亦會被移除。", + "confirmations.edit.confirm": "編輯", + "confirmations.edit.message": "現在編輯將會覆蓋你目前正在撰寫的訊息。你確定要繼續嗎?", "confirmations.logout.confirm": "登出", "confirmations.logout.message": "確定要登出嗎?", "confirmations.mute.confirm": "靜音", @@ -214,7 +216,7 @@ "empty_column.blocks": "你還沒有封鎖任何使用者。", "empty_column.bookmarked_statuses": "你還沒建立任何書籤。這裡將會顯示你建立的書籤。", "empty_column.community": "本站時間軸暫時未有內容,快寫一點東西來搶頭香啊!", - "empty_column.direct": "您還沒有任何私訊。當您私訊別人或收到私訊時,它將在此顯示。", + "empty_column.direct": "你還沒有私人提及。當你發送或收到時,它將顯示在這裏。", "empty_column.domain_blocks": "尚未隱藏任何網域。", "empty_column.explore_statuses": "目前沒有熱門話題,請稍候再回來看看!", "empty_column.favourited_statuses": "你還沒收藏任何文章。這裡將會顯示你收藏的嘟文。", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "把標示移動到其中一列", "keyboard_shortcuts.compose": "把標示移動到文字輸入區", "keyboard_shortcuts.description": "描述", - "keyboard_shortcuts.direct": "開啟私訊欄", + "keyboard_shortcuts.direct": "以打開私人提及欄", "keyboard_shortcuts.down": "在列表往下移動", "keyboard_shortcuts.enter": "打開文章", "keyboard_shortcuts.favourite": "收藏文章", @@ -374,7 +376,7 @@ "navigation_bar.bookmarks": "書籤", "navigation_bar.community_timeline": "本站時間軸", "navigation_bar.compose": "撰寫新文章", - "navigation_bar.direct": "私訊", + "navigation_bar.direct": "私人提及", "navigation_bar.discover": "探索", "navigation_bar.domain_blocks": "封鎖的服務站", "navigation_bar.edit_profile": "修改個人資料", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "垃圾訊息", "report_notification.categories.violation": "違反規則", "report_notification.open": "打開檢舉報告", + "search.no_recent_searches": "No recent searches", "search.placeholder": "搜尋", + "search.quick_action.account_search": "Profiles matching {x}", + "search.quick_action.go_to_account": "Go to profile {x}", + "search.quick_action.go_to_hashtag": "Go to hashtag {x}", + "search.quick_action.open_url": "Open URL in Mastodon", + "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "搜尋或貼上網址", - "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_popout.quick_actions": "Quick actions", + "search_popout.recent": "Recent searches", + "search_results.accounts": "Profiles", "search_results.all": "全部", "search_results.hashtags": "標籤", "search_results.nothing_found": "找不到與搜尋字詞相關的內容", @@ -555,7 +559,8 @@ "status.copy": "將連結複製到文章中", "status.delete": "刪除", "status.detailed_status": "詳細對話內容", - "status.direct": "私訊 @{name}", + "status.direct": "私下提及 @{name}", + "status.direct_indicator": "私人提及", "status.edit": "編輯", "status.edited": "編輯於 {date}", "status.edited_x_times": "Edited {count, plural, one {{count} 次} other {{count} 次}}", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 4e5cfb876c..55f7093402 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -162,6 +162,8 @@ "confirmations.discard_edit_media.message": "您在媒體描述或預覽區塊有未儲存的變更。是否要捨棄這些變更?", "confirmations.domain_block.confirm": "封鎖整個網域", "confirmations.domain_block.message": "您真的非常確定要封鎖整個 {domain} 網域嗎?大部分情況下,封鎖或靜音少數特定的帳號就能滿足需求了。您將不能在任何公開的時間軸及通知中看到來自此網域的內容。您來自該網域的跟隨者也將被移除。", + "confirmations.edit.confirm": "編輯", + "confirmations.edit.message": "編輯嘟文將覆蓋掉您目前正在撰寫的訊息。是否仍要繼續?", "confirmations.logout.confirm": "登出", "confirmations.logout.message": "您確定要登出嗎?", "confirmations.mute.confirm": "靜音", @@ -170,7 +172,7 @@ "confirmations.redraft.confirm": "刪除並重新編輯", "confirmations.redraft.message": "您確定要刪除這則嘟文並重新編輯嗎?您將失去這則嘟文的轉嘟及最愛,且對原始嘟文的回覆都會變成獨立的嘟文。", "confirmations.reply.confirm": "回覆", - "confirmations.reply.message": "現在回覆將蓋掉您目前正在撰寫的訊息。是否仍要回覆?", + "confirmations.reply.message": "回覆嘟文將覆蓋掉您目前正在撰寫的訊息。是否仍要繼續?", "confirmations.unfollow.confirm": "取消跟隨", "confirmations.unfollow.message": "您確定要取消跟隨 {name} 嗎?", "conversation.delete": "刪除對話", @@ -214,7 +216,7 @@ "empty_column.blocks": "您尚未封鎖任何使用者。", "empty_column.bookmarked_statuses": "您還沒有建立任何書籤。當您建立書籤時,它將於此顯示。", "empty_column.community": "本站時間軸是空的。快公開嘟些文搶頭香啊!", - "empty_column.direct": "您還沒有任何私訊。當您私訊別人或收到私訊時,它將於此顯示。", + "empty_column.direct": "您還沒有收到任何私訊。當您私訊別人或收到私訊時,它將於此顯示。", "empty_column.domain_blocks": "尚未封鎖任何網域。", "empty_column.explore_statuses": "目前沒有熱門討論,請稍候再回來看看!", "empty_column.favourited_statuses": "您還沒有加過任何嘟文至最愛。當您收藏嘟文時,它將於此顯示。", @@ -312,7 +314,7 @@ "keyboard_shortcuts.column": "將游標移至其中一欄", "keyboard_shortcuts.compose": "將游標移至文字撰寫區塊", "keyboard_shortcuts.description": "說明", - "keyboard_shortcuts.direct": "開啟私訊欄", + "keyboard_shortcuts.direct": "開啟私訊對話欄", "keyboard_shortcuts.down": "往下移動", "keyboard_shortcuts.enter": "檢視嘟文", "keyboard_shortcuts.favourite": "加到最愛", @@ -420,7 +422,7 @@ "notifications.column_settings.poll": "投票結果:", "notifications.column_settings.push": "推播通知", "notifications.column_settings.reblog": "轉嘟:", - "notifications.column_settings.show": "在欄位中顯示", + "notifications.column_settings.show": "於欄位中顯示", "notifications.column_settings.sound": "播放聲音", "notifications.column_settings.status": "新嘟文:", "notifications.column_settings.unread_notifications.category": "未讀通知", @@ -520,15 +522,17 @@ "report_notification.categories.spam": "垃圾訊息", "report_notification.categories.violation": "違反規則", "report_notification.open": "開啟檢舉報告", + "search.no_recent_searches": "尚無最近的搜尋紀錄", "search.placeholder": "搜尋", + "search.quick_action.account_search": "符合的個人檔案 {x}", + "search.quick_action.go_to_account": "前往個人檔案 {x}", + "search.quick_action.go_to_hashtag": "前往主題標籤 {x}", + "search.quick_action.open_url": "於 Mastodon 中開啟連結", + "search.quick_action.status_search": "符合的嘟文 {x}", "search.search_or_paste": "搜尋或輸入網址", - "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_popout.quick_actions": "快捷操作", + "search_popout.recent": "最近的搜尋紀錄", + "search_results.accounts": "個人檔案", "search_results.all": "全部", "search_results.hashtags": "主題標籤", "search_results.nothing_found": "無法找到符合搜尋條件之結果", @@ -555,7 +559,8 @@ "status.copy": "複製嘟文連結", "status.delete": "刪除", "status.detailed_status": "詳細的對話內容", - "status.direct": "發送私訊給 @{name}", + "status.direct": "私訊 @{name}", + "status.direct_indicator": "私訊", "status.edit": "編輯", "status.edited": "編輯於 {date}", "status.edited_x_times": "已編輯 {count, plural, one {{count} 次} other {{count} 次}}", diff --git a/app/javascript/mastodon/performance.js b/app/javascript/mastodon/performance.js index 450a90626e..95cf962d6b 100644 --- a/app/javascript/mastodon/performance.js +++ b/app/javascript/mastodon/performance.js @@ -12,6 +12,7 @@ if (process.env.NODE_ENV === 'development') { // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1331135 performance.setResourceTimingBufferSize(Infinity); } + marky = require('marky'); // allows us to easily do e.g. ReactPerf.printWasted() while debugging //window.ReactPerf = require('react-addons-perf'); diff --git a/app/javascript/mastodon/reducers/search.js b/app/javascript/mastodon/reducers/search.js index d3e71da9d9..e545f430cc 100644 --- a/app/javascript/mastodon/reducers/search.js +++ b/app/javascript/mastodon/reducers/search.js @@ -6,13 +6,15 @@ import { SEARCH_FETCH_SUCCESS, SEARCH_SHOW, SEARCH_EXPAND_SUCCESS, + SEARCH_RESULT_CLICK, + SEARCH_RESULT_FORGET, } from '../actions/search'; import { COMPOSE_MENTION, COMPOSE_REPLY, COMPOSE_DIRECT, } from '../actions/compose'; -import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable'; +import { Map as ImmutableMap, List as ImmutableList, OrderedSet as ImmutableOrderedSet, fromJS } from 'immutable'; const initialState = ImmutableMap({ value: '', @@ -21,6 +23,7 @@ const initialState = ImmutableMap({ results: ImmutableMap(), isLoading: false, searchTerm: '', + recent: ImmutableOrderedSet(), }); export default function search(state = initialState, action) { @@ -61,6 +64,10 @@ export default function search(state = initialState, action) { case SEARCH_EXPAND_SUCCESS: const results = action.searchType === 'hashtags' ? fromJS(action.results.hashtags) : action.results[action.searchType].map(item => item.id); return state.updateIn(['results', action.searchType], list => list.concat(results)); + case SEARCH_RESULT_CLICK: + return state.update('recent', set => set.add(fromJS(action.result))); + case SEARCH_RESULT_FORGET: + return state.update('recent', set => set.filterNot(result => result.get('q') === action.q)); default: return state; } diff --git a/app/javascript/mastodon/reducers/server.js b/app/javascript/mastodon/reducers/server.js index db9f2b5e6b..909ab2a661 100644 --- a/app/javascript/mastodon/reducers/server.js +++ b/app/javascript/mastodon/reducers/server.js @@ -2,6 +2,9 @@ import { SERVER_FETCH_REQUEST, SERVER_FETCH_SUCCESS, SERVER_FETCH_FAIL, + SERVER_TRANSLATION_LANGUAGES_FETCH_REQUEST, + SERVER_TRANSLATION_LANGUAGES_FETCH_SUCCESS, + SERVER_TRANSLATION_LANGUAGES_FETCH_FAIL, EXTENDED_DESCRIPTION_REQUEST, EXTENDED_DESCRIPTION_SUCCESS, EXTENDED_DESCRIPTION_FAIL, @@ -35,6 +38,12 @@ export default function server(state = initialState, action) { return state.set('server', fromJS(action.server)).setIn(['server', 'isLoading'], false); case SERVER_FETCH_FAIL: return state.setIn(['server', 'isLoading'], false); + case SERVER_TRANSLATION_LANGUAGES_FETCH_REQUEST: + return state.setIn(['translationLanguages', 'isLoading'], true); + case SERVER_TRANSLATION_LANGUAGES_FETCH_SUCCESS: + return state.setIn(['translationLanguages', 'items'], fromJS(action.translationLanguages)).setIn(['translationLanguages', 'isLoading'], false); + case SERVER_TRANSLATION_LANGUAGES_FETCH_FAIL: + return state.setIn(['translationLanguages', 'isLoading'], false); case EXTENDED_DESCRIPTION_REQUEST: return state.setIn(['extendedDescription', 'isLoading'], true); case EXTENDED_DESCRIPTION_SUCCESS: diff --git a/app/javascript/mastodon/selectors/index.js b/app/javascript/mastodon/selectors/index.js index bf46c810e2..58972bdf7f 100644 --- a/app/javascript/mastodon/selectors/index.js +++ b/app/javascript/mastodon/selectors/index.js @@ -121,8 +121,8 @@ export const getAccountGallery = createSelector([ let medias = ImmutableList(); statusIds.forEach(statusId => { - const status = statuses.get(statusId); - medias = medias.concat(status.get('media_attachments').map(media => media.set('status', status).set('account', account))); + const status = statuses.get(statusId).set('account', account); + medias = medias.concat(status.get('media_attachments').map(media => media.set('status', status))); }); return medias; diff --git a/app/javascript/mastodon/stream.js b/app/javascript/mastodon/stream.js index c6d12cd6ff..95e0359d0a 100644 --- a/app/javascript/mastodon/stream.js +++ b/app/javascript/mastodon/stream.js @@ -59,6 +59,7 @@ const subscribe = ({ channelName, params, onConnect }) => { subscriptionCounters[key] = subscriptionCounters[key] || 0; if (subscriptionCounters[key] === 0) { + // @ts-expect-error sharedConnection.send(JSON.stringify({ type: 'subscribe', stream: channelName, ...params })); } @@ -74,7 +75,9 @@ const unsubscribe = ({ channelName, params, onDisconnect }) => { subscriptionCounters[key] = subscriptionCounters[key] || 1; + // @ts-expect-error if (subscriptionCounters[key] === 1 && sharedConnection.readyState === WebSocketClient.OPEN) { + // @ts-expect-error sharedConnection.send(JSON.stringify({ type: 'unsubscribe', stream: channelName, ...params })); } @@ -83,11 +86,12 @@ const unsubscribe = ({ channelName, params, onDisconnect }) => { }; const sharedCallbacks = { - connected () { + connected() { subscriptions.forEach(subscription => subscribe(subscription)); }, - received (data) { + // @ts-expect-error + received(data) { const { stream } = data; subscriptions.filter(({ channelName, params }) => { @@ -111,11 +115,11 @@ const sharedCallbacks = { }); }, - disconnected () { + disconnected() { subscriptions.forEach(subscription => unsubscribe(subscription)); }, - reconnected () { + reconnected() { }, }; @@ -138,6 +142,7 @@ const channelNameWithInlineParams = (channelName, params) => { * @param {function(Function, Function): { onConnect: (function(): void), onReceive: (function(StreamEvent): void), onDisconnect: (function(): void) }} callbacks * @return {function(): void} */ +// @ts-expect-error export const connectStream = (channelName, params, callbacks) => (dispatch, getState) => { const streamingAPIBaseURL = getState().getIn(['meta', 'streaming_api_base_url']); const accessToken = getState().getIn(['meta', 'access_token']); @@ -147,19 +152,19 @@ export const connectStream = (channelName, params, callbacks) => (dispatch, getS // to using individual connections for each channel if (!streamingAPIBaseURL.startsWith('ws')) { const connection = createConnection(streamingAPIBaseURL, accessToken, channelNameWithInlineParams(channelName, params), { - connected () { + connected() { onConnect(); }, - received (data) { + received(data) { onReceive(data); }, - disconnected () { + disconnected() { onDisconnect(); }, - reconnected () { + reconnected() { onConnect(); }, }); @@ -227,14 +232,19 @@ const handleEventSourceMessage = (e, received) => { const createConnection = (streamingAPIBaseURL, accessToken, channelName, { connected, received, disconnected, reconnected }) => { const params = channelName.split('&'); + // @ts-expect-error channelName = params.shift(); if (streamingAPIBaseURL.startsWith('ws')) { + // @ts-expect-error const ws = new WebSocketClient(`${streamingAPIBaseURL}/api/v1/streaming/?${params.join('&')}`, accessToken); - ws.onopen = connected; - ws.onmessage = e => received(JSON.parse(e.data)); - ws.onclose = disconnected; + // @ts-expect-error + ws.onopen = connected; + ws.onmessage = e => received(JSON.parse(e.data)); + // @ts-expect-error + ws.onclose = disconnected; + // @ts-expect-error ws.onreconnect = reconnected; return ws; @@ -256,7 +266,7 @@ const createConnection = (streamingAPIBaseURL, accessToken, channelName, { conne }; KNOWN_EVENT_TYPES.forEach(type => { - es.addEventListener(type, e => handleEventSourceMessage(/** @type {MessageEvent} */ (e), received)); + es.addEventListener(type, e => handleEventSourceMessage(/** @type {MessageEvent} */(e), received)); }); es.onerror = /** @type {function(): void} */ (disconnected); diff --git a/app/javascript/mastodon/utils/hashtags.js b/app/javascript/mastodon/utils/hashtags.js new file mode 100644 index 0000000000..358ce37f54 --- /dev/null +++ b/app/javascript/mastodon/utils/hashtags.js @@ -0,0 +1,47 @@ +const HASHTAG_SEPARATORS = '_\\u00b7\\u200c'; +const ALPHA = '\\p{L}\\p{M}'; +const WORD = '\\p{L}\\p{M}\\p{N}\\p{Pc}'; + +const buildHashtagPatternRegex = () => { + try { + return new RegExp( + '(?:^|[^\\/\\)\\w])#((' + + '[' + WORD + '_]' + + '[' + WORD + HASHTAG_SEPARATORS + ']*' + + '[' + ALPHA + HASHTAG_SEPARATORS + ']' + + '[' + WORD + HASHTAG_SEPARATORS +']*' + + '[' + WORD + '_]' + + ')|(' + + '[' + WORD + '_]*' + + '[' + ALPHA + ']' + + '[' + WORD + '_]*' + + '))', 'iu', + ); + } catch { + return /(?:^|[^/)\w])#(\w*[a-zA-Z·]\w*)/i; + } +}; + +const buildHashtagRegex = () => { + try { + return new RegExp( + '^((' + + '[' + WORD + '_]' + + '[' + WORD + HASHTAG_SEPARATORS + ']*' + + '[' + ALPHA + HASHTAG_SEPARATORS + ']' + + '[' + WORD + HASHTAG_SEPARATORS +']*' + + '[' + WORD + '_]' + + ')|(' + + '[' + WORD + '_]*' + + '[' + ALPHA + ']' + + '[' + WORD + '_]*' + + '))$', 'iu', + ); + } catch { + return /^(\w*[a-zA-Z·]\w*)$/i; + } +}; + +export const HASHTAG_PATTERN_REGEX = buildHashtagPatternRegex(); + +export const HASHTAG_REGEX = buildHashtagRegex(); diff --git a/app/javascript/mastodon/utils/notifications.js b/app/javascript/mastodon/utils/notifications.js index 3cdf7caea0..42623ac7c6 100644 --- a/app/javascript/mastodon/utils/notifications.js +++ b/app/javascript/mastodon/utils/notifications.js @@ -3,7 +3,7 @@ const checkNotificationPromise = () => { try { - // eslint-disable-next-line promise/catch-or-return, promise/valid-params + // eslint-disable-next-line promise/valid-params, promise/catch-or-return Notification.requestPermission().then(); } catch(e) { return false; diff --git a/app/javascript/mastodon/utils/resize_image.js b/app/javascript/mastodon/utils/resize_image.js deleted file mode 100644 index fb8c3c11e6..0000000000 --- a/app/javascript/mastodon/utils/resize_image.js +++ /dev/null @@ -1,189 +0,0 @@ -import EXIF from 'exif-js'; - -const MAX_IMAGE_PIXELS = 2073600; // 1920x1080px - -const _browser_quirks = {}; - -// Some browsers will automatically draw images respecting their EXIF orientation -// while others won't, and the safest way to detect that is to examine how it -// is done on a known image. -// See https://github.com/w3c/csswg-drafts/issues/4666 -// and https://github.com/blueimp/JavaScript-Load-Image/commit/1e4df707821a0afcc11ea0720ee403b8759f3881 -const dropOrientationIfNeeded = (orientation) => new Promise(resolve => { - switch (_browser_quirks['image-orientation-automatic']) { - case true: - resolve(1); - break; - case false: - resolve(orientation); - break; - default: - // black 2x1 JPEG, with the following meta information set: - // - EXIF Orientation: 6 (Rotated 90° CCW) - const testImageURL = - 'data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAA' + - 'AAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA' + - 'QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE' + - 'BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAEAAgMBEQACEQEDEQH/x' + - 'ABKAAEAAAAAAAAAAAAAAAAAAAALEAEAAAAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAA' + - 'AAAAAEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwA/8H//2Q=='; - const img = new Image(); - img.onload = () => { - const automatic = (img.width === 1 && img.height === 2); - _browser_quirks['image-orientation-automatic'] = automatic; - resolve(automatic ? 1 : orientation); - }; - img.onerror = () => { - _browser_quirks['image-orientation-automatic'] = false; - resolve(orientation); - }; - img.src = testImageURL; - } -}); - -// Some browsers don't allow reading from a canvas and instead return all-white -// or randomized data. Use a pre-defined image to check if reading the canvas -// works. -const checkCanvasReliability = () => new Promise((resolve, reject) => { - switch(_browser_quirks['canvas-read-unreliable']) { - case true: - reject('Canvas reading unreliable'); - break; - case false: - resolve(); - break; - default: - // 2×2 GIF with white, red, green and blue pixels - const testImageURL = - 'data:image/gif;base64,R0lGODdhAgACAKEDAAAA//8AAAD/AP///ywAAAAAAgACAAACA1wEBQA7'; - const refData = - [255, 255, 255, 255, 255, 0, 0, 255, 0, 255, 0, 255, 0, 0, 255, 255]; - const img = new Image(); - img.onload = () => { - const canvas = document.createElement('canvas'); - const context = canvas.getContext('2d'); - context.drawImage(img, 0, 0, 2, 2); - const imageData = context.getImageData(0, 0, 2, 2); - if (imageData.data.every((x, i) => refData[i] === x)) { - _browser_quirks['canvas-read-unreliable'] = false; - resolve(); - } else { - _browser_quirks['canvas-read-unreliable'] = true; - reject('Canvas reading unreliable'); - } - }; - img.onerror = () => { - _browser_quirks['canvas-read-unreliable'] = true; - reject('Failed to load test image'); - }; - img.src = testImageURL; - } -}); - -const getImageUrl = inputFile => new Promise((resolve, reject) => { - if (window.URL && URL.createObjectURL) { - try { - resolve(URL.createObjectURL(inputFile)); - } catch (error) { - reject(error); - } - return; - } - - const reader = new FileReader(); - reader.onerror = (...args) => reject(...args); - reader.onload = ({ target }) => resolve(target.result); - - reader.readAsDataURL(inputFile); -}); - -const loadImage = inputFile => new Promise((resolve, reject) => { - getImageUrl(inputFile).then(url => { - const img = new Image(); - - img.onerror = (...args) => reject(...args); - img.onload = () => resolve(img); - - img.src = url; - }).catch(reject); -}); - -const getOrientation = (img, type = 'image/png') => new Promise(resolve => { - if (!['image/jpeg', 'image/webp'].includes(type)) { - resolve(1); - return; - } - - EXIF.getData(img, () => { - const orientation = EXIF.getTag(img, 'Orientation'); - if (orientation !== 1) { - dropOrientationIfNeeded(orientation).then(resolve).catch(() => resolve(orientation)); - } else { - resolve(orientation); - } - }); -}); - -const processImage = (img, { width, height, orientation, type = 'image/png' }) => new Promise(resolve => { - const canvas = document.createElement('canvas'); - - if (4 < orientation && orientation < 9) { - canvas.width = height; - canvas.height = width; - } else { - canvas.width = width; - canvas.height = height; - } - - const context = canvas.getContext('2d'); - - switch (orientation) { - case 2: context.transform(-1, 0, 0, 1, width, 0); break; - case 3: context.transform(-1, 0, 0, -1, width, height); break; - case 4: context.transform(1, 0, 0, -1, 0, height); break; - case 5: context.transform(0, 1, 1, 0, 0, 0); break; - case 6: context.transform(0, 1, -1, 0, height, 0); break; - case 7: context.transform(0, -1, -1, 0, height, width); break; - case 8: context.transform(0, -1, 1, 0, 0, width); break; - } - - context.drawImage(img, 0, 0, width, height); - - canvas.toBlob(resolve, type); -}); - -const resizeImage = (img, type = 'image/png') => new Promise((resolve, reject) => { - const { width, height } = img; - - const newWidth = Math.round(Math.sqrt(MAX_IMAGE_PIXELS * (width / height))); - const newHeight = Math.round(Math.sqrt(MAX_IMAGE_PIXELS * (height / width))); - - checkCanvasReliability() - .then(getOrientation(img, type)) - .then(orientation => processImage(img, { - width: newWidth, - height: newHeight, - orientation, - type, - })) - .then(resolve) - .catch(reject); -}); - -export default inputFile => new Promise((resolve) => { - if (!inputFile.type.match(/image.*/) || inputFile.type === 'image/gif') { - resolve(inputFile); - return; - } - - loadImage(inputFile).then(img => { - if (img.width * img.height < MAX_IMAGE_PIXELS) { - resolve(inputFile); - return; - } - - resizeImage(img, inputFile.type) - .then(resolve) - .catch(() => resolve(inputFile)); - }).catch(() => resolve(inputFile)); -}); diff --git a/app/javascript/mastodon/uuid.js b/app/javascript/mastodon/uuid.js deleted file mode 100644 index 0d2cfaa776..0000000000 --- a/app/javascript/mastodon/uuid.js +++ /dev/null @@ -1,3 +0,0 @@ -export default function uuid(a) { - return a ? (a^Math.random() * 16 >> a / 4).toString(16) : ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, uuid); -} diff --git a/app/javascript/mastodon/uuid.ts b/app/javascript/mastodon/uuid.ts new file mode 100644 index 0000000000..01b57ee996 --- /dev/null +++ b/app/javascript/mastodon/uuid.ts @@ -0,0 +1,8 @@ +export default function uuid(a?: string): string { + return a + ? ( + (a as any as number) ^ + ((Math.random() * 16) >> ((a as any as number) / 4)) + ).toString(16) + : ('' + 1e7 + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, uuid); +} diff --git a/app/javascript/packs/public.jsx b/app/javascript/packs/public.jsx index 8017734d5b..ad6bf237f8 100644 --- a/app/javascript/packs/public.jsx +++ b/app/javascript/packs/public.jsx @@ -100,11 +100,12 @@ function main() { const datetime = new Date(content.getAttribute('datetime')); const now = new Date(); - content.title = dateTimeFormat.format(datetime); + const timeGiven = content.getAttribute('datetime').includes('T'); + content.title = timeGiven ? dateTimeFormat.format(datetime) : dateFormat.format(datetime); content.textContent = timeAgoString({ formatMessage: ({ id, defaultMessage }, values) => (new IntlMessageFormat(messages[id] || defaultMessage, locale)).format(values), formatDate: (date, options) => (new Intl.DateTimeFormat(locale, options)).format(date), - }, datetime, now, now.getFullYear(), content.getAttribute('datetime').includes('T')); + }, datetime, now, now.getFullYear(), timeGiven); }); const reactComponents = document.querySelectorAll('[data-component]'); @@ -188,10 +189,10 @@ function main() { if (sidebar.classList.contains('visible')) { document.body.style.overflow = null; - toggleButton.setAttribute('aria-expanded', false); + toggleButton.setAttribute('aria-expanded', 'false'); } else { document.body.style.overflow = 'hidden'; - toggleButton.setAttribute('aria-expanded', true); + toggleButton.setAttribute('aria-expanded', 'true'); } toggleButton.classList.toggle('active'); diff --git a/app/javascript/styles/application.scss b/app/javascript/styles/application.scss index 81a040108e..1b2969c234 100644 --- a/app/javascript/styles/application.scss +++ b/app/javascript/styles/application.scss @@ -23,3 +23,4 @@ @import 'mastodon/dashboard'; @import 'mastodon/rtl'; @import 'mastodon/accessibility'; +@import 'mastodon/rich_text'; diff --git a/app/javascript/styles/mastodon-light/diff.scss b/app/javascript/styles/mastodon-light/diff.scss index 58f161f811..7498477caa 100644 --- a/app/javascript/styles/mastodon-light/diff.scss +++ b/app/javascript/styles/mastodon-light/diff.scss @@ -264,7 +264,7 @@ html { // Change the background colors of statuses .focusable:focus { - background: $ui-base-color; + background: lighten($white, 4%); } .detailed-status, @@ -697,3 +697,11 @@ html { url("data:image/svg+xml;utf8,") no-repeat right 8px center / auto 16px; } + +.status__wrapper-direct { + background-color: rgba($ui-highlight-color, 0.1); + + &:focus { + background-color: rgba($ui-highlight-color, 0.15); + } +} diff --git a/app/javascript/styles/mastodon/about.scss b/app/javascript/styles/mastodon/about.scss index 0183c43d5e..0f02563b48 100644 --- a/app/javascript/styles/mastodon/about.scss +++ b/app/javascript/styles/mastodon/about.scss @@ -28,14 +28,14 @@ $fluid-breakpoint: $maximum-width + 20px; position: relative; border-bottom: 1px solid lighten($ui-base-color, 8%); padding: 1em 1.75em; - padding-left: 3em; + padding-inline-start: 3em; font-weight: 500; counter-increment: list-counter; &::before { content: counter(list-counter); position: absolute; - left: 0; + inset-inline-start: 0; top: 50%; transform: translateY(-50%); background: $highlight-text-color; diff --git a/app/javascript/styles/mastodon/accounts.scss b/app/javascript/styles/mastodon/accounts.scss index c007eb4b57..853d7f70d1 100644 --- a/app/javascript/styles/mastodon/accounts.scss +++ b/app/javascript/styles/mastodon/accounts.scss @@ -36,10 +36,6 @@ @media screen and (max-width: 600px) { height: 200px; } - - @media screen and (max-width: $no-gap-breakpoint) { - display: none; - } } &__bar { @@ -73,8 +69,8 @@ } .display-name { - margin-left: 15px; - text-align: left; + margin-inline-start: 15px; + text-align: start; i[data-hidden] { display: none; @@ -139,21 +135,21 @@ .older { float: left; - padding-left: 0; + padding-inline-start: 0; .fa { display: inline-block; - margin-right: 5px; + margin-inline-end: 5px; } } .newer { float: right; - padding-right: 0; + padding-inline-end: 0; .fa { display: inline-block; - margin-left: 5px; + margin-inline-start: 5px; } } diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss index 240c90735e..acb4baf4f7 100644 --- a/app/javascript/styles/mastodon/admin.scss +++ b/app/javascript/styles/mastodon/admin.scss @@ -117,7 +117,7 @@ $content-width: 840px; text-overflow: ellipsis; i.fa { - margin-right: 5px; + margin-inline-end: 5px; } &:hover { @@ -186,7 +186,10 @@ $content-width: 840px; } .content { - padding: 55px 15px 20px 25px; + padding-top: 55px; + padding-bottom: 20px; + padding-inline-start: 25px; + padding-inline-end: 15px; @media screen and (max-width: $no-columns-breakpoint) { max-width: none; @@ -202,11 +205,12 @@ $content-width: 840px; flex-wrap: wrap; align-items: center; justify-content: space-between; - margin: -15px -15px 0 0; + margin-top: -15px; + margin-inline-end: -15px; & > * { margin-top: 15px; - margin-right: 15px; + margin-inline-end: 15px; } } @@ -385,7 +389,7 @@ $content-width: 840px; z-index: 10; width: 100%; height: calc(100% - 56px); - left: 0; + inset-inline-start: 0; bottom: 0; overflow-y: auto; background: $ui-base-color; @@ -470,10 +474,11 @@ body, .filters { display: flex; flex-wrap: wrap; + gap: 40px; .filter-subset { flex: 0 0 auto; - margin: 0 40px 20px 0; + margin-bottom: 20px; &:last-child { margin-bottom: 30px; @@ -485,7 +490,7 @@ body, li { display: inline-block; - margin-right: 5px; + margin-inline-end: 5px; } } @@ -588,7 +593,7 @@ body, .activity-stream { flex: 2 0 0; - margin-right: 20px; + margin-inline-end: 20px; max-width: calc(100% - 60px); .entry { @@ -641,7 +646,7 @@ body, } .media-spoiler-toggle-buttons { - margin-left: auto; + margin-inline-start: auto; .button { overflow: visible; @@ -667,7 +672,7 @@ body, .special-action-button, .back-link { - text-align: right; + text-align: end; flex: 1 1 auto; } @@ -685,7 +690,7 @@ body, display: block; line-height: 20px; padding: 15px; - padding-left: 15px * 2 + 40px; + padding-inline-start: 15px * 2 + 40px; background: $ui-base-color; border-bottom: 1px solid darken($ui-base-color, 8%); position: relative; @@ -712,7 +717,7 @@ body, &__avatar { position: absolute; - left: 15px; + inset-inline-start: 15px; top: 15px; .avatar { @@ -780,7 +785,7 @@ a.name-tag, .avatar { display: block; margin: 0; - margin-right: 5px; + margin-inline-end: 5px; border-radius: 50%; } @@ -794,7 +799,7 @@ a.name-tag, .speech-bubble { margin-bottom: 20px; - border-left: 4px solid $ui-highlight-color; + border-inline-start: 4px solid $ui-highlight-color; &.positive { border-left-color: $success-green; @@ -810,7 +815,7 @@ a.name-tag, &__bubble { padding: 16px; - padding-left: 14px; + padding-inline-start: 14px; font-size: 15px; line-height: 20px; border-radius: 4px 4px 4px 0; @@ -824,7 +829,7 @@ a.name-tag, &__owner { padding: 8px; - padding-left: 12px; + padding-inline-start: 12px; } time { @@ -848,7 +853,7 @@ a.name-tag, border: 0; &__avatar-wrapper { - margin-left: 0; + margin-inline-start: 0; } } @@ -857,7 +862,7 @@ a.name-tag, font-weight: 500; color: $darker-text-color; text-transform: uppercase; - text-align: right; + text-align: end; a { color: inherit; @@ -908,7 +913,7 @@ a.name-tag, &__icon { color: $dark-text-color; - margin-right: 4px; + margin-inline-end: 4px; font-weight: 500; } } @@ -1106,7 +1111,7 @@ a.name-tag, > h4 { position: sticky; - left: 0; + inset-inline-start: 0; } &__table { @@ -1118,7 +1123,7 @@ a.name-tag, &__date { white-space: nowrap; padding: 10px 0; - text-align: left; + text-align: start; min-width: 120px; &.retention__table__average { @@ -1176,7 +1181,7 @@ a.name-tag, &__total { display: block; - margin-right: 10px; + margin-inline-end: 10px; font-weight: 500; font-size: 28px; color: $primary-text-color; @@ -1278,7 +1283,7 @@ a.sparkline { } &__value { - text-align: right; + text-align: end; color: $darker-text-color; padding: 11px 10px; } @@ -1289,7 +1294,7 @@ a.sparkline { height: 8px; border-radius: 50%; background: $ui-highlight-color; - margin-right: 10px; + margin-inline-end: 10px; @for $i from 0 through 10 { &--#{10 * $i} { @@ -1325,7 +1330,7 @@ a.sparkline { } &__rules { - margin-left: 30px; + margin-inline-start: 30px; } } @@ -1447,7 +1452,7 @@ a.sparkline { height: 21px; position: absolute; bottom: 0; - right: 15px; + inset-inline-end: 15px; background: linear-gradient(to left, $ui-base-color, transparent); pointer-events: none; } @@ -1527,7 +1532,7 @@ a.sparkline { background: $ui-base-color; position: relative; padding: 15px; - padding-left: 15px * 2 + 40px; + padding-inline-start: 15px * 2 + 40px; border-bottom: 1px solid darken($ui-base-color, 8%); &:first-child { @@ -1547,7 +1552,7 @@ a.sparkline { &__avatar { position: absolute; - left: 15px; + inset-inline-start: 15px; top: 15px; border-radius: 4px; width: 40px; @@ -1563,7 +1568,7 @@ a.sparkline { .username { color: $primary-text-color; font-weight: 500; - margin-right: 5px; + margin-inline-end: 5px; a { color: inherit; @@ -1578,7 +1583,7 @@ a.sparkline { } time { - margin-left: 5px; + margin-inline-start: 5px; vertical-align: baseline; } } @@ -1613,8 +1618,8 @@ a.sparkline { &__actions { position: absolute; top: 15px; - right: 15px; - text-align: right; + inset-inline-end: 15px; + text-align: end; } } } @@ -1637,7 +1642,7 @@ a.sparkline { flex: 0 0 auto; width: 200px; padding: 15px; - padding-right: 0; + padding-inline-end: 0; .button { display: block; @@ -1723,7 +1728,7 @@ a.sparkline { &__rules { list-style: disc; - padding-left: 15px; + padding-inline-start: 15px; margin-bottom: 20px; color: $darker-text-color; @@ -1812,7 +1817,7 @@ a.sparkline { li { counter-increment: step 1; - padding-left: 2.5rem; + padding-inline-start: 2.5rem; padding-bottom: 8px; position: relative; margin-bottom: 8px; @@ -1822,7 +1827,7 @@ a.sparkline { content: counter(step); font-size: 0.625rem; font-weight: 500; - left: 0; + inset-inline-start: 0; display: flex; justify-content: center; align-items: center; @@ -1841,7 +1846,7 @@ a.sparkline { background: $highlight-text-color; bottom: 0; top: calc(1.875rem + 1px); - left: 0.6875rem; + inset-inline-start: 0.6875rem; } &:last-child { diff --git a/app/javascript/styles/mastodon/basics.scss b/app/javascript/styles/mastodon/basics.scss index 1d08b12e57..a344c7fa4f 100644 --- a/app/javascript/styles/mastodon/basics.scss +++ b/app/javascript/styles/mastodon/basics.scss @@ -267,7 +267,7 @@ button { overflow: hidden; position: absolute; top: 0; - left: 0; + inset-inline-start: 0; z-index: -1000; } diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 13647b6fcd..8622527817 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -309,7 +309,7 @@ &__counter { display: inline-block; width: auto; - margin-left: 4px; + margin-inline-start: 4px; font-size: 12px; font-weight: 500; } @@ -413,7 +413,7 @@ body > [data-popper-placement] { width: 18px; height: 18px; flex: 0 0 auto; - margin-right: 10px; + margin-inline-end: 10px; top: -1px; border-radius: 4px; vertical-align: middle; @@ -465,7 +465,7 @@ body > [data-popper-placement] { .emoji-picker-dropdown { position: absolute; top: 0; - right: 0; + inset-inline-end: 0; } .compose-form__autosuggest-wrapper { @@ -527,7 +527,7 @@ body > [data-popper-placement] { min-height: 100px; border-radius: 4px 4px 0 0; padding-bottom: 0; - padding-right: 10px + 22px; + padding-right: 10px + 22px; // Cannot use inline-end because of dir=auto resize: none; scrollbar-color: initial; @@ -536,7 +536,7 @@ body > [data-popper-placement] { } @media screen and (max-width: 600px) { - height: 100px !important; // prevent auto-resize textarea + height: 100px !important; // Prevent auto-resize textarea resize: vertical; } } @@ -605,7 +605,7 @@ body > [data-popper-placement] { &__uses { flex: 0 0 auto; - text-align: right; + text-align: end; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; @@ -615,7 +615,7 @@ body > [data-popper-placement] { .autosuggest-account-icon, .autosuggest-emoji img { display: block; - margin-right: 8px; + margin-inline-end: 8px; width: 16px; height: 16px; } @@ -677,8 +677,8 @@ body > [data-popper-placement] { position: absolute; z-index: 2; bottom: 0; - left: 0; - right: 0; + inset-inline-start: 0; + inset-inline-end: 0; box-sizing: border-box; background: linear-gradient( 0deg, @@ -737,7 +737,7 @@ body > [data-popper-placement] { .character-counter__wrapper { align-self: center; - margin-right: 4px; + margin-inline-end: 4px; } } @@ -836,13 +836,13 @@ body > [data-popper-placement] { max-width: 100%; line-height: 24px; overflow: hidden; - padding-right: 25px; + padding-inline-end: 25px; text-decoration: none; } .reply-indicator__display-avatar { float: left; - margin-right: 5px; + margin-inline-end: 5px; } .status__content--with-action { @@ -1244,7 +1244,7 @@ body > [data-popper-placement] { .status__prepend { padding: 16px; padding-bottom: 0; - display: flex; + display: inline-flex; gap: 10px; font-size: 15px; line-height: 22px; @@ -1262,6 +1262,18 @@ body > [data-popper-placement] { } } +.status__wrapper-direct { + background: mix($ui-base-color, $ui-highlight-color, 95%); + + &:focus { + background: mix(lighten($ui-base-color, 4%), $ui-highlight-color, 95%); + } + + .status__prepend { + color: $highlight-text-color; + } +} + .status__action-bar { display: flex; justify-content: space-between; @@ -1315,6 +1327,11 @@ body > [data-popper-placement] { .audio-player { margin-top: 16px; } + + .status__prepend { + padding: 0; + margin-bottom: 16px; + } } .detailed-status__meta { @@ -1333,6 +1350,32 @@ body > [data-popper-placement] { padding: 10px 0; } +.detailed-status__wrapper-direct { + .detailed-status, + .detailed-status__action-bar { + background: mix($ui-base-color, $ui-highlight-color, 95%); + } + + &:focus { + .detailed-status, + .detailed-status__action-bar { + background: mix(lighten($ui-base-color, 4%), $ui-highlight-color, 95%); + } + } + + .detailed-status__action-bar { + border-top-color: mix( + lighten($ui-base-color, 8%), + $ui-highlight-color, + 95% + ); + } + + .status__prepend { + color: $highlight-text-color; + } +} + .detailed-status__link { color: inherit; text-decoration: none; @@ -1344,7 +1387,7 @@ body > [data-popper-placement] { font-weight: 500; font-size: 12px; line-height: 17px; - margin-left: 6px; + margin-inline-start: 6px; } .reply-indicator__content { @@ -1384,15 +1427,6 @@ body > [data-popper-placement] { padding: 16px; border-bottom: 1px solid lighten($ui-base-color, 8%); - &.compact { - padding: 0; - border-bottom: 0; - - .account__avatar-wrapper { - margin-left: 0; - } - } - .account__display-name { flex: 1 1 auto; display: flex; @@ -1403,9 +1437,23 @@ body > [data-popper-placement] { text-decoration: none; font-size: 14px; - &--with-note { - strong { - display: inline; + .display-name { + margin-bottom: 4px; + } + + .display-name strong { + display: inline; + } + } + + &--minimal { + .account__display-name { + .display-name { + margin-bottom: 0; + } + + .display-name strong { + display: block; } } } @@ -1450,7 +1498,7 @@ body > [data-popper-placement] { &-inline { display: inline-block; vertical-align: middle; - margin-right: 5px; + margin-inline-end: 5px; } &-composite { @@ -1473,7 +1521,7 @@ body > [data-popper-placement] { display: block; position: absolute; top: 50%; - left: 50%; + inset-inline-start: 50%; transform: translate(-50%, -50%); color: $primary-text-color; text-shadow: 1px 1px 2px $base-shadow-color; @@ -1493,7 +1541,7 @@ a .account__avatar { &-overlay { position: absolute; bottom: 0; - right: 0; + inset-inline-end: 0; z-index: 1; } } @@ -1550,15 +1598,15 @@ a .account__avatar { .dropdown--active { .dropdown__content.dropdown__right { - left: 6px; - right: initial; + inset-inline-start: 6px; + inset-inline-end: initial; } &::after { bottom: initial; - margin-left: 11px; + margin-inline-start: 11px; margin-top: -7px; - right: initial; + inset-inline-end: initial; } } } @@ -1574,7 +1622,7 @@ a .account__avatar { text-decoration: none; overflow: hidden; flex: 0 1 100%; - border-right: 1px solid lighten($ui-base-color, 8%); + border-inline-end: 1px solid lighten($ui-base-color, 8%); padding: 10px 0; border-bottom: 4px solid transparent; @@ -1615,7 +1663,7 @@ a .account__avatar { .account-authorize__avatar { float: left; - margin-right: 10px; + margin-inline-end: 10px; } .status__display-name, @@ -1629,7 +1677,7 @@ a .account__avatar { .status__display-name, .account__display-name { - strong { + .display-name strong { color: $primary-text-color; } } @@ -1644,12 +1692,12 @@ a .account__avatar { .reply-indicator__display-name, .detailed-status__display-name, a.account__display-name { - &:hover strong { + &:hover .display-name strong { text-decoration: underline; } } -.account__display-name strong { +.account__display-name .display-name strong { display: block; overflow: hidden; text-overflow: ellipsis; @@ -2087,7 +2135,7 @@ a.account__display-name { } &.right { - left: -9px; + inset-inline-start: -9px; &::before { transform: rotate(-90deg); @@ -2099,7 +2147,7 @@ a.account__display-name { } &.left { - right: -9px; + inset-inline-end: -9px; &::before { transform: rotate(90deg); @@ -2169,7 +2217,7 @@ a.account__display-name { vertical-align: top; .account__avatar { - margin-right: 5px; + margin-inline-end: 5px; border-radius: 50%; } @@ -2182,8 +2230,8 @@ a.account__display-name { display: block; line-height: 18px; max-width: 311px; - right: 0; - text-align: left; + inset-inline-end: 0; + text-align: start; z-index: 9999; & > ul { @@ -2197,12 +2245,12 @@ a.account__display-name { } &.dropdown__right { - right: 0; + inset-inline-end: 0; } &.dropdown__left { & > ul { - left: -98px; + inset-inline-start: -98px; } } @@ -2421,23 +2469,23 @@ $ui-header-height: 55px; .drawer { flex: 0 0 auto; padding: 10px; - padding-left: 5px; - padding-right: 5px; + padding-inline-start: 5px; + padding-inline-end: 5px; &:first-child { - padding-left: 10px; + padding-inline-start: 10px; } &:last-child { - padding-right: 10px; + padding-inline-end: 10px; } } .columns-area > div { .column, .drawer { - padding-left: 5px; - padding-right: 5px; + padding-inline-start: 5px; + padding-inline-end: 5px; } } } @@ -2484,7 +2532,7 @@ $ui-header-height: 55px; } span { - margin-left: 5px; + margin-inline-start: 5px; display: none; } } @@ -2526,7 +2574,7 @@ $ui-header-height: 55px; line-height: 18px; font-size: 16px; padding: 15px; - padding-right: 30px; + padding-inline-end: 30px; } .search__icon .fa { @@ -2594,7 +2642,7 @@ $ui-header-height: 55px; .navigation-panel { margin: 0; background: $ui-base-color; - border-left: 1px solid lighten($ui-base-color, 8%); + border-inline-start: 1px solid lighten($ui-base-color, 8%); height: 100vh; } @@ -2666,7 +2714,7 @@ $ui-header-height: 55px; &__badge { position: absolute; - left: 9px; + inset-inline-start: 9px; top: -13px; background: $ui-highlight-color; border: 2px solid lighten($ui-base-color, 8%); @@ -2680,7 +2728,7 @@ $ui-header-height: 55px; &__issue-badge { position: absolute; - left: 11px; + inset-inline-start: 11px; bottom: 1px; display: block; background: $error-red; @@ -2736,7 +2784,7 @@ $ui-header-height: 55px; &__background { position: absolute; - left: 0; + inset-inline-start: 0; bottom: 0; height: 220px; width: auto; @@ -2862,7 +2910,7 @@ $ui-header-height: 55px; .drawer__inner { position: absolute; top: 0; - left: 0; + inset-inline-start: 0; background: lighten($ui-base-color, 13%); box-sizing: border-box; padding: 0; @@ -2893,7 +2941,6 @@ $ui-header-height: 55px; width: 85%; height: 100%; pointer-events: none; - user-drag: none; user-select: none; } @@ -2905,7 +2952,7 @@ $ui-header-height: 55px; .pseudo-drawer { background: lighten($ui-base-color, 13%); font-size: 13px; - text-align: left; + text-align: start; } .drawer__header { @@ -2915,6 +2962,8 @@ $ui-header-height: 55px; margin-bottom: 10px; display: flex; flex-direction: row; + border-radius: 4px; + overflow: hidden; a { transition: background 100ms ease-in; @@ -3008,7 +3057,7 @@ $ui-header-height: 55px; .column-back-button__icon { display: inline-block; - margin-right: 5px; + margin-inline-end: 5px; } .column-back-button--slim { @@ -3021,7 +3070,7 @@ $ui-header-height: 55px; font-size: 16px; padding: 15px; position: absolute; - right: 0; + inset-inline-end: 0; top: -48px; } @@ -3086,7 +3135,7 @@ $ui-header-height: 55px; margin-top: auto; margin-bottom: auto; line-height: 0; - left: 8px; + inset-inline-start: 8px; opacity: 0; transition: opacity 0.25s ease; } @@ -3105,7 +3154,7 @@ $ui-header-height: 55px; margin-top: auto; margin-bottom: auto; line-height: 0; - right: 10px; + inset-inline-end: 10px; opacity: 1; transition: opacity 0.25s ease; } @@ -3117,7 +3166,7 @@ $ui-header-height: 55px; .react-toggle-thumb { position: absolute; top: 1px; - left: 1px; + inset-inline-start: 1px; width: 22px; height: 22px; border: 1px solid $ui-base-color; @@ -3129,7 +3178,7 @@ $ui-header-height: 55px; } .react-toggle--checked .react-toggle-thumb { - left: 27px; + inset-inline-start: 27px; border-color: $ui-highlight-color; } @@ -3183,7 +3232,7 @@ $ui-header-height: 55px; .column-link__icon { display: inline-block; - margin-right: 5px; + margin-inline-end: 5px; } .column-link__badge { @@ -3277,7 +3326,7 @@ $ui-header-height: 55px; thead { position: absolute; - left: -9999px; + inset-inline-start: -9999px; } td { @@ -3381,9 +3430,9 @@ button.icon-button.active i.fa-retweet { &__actions { bottom: 0; - left: 0; + inset-inline-start: 0; position: absolute; - right: 0; + inset-inline-end: 0; top: 0; display: flex; justify-content: center; @@ -3489,7 +3538,7 @@ a.status-card { position: absolute; transform-origin: 50% 50%; top: 50%; - left: 50%; + inset-inline-start: 50%; transform: translate(-50%, -50%); } } @@ -3556,7 +3605,7 @@ a.status-card.compact:hover { object-fit: fill; position: absolute; top: 0; - left: 0; + inset-inline-start: 0; z-index: 0; background: $base-overlay-background; @@ -3671,8 +3720,8 @@ a.status-card.compact:hover { content: ''; position: absolute; bottom: -13px; - left: 0; - right: 0; + inset-inline-start: 0; + inset-inline-end: 0; margin: 0 auto; width: 60%; pointer-events: none; @@ -3707,11 +3756,12 @@ a.status-card.compact:hover { & > button { margin: 0; border: 0; - padding: 15px 0 15px 15px; + padding: 15px; + padding-inline-end: 0; color: inherit; background: transparent; font: inherit; - text-align: left; + text-align: start; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; @@ -3745,7 +3795,7 @@ a.status-card.compact:hover { } .column-header__links .text-btn { - margin-right: 10px; + margin-inline-end: 10px; } .column-header__button { @@ -3834,12 +3884,12 @@ a.status-card.compact:hover { padding: 5px; &:first-child { - padding-right: 7px; + padding-inline-end: 7px; } &:last-child { - padding-left: 7px; - margin-left: 5px; + padding-inline-start: 7px; + margin-inline-start: 5px; } } } @@ -3866,7 +3916,7 @@ a.status-card.compact:hover { .column-header__icon { display: inline-block; - margin-right: 5px; + margin-inline-end: 5px; } .loading-indicator { @@ -3877,7 +3927,7 @@ a.status-card.compact:hover { overflow: visible; position: absolute; top: 50%; - left: 50%; + inset-inline-start: 50%; transform: translate(-50%, -50%); display: flex; align-items: center; @@ -4013,7 +4063,7 @@ a.status-card.compact:hover { .spoiler-button { top: 0; - left: 0; + inset-inline-start: 0; width: 100%; height: 100%; position: absolute; @@ -4021,7 +4071,7 @@ a.status-card.compact:hover { &--minified { display: block; - left: 4px; + inset-inline-start: 4px; top: 4px; width: auto; height: auto; @@ -4138,12 +4188,12 @@ a.status-card.compact:hover { &__placeholder { color: $dark-text-color; - padding-left: 2px; + padding-inline-start: 2px; font-size: 12px; } &__value-container { - padding-left: 6px; + padding-inline-start: 6px; } &__multi-value { @@ -4240,7 +4290,7 @@ a.status-card.compact:hover { color: $darker-text-color; display: inline-block; margin-bottom: 14px; - margin-left: 8px; + margin-inline-start: 8px; vertical-align: middle; } @@ -4289,6 +4339,7 @@ a.status-card.compact:hover { .follow_requests-unlocked_explanation { background: darken($ui-base-color, 4%); contain: initial; + flex-grow: 0; } .error-column { @@ -4425,7 +4476,7 @@ a.status-card.compact:hover { .emoji-picker-dropdown__modifiers { position: absolute; top: 60px; - right: 11px; + inset-inline-end: 11px; cursor: pointer; } @@ -4433,7 +4484,7 @@ a.status-card.compact:hover { position: absolute; z-index: 4; top: -4px; - left: -8px; + inset-inline-start: -8px; background: $simple-background-color; border-radius: 4px; box-shadow: 1px 2px 6px rgba($base-shadow-color, 0.2); @@ -4470,7 +4521,7 @@ a.status-card.compact:hover { display: flex; height: 100vh; justify-content: center; - left: 0; + inset-inline-start: 0; opacity: 0; position: fixed; top: 0; @@ -4495,9 +4546,9 @@ a.status-card.compact:hover { .upload-area__background { position: absolute; top: 0; - right: 0; + inset-inline-end: 0; bottom: 0; - left: 0; + inset-inline-start: 0; z-index: -1; border-radius: 4px; background: $ui-base-color; @@ -4509,6 +4560,7 @@ a.status-card.compact:hover { display: flex; align-items: center; justify-content: center; + text-align: center; color: $secondary-text-color; font-size: 18px; font-weight: 500; @@ -4524,7 +4576,7 @@ a.status-card.compact:hover { .fa { font-size: 34px; - margin-right: 10px; + margin-inline-end: 10px; } span { @@ -4550,7 +4602,7 @@ a.status-card.compact:hover { .upload-progress__tracker { position: absolute; - left: 0; + inset-inline-start: 0; top: 0; height: 6px; background: $ui-highlight-color; @@ -4559,7 +4611,10 @@ a.status-card.compact:hover { .emoji-button { display: block; - padding: 5px 5px 2px 2px; + padding-top: 5px; + padding-bottom: 2px; + padding-inline-start: 2px; + padding-inline-end: 5px; outline: 0; cursor: pointer; @@ -4647,7 +4702,7 @@ a.status-card.compact:hover { display: flex; align-items: center; justify-content: center; - margin-right: 10px; + margin-inline-end: 10px; } .privacy-dropdown__option__content { @@ -4713,11 +4768,11 @@ a.status-card.compact:hover { } .emoji-mart-search { - padding-right: 10px; + padding-inline-end: 10px; } .emoji-mart-search-icon { - right: 10px + 5px; + inset-inline-end: 10px + 5px; } .emoji-mart-scroll { @@ -4763,6 +4818,86 @@ a.status-card.compact:hover { .search { margin-bottom: 10px; position: relative; + + &__popout { + box-sizing: border-box; + display: none; + position: absolute; + inset-inline-start: 0; + margin-top: -2px; + width: 100%; + background: $ui-base-color; + border-radius: 0 0 4px 4px; + box-shadow: 4px 4px 6px rgba($base-shadow-color, 0.4); + z-index: 2; + font-size: 13px; + padding: 15px 5px; + + h4 { + text-transform: uppercase; + color: $dark-text-color; + font-weight: 500; + padding: 0 10px; + margin-bottom: 10px; + } + + &__menu { + &__message { + color: $dark-text-color; + padding: 0 10px; + } + + &__item { + display: block; + box-sizing: border-box; + width: 100%; + border: 0; + font: inherit; + background: transparent; + color: $darker-text-color; + padding: 10px; + cursor: pointer; + border-radius: 4px; + text-align: start; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + + &--flex { + display: flex; + justify-content: space-between; + } + + .icon-button { + transition: none; + } + + &:hover, + &:focus, + &:active, + &.selected { + background: $ui-highlight-color; + color: $primary-text-color; + + .icon-button { + color: $primary-text-color; + } + } + + mark { + background: transparent; + font-weight: 700; + color: $primary-text-color; + } + } + } + } + + &.active { + .search__popout { + display: block; + } + } } .search__input { @@ -4770,7 +4905,7 @@ a.status-card.compact:hover { display: block; padding: 15px; - padding-right: 30px; + padding-inline-end: 30px; line-height: 18px; font-size: 16px; @@ -4806,7 +4941,7 @@ a.status-card.compact:hover { .fa { position: absolute; top: 16px; - right: 10px; + inset-inline-end: 10px; z-index: 2; display: inline-block; opacity: 0; @@ -4860,7 +4995,7 @@ a.status-card.compact:hover { .fa { display: inline-block; - margin-right: 5px; + margin-inline-end: 5px; } } @@ -4879,7 +5014,7 @@ a.status-card.compact:hover { .fa { display: inline-block; - margin-right: 5px; + margin-inline-end: 5px; } } @@ -4917,8 +5052,8 @@ a.status-card.compact:hover { .modal-root__overlay { position: fixed; top: 0; - left: 0; - right: 0; + inset-inline-start: 0; + inset-inline-end: 0; bottom: 0; background: rgba($base-overlay-background, 0.7); transition: background 0.5s; @@ -4927,7 +5062,7 @@ a.status-card.compact:hover { .modal-root__container { position: fixed; top: 0; - left: 0; + inset-inline-start: 0; width: 100%; height: 100%; box-sizing: border-box; @@ -4980,16 +5115,16 @@ a.status-card.compact:hover { .media-modal__closer { position: absolute; top: 0; - left: 0; - right: 0; + inset-inline-start: 0; + inset-inline-end: 0; bottom: 0; } .media-modal__navigation { position: absolute; top: 0; - left: 0; - right: 0; + inset-inline-start: 0; + inset-inline-end: 0; bottom: 0; pointer-events: none; transition: opacity 0.3s linear; @@ -5032,18 +5167,18 @@ a.status-card.compact:hover { } .media-modal__nav--left { - left: 0; + inset-inline-start: 0; } .media-modal__nav--right { - right: 0; + inset-inline-end: 0; } .media-modal__overlay { max-width: 600px; position: absolute; - left: 0; - right: 0; + inset-inline-start: 0; + inset-inline-end: 0; bottom: 0; margin: 0 auto; @@ -5130,14 +5265,14 @@ a.status-card.compact:hover { .media-modal__close { position: absolute; - right: 8px; + inset-inline-end: 8px; top: 8px; z-index: 100; } .media-modal__zoom-button { position: absolute; - right: 64px; + inset-inline-end: 64px; top: 8px; z-index: 100; pointer-events: auto; @@ -5171,7 +5306,7 @@ a.status-card.compact:hover { & > div { position: absolute; top: 0; - left: 0; + inset-inline-start: 0; width: 100%; height: 100%; box-sizing: border-box; @@ -5267,7 +5402,7 @@ a.status-card.compact:hover { display: inline-block; max-width: 30px; max-height: auto; - margin-left: 10px; + margin-inline-start: 10px; } .boost-modal, @@ -5322,9 +5457,9 @@ a.status-card.compact:hover { & > div { flex: 1 1 auto; - text-align: right; + text-align: end; color: $lighter-text-color; - padding-right: 10px; + padding-inline-end: 10px; } .button { @@ -5527,7 +5662,7 @@ a.status-card.compact:hover { & > span { font-size: 17px; font-weight: 500; - margin-left: 10px; + margin-inline-start: 10px; } } @@ -5551,11 +5686,11 @@ a.status-card.compact:hover { } .emoji-mart-search { - padding-right: 10px; + padding-inline-end: 10px; } .emoji-mart-search-icon { - right: 10px + 5px; + inset-inline-end: 10px + 5px; } } @@ -5618,7 +5753,7 @@ a.status-card.compact:hover { .report-modal__comment { padding: 20px; - border-right: 1px solid $ui-secondary-color; + border-inline-end: 1px solid $ui-secondary-color; max-width: 320px; p { @@ -5716,7 +5851,7 @@ a.status-card.compact:hover { } button:first-child { - margin-right: 10px; + margin-inline-end: 10px; } } } @@ -5780,7 +5915,7 @@ a.status-card.compact:hover { border: 1px solid darken($simple-background-color, 14%); border-radius: 4px; padding: 6px 10px; - padding-right: 30px; + padding-inline-end: 30px; } } @@ -5804,7 +5939,7 @@ a.status-card.compact:hover { &__label { color: $inverted-text-color; margin: 0; - margin-left: 8px; + margin-inline-start: 8px; } } } @@ -5815,7 +5950,7 @@ a.status-card.compact:hover { .report-modal__close { position: absolute; top: 10px; - right: 10px; + inset-inline-end: 10px; } } @@ -5866,7 +6001,7 @@ a.status-card.compact:hover { height: 3px; position: fixed; top: 0; - left: 0; + inset-inline-start: 0; z-index: 9999; } @@ -5876,7 +6011,7 @@ a.status-card.compact:hover { color: $primary-text-color; background: rgba($base-overlay-background, 0.5); bottom: 6px; - left: 6px; + inset-inline-start: 6px; padding: 2px 6px; border-radius: 2px; font-size: 11px; @@ -5909,7 +6044,7 @@ a.status-card.compact:hover { color: $dark-text-color; padding: 8px 18px; cursor: default; - border-right: 1px solid lighten($ui-base-color, 8%); + border-inline-end: 1px solid lighten($ui-base-color, 8%); display: flex; flex-direction: column; align-items: center; @@ -5924,7 +6059,7 @@ a.status-card.compact:hover { &__list { list-style: none; padding: 4px 0; - padding-left: 8px; + padding-inline-start: 8px; display: flex; flex-direction: column; justify-content: center; @@ -6012,7 +6147,7 @@ a.status-card.compact:hover { object-fit: cover; position: absolute; top: 0; - left: 0; + inset-inline-start: 0; z-index: 0; background: $base-overlay-background; @@ -6180,8 +6315,8 @@ a.status-card.compact:hover { position: absolute; z-index: 2; bottom: 0; - left: 0; - right: 0; + inset-inline-start: 0; + inset-inline-end: 0; box-sizing: border-box; background: linear-gradient( 0deg, @@ -6209,7 +6344,7 @@ a.status-card.compact:hover { display: none; position: absolute; top: 0; - left: 0; + inset-inline-start: 0; width: 100%; height: 100%; z-index: 4; @@ -6325,7 +6460,7 @@ a.status-card.compact:hover { &.active { overflow: visible; width: 50px; - margin-right: 16px; + margin-inline-end: 16px; } &::before { @@ -6336,7 +6471,7 @@ a.status-card.compact:hover { display: block; position: absolute; height: 4px; - left: 0; + inset-inline-start: 0; top: 50%; transform: translate(0, -50%); } @@ -6346,7 +6481,7 @@ a.status-card.compact:hover { position: absolute; height: 4px; border-radius: 4px; - left: 0; + inset-inline-start: 0; top: 50%; transform: translate(0, -50%); background: lighten($ui-highlight-color, 8%); @@ -6359,8 +6494,8 @@ a.status-card.compact:hover { width: 12px; height: 12px; top: 50%; - left: 0; - margin-left: -6px; + inset-inline-start: 0; + margin-inline-start: -6px; transform: translate(0, -50%); background: lighten($ui-highlight-color, 8%); box-shadow: 1px 2px 6px rgba($base-shadow-color, 0.2); @@ -6431,7 +6566,7 @@ a.status-card.compact:hover { width: 12px; height: 12px; top: 10px; - margin-left: -6px; + margin-inline-start: -6px; background: lighten($ui-highlight-color, 8%); box-shadow: 1px 2px 6px rgba($base-shadow-color, 0.2); @@ -6507,7 +6642,7 @@ a.status-card.compact:hover { &__icons { position: absolute; top: 50%; - left: 50%; + inset-inline-start: 50%; transform: translate(-50%, -50%); font-size: 24px; } @@ -6550,7 +6685,7 @@ a.status-card.compact:hover { content: ''; position: absolute; bottom: 0; - left: 50%; + inset-inline-start: 50%; width: 0; height: 0; transform: translateX(-50%); @@ -6626,7 +6761,7 @@ a.status-card.compact:hover { width: 18px; height: 18px; flex: 0 0 auto; - margin-right: 10px; + margin-inline-end: 10px; top: -1px; border-radius: 50%; vertical-align: middle; @@ -6642,10 +6777,6 @@ a.status-card.compact:hover { border-radius: 0; } -.search-popout { - @include search-popout; -} - noscript { text-align: center; @@ -6703,10 +6834,10 @@ noscript { .navigation-bar { & > a:first-child { - will-change: margin-top, margin-left, margin-right, width; + will-change: margin-top, margin-inline-start, margin-inline-end, width; transition: margin-top $duration $delay, - margin-left $duration ($duration + $delay), - margin-right $duration ($duration + $delay); + margin-inline-start $duration ($duration + $delay), + margin-inline-end $duration ($duration + $delay); } & > .navigation-bar__profile-edit { @@ -6888,7 +7019,7 @@ noscript { cursor: pointer; position: absolute; top: 0; - left: 0; + inset-inline-start: 0; width: 100%; height: 100%; background: rgba($base-overlay-background, 0.5); @@ -6917,6 +7048,7 @@ noscript { .drawer__pager { height: 50vh; + border-radius: 4px; } .drawer__inner { @@ -7026,13 +7158,13 @@ noscript { width: 100%; height: 100%; top: 0; - left: 0; + inset-inline-start: 0; } &__preview { position: absolute; bottom: 10px; - right: 10px; + inset-inline-end: 10px; z-index: 2; cursor: move; transition: opacity 0.1s ease; @@ -7109,7 +7241,7 @@ noscript { &__info { position: absolute; top: 10px; - left: 10px; + inset-inline-start: 10px; } &__image { @@ -7152,7 +7284,7 @@ noscript { padding-top: 10px; gap: 8px; overflow: hidden; - margin-left: -2px; // aligns the pfp with content below + margin-inline-start: -2px; // aligns the pfp with content below &__buttons { display: flex; @@ -7355,6 +7487,19 @@ noscript { } } +.verified-badge { + display: inline-flex; + align-items: center; + color: $valid-value-color; + gap: 4px; + + a { + color: inherit; + font-weight: 500; + text-decoration: none; + } +} + .trends { &__header { color: $dark-text-color; @@ -7367,7 +7512,7 @@ noscript { .fa { display: inline-block; - margin-right: 5px; + margin-inline-end: 5px; } } @@ -7417,7 +7562,7 @@ noscript { flex: 0 0 auto; font-size: 24px; font-weight: 500; - text-align: right; + text-align: end; color: $secondary-text-color; text-decoration: none; } @@ -7522,7 +7667,7 @@ noscript { &__content { flex: 1 1 auto; padding: 10px 5px; - padding-right: 15px; + padding-inline-end: 15px; overflow: hidden; &__info { @@ -7535,7 +7680,7 @@ noscript { &__relative-time { font-size: 15px; color: $darker-text-color; - padding-left: 15px; + padding-inline-start: 15px; } &__names { @@ -7625,13 +7770,13 @@ noscript { display: block; font-weight: 500; margin-bottom: 10px; - padding-right: 18px; + padding-inline-end: 18px; } &__unread { position: absolute; top: 19px; - right: 19px; + inset-inline-end: 19px; display: block; background: $highlight-text-color; border-radius: 50%; @@ -7645,7 +7790,7 @@ noscript { color: $darker-text-color; position: absolute; bottom: 3px; - right: 0; + inset-inline-end: 0; } } @@ -7662,7 +7807,7 @@ noscript { flex-wrap: wrap; align-items: center; margin-top: 15px; - margin-left: -2px; + margin-inline-start: -2px; width: calc(100% - (90px - 33px)); &__item { @@ -7703,7 +7848,7 @@ noscript { font-size: 13px; font-weight: 500; text-align: center; - margin-left: 6px; + margin-inline-start: 6px; color: $darker-text-color; } @@ -7782,10 +7927,10 @@ noscript { content: ''; position: absolute; top: 0; - left: 0; + inset-inline-start: 0; width: 100%; height: 100%; - border-left: 4px solid $highlight-text-color; + border-inline-start: 4px solid $highlight-text-color; pointer-events: none; } } @@ -7794,7 +7939,7 @@ noscript { .picture-in-picture { position: fixed; bottom: 20px; - right: 20px; + inset-inline-end: 20px; width: 300px; &__footer { @@ -7820,7 +7965,7 @@ noscript { } .account__avatar { - margin-right: 10px; + margin-inline-end: 10px; } .display-name { @@ -7886,7 +8031,7 @@ noscript { &__close { position: absolute; top: 10px; - right: 10px; + inset-inline-end: 10px; } h2 { @@ -7919,9 +8064,13 @@ noscript { padding: 10px; } + .search__popout { + border: 1px solid lighten($ui-base-color, 8%); + } + .search .fa { top: 10px; - right: 10px; + inset-inline-end: 10px; color: $dark-text-color; } @@ -8005,7 +8154,7 @@ noscript { object-fit: fill; position: absolute; top: 0; - left: 0; + inset-inline-start: 0; z-index: 0; &--hidden { @@ -8091,7 +8240,7 @@ noscript { } .account__avatar-wrapper { - margin-left: 0; + margin-inline-start: 0; } .spacer { @@ -8248,11 +8397,13 @@ noscript { img { margin-top: 2em; margin-bottom: 2em; + max-width: 100%; } video { margin-top: 2em; margin-bottom: 2em; + max-width: 100%; } figure { @@ -8309,7 +8460,7 @@ noscript { &::before { content: counter(list-counter) '.'; position: absolute; - left: 0; + inset-inline-start: 0; } } @@ -8321,13 +8472,13 @@ noscript { width: 0.375em; height: 0.375em; top: 0.5em; - left: 0.25em; + inset-inline-start: 0.25em; } ul > li, ol > li { position: relative; - padding-left: 1.75em; + padding-inline-start: 1.75em; } & > ul > li p { @@ -8460,7 +8611,7 @@ noscript { &__preview { position: absolute; top: 0; - left: 0; + inset-inline-start: 0; width: 100%; height: 100%; object-fit: cover; @@ -8666,7 +8817,7 @@ noscript { } .account__avatar-wrapper { - margin-left: 0; + margin-inline-start: 0; } .account__relationship { diff --git a/app/javascript/styles/mastodon/containers.scss b/app/javascript/styles/mastodon/containers.scss index b49b93984c..fb71ad034a 100644 --- a/app/javascript/styles/mastodon/containers.scss +++ b/app/javascript/styles/mastodon/containers.scss @@ -18,7 +18,7 @@ .logo { height: 42px; - margin-right: 10px; + margin-inline-end: 10px; } a { @@ -73,7 +73,7 @@ .avatar { width: 40px; height: 40px; - margin-right: 10px; + margin-inline-end: 10px; img { width: 100%; @@ -101,6 +101,6 @@ display: block; font-size: 32px; line-height: 40px; - margin-left: 10px; + margin-inline-start: 10px; } } diff --git a/app/javascript/styles/mastodon/emoji_picker.scss b/app/javascript/styles/mastodon/emoji_picker.scss index 0d7a7df2ee..c7247c3a57 100644 --- a/app/javascript/styles/mastodon/emoji_picker.scss +++ b/app/javascript/styles/mastodon/emoji_picker.scss @@ -71,7 +71,7 @@ .emoji-mart-anchor-bar { position: absolute; bottom: -5px; - left: 0; + inset-inline-start: 0; width: 100%; height: 4px; background-color: $highlight-text-color; @@ -106,7 +106,7 @@ .emoji-mart-search { padding: 10px; - padding-right: 45px; + padding-inline-end: 45px; background: $simple-background-color; position: relative; @@ -114,7 +114,7 @@ font-size: 16px; font-weight: 400; padding: 7px 9px; - padding-right: 25px; + padding-inline-end: 25px; font-family: inherit; display: block; width: 100%; @@ -142,7 +142,7 @@ .emoji-mart-search-icon { position: absolute; top: 18px; - right: 45px + 5px; + inset-inline-end: 45px + 5px; z-index: 2; padding: 2px 5px 1px; border: 0; @@ -177,7 +177,7 @@ content: ''; position: absolute; top: 0; - left: 0; + inset-inline-start: 0; width: 100%; height: 100%; background-color: rgba($ui-secondary-color, 0.7); diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss index e4539deffe..7d4bde5e92 100644 --- a/app/javascript/styles/mastodon/forms.scss +++ b/app/javascript/styles/mastodon/forms.scss @@ -54,12 +54,12 @@ code { .radio > label { position: relative; - padding-left: 28px; + padding-inline-start: 28px; input { position: absolute; top: -2px; - left: 0; + inset-inline-start: 0; } } } @@ -79,7 +79,7 @@ code { .label_input, .hint { - padding-left: 28px; + padding-inline-start: 28px; } .label_input__wrapper { @@ -89,7 +89,7 @@ code { label.checkbox { position: absolute; top: 2px; - left: 0; + inset-inline-start: 0; } label a { @@ -159,7 +159,7 @@ code { li { list-style: disc; - margin-left: 18px; + margin-inline-start: 18px; } } @@ -225,7 +225,7 @@ code { &.select .hint { margin-top: 6px; - margin-left: 150px; + margin-inline-start: 150px; } } @@ -380,13 +380,13 @@ code { width: auto; position: relative; padding-top: 5px; - padding-left: 25px; + padding-inline-start: 25px; flex: 1 1 auto; } input[type='checkbox'] { position: absolute; - left: 0; + inset-inline-start: 0; top: 5px; margin: 0; } @@ -517,10 +517,10 @@ code { font-weight: 500; outline: 0; margin-bottom: 10px; - margin-right: 10px; + margin-inline-end: 10px; &:last-child { - margin-right: 0; + margin-inline-end: 0; } &:active, @@ -572,8 +572,8 @@ code { no-repeat right 8px center / auto 16px; border: 1px solid darken($ui-base-color, 14%); border-radius: 4px; - padding-left: 10px; - padding-right: 30px; + padding-inline-start: 10px; + padding-inline-end: 30px; height: 41px; } @@ -588,7 +588,7 @@ code { &__append { position: absolute; - right: 3px; + inset-inline-end: 3px; top: 1px; padding: 10px; padding-bottom: 9px; @@ -606,7 +606,7 @@ code { display: block; position: absolute; top: 0; - right: 0; + inset-inline-end: 0; bottom: 1px; width: 5px; background-image: linear-gradient( @@ -780,7 +780,7 @@ code { li { display: inline-block; - margin-right: 10px; + margin-inline-end: 10px; } a { @@ -939,7 +939,7 @@ code { .actions { padding: 30px 0; - padding-right: 20px; + padding-inline-end: 20px; flex: 0 0 auto; } } @@ -992,7 +992,7 @@ code { border-radius: 4px; display: flex; align-items: center; - padding-right: 4px; + padding-inline-end: 4px; position: relative; top: 1px; transition: border-color 300ms linear; diff --git a/app/javascript/styles/mastodon/modal.scss b/app/javascript/styles/mastodon/modal.scss index 6170877b22..29b1f162b4 100644 --- a/app/javascript/styles/mastodon/modal.scss +++ b/app/javascript/styles/mastodon/modal.scss @@ -25,7 +25,7 @@ height: 100%; position: absolute; bottom: 0; - left: 0; + inset-inline-start: 0; } } } diff --git a/app/javascript/styles/mastodon/polls.scss b/app/javascript/styles/mastodon/polls.scss index b30932e04c..bdb87d7cfa 100644 --- a/app/javascript/styles/mastodon/polls.scss +++ b/app/javascript/styles/mastodon/polls.scss @@ -269,7 +269,7 @@ border: 1px solid darken($simple-background-color, 14%); border-radius: 4px; padding: 6px 10px; - padding-right: 30px; + padding-inline-end: 30px; } .icon-button.disabled { diff --git a/app/javascript/styles/mastodon/rich_text.scss b/app/javascript/styles/mastodon/rich_text.scss new file mode 100644 index 0000000000..c77c23bc40 --- /dev/null +++ b/app/javascript/styles/mastodon/rich_text.scss @@ -0,0 +1,64 @@ +.status__content__text, +.e-content, +.reply-indicator__content { + pre, + blockquote { + margin-bottom: 20px; + white-space: pre-wrap; + unicode-bidi: plaintext; + + &:last-child { + margin-bottom: 0; + } + } + + blockquote { + padding-inline-start: 10px; + border-inline-start: 3px solid $darker-text-color; + color: $darker-text-color; + white-space: normal; + + p:last-child { + margin-bottom: 0; + } + } + + & > ul, + & > ol { + margin-bottom: 20px; + } + + b, + strong { + font-weight: 700; + } + + em, + i { + font-style: italic; + } + + ul, + ol { + margin-inline-start: 2em; + + p { + margin: 0; + } + } + + ul { + list-style-type: disc; + } + + ol { + list-style-type: decimal; + } +} + +.reply-indicator__content { + blockquote { + border-left-color: $inverted-text-color; + color: $inverted-text-color; + } +} diff --git a/app/javascript/styles/mastodon/rtl.scss b/app/javascript/styles/mastodon/rtl.scss index e60087dab0..8d3d32665c 100644 --- a/app/javascript/styles/mastodon/rtl.scss +++ b/app/javascript/styles/mastodon/rtl.scss @@ -1,273 +1,42 @@ body.rtl { direction: rtl; - .column-header > button { - text-align: right; - padding-left: 0; - padding-right: 15px; - } - - .radio-button__input { - margin-right: 0; - margin-left: 10px; - } - - .display-name, - .announcements__item { - text-align: right; - } - - .announcements__item__range { - padding-right: 0; - padding-left: 18px; - } - .reactions-bar { - margin-left: auto; - margin-right: -2px; direction: rtl; } - .reactions-bar__item__count { - margin-left: 0; - margin-right: 6px; - } - - .announcements__pagination { - right: auto; - left: 0; - } - - .notification__message { - margin-left: 0; - margin-right: 68px; - } - .announcements__mastodon, .drawer__inner__mastodon > img { transform: scaleX(-1); } - .notification__favourite-icon-wrapper { - left: auto; - right: -26px; - } - - .column-link__icon, - .column-header__icon { - margin-right: 0; - margin-left: 5px; - } - - .compose-form .compose-form__buttons-wrapper .character-counter__wrapper { - margin-right: 0; - margin-left: 4px; - } - - .navigation-bar__profile { - margin-left: 0; - margin-right: 8px; - } - - .search__input { + .compose-form .autosuggest-textarea__textarea { padding-right: 10px; - padding-left: 30px; - } - - .search__icon .fa { - right: auto; - left: 10px; + padding-left: 10px + 22px; } .columns-area { direction: rtl; } - .column-header__buttons { - left: 0; - right: auto; - margin-left: 0; - margin-right: -15px; - } - - .column-inline-form .icon-button { - margin-left: 0; - margin-right: 5px; - } - - .column-header__links .text-btn { - margin-left: 10px; - margin-right: 0; - } - .account__avatar-wrapper { float: right; } - .column-header__back-button { - padding-left: 5px; - padding-right: 0; - } - .column-header__setting-arrows { float: left; - - .column-header__setting-btn { - &:first-child { - padding-left: 7px; - padding-right: 5px; - } - - &:last-child { - padding-right: 7px; - padding-left: 5px; - margin-right: 5px; - margin-left: 0; - } - } - } - - .setting-toggle__label { - margin-left: 0; - margin-right: 8px; - } - - .account__header__tabs__buttons > .icon-button { - margin-right: 0; - margin-left: 8px; - } - - .account__avatar-overlay-overlay { - right: auto; - left: 0; - } - - .column-back-button--slim-button { - right: auto; - left: 0; - } - - .status__action-bar { - &__counter { - margin-right: 0; - margin-left: 11px; - - .status__action-bar-button { - margin-right: 0; - margin-left: 4px; - } - } - } - - .privacy-dropdown__dropdown { - margin-left: 0; - margin-right: 40px; - } - - .privacy-dropdown__option__icon { - margin-left: 10px; - margin-right: 0; - } - - .picture-in-picture__header__account .display-name, - .detailed-status__display-name .display-name { - text-align: right; - } - - .detailed-status__display-avatar { - margin-right: 0; - margin-left: 10px; - } - - .picture-in-picture__header__account .account__avatar { - margin-right: 0; - margin-left: 10px; - } - - .icon-button__counter { - margin-left: 0; - margin-right: 4px; - } - - .notifications-permission-banner__close { - right: auto; - left: 10px; - } - - .detailed-status__favorites, - .detailed-status__reblogs { - margin-left: 0; - margin-right: 6px; - } - - .fa-ul { - margin-left: 2.14285714em; - } - - .fa-li { - left: auto; - right: -2.14285714em; } .admin-wrapper { direction: rtl; } - .admin-wrapper .sidebar ul a i.fa, - a.table-action-link i.fa { - margin-right: 0; - margin-left: 5px; - } - - .simple_form .check_boxes .checkbox label { - padding-left: 0; - padding-right: 25px; - } - - .simple_form .input.with_label.boolean label.checkbox { - padding-left: 25px; - padding-right: 0; - } - - .simple_form .check_boxes .checkbox input[type='checkbox'], - .simple_form .input.boolean input[type='checkbox'] { - left: auto; - right: 0; - } - - .simple_form .input.radio_buttons .radio { - left: auto; - right: 0; - } - - .simple_form .input.radio_buttons .radio > label { - padding-right: 28px; - padding-left: 0; - } - - .simple_form .input-with-append .input input { - padding-left: 142px; - padding-right: 0; - } - - .simple_form .input.boolean label.checkbox { - left: auto; - right: 0; - } - - .simple_form .input.boolean .label_input, - .simple_form .input.boolean .hint { - padding-left: 0; - padding-right: 28px; + .react-swipeable-view-container > * { + direction: rtl; } .simple_form .label_input__append { - right: auto; - left: 3px; - &::after { - right: auto; - left: 0; background-image: linear-gradient( to left, rgba(darken($ui-base-color, 10%), 0), @@ -282,49 +51,6 @@ body.rtl { no-repeat left 8px center / auto 16px; } - .table th, - .table td { - text-align: right; - } - - .filters .filter-subset { - margin-right: 0; - margin-left: 45px; - } - - @media screen and (min-width: 631px) { - .column, - .drawer { - padding-left: 5px; - padding-right: 5px; - - &:first-child { - padding-left: 5px; - padding-right: 10px; - } - } - - .columns-area > div { - .column, - .drawer { - padding-left: 5px; - padding-right: 5px; - } - } - } - - .columns-area--mobile .column, - .columns-area--mobile .drawer { - padding-left: 0; - padding-right: 0; - } - - .card__bar .display-name { - margin-left: 0; - margin-right: 15px; - text-align: right; - } - .fa-chevron-left::before { content: '\F054'; } @@ -332,19 +58,4 @@ body.rtl { .fa-chevron-right::before { content: '\F053'; } - - .column-back-button__icon { - margin-right: 0; - margin-left: 5px; - } - - .simple_form .input.radio_buttons .radio > label input { - left: auto; - right: 0; - } - - .picture-in-picture { - right: auto; - left: 20px; - } } diff --git a/app/javascript/styles/mastodon/statuses.scss b/app/javascript/styles/mastodon/statuses.scss index a42f1f42c0..6c9ea916a2 100644 --- a/app/javascript/styles/mastodon/statuses.scss +++ b/app/javascript/styles/mastodon/statuses.scss @@ -97,7 +97,7 @@ width: 20px; height: auto; vertical-align: middle; - margin-right: 5px; + margin-inline-end: 5px; fill: $primary-text-color; } @@ -162,7 +162,7 @@ a.button.logo-button { min-height: 48px + 2px; &__avatar { - left: 15px; + inset-inline-start: 15px; top: 17px; .account__avatar { @@ -176,12 +176,12 @@ a.button.logo-button { } &__prepend { - margin-left: 48px + 15px * 2; + margin-inline-start: 48px + 15px * 2; padding-top: 15px; } &__prepend-icon-wrapper { - left: -32px; + inset-inline-start: -32px; } .media-gallery, diff --git a/app/javascript/styles/mastodon/tables.scss b/app/javascript/styles/mastodon/tables.scss index b644b38f15..49e5bbf9fc 100644 --- a/app/javascript/styles/mastodon/tables.scss +++ b/app/javascript/styles/mastodon/tables.scss @@ -10,7 +10,7 @@ line-height: 18px; vertical-align: top; border-top: 1px solid $ui-base-color; - text-align: left; + text-align: start; background: darken($ui-base-color, 4%); } @@ -91,12 +91,12 @@ &:first-child { border-radius: 4px 0 0; - border-left: 1px solid darken($ui-base-color, 8%); + border-inline-start: 1px solid darken($ui-base-color, 8%); } &:last-child { border-radius: 0 4px 0 0; - border-right: 1px solid darken($ui-base-color, 8%); + border-inline-end: 1px solid darken($ui-base-color, 8%); } } } @@ -125,7 +125,7 @@ button.table-action-link, a.table-action-link { text-decoration: none; display: inline-block; - margin-right: 5px; + margin-inline-end: 5px; padding: 0 10px; color: $darker-text-color; font-weight: 500; @@ -136,11 +136,11 @@ a.table-action-link { i.fa { font-weight: 400; - margin-right: 5px; + margin-inline-end: 5px; } &:first-child { - padding-left: 0; + padding-inline-start: 0; } } @@ -172,7 +172,7 @@ a.table-action-link { &__actions, &__content { padding: 8px 0; - padding-right: 16px; + padding-inline-end: 16px; flex: 1 1 auto; } } @@ -188,8 +188,8 @@ a.table-action-link { align-items: center; &__actions { - text-align: right; - padding-right: 16px - 5px; + text-align: end; + padding-inline-end: 16px - 5px; } } @@ -296,7 +296,7 @@ a.table-action-link { display: flex; justify-content: center; align-items: center; - margin-right: 10px; + margin-inline-end: 10px; .emojione { width: 32px; @@ -315,7 +315,7 @@ a.table-action-link { &__extra { flex: 0 0 auto; - text-align: right; + text-align: end; color: $darker-text-color; font-weight: 500; } diff --git a/app/javascript/styles/mastodon/widgets.scss b/app/javascript/styles/mastodon/widgets.scss index ef7bfc6de4..1f69f0cf01 100644 --- a/app/javascript/styles/mastodon/widgets.scss +++ b/app/javascript/styles/mastodon/widgets.scss @@ -39,8 +39,8 @@ width: 20px; height: 20px; margin: -3px 0 0; - margin-left: 0.075em; - margin-right: 0.075em; + margin-inline-start: 0.075em; + margin-inline-end: 0.075em; } p { @@ -171,7 +171,7 @@ margin-bottom: 15px; .fa { - margin-right: 5px; + margin-inline-end: 5px; color: $darker-text-color; } } @@ -284,7 +284,7 @@ } .trends__item__current { - padding-right: 0; + padding-inline-end: 0; } } } @@ -309,7 +309,7 @@ padding: 10px; &:first-child { - text-align: left; + text-align: start; } } @@ -340,9 +340,9 @@ tbody td.accounts-table__extra { width: 120px; - text-align: right; + text-align: end; color: $darker-text-color; - padding-right: 16px; + padding-inline-end: 16px; a { text-decoration: none; @@ -363,7 +363,7 @@ tbody td.accounts-table__interrelationships { width: 21px; - padding-right: 16px; + padding-inline-end: 16px; } .fa { diff --git a/app/javascript/types/resources.ts b/app/javascript/types/resources.ts new file mode 100644 index 0000000000..372ff7523b --- /dev/null +++ b/app/javascript/types/resources.ts @@ -0,0 +1,13 @@ +interface MastodonMap { + get(key: K): T[K]; + has(key: K): boolean; + set(key: K, value: T[K]): this; +} + +type AccountValues = { + id: number; + avatar: string; + avatar_static: string; + [key: string]: any; +}; +export type Account = MastodonMap; diff --git a/app/lib/activitypub/forwarder.rb b/app/lib/activitypub/forwarder.rb index b01d63e586..3a94f9669a 100644 --- a/app/lib/activitypub/forwarder.rb +++ b/app/lib/activitypub/forwarder.rb @@ -12,7 +12,7 @@ class ActivityPub::Forwarder end def forward! - ActivityPub::LowPriorityDeliveryWorker.push_bulk(inboxes) do |inbox_url| + ActivityPub::LowPriorityDeliveryWorker.push_bulk(inboxes, limit: 1_000) do |inbox_url| [payload, signature_account_id, inbox_url] end end diff --git a/app/lib/admin/metrics/retention.rb b/app/lib/admin/metrics/retention.rb index f6135ac1ef..9bd47c58e4 100644 --- a/app/lib/admin/metrics/retention.rb +++ b/app/lib/admin/metrics/retention.rb @@ -42,38 +42,7 @@ class Admin::Metrics::Retention end def perform_query - sql = <<-SQL.squish - SELECT axis.*, ( - WITH new_users AS ( - SELECT users.id - FROM users - WHERE date_trunc($3, users.created_at)::date = axis.cohort_period - ), - retained_users AS ( - SELECT users.id - FROM users - INNER JOIN new_users on new_users.id = users.id - WHERE date_trunc($3, users.current_sign_in_at) >= axis.retention_period - ) - SELECT ARRAY[count(*), (count(*))::float / (SELECT GREATEST(count(*), 1) FROM new_users)] AS retention_value_and_rate - FROM retained_users - ) - FROM ( - WITH cohort_periods AS ( - SELECT generate_series(date_trunc($3, $1::timestamp)::date, date_trunc($3, $2::timestamp)::date, ('1 ' || $3)::interval) AS cohort_period - ), - retention_periods AS ( - SELECT cohort_period AS retention_period FROM cohort_periods - ) - SELECT * - FROM cohort_periods, retention_periods - WHERE retention_period >= cohort_period - ) as axis - SQL - - rows = ActiveRecord::Base.connection.select_all(sql, nil, [[nil, @start_at], [nil, @end_at], [nil, @frequency]]) - - rows.each_with_object([]) do |row, arr| + report_rows.each_with_object([]) do |row, arr| current_cohort = arr.last if current_cohort.nil? || current_cohort.period != row['cohort_period'] @@ -90,4 +59,45 @@ class Admin::Metrics::Retention ) end end + + def report_rows + ActiveRecord::Base.connection.select_all(sanitized_sql_string) + end + + def sanitized_sql_string + ActiveRecord::Base.sanitize_sql_array( + [sql_query_string, { start_at: @start_at, end_at: @end_at, frequency: @frequency }] + ) + end + + def sql_query_string + <<~SQL.squish + SELECT axis.*, ( + WITH new_users AS ( + SELECT users.id + FROM users + WHERE date_trunc(:frequency, users.created_at)::date = axis.cohort_period + ), + retained_users AS ( + SELECT users.id + FROM users + INNER JOIN new_users on new_users.id = users.id + WHERE date_trunc(:frequency, users.current_sign_in_at) >= axis.retention_period + ) + SELECT ARRAY[count(*), (count(*))::float / (SELECT GREATEST(count(*), 1) FROM new_users)] AS retention_value_and_rate + FROM retained_users + ) + FROM ( + WITH cohort_periods AS ( + SELECT generate_series(date_trunc(:frequency, :start_at::timestamp)::date, date_trunc(:frequency, :end_at::timestamp)::date, ('1 ' || :frequency)::interval) AS cohort_period + ), + retention_periods AS ( + SELECT cohort_period AS retention_period FROM cohort_periods + ) + SELECT * + FROM cohort_periods, retention_periods + WHERE retention_period >= cohort_period + ) as axis + SQL + end end diff --git a/app/lib/admin/system_check.rb b/app/lib/admin/system_check.rb index f512635abb..89dfcef9f1 100644 --- a/app/lib/admin/system_check.rb +++ b/app/lib/admin/system_check.rb @@ -2,6 +2,7 @@ class Admin::SystemCheck ACTIVE_CHECKS = [ + Admin::SystemCheck::MediaPrivacyCheck, Admin::SystemCheck::DatabaseSchemaCheck, Admin::SystemCheck::SidekiqProcessCheck, Admin::SystemCheck::RulesCheck, diff --git a/app/lib/admin/system_check/elasticsearch_check.rb b/app/lib/admin/system_check/elasticsearch_check.rb index 5b4c12399b..0b55be3501 100644 --- a/app/lib/admin/system_check/elasticsearch_check.rb +++ b/app/lib/admin/system_check/elasticsearch_check.rb @@ -31,7 +31,7 @@ class Admin::SystemCheck::ElasticsearchCheck < Admin::SystemCheck::BaseCheck def running_version @running_version ||= begin Chewy.client.info['version']['number'] - rescue Faraday::ConnectionFailed + rescue Faraday::ConnectionFailed, Elasticsearch::Transport::Transport::Error nil end end diff --git a/app/lib/admin/system_check/media_privacy_check.rb b/app/lib/admin/system_check/media_privacy_check.rb new file mode 100644 index 0000000000..1df05b120e --- /dev/null +++ b/app/lib/admin/system_check/media_privacy_check.rb @@ -0,0 +1,105 @@ +# frozen_string_literal: true + +class Admin::SystemCheck::MediaPrivacyCheck < Admin::SystemCheck::BaseCheck + include RoutingHelper + + def skip? + !current_user.can?(:view_devops) + end + + def pass? + check_media_uploads! + @failure_message.nil? + end + + def message + Admin::SystemCheck::Message.new(@failure_message, @failure_value, @failure_action, true) + end + + private + + def check_media_uploads! + if Rails.configuration.x.use_s3 + check_media_listing_inaccessible_s3! + else + check_media_listing_inaccessible! + end + end + + def check_media_listing_inaccessible! + full_url = full_asset_url(media_attachment.file.url(:original, false)) + + # Check if we can list the uploaded file. If true, that's an error + directory_url = Addressable::URI.parse(full_url) + directory_url.query = nil + filename = directory_url.path.gsub(%r{.*/}, '') + directory_url.path = directory_url.path.gsub(%r{/[^/]+\Z}, '/') + Request.new(:get, directory_url, allow_local: true).perform do |res| + if res.truncated_body&.include?(filename) + @failure_message = use_storage? ? :upload_check_privacy_error_object_storage : :upload_check_privacy_error + @failure_action = 'https://docs.joinmastodon.org/admin/optional/object-storage/#FS' + end + end + rescue + nil + end + + def check_media_listing_inaccessible_s3! + urls_to_check = [] + paperclip_options = Paperclip::Attachment.default_options + s3_protocol = paperclip_options[:s3_protocol] + s3_host_alias = paperclip_options[:s3_host_alias] + s3_host_name = paperclip_options[:s3_host_name] + bucket_name = paperclip_options.dig(:s3_credentials, :bucket) + + urls_to_check << "#{s3_protocol}://#{s3_host_alias}/" if s3_host_alias.present? + urls_to_check << "#{s3_protocol}://#{s3_host_name}/#{bucket_name}/" + urls_to_check.uniq.each do |full_url| + check_s3_listing!(full_url) + break if @failure_message.present? + end + rescue + nil + end + + def check_s3_listing!(full_url) + bucket_url = Addressable::URI.parse(full_url) + bucket_url.path = bucket_url.path.delete_suffix(media_attachment.file.path(:original)) + bucket_url.query = "max-keys=1&x-random=#{SecureRandom.hex(10)}" + Request.new(:get, bucket_url, allow_local: true).perform do |res| + if res.truncated_body&.include?('ListBucketResult') + @failure_message = :upload_check_privacy_error_object_storage + @failure_action = 'https://docs.joinmastodon.org/admin/optional/object-storage/#S3' + end + end + end + + def media_attachment + @media_attachment ||= begin + attachment = Account.representative.media_attachments.first + if attachment.present? + attachment.touch # rubocop:disable Rails/SkipsModelValidations + attachment + else + create_test_attachment! + end + end + end + + def create_test_attachment! + Tempfile.create(%w(test-upload .jpg), binmode: true) do |tmp_file| + tmp_file.write( + Base64.decode64( + '/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAA' \ + 'AAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA' \ + 'QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE' \ + 'BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAEAAgMBEQACEQEDEQH/x' \ + 'ABKAAEAAAAAAAAAAAAAAAAAAAALEAEAAAAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAA' \ + 'AAAAAEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwA/8H//2Q==' + ) + ) + tmp_file.flush + Account.representative.media_attachments.create!(file: tmp_file) + end + end +end diff --git a/app/lib/admin/system_check/message.rb b/app/lib/admin/system_check/message.rb index bfcad3bf3d..ad8d4b6073 100644 --- a/app/lib/admin/system_check/message.rb +++ b/app/lib/admin/system_check/message.rb @@ -1,11 +1,12 @@ # frozen_string_literal: true class Admin::SystemCheck::Message - attr_reader :key, :value, :action + attr_reader :key, :value, :action, :critical - def initialize(key, value = nil, action = nil) - @key = key - @value = value - @action = action + def initialize(key, value = nil, action = nil, critical = false) + @key = key + @value = value + @action = action + @critical = critical end end diff --git a/app/lib/advanced_text_formatter.rb b/app/lib/advanced_text_formatter.rb index 21e81d4d1e..cdf1e2d9cd 100644 --- a/app/lib/advanced_text_formatter.rb +++ b/app/lib/advanced_text_formatter.rb @@ -15,6 +15,7 @@ class AdvancedTextFormatter < TextFormatter def autolink(link, link_type) return link if link_type == :email + @format_link.call(link) end end diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb index be5b68b3ff..15ff6d15f1 100644 --- a/app/lib/feed_manager.rb +++ b/app/lib/feed_manager.rb @@ -306,6 +306,7 @@ class FeedManager statuses.each do |status| next if filter_from_direct?(status, account) + added += 1 if add_to_feed(:direct, account.id, status) end @@ -322,27 +323,27 @@ class FeedManager def clean_feeds!(type, ids) reblogged_id_sets = {} - redis.pipelined do + redis.pipelined do |pipeline| ids.each do |feed_id| - redis.del(key(type, feed_id)) reblog_key = key(type, feed_id, 'reblogs') # We collect a future for this: we don't block while getting # it, but we can iterate over it later. - reblogged_id_sets[feed_id] = redis.zrange(reblog_key, 0, -1) - redis.del(reblog_key) + reblogged_id_sets[feed_id] = pipeline.zrange(reblog_key, 0, -1) + pipeline.del(key(type, feed_id), reblog_key) end end # Remove all of the reblog tracking keys we just removed the # references to. - redis.pipelined do - reblogged_id_sets.each do |feed_id, future| - future.value.each do |reblogged_id| - reblog_set_key = key(type, feed_id, "reblogs:#{reblogged_id}") - redis.del(reblog_set_key) - end + keys_to_delete = reblogged_id_sets.flat_map do |feed_id, future| + future.value.map do |reblogged_id| + key(type, feed_id, "reblogs:#{reblogged_id}") end end + + redis.del(keys_to_delete) unless keys_to_delete.empty? + + nil end private @@ -459,6 +460,7 @@ class FeedManager # @return [Boolean] def filter_from_direct?(status, receiver_id) return false if receiver_id == status.account_id + filter_from_mentions?(status, receiver_id) end diff --git a/app/lib/plain_text_formatter.rb b/app/lib/plain_text_formatter.rb index 08aa296964..6fa2bc5d2c 100644 --- a/app/lib/plain_text_formatter.rb +++ b/app/lib/plain_text_formatter.rb @@ -18,7 +18,7 @@ class PlainTextFormatter if local? text else - strip_tags(insert_newlines).chomp + html_entities.decode(strip_tags(insert_newlines)).chomp end end @@ -27,4 +27,8 @@ class PlainTextFormatter def insert_newlines text.gsub(NEWLINE_TAGS_RE) { |match| "#{match}\n" } end + + def html_entities + HTMLEntities.new + end end diff --git a/app/lib/request.rb b/app/lib/request.rb index 85716f9990..4bde6fc911 100644 --- a/app/lib/request.rb +++ b/app/lib/request.rb @@ -273,7 +273,9 @@ class Request def check_private_address(address, host) addr = IPAddr.new(address.to_s) - return if private_address_exceptions.any? { |range| range.include?(addr) } + + return if Rails.env.development? || private_address_exceptions.any? { |range| range.include?(addr) } + raise Mastodon::PrivateNetworkAddressError, host if PrivateAddressCheck.private_address?(addr) end diff --git a/app/lib/themes.rb b/app/lib/themes.rb index 81e016d4a7..45ba47780b 100644 --- a/app/lib/themes.rb +++ b/app/lib/themes.rb @@ -7,24 +7,23 @@ class Themes include Singleton def initialize - core = YAML.load_file(Rails.root.join('app', 'javascript', 'core', 'theme.yml')) - core['pack'] = Hash.new unless core['pack'] + core['pack'] = {} unless core['pack'] - result = Hash.new - Dir.glob(Rails.root.join('app', 'javascript', 'flavours', '*', 'theme.yml')) do |path| - data = YAML.load_file(path) + result = {} + Rails.root.glob('app/javascript/flavours/*/theme.yml') do |pathname| + data = YAML.load_file(pathname) next unless data['pack'] - dir = File.dirname(path) - name = File.basename(dir) + dir = pathname.dirname + name = dir.basename.to_s locales = [] screenshots = [] if data['locales'] Dir.glob(File.join(dir, data['locales'], '*.{js,json}')) do |locale| - localeName = File.basename(locale, File.extname(locale)) - locales.push(localeName) unless localeName.match(/defaultMessages|whitelist|index/) + locale_name = File.basename(locale, File.extname(locale)) + locales.push(locale_name) unless /defaultMessages|whitelist|index/.match?(locale_name) end end @@ -43,34 +42,30 @@ class Themes result[name] = data end - Dir.glob(Rails.root.join('app', 'javascript', 'skins', '*', '*')) do |path| - ext = File.extname(path) - skin = File.basename(path) - name = File.basename(File.dirname(path)) + Rails.root.glob('app/javascript/skins/*/*') do |pathname| + ext = pathname.extname.to_s + skin = pathname.basename.to_s + name = pathname.dirname.basename.to_s next unless result[name] - if File.directory?(path) + if pathname.directory? pack = [] - Dir.glob(File.join(path, '*.{css,scss}')) do |sheet| - pack.push(File.basename(sheet, File.extname(sheet))) + pathname.glob('*.{css,scss}') do |sheet| + pack.push(sheet.basename(sheet.extname).to_s) end - elsif ext.match(/^\.s?css$/i) - skin = File.basename(path, ext) + elsif /^\.s?css$/i.match?(ext) + skin = pathname.basename(ext).to_s pack = ['common'] end - if skin != 'default' - result[name]['skin'][skin] = pack - end + result[name]['skin'][skin] = pack if skin != 'default' end @core = core @conf = result end - def core - @core - end + attr_reader :core def flavour(name) @conf[name] @@ -86,7 +81,7 @@ class Themes def flavours_and_skins flavours.map do |flavour| - [flavour, skins_for(flavour).map{ |skin| [flavour, skin] }] + [flavour, skins_for(flavour).map { |skin| [flavour, skin] }] end end end diff --git a/app/lib/toc_generator.rb b/app/lib/toc_generator.rb deleted file mode 100644 index 0c8f766ca4..0000000000 --- a/app/lib/toc_generator.rb +++ /dev/null @@ -1,69 +0,0 @@ -# frozen_string_literal: true - -class TOCGenerator - TARGET_ELEMENTS = %w(h1 h2 h3 h4 h5 h6).freeze - LISTED_ELEMENTS = %w(h2 h3).freeze - - class Section - attr_accessor :depth, :title, :children, :anchor - - def initialize(depth, title, anchor) - @depth = depth - @title = title - @children = [] - @anchor = anchor - end - - delegate :<<, to: :children - end - - def initialize(source_html) - @source_html = source_html - @processed = false - @target_html = '' - @headers = [] - @slugs = Hash.new { |h, k| h[k] = 0 } - end - - def html - parse_and_transform unless @processed - @target_html - end - - def toc - parse_and_transform unless @processed - @headers - end - - private - - def parse_and_transform - return if @source_html.blank? - - parsed_html = Nokogiri::HTML.fragment(@source_html) - - parsed_html.traverse do |node| - next unless TARGET_ELEMENTS.include?(node.name) - - anchor = node['id'] || node.text.parameterize.presence || 'sec' - @slugs[anchor] += 1 - anchor = "#{anchor}-#{@slugs[anchor]}" if @slugs[anchor] > 1 - - node['id'] = anchor - - next unless LISTED_ELEMENTS.include?(node.name) - - depth = node.name[1..-1] - latest_section = @headers.last - - if latest_section.nil? || latest_section.depth >= depth - @headers << Section.new(depth, node.text, anchor) - else - latest_section << Section.new(depth, node.text, anchor) - end - end - - @target_html = parsed_html.to_s - @processed = true - end -end diff --git a/app/lib/translation_service.rb b/app/lib/translation_service.rb index 285f309393..bfe5de44f8 100644 --- a/app/lib/translation_service.rb +++ b/app/lib/translation_service.rb @@ -21,6 +21,10 @@ class TranslationService ENV['DEEPL_API_KEY'].present? || ENV['LIBRE_TRANSLATE_ENDPOINT'].present? end + def languages + {} + end + def translate(_text, _source_language, _target_language) raise NotImplementedError end diff --git a/app/lib/translation_service/deepl.rb b/app/lib/translation_service/deepl.rb index 151d33d909..afcb7ecb2f 100644 --- a/app/lib/translation_service/deepl.rb +++ b/app/lib/translation_service/deepl.rb @@ -11,33 +11,59 @@ class TranslationService::DeepL < TranslationService end def translate(text, source_language, target_language) - request(text, source_language, target_language).perform do |res| + form = { text: text, source_lang: source_language&.upcase, target_lang: target_language, tag_handling: 'html' } + request(:post, '/v2/translate', form: form) do |res| + transform_response(res.body_with_limit) + end + end + + def languages + source_languages = [nil] + fetch_languages('source') + + # In DeepL, EN and PT are deprecated in favor of EN-GB/EN-US and PT-BR/PT-PT, so + # they are supported but not returned by the API. + target_languages = %w(en pt) + fetch_languages('target') + + source_languages.index_with { |language| target_languages.without(nil, language) } + end + + private + + def fetch_languages(type) + request(:get, "/v2/languages?type=#{type}") do |res| + Oj.load(res.body_with_limit).map { |language| normalize_language(language['language']) } + end + end + + def normalize_language(language) + subtags = language.split(/[_-]/) + subtags[0].downcase! + subtags[1]&.upcase! + subtags.join('-') + end + + def request(verb, path, **options) + req = Request.new(verb, "#{base_url}#{path}", **options) + req.add_headers(Authorization: "DeepL-Auth-Key #{@api_key}") + req.perform do |res| case res.code when 429 raise TooManyRequestsError when 456 raise QuotaExceededError when 200...300 - transform_response(res.body_with_limit) + yield res else raise UnexpectedResponseError end end end - private - - def request(text, source_language, target_language) - req = Request.new(:post, endpoint_url, form: { text: text, source_lang: source_language&.upcase, target_lang: target_language, tag_handling: 'html' }) - req.add_headers(Authorization: "DeepL-Auth-Key #{@api_key}") - req - end - - def endpoint_url + def base_url if @plan == 'free' - 'https://api-free.deepl.com/v2/translate' + 'https://api-free.deepl.com' else - 'https://api.deepl.com/v2/translate' + 'https://api.deepl.com' end end diff --git a/app/lib/translation_service/libre_translate.rb b/app/lib/translation_service/libre_translate.rb index 4ebe21e454..8bb194a9c2 100644 --- a/app/lib/translation_service/libre_translate.rb +++ b/app/lib/translation_service/libre_translate.rb @@ -9,29 +9,41 @@ class TranslationService::LibreTranslate < TranslationService end def translate(text, source_language, target_language) - request(text, source_language, target_language).perform do |res| + body = Oj.dump(q: text, source: source_language.presence || 'auto', target: target_language, format: 'html', api_key: @api_key) + request(:post, '/translate', body: body) do |res| + transform_response(res.body_with_limit, source_language) + end + end + + def languages + request(:get, '/languages') do |res| + languages = Oj.load(res.body_with_limit).to_h do |language| + [language['code'], language['targets'].without(language['code'])] + end + languages[nil] = languages.values.flatten.uniq.sort + languages + end + end + + private + + def request(verb, path, **options) + req = Request.new(verb, "#{@base_url}#{path}", allow_local: true, **options) + req.add_headers('Content-Type': 'application/json') + req.perform do |res| case res.code when 429 raise TooManyRequestsError when 403 raise QuotaExceededError when 200...300 - transform_response(res.body_with_limit, source_language) + yield res else raise UnexpectedResponseError end end end - private - - def request(text, source_language, target_language) - body = Oj.dump(q: text, source: source_language.presence || 'auto', target: target_language, format: 'html', api_key: @api_key) - req = Request.new(:post, "#{@base_url}/translate", body: body, allow_local: true) - req.add_headers('Content-Type': 'application/json') - req - end - def transform_response(str, source_language) json = Oj.load(str, mode: :strict) diff --git a/app/lib/user_settings_decorator.rb b/app/lib/user_settings_decorator.rb deleted file mode 100644 index 260077a1c1..0000000000 --- a/app/lib/user_settings_decorator.rb +++ /dev/null @@ -1,180 +0,0 @@ -# frozen_string_literal: true - -class UserSettingsDecorator - attr_reader :user, :settings - - def initialize(user) - @user = user - end - - def update(settings) - @settings = settings - process_update - end - - private - - def process_update - user.settings['notification_emails'] = merged_notification_emails if change?('notification_emails') - user.settings['interactions'] = merged_interactions if change?('interactions') - user.settings['default_privacy'] = default_privacy_preference if change?('setting_default_privacy') - user.settings['default_sensitive'] = default_sensitive_preference if change?('setting_default_sensitive') - user.settings['default_language'] = default_language_preference if change?('setting_default_language') - user.settings['unfollow_modal'] = unfollow_modal_preference if change?('setting_unfollow_modal') - user.settings['boost_modal'] = boost_modal_preference if change?('setting_boost_modal') - user.settings['favourite_modal'] = favourite_modal_preference if change?('setting_favourite_modal') - user.settings['delete_modal'] = delete_modal_preference if change?('setting_delete_modal') - user.settings['auto_play_gif'] = auto_play_gif_preference if change?('setting_auto_play_gif') - user.settings['display_media'] = display_media_preference if change?('setting_display_media') - user.settings['expand_spoilers'] = expand_spoilers_preference if change?('setting_expand_spoilers') - user.settings['reduce_motion'] = reduce_motion_preference if change?('setting_reduce_motion') - user.settings['disable_swiping'] = disable_swiping_preference if change?('setting_disable_swiping') - user.settings['system_font_ui'] = system_font_ui_preference if change?('setting_system_font_ui') - user.settings['system_emoji_font'] = system_emoji_font_preference if change?('setting_system_emoji_font') - user.settings['noindex'] = noindex_preference if change?('setting_noindex') - user.settings['hide_followers_count'] = hide_followers_count_preference if change?('setting_hide_followers_count') - user.settings['flavour'] = flavour_preference if change?('setting_flavour') - user.settings['skin'] = skin_preference if change?('setting_skin') - user.settings['aggregate_reblogs'] = aggregate_reblogs_preference if change?('setting_aggregate_reblogs') - user.settings['show_application'] = show_application_preference if change?('setting_show_application') - user.settings['advanced_layout'] = advanced_layout_preference if change?('setting_advanced_layout') - user.settings['default_content_type']= default_content_type_preference if change?('setting_default_content_type') - user.settings['use_blurhash'] = use_blurhash_preference if change?('setting_use_blurhash') - user.settings['use_pending_items'] = use_pending_items_preference if change?('setting_use_pending_items') - user.settings['trends'] = trends_preference if change?('setting_trends') - user.settings['crop_images'] = crop_images_preference if change?('setting_crop_images') - user.settings['always_send_emails'] = always_send_emails_preference if change?('setting_always_send_emails') - end - - def merged_notification_emails - user.settings['notification_emails'].merge coerced_settings('notification_emails').to_h - end - - def merged_interactions - user.settings['interactions'].merge coerced_settings('interactions').to_h - end - - def default_privacy_preference - settings['setting_default_privacy'] - end - - def default_sensitive_preference - boolean_cast_setting 'setting_default_sensitive' - end - - def unfollow_modal_preference - boolean_cast_setting 'setting_unfollow_modal' - end - - def boost_modal_preference - boolean_cast_setting 'setting_boost_modal' - end - - def favourite_modal_preference - boolean_cast_setting 'setting_favourite_modal' - end - - def delete_modal_preference - boolean_cast_setting 'setting_delete_modal' - end - - def system_font_ui_preference - boolean_cast_setting 'setting_system_font_ui' - end - - def system_emoji_font_preference - boolean_cast_setting 'setting_system_emoji_font' - end - - def auto_play_gif_preference - boolean_cast_setting 'setting_auto_play_gif' - end - - def display_media_preference - settings['setting_display_media'] - end - - def expand_spoilers_preference - boolean_cast_setting 'setting_expand_spoilers' - end - - def reduce_motion_preference - boolean_cast_setting 'setting_reduce_motion' - end - - def disable_swiping_preference - boolean_cast_setting 'setting_disable_swiping' - end - - def noindex_preference - boolean_cast_setting 'setting_noindex' - end - - def flavour_preference - settings['setting_flavour'] - end - - def skin_preference - settings['setting_skin'] - end - - def hide_followers_count_preference - boolean_cast_setting 'setting_hide_followers_count' - end - - def show_application_preference - boolean_cast_setting 'setting_show_application' - end - - def default_language_preference - settings['setting_default_language'] - end - - def aggregate_reblogs_preference - boolean_cast_setting 'setting_aggregate_reblogs' - end - - def advanced_layout_preference - boolean_cast_setting 'setting_advanced_layout' - end - - def default_content_type_preference - settings['setting_default_content_type'] - end - - def use_blurhash_preference - boolean_cast_setting 'setting_use_blurhash' - end - - def use_pending_items_preference - boolean_cast_setting 'setting_use_pending_items' - end - - def trends_preference - boolean_cast_setting 'setting_trends' - end - - def crop_images_preference - boolean_cast_setting 'setting_crop_images' - end - - def always_send_emails_preference - boolean_cast_setting 'setting_always_send_emails' - end - - def boolean_cast_setting(key) - ActiveModel::Type::Boolean.new.cast(settings[key]) - end - - def coerced_settings(key) - coerce_values settings.fetch(key, {}) - end - - def coerce_values(params_hash) - params_hash.transform_values { |x| ActiveModel::Type::Boolean.new.cast(x) } - end - - def change?(key) - !settings[key].nil? - end -end diff --git a/app/lib/user_settings_serializer.rb b/app/lib/user_settings_serializer.rb new file mode 100644 index 0000000000..10d1be04d5 --- /dev/null +++ b/app/lib/user_settings_serializer.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class UserSettingsSerializer + def self.load(value) + json = begin + if value.blank? + {} + else + Oj.load(value, symbol_keys: true) + end + end + + UserSettings.new(json) + end + + def self.dump(value) + Oj.dump(value.as_json) + end +end diff --git a/app/mailers/application_mailer.rb b/app/mailers/application_mailer.rb index 73b623576c..35f0b5fee1 100644 --- a/app/mailers/application_mailer.rb +++ b/app/mailers/application_mailer.rb @@ -7,9 +7,17 @@ class ApplicationMailer < ActionMailer::Base helper :instance helper :formatting + after_action :set_autoreply_headers! + protected def locale_for_account(account, &block) I18n.with_locale(account.user_locale || I18n.default_locale, &block) end + + def set_autoreply_headers! + headers['Precedence'] = 'list' + headers['X-Auto-Response-Suppress'] = 'All' + headers['Auto-Submitted'] = 'auto-generated' + end end diff --git a/app/models/account.rb b/app/models/account.rb index 9ba95c5216..fb66b57114 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -53,7 +53,7 @@ # class Account < ApplicationRecord - self.ignored_columns = %w( + self.ignored_columns += %w( subscription_expires_at secret remote_url @@ -126,6 +126,8 @@ class Account < ApplicationRecord scope :not_excluded_by_account, ->(account) { where.not(id: account.excluded_from_timeline_account_ids) } scope :not_domain_blocked_by_account, ->(account) { where(arel_table[:domain].eq(nil).or(arel_table[:domain].not_in(account.excluded_from_timeline_domains))) } + after_update_commit :trigger_update_webhooks + delegate :email, :unconfirmed_email, :current_sign_in_at, @@ -591,4 +593,9 @@ class Account < ApplicationRecord CanonicalEmailBlock.where(reference_account: self).delete_all end + + # NOTE: the `account.created` webhook is triggered by the `User` model, not `Account`. + def trigger_update_webhooks + TriggerWebhookWorker.perform_async('account.updated', 'Account', id) if local? + end end diff --git a/app/models/account_stat.rb b/app/models/account_stat.rb index 834f8ba4c2..0fea7732e9 100644 --- a/app/models/account_stat.rb +++ b/app/models/account_stat.rb @@ -16,7 +16,7 @@ class AccountStat < ApplicationRecord self.locking_column = nil - self.ignored_columns = %w(lock_version) + self.ignored_columns += %w(lock_version) belongs_to :account, inverse_of: :account_stat diff --git a/app/models/admin/action_log.rb b/app/models/admin/action_log.rb index 4fa8008f5c..f2c121d758 100644 --- a/app/models/admin/action_log.rb +++ b/app/models/admin/action_log.rb @@ -17,7 +17,7 @@ # class Admin::ActionLog < ApplicationRecord - self.ignored_columns = %w( + self.ignored_columns += %w( recorded_changes ) diff --git a/app/models/backup.rb b/app/models/backup.rb index bec3cbfe5e..5feb31d7df 100644 --- a/app/models/backup.rb +++ b/app/models/backup.rb @@ -18,6 +18,6 @@ class Backup < ApplicationRecord belongs_to :user, inverse_of: :backups - has_attached_file :dump + has_attached_file :dump, s3_permissions: ->(*) { ENV['S3_PERMISSION'] == '' ? nil : 'private' } validates_attachment_content_type :dump, content_type: /\Aapplication/ end diff --git a/app/models/concerns/account_interactions.rb b/app/models/concerns/account_interactions.rb index 1898516b00..48ab1349dd 100644 --- a/app/models/concerns/account_interactions.rb +++ b/app/models/concerns/account_interactions.rb @@ -292,6 +292,21 @@ module AccountInteractions end end + def relations_map(account_ids, domains = nil, **options) + relations = { + blocked_by: Account.blocked_by_map(account_ids, id), + following: Account.following_map(account_ids, id), + } + + return relations if options[:skip_blocking_and_muting] + + relations.merge!({ + blocking: Account.blocking_map(account_ids, id), + muting: Account.muting_map(account_ids, id), + domain_blocking_by_domain: Account.domain_blocking_map_by_domain(domains, id), + }) + end + private def remove_potential_friendship(other_account) diff --git a/app/models/concerns/attachmentable.rb b/app/models/concerns/attachmentable.rb index 01fae4236f..d44c224381 100644 --- a/app/models/concerns/attachmentable.rb +++ b/app/models/concerns/attachmentable.rb @@ -5,7 +5,7 @@ require 'mime/types/columnar' module Attachmentable extend ActiveSupport::Concern - MAX_MATRIX_LIMIT = 16_777_216 # 4096x4096px or approx. 16MB + MAX_MATRIX_LIMIT = 33_177_600 # 7680x4320px or approx. 847MB in RAM GIF_MATRIX_LIMIT = 921_600 # 1280x720px # For some file extensions, there exist different content diff --git a/app/models/concerns/has_user_settings.rb b/app/models/concerns/has_user_settings.rb new file mode 100644 index 0000000000..0e9d4e1cd4 --- /dev/null +++ b/app/models/concerns/has_user_settings.rb @@ -0,0 +1,173 @@ +# frozen_string_literal: true + +module HasUserSettings + extend ActiveSupport::Concern + + included do + serialize :settings, UserSettingsSerializer + end + + def settings_attributes=(attributes) + settings.update(attributes) + end + + def prefers_noindex? + settings['noindex'] + end + + def preferred_posting_language + valid_locale_cascade(settings['default_language'], locale, I18n.locale) + end + + def setting_auto_play_gif + settings['web.auto_play'] + end + + def setting_default_sensitive + settings['default_sensitive'] + end + + def setting_unfollow_modal + settings['web.unfollow_modal'] + end + + def setting_boost_modal + settings['web.reblog_modal'] + end + + def setting_delete_modal + settings['web.delete_modal'] + end + + def setting_favourite_modal + settings['web.favourite_modal'] + end + + def setting_reduce_motion + settings['web.reduce_motion'] + end + + def setting_system_font_ui + settings['web.use_system_font'] + end + + def setting_system_emoji_font + settings['web.use_system_emoji_font'] + end + + def setting_noindex + settings['noindex'] + end + + def setting_flavour + settings['flavour'] + end + + def setting_skin + settings['skin'] + end + + def setting_display_media + settings['web.display_media'] + end + + def setting_expand_spoilers + settings['web.expand_content_warnings'] + end + + def setting_default_language + settings['default_language'] + end + + def setting_aggregate_reblogs + settings['aggregate_reblogs'] + end + + def setting_show_application + settings['show_application'] + end + + def setting_advanced_layout + settings['web.advanced_layout'] + end + + def setting_use_blurhash + settings['web.use_blurhash'] + end + + def setting_use_pending_items + settings['web.use_pending_items'] + end + + def setting_trends + settings['web.trends'] + end + + def setting_crop_images + settings['web.crop_images'] + end + + def setting_disable_swiping + settings['web.disable_swiping'] + end + + def setting_always_send_emails + settings['always_send_emails'] + end + + def setting_default_privacy + settings['default_privacy'] || (account.locked? ? 'private' : 'public') + end + + def setting_default_content_type + settings['default_content_type'] + end + + def setting_hide_followers_count + settings['hide_followers_count'] + end + + def allows_report_emails? + settings['notification_emails.report'] + end + + def allows_pending_account_emails? + settings['notification_emails.pending_account'] + end + + def allows_appeal_emails? + settings['notification_emails.appeal'] + end + + def allows_trends_review_emails? + settings['notification_emails.trends'] + end + + def allows_trending_tags_review_emails? + settings['notification_emails.trends'] + end + + def allows_trending_links_review_emails? + settings['notification_emails.link_trends'] + end + + def allows_trending_statuses_review_emails? + settings['notification_emails.status_trends'] + end + + def aggregates_reblogs? + settings['aggregate_reblogs'] + end + + def shows_application? + settings['show_application'] + end + + def show_all_media? + settings['web.display_media'] == 'show_all' + end + + def hide_all_media? + settings['web.display_media'] == 'hide_all' + end +end diff --git a/app/models/concerns/ldap_authenticable.rb b/app/models/concerns/ldap_authenticable.rb index dc5abcd5ac..775df08176 100644 --- a/app/models/concerns/ldap_authenticable.rb +++ b/app/models/concerns/ldap_authenticable.rb @@ -6,7 +6,7 @@ module LdapAuthenticable class_methods do def authenticate_with_ldap(params = {}) ldap = Net::LDAP.new(ldap_options) - filter = format(Devise.ldap_search_filter, uid: Devise.ldap_uid, mail: Devise.ldap_mail, email: params[:email]) + filter = format(Devise.ldap_search_filter, uid: Devise.ldap_uid, mail: Devise.ldap_mail, email: Net::LDAP::Filter.escape(params[:email])) if (user_info = ldap.bind_as(base: Devise.ldap_base, filter: filter, password: params[:password])) ldap_get_user(user_info.first) diff --git a/app/models/concerns/omniauthable.rb b/app/models/concerns/omniauthable.rb index b0aa5be6f1..41eae215b4 100644 --- a/app/models/concerns/omniauthable.rb +++ b/app/models/concerns/omniauthable.rb @@ -61,7 +61,7 @@ module Omniauthable user.account.avatar_remote_url = nil end - user.skip_confirmation! if email_is_verified + user.confirm! if email_is_verified user.save! user end diff --git a/app/models/concerns/status_threading_concern.rb b/app/models/concerns/status_threading_concern.rb index 8b628beea2..2ca3b66c27 100644 --- a/app/models/concerns/status_threading_concern.rb +++ b/app/models/concerns/status_threading_concern.rb @@ -79,7 +79,7 @@ module StatusThreadingConcern statuses = Status.with_accounts(ids).to_a account_ids = statuses.map(&:account_id).uniq domains = statuses.filter_map(&:account_domain).uniq - relations = relations_map_for_account(account, account_ids, domains) + relations = account&.relations_map(account_ids, domains) || {} statuses.reject! { |status| StatusFilter.new(status, account, relations).filtered? } @@ -108,16 +108,4 @@ module StatusThreadingConcern arr end - - def relations_map_for_account(account, account_ids, domains) - return {} if account.nil? - - { - blocking: Account.blocking_map(account_ids, account.id), - blocked_by: Account.blocked_by_map(account_ids, account.id), - muting: Account.muting_map(account_ids, account.id), - following: Account.following_map(account_ids, account.id), - domain_blocking_by_domain: Account.domain_blocking_map_by_domain(domains, account.id), - } - end end diff --git a/app/models/custom_filter.rb b/app/models/custom_filter.rb index d85e196e96..0f4fd78cbf 100644 --- a/app/models/custom_filter.rb +++ b/app/models/custom_filter.rb @@ -15,7 +15,7 @@ # class CustomFilter < ApplicationRecord - self.ignored_columns = %w(whole_word irreversible) + self.ignored_columns += %w(whole_word irreversible) alias_attribute :title, :phrase alias_attribute :filter_action, :action diff --git a/app/models/direct_feed.rb b/app/models/direct_feed.rb index 1f2448070f..689a735b3f 100644 --- a/app/models/direct_feed.rb +++ b/app/models/direct_feed.rb @@ -4,9 +4,8 @@ class DirectFeed < Feed include Redisable def initialize(account) - @type = :direct - @id = account.id @account = account + super(:direct, account.id) end def get(limit, max_id = nil, since_id = nil, min_id = nil) @@ -19,10 +18,12 @@ class DirectFeed < Feed private - def from_database(limit, max_id, since_id, min_id) + # TODO: _min_id is not actually handled by `as_direct_timeline` + def from_database(limit, max_id, since_id, _min_id) loop do - statuses = Status.as_direct_timeline(@account, limit, max_id, since_id, min_id) + statuses = Status.as_direct_timeline(@account, limit, max_id, since_id) return statuses if statuses.empty? + max_id = statuses.last.id statuses = statuses.reject { |status| FeedManager.instance.filter?(:direct, status, @account) } return statuses unless statuses.empty? diff --git a/app/models/email_domain_block.rb b/app/models/email_domain_block.rb index 276e7d31a1..3c9be51cab 100644 --- a/app/models/email_domain_block.rb +++ b/app/models/email_domain_block.rb @@ -12,7 +12,7 @@ # class EmailDomainBlock < ApplicationRecord - self.ignored_columns = %w( + self.ignored_columns += %w( ips last_refresh_at ) diff --git a/app/models/follow_recommendation_suppression.rb b/app/models/follow_recommendation_suppression.rb index a9dbbfc18f..e261a2fe35 100644 --- a/app/models/follow_recommendation_suppression.rb +++ b/app/models/follow_recommendation_suppression.rb @@ -20,9 +20,9 @@ class FollowRecommendationSuppression < ApplicationRecord private def remove_follow_recommendations - redis.pipelined do + redis.pipelined do |pipeline| I18n.available_locales.each do |locale| - redis.zrem("follow_recommendations:#{locale}", account_id) + pipeline.zrem("follow_recommendations:#{locale}", account_id) end end end diff --git a/app/models/form/account_batch.rb b/app/models/form/account_batch.rb index 473622edf4..6a05f8163a 100644 --- a/app/models/form/account_batch.rb +++ b/app/models/form/account_batch.rb @@ -17,8 +17,8 @@ class Form::AccountBatch unfollow! when 'remove_from_followers' remove_from_followers! - when 'block_domains' - block_domains! + when 'remove_domains_from_followers' + remove_domains_from_followers! when 'approve' approve! when 'reject' @@ -35,9 +35,15 @@ class Form::AccountBatch private def follow! + error = nil + accounts.each do |target_account| FollowService.new.call(current_account, target_account) + rescue Mastodon::NotPermittedError, ActiveRecord::RecordNotFound => e + error ||= e end + + raise error if error.present? end def unfollow! @@ -50,10 +56,8 @@ class Form::AccountBatch RemoveFromFollowersService.new.call(current_account, account_ids) end - def block_domains! - AfterAccountDomainBlockWorker.push_bulk(account_domains) do |domain| - [current_account.id, domain] - end + def remove_domains_from_followers! + RemoveDomainsFromFollowersService.new.call(current_account, account_domains) end def account_domains diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb index 98f5bc8a13..a655b2927e 100644 --- a/app/models/media_attachment.rb +++ b/app/models/media_attachment.rb @@ -39,11 +39,11 @@ class MediaAttachment < ApplicationRecord MAX_DESCRIPTION_LENGTH = 1_500 - IMAGE_LIMIT = (ENV['MAX_IMAGE_SIZE'] || 10.megabytes).to_i - VIDEO_LIMIT = (ENV['MAX_VIDEO_SIZE'] || 40.megabytes).to_i + IMAGE_LIMIT = (ENV['MAX_IMAGE_SIZE'] || 16.megabytes).to_i + VIDEO_LIMIT = (ENV['MAX_VIDEO_SIZE'] || 99.megabytes).to_i - MAX_VIDEO_MATRIX_LIMIT = 2_304_000 # 1920x1200px - MAX_VIDEO_FRAME_RATE = 60 + MAX_VIDEO_MATRIX_LIMIT = 8_294_400 # 3840x2160px + MAX_VIDEO_FRAME_RATE = 120 IMAGE_FILE_EXTENSIONS = %w(.jpg .jpeg .png .gif .webp .heic .heif .avif).freeze VIDEO_FILE_EXTENSIONS = %w(.webm .mp4 .m4v .mov).freeze @@ -69,7 +69,7 @@ class MediaAttachment < ApplicationRecord IMAGE_STYLES = { original: { - pixels: 2_073_600, # 1920x1080px + pixels: 8_294_400, # 3840x2160px file_geometry_parser: FastGeometryParser, }.freeze, diff --git a/app/models/preview_card.rb b/app/models/preview_card.rb index 2559624c3e..ff033a0521 100644 --- a/app/models/preview_card.rb +++ b/app/models/preview_card.rb @@ -36,7 +36,7 @@ class PreviewCard < ApplicationRecord include Attachmentable IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif', 'image/webp'].freeze - LIMIT = 1.megabytes + LIMIT = 2.megabytes BLURHASH_OPTIONS = { x_comp: 4, @@ -121,7 +121,7 @@ class PreviewCard < ApplicationRecord def image_styles(file) styles = { original: { - geometry: '400x400>', + pixels: 230_400, # 640x360px file_geometry_parser: FastGeometryParser, convert_options: '-coalesce', blurhash: BLURHASH_OPTIONS, diff --git a/app/models/report.rb b/app/models/report.rb index a9940459de..c3a0c4c8b2 100644 --- a/app/models/report.rb +++ b/app/models/report.rb @@ -21,7 +21,7 @@ # class Report < ApplicationRecord - self.ignored_columns = %w(action_taken) + self.ignored_columns += %w(action_taken) include Paginable include RateLimitable diff --git a/app/models/status.rb b/app/models/status.rb index eee8780a02..f02fb392a8 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -120,6 +120,9 @@ class Status < ApplicationRecord scope :not_local_only, -> { where(local_only: [false, nil]) } + after_create_commit :trigger_create_webhooks + after_update_commit :trigger_update_webhooks + cache_associated :application, :media_attachments, :conversation, @@ -157,6 +160,10 @@ class Status < ApplicationRecord REAL_TIME_WINDOW = 6.hours + def cache_key + "v2:#{super}" + end + def searchable_by(preloaded = nil) ids = [] @@ -354,7 +361,7 @@ class Status < ApplicationRecord visibilities.keys - %w(direct limited) end - def as_direct_timeline(account, limit = 20, max_id = nil, since_id = nil, cache_ids = false) + def as_direct_timeline(account, limit = 20, max_id = nil, since_id = nil) # direct timeline is mix of direct message from_me and to_me. # 2 queries are executed with pagination. # constant expression using arel_table is required for partial index @@ -385,14 +392,9 @@ class Status < ApplicationRecord query_to_me = query_to_me.where('mentions.status_id > ?', since_id) end - if cache_ids - # returns array of cache_ids object that have id and updated_at - (query_from_me.cache_ids.to_a + query_to_me.cache_ids.to_a).uniq(&:id).sort_by(&:id).reverse.take(limit) - else - # returns ActiveRecord.Relation - items = (query_from_me.select(:id).to_a + query_to_me.select(:id).to_a).uniq(&:id).sort_by(&:id).reverse.take(limit) - Status.where(id: items.map(&:id)) - end + # returns ActiveRecord.Relation + items = (query_from_me.select(:id).to_a + query_to_me.select(:id).to_a).uniq(&:id).sort_by(&:id).reverse.take(limit) + Status.where(id: items.map(&:id)) end def favourites_map(status_ids, account_id) @@ -569,9 +571,9 @@ class Status < ApplicationRecord end def set_locality - if account.domain.nil? && !attribute_changed?(:local_only) - self.local_only = marked_local_only? - end + return unless account.domain.nil? && !attribute_changed?(:local_only) + + self.local_only = marked_local_only? end def set_conversation @@ -620,4 +622,12 @@ class Status < ApplicationRecord reblog&.decrement_count!(:reblogs_count) if reblog? thread&.decrement_count!(:replies_count) if in_reply_to_id.present? && distributable? end + + def trigger_create_webhooks + TriggerWebhookWorker.perform_async('status.created', 'Status', id) if local? + end + + def trigger_update_webhooks + TriggerWebhookWorker.perform_async('status.updated', 'Status', id) if local? + end end diff --git a/app/models/status_edit.rb b/app/models/status_edit.rb index 7b264b8542..6ecdc537b3 100644 --- a/app/models/status_edit.rb +++ b/app/models/status_edit.rb @@ -21,7 +21,7 @@ class StatusEdit < ApplicationRecord include RateLimitable - self.ignored_columns = %w( + self.ignored_columns += %w( media_attachments_changed ) diff --git a/app/models/user.rb b/app/models/user.rb index a90f43eda5..daf8768e8d 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -39,10 +39,11 @@ # webauthn_id :string # sign_up_ip :inet # role_id :bigint(8) +# settings :text # class User < ApplicationRecord - self.ignored_columns = %w( + self.ignored_columns += %w( remember_created_at remember_token current_sign_in_ip @@ -51,9 +52,9 @@ class User < ApplicationRecord filtered_languages ) - include Settings::Extend include Redisable include LanguagesHelper + include HasUserSettings # The home and list feeds will be stored in Redis for this amount # of time, and status fan-out to followers will include only people @@ -132,13 +133,6 @@ class User < ApplicationRecord has_many :session_activations, dependent: :destroy - delegate :auto_play_gif, :default_sensitive, :unfollow_modal, :boost_modal, :favourite_modal, :delete_modal, - :reduce_motion, :system_font_ui, :noindex, :flavour, :skin, :display_media, :hide_followers_count, - :expand_spoilers, :default_language, :aggregate_reblogs, :show_application, - :advanced_layout, :use_blurhash, :use_pending_items, :trends, :crop_images, - :disable_swiping, :always_send_emails, :default_content_type, :system_emoji_font, - to: :settings, prefix: :setting, allow_nil: false - delegate :can?, to: :role attr_reader :invite_code @@ -250,7 +244,6 @@ class User < ApplicationRecord end def functional? - functional_or_moved? end @@ -303,50 +296,6 @@ class User < ApplicationRecord save! end - def prefers_noindex? - setting_noindex - end - - def preferred_posting_language - valid_locale_cascade(settings.default_language, locale, I18n.locale) - end - - def setting_default_privacy - settings.default_privacy || (account.locked? ? 'private' : 'public') - end - - def allows_report_emails? - settings.notification_emails['report'] - end - - def allows_pending_account_emails? - settings.notification_emails['pending_account'] - end - - def allows_appeal_emails? - settings.notification_emails['appeal'] - end - - def allows_trending_tags_review_emails? - settings.notification_emails['trending_tag'] - end - - def allows_trending_links_review_emails? - settings.notification_emails['trending_link'] - end - - def allows_trending_statuses_review_emails? - settings.notification_emails['trending_status'] - end - - def aggregates_reblogs? - @aggregates_reblogs ||= settings.aggregate_reblogs - end - - def shows_application? - @shows_application ||= settings.show_application - end - def token_for_app(app) return nil if app.nil? || app.owner != self @@ -426,14 +375,6 @@ class User < ApplicationRecord send_reset_password_instructions end - def show_all_media? - setting_display_media == 'show_all' - end - - def hide_all_media? - setting_display_media == 'hide_all' - end - protected def send_devise_notification(notification, *args, **kwargs) @@ -503,7 +444,8 @@ class User < ApplicationRecord def sanitize_languages return if chosen_languages.nil? - chosen_languages.reject!(&:blank?) + chosen_languages.compact_blank! + self.chosen_languages = nil if chosen_languages.empty? end @@ -516,11 +458,14 @@ class User < ApplicationRecord def prepare_new_user! BootstrapTimelineWorker.perform_async(account_id) ActivityTracker.increment('activity:accounts:local') + ActivityTracker.record('activity:logins', id) UserMailer.welcome(self).deliver_later TriggerWebhookWorker.perform_async('account.approved', 'Account', account_id) end def prepare_returning_user! + return unless confirmed? + ActivityTracker.record('activity:logins', id) regenerate_feed! if needs_feed_update? end diff --git a/app/models/user_settings.rb b/app/models/user_settings.rb new file mode 100644 index 0000000000..0be8c5fbce --- /dev/null +++ b/app/models/user_settings.rb @@ -0,0 +1,106 @@ +# frozen_string_literal: true + +class UserSettings + class Error < StandardError; end + class KeyError < Error; end + + include UserSettings::DSL + include UserSettings::Glue + + setting :always_send_emails, default: false + setting :aggregate_reblogs, default: true + setting :flavour, default: -> { ::Setting.flavour } + setting :skin, default: -> { ::Setting.skin } + setting :noindex, default: -> { ::Setting.noindex } + setting :show_application, default: true + setting :default_language, default: nil + setting :default_sensitive, default: false + setting :default_privacy, default: nil + setting :default_content_type, default: 'text/plain' + setting :hide_followers_count, default: false + + namespace :web do + setting :crop_images, default: true + setting :advanced_layout, default: false + setting :trends, default: true + setting :use_blurhash, default: true + setting :use_pending_items, default: false + setting :use_system_font, default: false + setting :disable_swiping, default: false + setting :delete_modal, default: true + setting :reblog_modal, default: false + setting :unfollow_modal, default: true + setting :favourite_modal, default: false + setting :reduce_motion, default: false + setting :expand_content_warnings, default: false + setting :display_media, default: 'default', in: %w(default show_all hide_all) + setting :auto_play, default: false + setting :use_system_emoji_font, default: false + end + + namespace :notification_emails do + setting :follow, default: true + setting :reblog, default: false + setting :favourite, default: false + setting :mention, default: true + setting :follow_request, default: true + setting :report, default: true + setting :pending_account, default: true + setting :trends, default: true + setting :link_trends, default: false + setting :status_trends, default: false + setting :appeal, default: true + end + + namespace :interactions do + setting :must_be_follower, default: false + setting :must_be_following, default: false + setting :must_be_following_dm, default: false + end + + def initialize(original_hash) + @original_hash = original_hash || {} + end + + def [](key) + key = key.to_sym + + raise KeyError, "Undefined setting: #{key}" unless self.class.definition_for?(key) + + if @original_hash.key?(key) + @original_hash[key] + else + self.class.definition_for(key).default_value + end + end + + def []=(key, value) + key = key.to_sym + + raise KeyError, "Undefined setting: #{key}" unless self.class.definition_for?(key) + + typecast_value = self.class.definition_for(key).type_cast(value) + + if typecast_value.nil? + @original_hash.delete(key) + else + @original_hash[key] = typecast_value + end + end + + def update(params) + params.each do |k, v| + self[k] = v unless v.nil? + end + end + + keys.each do |key| + define_method(key) do + self[key] + end + end + + def as_json + @original_hash + end +end diff --git a/app/models/user_settings/dsl.rb b/app/models/user_settings/dsl.rb new file mode 100644 index 0000000000..26238bbbe8 --- /dev/null +++ b/app/models/user_settings/dsl.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +module UserSettings::DSL + module ClassMethods + def setting(key, options = {}) + @definitions ||= {} + + UserSettings::Setting.new(key, options).tap do |s| + @definitions[s.key] = s + end + end + + def namespace(key, &block) + @definitions ||= {} + + UserSettings::Namespace.new(key).configure(&block).tap do |n| + @definitions.merge!(n.definitions) + end + end + + def keys + @definitions.keys + end + + def definition_for(key) + @definitions[key.to_sym] + end + + def definition_for?(key) + @definitions.key?(key.to_sym) + end + end + + def self.included(base) + base.extend ClassMethods + end +end diff --git a/app/models/user_settings/glue.rb b/app/models/user_settings/glue.rb new file mode 100644 index 0000000000..02066a4110 --- /dev/null +++ b/app/models/user_settings/glue.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module UserSettings::Glue + def to_model + self + end + + def to_key + '' + end + + def persisted? + false + end + + def type_for_attribute(key) + self.class.definition_for(key)&.type + end + + def has_attribute?(key) # rubocop:disable Naming/PredicateName + self.class.definition_for?(key) + end +end diff --git a/app/models/user_settings/namespace.rb b/app/models/user_settings/namespace.rb new file mode 100644 index 0000000000..b8f7e092e8 --- /dev/null +++ b/app/models/user_settings/namespace.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +class UserSettings::Namespace + attr_reader :name, :definitions + + def initialize(name) + @name = name.to_sym + @definitions = {} + end + + def configure(&block) + instance_eval(&block) + self + end + + def setting(key, options = {}) + UserSettings::Setting.new(key, options.merge(namespace: name)).tap do |s| + @definitions[s.key] = s + end + end +end diff --git a/app/models/user_settings/setting.rb b/app/models/user_settings/setting.rb new file mode 100644 index 0000000000..5f5504254a --- /dev/null +++ b/app/models/user_settings/setting.rb @@ -0,0 +1,49 @@ +# frozen_string_literal: true + +class UserSettings::Setting + attr_reader :name, :namespace, :in + + def initialize(name, options = {}) + @name = name.to_sym + @default_value = options[:default] + @namespace = options[:namespace] + @in = options[:in] + end + + def default_value + if @default_value.respond_to?(:call) + @default_value.call + else + @default_value + end + end + + def type + case default_value + when TrueClass, FalseClass + ActiveModel::Type::Boolean.new + else + ActiveModel::Type::String.new + end + end + + def type_cast(value) + if type.respond_to?(:cast) + type.cast(value) + else + value + end + end + + def to_a + [key, default_value] + end + + def key + if namespace + "#{namespace}.#{name}".to_sym + else + name + end + end +end diff --git a/app/models/webhook.rb b/app/models/webhook.rb index 4aafb1257b..9a056a3862 100644 --- a/app/models/webhook.rb +++ b/app/models/webhook.rb @@ -17,7 +17,10 @@ class Webhook < ApplicationRecord EVENTS = %w( account.approved account.created + account.updated report.created + status.created + status.updated ).freeze scope :enabled, -> { where(enabled: true) } diff --git a/app/presenters/instance_presenter.rb b/app/presenters/instance_presenter.rb index 50e2a51566..25df4d85aa 100644 --- a/app/presenters/instance_presenter.rb +++ b/app/presenters/instance_presenter.rb @@ -22,10 +22,6 @@ class InstancePresenter < ActiveModelSerializers::Model ContactPresenter.new end - def closed_registrations_message - Setting.closed_registrations_message - end - def description Setting.site_short_description end @@ -34,10 +30,6 @@ class InstancePresenter < ActiveModelSerializers::Model Setting.site_extended_description end - def privacy_policy - Setting.site_terms - end - def status_page_url Setting.status_page_url end diff --git a/app/serializers/activitypub/note_serializer.rb b/app/serializers/activitypub/note_serializer.rb index dc810be956..28122393c2 100644 --- a/app/serializers/activitypub/note_serializer.rb +++ b/app/serializers/activitypub/note_serializer.rb @@ -34,6 +34,7 @@ class ActivityPub::NoteSerializer < ActivityPub::Serializer def id raise Mastodon::NotPermittedError, 'Local-only statuses should not be serialized' if object.local_only? && !instance_options[:allow_local_only] + ActivityPub::TagManager.instance.uri_for(object) end diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb index 2cac42e8de..45ee06e12c 100644 --- a/app/serializers/initial_state_serializer.rb +++ b/app/serializers/initial_state_serializer.rb @@ -44,7 +44,6 @@ class InitialStateSerializer < ActiveModel::Serializer timeline_preview: Setting.timeline_preview, activity_api_enabled: Setting.activity_api_enabled, single_user_mode: Rails.configuration.x.single_user_mode, - translation_enabled: TranslationService.configured?, trends_as_landing_page: Setting.trends_as_landing_page, status_page_url: Setting.status_page_url, } diff --git a/app/serializers/rest/account_serializer.rb b/app/serializers/rest/account_serializer.rb index e6c8fe4b21..d4e7ac9749 100644 --- a/app/serializers/rest/account_serializer.rb +++ b/app/serializers/rest/account_serializer.rb @@ -91,7 +91,7 @@ class REST::AccountSerializer < ActiveModel::Serializer end def followers_count - (Setting.hide_followers_count || object.user&.setting_hide_followers_count) ? -1 : object.followers_count + Setting.hide_followers_count || object.user&.setting_hide_followers_count ? -1 : object.followers_count end def display_name diff --git a/app/serializers/rest/admin/webhook_event_serializer.rb b/app/serializers/rest/admin/webhook_event_serializer.rb index fe0ac23f98..b6d2616e53 100644 --- a/app/serializers/rest/admin/webhook_event_serializer.rb +++ b/app/serializers/rest/admin/webhook_event_serializer.rb @@ -7,6 +7,8 @@ class REST::Admin::WebhookEventSerializer < ActiveModel::Serializer REST::Admin::AccountSerializer when 'Report' REST::Admin::ReportSerializer + when 'Status' + REST::StatusSerializer else super end diff --git a/app/serializers/rest/mute_serializer.rb b/app/serializers/rest/mute_serializer.rb index 043a2f0596..c9b55ff162 100644 --- a/app/serializers/rest/mute_serializer.rb +++ b/app/serializers/rest/mute_serializer.rb @@ -2,7 +2,7 @@ class REST::MuteSerializer < ActiveModel::Serializer include RoutingHelper - + attributes :id, :account, :target_account, :created_at, :hide_notifications def account @@ -12,4 +12,4 @@ class REST::MuteSerializer < ActiveModel::Serializer def target_account REST::AccountSerializer.new(object.target_account) end -end \ No newline at end of file +end diff --git a/app/serializers/rest/status_serializer.rb b/app/serializers/rest/status_serializer.rb index f33f499a5d..033db6cc03 100644 --- a/app/serializers/rest/status_serializer.rb +++ b/app/serializers/rest/status_serializer.rb @@ -13,7 +13,7 @@ class REST::StatusSerializer < ActiveModel::Serializer attribute :muted, if: :current_user? attribute :bookmarked, if: :current_user? attribute :pinned, if: :pinnable? - attribute :local_only if :local? + attribute :local_only, if: :local? has_many :filtered, serializer: REST::FilterResultSerializer, if: :current_user? attribute :content, unless: :source_requested? @@ -32,6 +32,8 @@ class REST::StatusSerializer < ActiveModel::Serializer has_one :preview_card, key: :card, serializer: REST::PreviewCardSerializer has_one :preloadable_poll, key: :poll, serializer: REST::PollSerializer + delegate :local?, to: :object + def id object.id.to_s end diff --git a/app/services/backup_service.rb b/app/services/backup_service.rb index a9d7402115..c5e7a8e580 100644 --- a/app/services/backup_service.rb +++ b/app/services/backup_service.rb @@ -154,7 +154,7 @@ class BackupService < BaseService object, serializer: serializer, adapter: ActivityPub::Adapter, - allow_local_only: true, + allow_local_only: true ).as_json end diff --git a/app/services/batched_remove_status_service.rb b/app/services/batched_remove_status_service.rb index e2c3700572..a48386ba2b 100644 --- a/app/services/batched_remove_status_service.rb +++ b/app/services/batched_remove_status_service.rb @@ -48,9 +48,9 @@ class BatchedRemoveStatusService < BaseService # Cannot be batched @status_id_cutoff = Mastodon::Snowflake.id_at(2.weeks.ago) - redis.pipelined do + redis.pipelined do |pipeline| statuses.each do |status| - unpush_from_public_timelines(status) + unpush_from_public_timelines(status, pipeline) end end end @@ -73,22 +73,22 @@ class BatchedRemoveStatusService < BaseService end end - def unpush_from_public_timelines(status) + def unpush_from_public_timelines(status, pipeline) return unless status.public_visibility? && status.id > @status_id_cutoff payload = Oj.dump(event: :delete, payload: status.id.to_s) - redis.publish('timeline:public', payload) - redis.publish(status.local? ? 'timeline:public:local' : 'timeline:public:remote', payload) + pipeline.publish('timeline:public', payload) + pipeline.publish(status.local? ? 'timeline:public:local' : 'timeline:public:remote', payload) if status.media_attachments.any? - redis.publish('timeline:public:media', payload) - redis.publish(status.local? ? 'timeline:public:local:media' : 'timeline:public:remote:media', payload) + pipeline.publish('timeline:public:media', payload) + pipeline.publish(status.local? ? 'timeline:public:local:media' : 'timeline:public:remote:media', payload) end status.tags.map { |tag| tag.name.mb_chars.downcase }.each do |hashtag| - redis.publish("timeline:hashtag:#{hashtag}", payload) - redis.publish("timeline:hashtag:#{hashtag}:local", payload) if status.local? + pipeline.publish("timeline:hashtag:#{hashtag}", payload) + pipeline.publish("timeline:hashtag:#{hashtag}:local", payload) if status.local? end end diff --git a/app/services/delete_account_service.rb b/app/services/delete_account_service.rb index a2d535d262..190a72e5c5 100644 --- a/app/services/delete_account_service.rb +++ b/app/services/delete_account_service.rb @@ -257,11 +257,11 @@ class DeleteAccountService < BaseService end def delete_actor! - ActivityPub::DeliveryWorker.push_bulk(delivery_inboxes) do |inbox_url| + ActivityPub::DeliveryWorker.push_bulk(delivery_inboxes, limit: 1_000) do |inbox_url| [delete_actor_json, @account.id, inbox_url] end - ActivityPub::LowPriorityDeliveryWorker.push_bulk(low_priority_delivery_inboxes) do |inbox_url| + ActivityPub::LowPriorityDeliveryWorker.push_bulk(low_priority_delivery_inboxes, limit: 1_000) do |inbox_url| [delete_actor_json, @account.id, inbox_url] end end diff --git a/app/services/fan_out_on_write_service.rb b/app/services/fan_out_on_write_service.rb index 8e74e152ed..3b14a6748a 100644 --- a/app/services/fan_out_on_write_service.rb +++ b/app/services/fan_out_on_write_service.rb @@ -116,7 +116,7 @@ class FanOutOnWriteService < BaseService end def deliver_to_direct_timelines! - FeedInsertWorker.push_bulk(@status.mentions.includes(:account).map(&:account).select { |mentioned_account| mentioned_account.local? }) do |account| + FeedInsertWorker.push_bulk(@status.mentions.includes(:account).map(&:account).select(&:local?)) do |account| [@status.id, account.id, 'direct', { 'update' => update? }] end end diff --git a/app/services/follow_migration_service.rb b/app/services/follow_migration_service.rb new file mode 100644 index 0000000000..cfe9093cbe --- /dev/null +++ b/app/services/follow_migration_service.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +class FollowMigrationService < FollowService + # Follow an account with the same settings as another account, and unfollow the old account once the request is sent + # @param [Account] source_account From which to follow + # @param [Account] target_account Account to follow + # @param [Account] old_target_account Account to unfollow once the follow request has been sent to the new one + # @option [Boolean] bypass_locked Whether to immediately follow the new account even if it is locked + def call(source_account, target_account, old_target_account, bypass_locked: false) + @old_target_account = old_target_account + + follow = source_account.active_relationships.find_by(target_account: old_target_account) + reblogs = follow&.show_reblogs? + notify = follow&.notify? + languages = follow&.languages + + super(source_account, target_account, reblogs: reblogs, notify: notify, languages: languages, bypass_locked: bypass_locked, bypass_limit: true) + end + + private + + def request_follow! + follow_request = @source_account.request_follow!(@target_account, **follow_options.merge(rate_limit: @options[:with_rate_limit], bypass_limit: @options[:bypass_limit])) + + if @target_account.local? + LocalNotificationWorker.perform_async(@target_account.id, follow_request.id, follow_request.class.name, 'follow_request') + UnfollowService.new.call(@source_account, @old_target_account, skip_unmerge: true) + elsif @target_account.activitypub? + ActivityPub::MigratedFollowDeliveryWorker.perform_async(build_json(follow_request), @source_account.id, @target_account.inbox_url, @old_target_account.id) + end + + follow_request + end + + def direct_follow! + follow = super + UnfollowService.new.call(@source_account, @old_target_account, skip_unmerge: true) + follow + end +end diff --git a/app/services/import_service.rb b/app/services/import_service.rb index 940c236d4c..56f191c1fe 100644 --- a/app/services/import_service.rb +++ b/app/services/import_service.rb @@ -120,7 +120,7 @@ class ImportService < BaseService end account_ids = statuses.map(&:account_id) - preloaded_relations = relations_map_for_account(@account, account_ids) + preloaded_relations = @account.relations_map(account_ids, skip_blocking_and_muting: true) statuses.keep_if { |status| StatusPolicy.new(@account, status, preloaded_relations).show? } @@ -138,14 +138,4 @@ class ImportService < BaseService def import_data Paperclip.io_adapters.for(@import.data).read.force_encoding(Encoding::UTF_8) end - - def relations_map_for_account(account, account_ids) - { - blocking: {}, - blocked_by: Account.blocked_by_map(account_ids, account.id), - muting: {}, - following: Account.following_map(account_ids, account.id), - domain_blocking_by_domain: {}, - } - end end diff --git a/app/services/notify_service.rb b/app/services/notify_service.rb index 4c7acbcac1..069f370cfc 100644 --- a/app/services/notify_service.rb +++ b/app/services/notify_service.rb @@ -3,6 +3,12 @@ class NotifyService < BaseService include Redisable + NON_EMAIL_TYPES = %i( + admin.report + admin.sign_up + update + ).freeze + def call(recipient, type, activity) @recipient = recipient @activity = activity @@ -36,11 +42,11 @@ class NotifyService < BaseService end def optional_non_follower? - @recipient.user.settings.interactions['must_be_follower'] && !@notification.from_account.following?(@recipient) + @recipient.user.settings['interactions.must_be_follower'] && !@notification.from_account.following?(@recipient) end def optional_non_following? - @recipient.user.settings.interactions['must_be_following'] && !following_sender? + @recipient.user.settings['interactions.must_be_following'] && !following_sender? end def message? @@ -82,7 +88,7 @@ class NotifyService < BaseService def optional_non_following_and_direct? direct_message? && - @recipient.user.settings.interactions['must_be_following_dm'] && + @recipient.user.settings['interactions.must_be_following_dm'] && !following_sender? && !response_to_recipient? end @@ -171,6 +177,6 @@ class NotifyService < BaseService end def send_email_for_notification_type? - @recipient.user.settings.notification_emails[@notification.type.to_s] + NON_EMAIL_TYPES.exclude?(@notification.type) && @recipient.user.settings["notification_emails.#{@notification.type}"] end end diff --git a/app/services/post_status_service.rb b/app/services/post_status_service.rb index 6762261cb5..13e3da4c4a 100644 --- a/app/services/post_status_service.rb +++ b/app/services/post_status_service.rb @@ -62,17 +62,22 @@ class PostStatusService < BaseService private - def preprocess_attributes! - if @text.blank? && @options[:spoiler_text].present? - @text = '.' - if @media&.find(&:video?) || @media&.find(&:gifv?) - @text = '📹' - elsif @media&.find(&:audio?) - @text = '🎵' - elsif @media&.find(&:image?) - @text = '🖼' - end + def fill_blank_text! + return unless @text.blank? && @options[:spoiler_text].present? + + if @media&.any?(&:video?) || @media&.any?(&:gifv?) + @text = '📹' + elsif @media&.any?(&:audio?) + @text = '🎵' + elsif @media&.any?(&:image?) + @text = '🖼' + else + @text = '.' end + end + + def preprocess_attributes! + fill_blank_text! @sensitive = (@options[:sensitive].nil? ? @account.user&.setting_default_sensitive : @options[:sensitive]) || @options[:spoiler_text].present? @visibility = @options[:visibility] || @account.user&.setting_default_privacy @visibility = :unlisted if @visibility&.to_sym == :public && @account.silenced? diff --git a/app/services/remove_domains_from_followers_service.rb b/app/services/remove_domains_from_followers_service.rb new file mode 100644 index 0000000000..d76763409d --- /dev/null +++ b/app/services/remove_domains_from_followers_service.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +class RemoveDomainsFromFollowersService < BaseService + include Payloadable + + def call(source_account, target_domains) + source_account.passive_relationships.where(account_id: Account.where(domain: target_domains)).find_each do |follow| + follow.destroy + + create_notification(follow) if source_account.local? && !follow.account.local? && follow.account.activitypub? + end + end + + private + + def create_notification(follow) + ActivityPub::DeliveryWorker.perform_async(build_json(follow), follow.target_account_id, follow.account.inbox_url) + end + + def build_json(follow) + Oj.dump(serialize_payload(follow, ActivityPub::RejectFollowSerializer)) + end +end diff --git a/app/services/remove_status_service.rb b/app/services/remove_status_service.rb index 58bf1dcb77..4f98ccea70 100644 --- a/app/services/remove_status_service.rb +++ b/app/services/remove_status_service.rb @@ -90,7 +90,7 @@ class RemoveStatusService < BaseService status_reach_finder = StatusReachFinder.new(@status, unsafe: true) - ActivityPub::DeliveryWorker.push_bulk(status_reach_finder.inboxes) do |inbox_url| + ActivityPub::DeliveryWorker.push_bulk(status_reach_finder.inboxes, limit: 1_000) do |inbox_url| [signed_activity_json, @account.id, inbox_url] end end diff --git a/app/services/search_service.rb b/app/services/search_service.rb index 93b72fa0c4..b1ce5453fb 100644 --- a/app/services/search_service.rb +++ b/app/services/search_service.rb @@ -49,7 +49,7 @@ class SearchService < BaseService results = definition.limit(@limit).offset(@offset).objects.compact account_ids = results.map(&:account_id) account_domains = results.map(&:account_domain) - preloaded_relations = relations_map_for_account(@account, account_ids, account_domains) + preloaded_relations = @account.relations_map(account_ids, account_domains) results.reject { |status| StatusFilter.new(status, @account, preloaded_relations).filtered? } rescue Faraday::ConnectionFailed, Parslet::ParseFailed @@ -111,16 +111,6 @@ class SearchService < BaseService @options[:type].blank? || @options[:type] == 'statuses' end - def relations_map_for_account(account, account_ids, domains) - { - blocking: Account.blocking_map(account_ids, account.id), - blocked_by: Account.blocked_by_map(account_ids, account.id), - muting: Account.muting_map(account_ids, account.id), - following: Account.following_map(account_ids, account.id), - domain_blocking_by_domain: Account.domain_blocking_map_by_domain(domains, account.id), - } - end - def parsed_query SearchQueryTransformer.new.apply(SearchQueryParser.new.parse(@query)) end diff --git a/app/services/suspend_account_service.rb b/app/services/suspend_account_service.rb index 211544fea6..cfb3eb5831 100644 --- a/app/services/suspend_account_service.rb +++ b/app/services/suspend_account_service.rb @@ -31,13 +31,13 @@ class SuspendAccountService < BaseService # counterpart to this operation, i.e. you can't then force a remote # account to re-follow you, so this part is not reversible. - follows = Follow.where(account: @account).to_a + Follow.where(account: @account).find_in_batches do |follows| + ActivityPub::DeliveryWorker.push_bulk(follows) do |follow| + [Oj.dump(serialize_payload(follow, ActivityPub::RejectFollowSerializer)), follow.target_account_id, @account.inbox_url] + end - ActivityPub::DeliveryWorker.push_bulk(follows) do |follow| - [Oj.dump(serialize_payload(follow, ActivityPub::RejectFollowSerializer)), follow.target_account_id, @account.inbox_url] + follows.each(&:destroy) end - - follows.each(&:destroy) end def distribute_update_actor! @@ -45,7 +45,7 @@ class SuspendAccountService < BaseService account_reach_finder = AccountReachFinder.new(@account) - ActivityPub::DeliveryWorker.push_bulk(account_reach_finder.inboxes) do |inbox_url| + ActivityPub::DeliveryWorker.push_bulk(account_reach_finder.inboxes, limit: 1_000) do |inbox_url| [signed_activity_json, @account.id, inbox_url] end end diff --git a/app/services/translate_status_service.rb b/app/services/translate_status_service.rb index 539a0d9db5..796f13a0dd 100644 --- a/app/services/translate_status_service.rb +++ b/app/services/translate_status_service.rb @@ -6,19 +6,29 @@ class TranslateStatusService < BaseService include FormattingHelper def call(status, target_language) - raise Mastodon::NotPermittedError unless status.public_visibility? || status.unlisted_visibility? - @status = status @content = status_content_format(@status) @target_language = target_language + raise Mastodon::NotPermittedError unless permitted? + Rails.cache.fetch("translations/#{@status.language}/#{@target_language}/#{content_hash}", expires_in: CACHE_TTL) { translation_backend.translate(@content, @status.language, @target_language) } end private def translation_backend - TranslationService.configured + @translation_backend ||= TranslationService.configured + end + + def permitted? + return false unless @status.distributable? && @status.content.present? && TranslationService.configured? + + languages[@status.language]&.include?(@target_language) + end + + def languages + Rails.cache.fetch('translation_service/languages', expires_in: 7.days, race_condition_ttl: 1.hour) { TranslationService.configured.languages } end def content_hash diff --git a/app/services/unsuspend_account_service.rb b/app/services/unsuspend_account_service.rb index 70667308ec..d851a0f708 100644 --- a/app/services/unsuspend_account_service.rb +++ b/app/services/unsuspend_account_service.rb @@ -41,7 +41,7 @@ class UnsuspendAccountService < BaseService account_reach_finder = AccountReachFinder.new(@account) - ActivityPub::DeliveryWorker.push_bulk(account_reach_finder.inboxes) do |inbox_url| + ActivityPub::DeliveryWorker.push_bulk(account_reach_finder.inboxes, limit: 1_000) do |inbox_url| [signed_activity_json, @account.id, inbox_url] end end diff --git a/app/services/update_account_service.rb b/app/services/update_account_service.rb index 71976ab005..4604d71b2b 100644 --- a/app/services/update_account_service.rb +++ b/app/services/update_account_service.rb @@ -22,7 +22,7 @@ class UpdateAccountService < BaseService def authorize_all_follow_requests(account) follow_requests = FollowRequest.where(target_account: account) follow_requests = follow_requests.preload(:account).select { |req| !req.account.silenced? } - AuthorizeFollowWorker.push_bulk(follow_requests) do |req| + AuthorizeFollowWorker.push_bulk(follow_requests, limit: 1_000) do |req| [req.account_id, req.target_account_id] end end diff --git a/app/services/update_status_service.rb b/app/services/update_status_service.rb index 7a82458390..de6f1e6d1a 100644 --- a/app/services/update_status_service.rb +++ b/app/services/update_status_service.rb @@ -143,9 +143,9 @@ class UpdateStatusService < BaseService poll = @status.preloadable_poll # If the poll had no expiration date set but now has, or now has a sooner - # expiration date, and people have voted, schedule a notification + # expiration date, schedule a notification - return unless poll.present? && poll.expires_at.present? && poll.votes.exists? + return unless poll.present? && poll.expires_at.present? PollExpirationNotifyWorker.remove_from_scheduled(poll.id) if @previous_expires_at.present? && @previous_expires_at > poll.expires_at PollExpirationNotifyWorker.perform_at(poll.expires_at + 5.minutes, poll.id) diff --git a/app/validators/ed25519_key_validator.rb b/app/validators/ed25519_key_validator.rb index 00a448d5a2..adf49296b2 100644 --- a/app/validators/ed25519_key_validator.rb +++ b/app/validators/ed25519_key_validator.rb @@ -6,7 +6,7 @@ class Ed25519KeyValidator < ActiveModel::EachValidator key = Base64.decode64(value) - record.errors[attribute] << I18n.t('crypto.errors.invalid_key') unless verified?(key) + record.errors.add(attribute, I18n.t('crypto.errors.invalid_key')) unless verified?(key) end private diff --git a/app/validators/ed25519_signature_validator.rb b/app/validators/ed25519_signature_validator.rb index 77a21b8373..0e74c231ec 100644 --- a/app/validators/ed25519_signature_validator.rb +++ b/app/validators/ed25519_signature_validator.rb @@ -8,7 +8,7 @@ class Ed25519SignatureValidator < ActiveModel::EachValidator signature = Base64.decode64(value) message = option_to_value(record, :message) - record.errors[attribute] << I18n.t('crypto.errors.invalid_signature') unless verified?(verify_key, signature, message) + record.errors.add(attribute, I18n.t('crypto.errors.invalid_signature')) unless verified?(verify_key, signature, message) end private diff --git a/app/validators/status_pin_validator.rb b/app/validators/status_pin_validator.rb index 9466a81fef..4af7bd295c 100644 --- a/app/validators/status_pin_validator.rb +++ b/app/validators/status_pin_validator.rb @@ -7,6 +7,6 @@ class StatusPinValidator < ActiveModel::Validator pin.errors.add(:base, I18n.t('statuses.pin_errors.reblog')) if pin.status.reblog? pin.errors.add(:base, I18n.t('statuses.pin_errors.ownership')) if pin.account_id != pin.status.account_id pin.errors.add(:base, I18n.t('statuses.pin_errors.direct')) if pin.status.direct_visibility? - pin.errors.add(:base, I18n.t('statuses.pin_errors.limit')) if pin.account.status_pins.count >= MAX_PINNED && pin.account.local? + pin.errors.add(:base, I18n.t('statuses.pin_errors.limit')) if pin.account.status_pins.count >= MAX_PINNED && pin.account.local? end end diff --git a/app/views/accounts/show.rss.ruby b/app/views/accounts/show.rss.ruby index 34e29d483f..7a77511ceb 100644 --- a/app/views/accounts/show.rss.ruby +++ b/app/views/accounts/show.rss.ruby @@ -5,7 +5,7 @@ RSS::Builder.build do |doc| doc.image(full_asset_url(@account.avatar.url(:original)), display_name(@account), params[:tag].present? ? short_account_tag_url(@account, params[:tag]) : short_account_url(@account)) doc.last_build_date(@statuses.first.created_at) if @statuses.any? doc.icon(full_asset_url(@account.avatar.url(:original))) - doc.generator("Mastodon v#{Mastodon::Version.to_s}") + doc.generator("Mastodon v#{Mastodon::Version}") @statuses.each do |status| doc.item do |item| @@ -18,12 +18,12 @@ RSS::Builder.build do |doc| item.enclosure(full_asset_url(media.file.url(:original, false)), media.file.content_type, media.file.size) end - status.ordered_media_attachments.each do |media| - item.media_content(full_asset_url(media.file.url(:original, false)), media.file.content_type, media.file.size) do |media_content| - media_content.medium(media.gifv? ? 'image' : media.type.to_s) + status.ordered_media_attachments.each do |media_attachment| + item.media_content(full_asset_url(media_attachment.file.url(:original, false)), media_attachment.file.content_type, media_attachment.file.size) do |media_content| + media_content.medium(media_attachment.gifv? ? 'image' : media_attachment.type.to_s) media_content.rating(status.sensitive? ? 'adult' : 'nonadult') - media_content.description(media.description) if media.description.present? - media_content.thumbnail(media.thumbnail.url(:original, false)) if media.thumbnail? + media_content.description(media_attachment.description) if media_attachment.description.present? + media_content.thumbnail(media_attachment.thumbnail.url(:original, false)) if media_attachment.thumbnail? end end diff --git a/app/views/admin/account_actions/new.html.haml b/app/views/admin/account_actions/new.html.haml index c7bb618dfb..2a0cae15a0 100644 --- a/app/views/admin/account_actions/new.html.haml +++ b/app/views/admin/account_actions/new.html.haml @@ -5,7 +5,7 @@ = f.input :report_id, as: :hidden .fields-group - = f.input :type, as: :radio_buttons, collection: Admin::AccountAction.types_for_account(@account), include_blank: false, wrapper: :with_block_label, label_method: ->(type) { safe_join([I18n.t("simple_form.labels.admin_account_action.types.#{type}"), content_tag(:span, I18n.t("simple_form.hints.admin_account_action.types.#{type}"), class: 'hint')])}, hint: t('simple_form.hints.admin_account_action.type_html', acct: @account.pretty_acct) + = f.input :type, as: :radio_buttons, collection: Admin::AccountAction.types_for_account(@account), include_blank: false, wrapper: :with_block_label, label_method: ->(type) { safe_join([I18n.t("simple_form.labels.admin_account_action.types.#{type}"), content_tag(:span, I18n.t("simple_form.hints.admin_account_action.types.#{type}"), class: 'hint')]) }, hint: t('simple_form.hints.admin_account_action.type_html', acct: @account.pretty_acct) - if @account.local? %hr.spacer/ diff --git a/app/views/admin/accounts/show.html.haml b/app/views/admin/accounts/show.html.haml index c8a9d33a70..44867d0a26 100644 --- a/app/views/admin/accounts/show.html.haml +++ b/app/views/admin/accounts/show.html.haml @@ -187,7 +187,7 @@ %th= t('admin.accounts.shared_inbox_url') %td = @account.shared_inbox_url - = fa_icon DeliveryFailureTracker.available?(@account.shared_inbox_url) ? 'check': 'times' + = fa_icon DeliveryFailureTracker.available?(@account.shared_inbox_url) ? 'check' : 'times' %td - if @domain_block.nil? = table_link_to 'ban', t('admin.domain_blocks.add_new'), new_admin_domain_block_path(_domain: @account.domain) @@ -206,7 +206,7 @@ - if @deletion_request.present? = link_to t('admin.accounts.delete'), admin_account_path(@account.id), method: :delete, class: 'button button--destructive', data: { confirm: t('admin.accounts.are_you_sure') } if can?(:destroy, @account) - else - %div.action-buttons + .action-buttons %div - if @account.local? && @account.user_approved? = link_to t('admin.accounts.warn'), new_admin_account_action_path(@account.id, type: 'none'), class: 'button' if can?(:warn, @account) @@ -276,9 +276,9 @@ %hr.spacer/ - if @account.user&.invite_request&.text&.present? - %div.speech-bubble - %div.speech-bubble__bubble + .speech-bubble + .speech-bubble__bubble = @account.user&.invite_request&.text - %div.speech-bubble__owner + .speech-bubble__owner = admin_account_link_to @account = t('admin.accounts.invite_request_text') diff --git a/app/views/admin/action_logs/index.html.haml b/app/views/admin/action_logs/index.html.haml index 7869570e6e..c4929cc422 100644 --- a/app/views/admin/action_logs/index.html.haml +++ b/app/views/admin/action_logs/index.html.haml @@ -13,10 +13,10 @@ .filter-subset.filter-subset--with-select %strong= t('admin.action_logs.filter_by_action') .input.select.optional - = select_tag :action_type, options_for_select(Admin::ActionLogFilter::ACTION_TYPE_MAP.keys.map { |key| [I18n.t("admin.action_logs.action_types.#{key}"), key]}, params[:action_type]), prompt: I18n.t('admin.accounts.moderation.all') + = select_tag :action_type, options_for_select(Admin::ActionLogFilter::ACTION_TYPE_MAP.keys.map { |key| [I18n.t("admin.action_logs.action_types.#{key}"), key] }, params[:action_type]), prompt: I18n.t('admin.accounts.moderation.all') - if @action_logs.empty? - %div.muted-hint.center-text + .muted-hint.center-text = t 'admin.action_logs.empty' - else .report-notes diff --git a/app/views/admin/announcements/index.html.haml b/app/views/admin/announcements/index.html.haml index 40f02b914e..ce520f59d3 100644 --- a/app/views/admin/announcements/index.html.haml +++ b/app/views/admin/announcements/index.html.haml @@ -12,7 +12,7 @@ %li= filter_link_to safe_join([t('admin.announcements.live'), "(#{number_with_delimiter(Announcement.published.count)})"], ' '), published: '1', unpublished: nil - if @announcements.empty? - %div.muted-hint.center-text + .muted-hint.center-text = t 'admin.announcements.empty' - else .announcements-list diff --git a/app/views/admin/change_emails/show.html.haml b/app/views/admin/change_emails/show.html.haml index bc00d61142..8536a18d2c 100644 --- a/app/views/admin/change_emails/show.html.haml +++ b/app/views/admin/change_emails/show.html.haml @@ -9,4 +9,4 @@ = f.input :unconfirmed_email, wrapper: :with_label, label: t('admin.accounts.change_email.new_email') .actions - = f.button :submit, class: "button", value: t('admin.accounts.change_email.submit') + = f.button :submit, class: 'button', value: t('admin.accounts.change_email.submit') diff --git a/app/views/admin/custom_emojis/index.html.haml b/app/views/admin/custom_emojis/index.html.haml index b6cf7ba646..89eb653e3d 100644 --- a/app/views/admin/custom_emojis/index.html.haml +++ b/app/views/admin/custom_emojis/index.html.haml @@ -12,12 +12,12 @@ %li= filter_link_to t('admin.accounts.location.all'), local: nil, remote: nil %li - if selected? local: '1', remote: nil - = filter_link_to t('admin.accounts.location.local'), {local: nil, remote: nil}, {local: '1', remote: nil} + = filter_link_to t('admin.accounts.location.local'), { local: nil, remote: nil }, { local: '1', remote: nil } - else = filter_link_to t('admin.accounts.location.local'), local: '1', remote: nil %li - if selected? remote: '1', local: nil - = filter_link_to t('admin.accounts.location.remote'), {remote: nil, local: nil}, {remote: '1', local: nil} + = filter_link_to t('admin.accounts.location.remote'), { remote: nil, local: nil }, { remote: '1', local: nil } - else = filter_link_to t('admin.accounts.location.remote'), remote: '1', local: nil diff --git a/app/views/admin/dashboard/index.html.haml b/app/views/admin/dashboard/index.html.haml index 66e0c02514..3597152e09 100644 --- a/app/views/admin/dashboard/index.html.haml +++ b/app/views/admin/dashboard/index.html.haml @@ -9,7 +9,7 @@ - unless @system_checks.empty? .flash-message-stack - @system_checks.each do |message| - .flash-message.warning + .flash-message{ class: message.critical ? 'alert' : 'warning' } = t("admin.system_checks.#{message.key}.message_html", value: message.value ? content_tag(:strong, message.value) : nil) - if message.action = link_to t("admin.system_checks.#{message.key}.action"), message.action @@ -56,7 +56,7 @@ = react_admin_component :dimension, dimension: 'servers', start_at: @time_period.first, end_at: @time_period.last, limit: 8, label: t('admin.dashboard.top_servers') .dashboard__item.dashboard__item--span-double-column - = react_admin_component :retention, start_at: @time_period.last - 6.months, end_at: @time_period.last, frequency: 'month' + = react_admin_component :retention, start_at: @time_period.last - 6.months, end_at: @time_period.last, frequency: 'month' .dashboard__item.dashboard__item--span-double-row = react_admin_component :trends, limit: 7 diff --git a/app/views/admin/disputes/appeals/index.html.haml b/app/views/admin/disputes/appeals/index.html.haml index 42e9c4b1d7..7f04dd40fb 100644 --- a/app/views/admin/disputes/appeals/index.html.haml +++ b/app/views/admin/disputes/appeals/index.html.haml @@ -10,7 +10,7 @@ %li= filter_link_to t('admin.trends.rejected'), status: 'rejected' - if @appeals.empty? - %div.muted-hint.center-text + .muted-hint.center-text = t 'admin.disputes.appeals.empty' - else .announcements-list diff --git a/app/views/admin/instances/index.html.haml b/app/views/admin/instances/index.html.haml index abb2d8c0e5..3e70a51eec 100644 --- a/app/views/admin/instances/index.html.haml +++ b/app/views/admin/instances/index.html.haml @@ -44,7 +44,7 @@ %hr.spacer/ - if @instances.empty? - %div.muted-hint.center-text + .muted-hint.center-text = t 'admin.instances.empty' - else = render partial: 'instance', collection: @instances diff --git a/app/views/admin/reports/actions/preview.html.haml b/app/views/admin/reports/actions/preview.html.haml index 58745319c8..70edb48d80 100644 --- a/app/views/admin/reports/actions/preview.html.haml +++ b/app/views/admin/reports/actions/preview.html.haml @@ -54,15 +54,15 @@ .strike-card__statuses-list__item - if (status = status_map[status_id.to_i]) .one-liner - = link_to short_account_status_url(@report.target_account, status_id), class: 'emojify' do - = one_line_preview(status) + .emojify= one_line_preview(status) - - status.ordered_media_attachments.each do |media_attachment| - %abbr{ title: media_attachment.description } - = fa_icon 'link' - = media_attachment.file_file_name + - status.ordered_media_attachments.each do |media_attachment| + %abbr{ title: media_attachment.description } + = fa_icon 'link' + = media_attachment.file_file_name .strike-card__statuses-list__item__meta - %time.formatted{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at) + = link_to ActivityPub::TagManager.instance.url_for(status), target: '_blank' do + %time.formatted{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at) - unless status.application.nil? · = status.application.name diff --git a/app/views/admin/rules/index.html.haml b/app/views/admin/rules/index.html.haml index 4fb993ad07..aa6a4c1b6a 100644 --- a/app/views/admin/rules/index.html.haml +++ b/app/views/admin/rules/index.html.haml @@ -18,7 +18,7 @@ %hr.spacer/ - if @rules.empty? - %div.muted-hint.center-text + .muted-hint.center-text = t 'admin.rules.empty' - else .announcements-list diff --git a/app/views/admin/statuses/show.html.haml b/app/views/admin/statuses/show.html.haml index 1e1e63f37d..e070e5872b 100644 --- a/app/views/admin/statuses/show.html.haml +++ b/app/views/admin/statuses/show.html.haml @@ -31,7 +31,7 @@ %td - if @status.trend.allowed? %abbr{ title: t('admin.trends.tags.current_score', score: @status.trend.score) }= t('admin.trends.tags.trending_rank', rank: @status.trend.rank) - - elsif @status.trend.requires_review? + - elsif @status.requires_review? = t('admin.trends.pending_review') - else = t('admin.trends.not_allowed_to_trend') diff --git a/app/views/admin/warning_presets/index.html.haml b/app/views/admin/warning_presets/index.html.haml index dbc23fa308..b26a13d966 100644 --- a/app/views/admin/warning_presets/index.html.haml +++ b/app/views/admin/warning_presets/index.html.haml @@ -17,7 +17,7 @@ %hr.spacer/ - if @warning_presets.empty? - %div.muted-hint.center-text + .muted-hint.center-text = t 'admin.warning_presets.empty' - else .announcements-list diff --git a/app/views/admin/webhooks/index.html.haml b/app/views/admin/webhooks/index.html.haml index e4499e078b..603d0edd25 100644 --- a/app/views/admin/webhooks/index.html.haml +++ b/app/views/admin/webhooks/index.html.haml @@ -9,7 +9,7 @@ %hr.spacer/ - if @webhooks.empty? - %div.muted-hint.center-text + .muted-hint.center-text = t 'admin.webhooks.empty' - else .applications-list diff --git a/app/views/application/_card.html.haml b/app/views/application/_card.html.haml index 3d0e6b1dad..719856d495 100644 --- a/app/views/application/_card.html.haml +++ b/app/views/application/_card.html.haml @@ -13,4 +13,4 @@ %strong.emojify.p-name= display_name(account, custom_emojify: true) %span = acct(account) - = fa_icon('lock', { data: ({hidden: true} unless account.locked?)}) + = fa_icon('lock', { data: ({ hidden: true } unless account.locked?) }) diff --git a/app/views/application/_sidebar.html.haml b/app/views/application/_sidebar.html.haml deleted file mode 100644 index 6d18668b08..0000000000 --- a/app/views/application/_sidebar.html.haml +++ /dev/null @@ -1,16 +0,0 @@ -.hero-widget - .hero-widget__img - = image_tag @instance_presenter.thumbnail&.file&.url(:'@1x') || asset_pack_path('media/images/preview.png'), alt: @instance_presenter.title - - .hero-widget__text - %p= @instance_presenter.description.html_safe.presence || t('about.about_mastodon_html') - -- if Setting.trends && !(user_signed_in? && !current_user.setting_trends) - - trends = Trends.tags.query.allowed.limit(3) - - - unless trends.empty? - .endorsements-widget.trends-widget - %h4.emojify= t('footer.trending_now') - - - trends.each do |tag| - = react_component :hashtag, hashtag: ActiveModelSerializers::SerializableResource.new(tag, serializer: REST::TagSerializer, scope: current_user, scope_name: :current_user).as_json diff --git a/app/views/auth/registrations/_sessions.html.haml b/app/views/auth/registrations/_sessions.html.haml index c094dfd255..55d753c18a 100644 --- a/app/views/auth/registrations/_sessions.html.haml +++ b/app/views/auth/registrations/_sessions.html.haml @@ -20,7 +20,7 @@ %span{ title: session.user_agent }< = fa_icon "#{session_device_icon(session)} fw", 'aria-label': session_device_icon(session) = ' ' - = t 'sessions.description', browser: t("sessions.browsers.#{session.browser}", default: "#{session.browser}"), platform: t("sessions.platforms.#{session.platform}", default: "#{session.platform}") + = t 'sessions.description', browser: t("sessions.browsers.#{session.browser}", default: session.browser.to_s), platform: t("sessions.platforms.#{session.platform}", default: session.platform.to_s) %td %samp= session.ip %td diff --git a/app/views/auth/registrations/edit.html.haml b/app/views/auth/registrations/edit.html.haml index 60fd1635ef..27d3f331eb 100644 --- a/app/views/auth/registrations/edit.html.haml +++ b/app/views/auth/registrations/edit.html.haml @@ -8,7 +8,7 @@ = simple_form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put, class: 'auth_edit', novalidate: false }) do |f| = render 'shared/error_messages', object: resource - - if !use_seamless_external_login? || resource.encrypted_password.present? + - if (!use_seamless_external_login? || resource.encrypted_password.present?) && !omniauth_only? .fields-row .fields-row__column.fields-group.fields-row__column-6 = f.input :email, wrapper: :with_label, input_html: { 'aria-label': t('simple_form.labels.defaults.email') }, required: true, disabled: current_account.suspended? @@ -23,6 +23,8 @@ .actions = f.button :button, t('generic.save_changes'), type: :submit, class: 'button', disabled: current_account.suspended? + - elsif omniauth_only? && sso_account_settings.present? + = link_to t('users.go_to_sso_account_settings'), sso_account_settings - else %p.hint= t('users.seamless_external_login') diff --git a/app/views/auth/sessions/new.html.haml b/app/views/auth/sessions/new.html.haml index e98c1ff3de..7914e0157f 100644 --- a/app/views/auth/sessions/new.html.haml +++ b/app/views/auth/sessions/new.html.haml @@ -19,7 +19,7 @@ .actions = f.button :button, t('auth.login'), type: :submit -- if devise_mapping.omniauthable? and resource_class.omniauth_providers.any? +- if devise_mapping.omniauthable? && resource_class.omniauth_providers.any? .simple_form.alternative-login %h4= omniauth_only? ? t('auth.log_in_with') : t('auth.or_log_in_with') diff --git a/app/views/disputes/strikes/show.html.haml b/app/views/disputes/strikes/show.html.haml index 7797348dd7..ce52e470d9 100644 --- a/app/views/disputes/strikes/show.html.haml +++ b/app/views/disputes/strikes/show.html.haml @@ -50,15 +50,15 @@ .strike-card__statuses-list__item - if (status = status_map[status_id.to_i]) .one-liner - = link_to short_account_status_url(@strike.target_account, status_id), class: 'emojify' do - = one_line_preview(status) + .emojify= one_line_preview(status) - - status.ordered_media_attachments.each do |media_attachment| - %abbr{ title: media_attachment.description } - = fa_icon 'link' - = media_attachment.file_file_name + - status.ordered_media_attachments.each do |media_attachment| + %abbr{ title: media_attachment.description } + = fa_icon 'link' + = media_attachment.file_file_name .strike-card__statuses-list__item__meta - %time.formatted{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at) + = link_to ActivityPub::TagManager.instance.url_for(status), target: '_blank' do + %time.formatted{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at) - unless status.application.nil? · = status.application.name diff --git a/app/views/filters/_filter_fields.html.haml b/app/views/filters/_filter_fields.html.haml index c58978f5a3..a554b55ff6 100644 --- a/app/views/filters/_filter_fields.html.haml +++ b/app/views/filters/_filter_fields.html.haml @@ -35,6 +35,6 @@ = render 'keyword_fields', f: keyword %tfoot %tr - %td{ colspan: 3} + %td{ colspan: 3 } = link_to_add_association f, :keywords, class: 'table-action-link', partial: 'keyword_fields', 'data-association-insertion-node': '.keywords-table tbody', 'data-association-insertion-method': 'append' do = safe_join([fa_icon('plus'), t('filters.edit.add_keyword')]) diff --git a/app/views/filters/index.html.haml b/app/views/filters/index.html.haml index 0227526a47..9c84f796ff 100644 --- a/app/views/filters/index.html.haml +++ b/app/views/filters/index.html.haml @@ -5,7 +5,7 @@ = link_to t('filters.new.title'), new_filter_path, class: 'button' - if @filters.empty? - %div.muted-hint.center-text= t 'filters.index.empty' + .muted-hint.center-text= t 'filters.index.empty' - else .applications-list = render partial: 'filter', collection: @filters diff --git a/app/views/kaminari/_gap.html.haml b/app/views/kaminari/_gap.html.haml new file mode 100644 index 0000000000..0f9cff8fe6 --- /dev/null +++ b/app/views/kaminari/_gap.html.haml @@ -0,0 +1,9 @@ +-# + Non-link tag that stands for skipped pages... + available local variables + current_page: a page object for the currently displayed page + total_pages: total number of pages + per_page: number of items to fetch per page + remote: data-remote +%span.page.gap + != t('pagination.truncate') diff --git a/app/views/kaminari/_next_page.html.haml b/app/views/kaminari/_next_page.html.haml index 30a3643d64..c44aea1f11 100644 --- a/app/views/kaminari/_next_page.html.haml +++ b/app/views/kaminari/_next_page.html.haml @@ -1,9 +1,11 @@ --# Link to the "Next" page --# available local variables --# url: url to the next page --# current_page: a page object for the currently displayed page --# total_pages: total number of pages --# per_page: number of items to fetch per page --# remote: data-remote +-# + Link to the "Next" page + available local variables + url: url to the next page + current_page: a page object for the currently displayed page + total_pages: total number of pages + per_page: number of items to fetch per page + remote: data-remote + %span.next = link_to_unless current_page.last?, safe_join([t('pagination.next'), fa_icon('chevron-right')], ' '), url, rel: 'next', remote: remote diff --git a/app/views/kaminari/_paginator.html.haml b/app/views/kaminari/_paginator.html.haml index b1da236d5d..4778f6279a 100644 --- a/app/views/kaminari/_paginator.html.haml +++ b/app/views/kaminari/_paginator.html.haml @@ -1,10 +1,11 @@ --# The container tag --# available local variables --# current_page: a page object for the currently displayed page --# total_pages: total number of pages --# per_page: number of items to fetch per page --# remote: data-remote --# paginator: the paginator that renders the pagination tags inside +-# + The container tag + available local variables + current_page: a page object for the currently displayed page + total_pages: total number of pages + per_page: number of items to fetch per page + remote: data-remote + paginator: the paginator that renders the pagination tags inside = paginator.render do %nav.pagination = prev_page_tag unless current_page.first? diff --git a/app/views/kaminari/_prev_page.html.haml b/app/views/kaminari/_prev_page.html.haml index 1089e35668..284d6223b8 100644 --- a/app/views/kaminari/_prev_page.html.haml +++ b/app/views/kaminari/_prev_page.html.haml @@ -1,9 +1,10 @@ --# Link to the "Previous" page --# available local variables --# url: url to the previous page --# current_page: a page object for the currently displayed page --# total_pages: total number of pages --# per_page: number of items to fetch per page --# remote: data-remote +-# + Link to the "Previous" page + available local variables + url: url to the previous page + current_page: a page object for the currently displayed page + total_pages: total number of pages + per_page: number of items to fetch per page + remote: data-remote %span.prev = link_to_unless current_page.first?, safe_join([fa_icon('chevron-left'), t('pagination.prev')], ' '), url, rel: 'prev', remote: remote diff --git a/app/views/layouts/_theme.html.haml b/app/views/layouts/_theme.html.haml index 5dba77621b..71e661de65 100644 --- a/app/views/layouts/_theme.html.haml +++ b/app/views/layouts/_theme.html.haml @@ -9,6 +9,5 @@ = stylesheet_pack_tag pack_path, media: 'all', crossorigin: 'anonymous' - else = stylesheet_pack_tag "skins/#{theme[:flavour]}/#{theme[:skin]}/#{theme[:pack]}", media: 'all', crossorigin: 'anonymous' - - if theme[:preload] - - theme[:preload].each do |link| - %link{ href: asset_pack_path("#{link}.js"), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/ + - theme[:preload]&.each do |link| + %link{ href: asset_pack_path("#{link}.js"), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/ diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 2c9281fa8c..960616040f 100755 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -39,7 +39,7 @@ = yield :header_tags - -# These must come after :header_tags to ensure our initial state has been defined. + -# These must come after :header_tags to ensure our initial state has been defined. = render partial: 'layouts/theme', object: @core = render partial: 'layouts/theme', object: @theme diff --git a/app/views/layouts/embedded.html.haml b/app/views/layouts/embedded.html.haml index b8817d5662..210ac101dc 100644 --- a/app/views/layouts/embedded.html.haml +++ b/app/views/layouts/embedded.html.haml @@ -12,7 +12,7 @@ %link{ rel: 'dns-prefetch', href: storage_host }/ = render_initial_state - = javascript_pack_tag "locales", crossorigin: 'anonymous' + = javascript_pack_tag 'locales', crossorigin: 'anonymous' - if @theme - if @theme[:supported_locales].include? I18n.locale.to_s = javascript_pack_tag "locales/#{@theme[:flavour]}/#{I18n.locale}", crossorigin: 'anonymous' diff --git a/app/views/layouts/mailer.html.haml b/app/views/layouts/mailer.html.haml index 1d0840dc17..288c473d2f 100644 --- a/app/views/layouts/mailer.html.haml +++ b/app/views/layouts/mailer.html.haml @@ -35,7 +35,7 @@ %tbody %tr %td.content-cell.content-end - != "  " + != '  ' %tr %td.blank-cell.footer .email-row diff --git a/app/views/layouts/modal.html.haml b/app/views/layouts/modal.html.haml index cf608766b5..5d08d78489 100644 --- a/app/views/layouts/modal.html.haml +++ b/app/views/layouts/modal.html.haml @@ -12,6 +12,6 @@ .modal-layout__mastodon %div - %img{alt: '', draggable: 'false', src: mascot_url } + %img{ alt: '', draggable: 'false', src: mascot_url } = render template: 'layouts/application' diff --git a/app/views/media/player.html.haml b/app/views/media/player.html.haml index c1d630a63f..c907d5c60a 100644 --- a/app/views/media/player.html.haml +++ b/app/views/media/player.html.haml @@ -1,6 +1,6 @@ - content_for :header_tags do = render_initial_state - = javascript_pack_tag "locales", crossorigin: 'anonymous' + = javascript_pack_tag 'locales', crossorigin: 'anonymous' - if @theme - if @theme[:supported_locales].include? I18n.locale.to_s = javascript_pack_tag "locales/#{@theme[:flavour]}/#{I18n.locale}", crossorigin: 'anonymous' diff --git a/app/views/notification_mailer/_status.html.haml b/app/views/notification_mailer/_status.html.haml index e7cd5ba3eb..fd65039ae9 100644 --- a/app/views/notification_mailer/_status.html.haml +++ b/app/views/notification_mailer/_status.html.haml @@ -20,17 +20,17 @@ %tbody %tr %td{ align: 'left', width: 48 } - = image_tag full_asset_url(status.account.avatar.url), alt:'' + = image_tag full_asset_url(status.account.avatar.url), alt: '' %td{ align: 'left' } %bdi= display_name(status.account) = "@#{status.account.pretty_acct}" - if status.spoiler_text? - %div.auto-dir + .auto-dir %p = status.spoiler_text - %div.auto-dir + .auto-dir = status_content_format(status) - if status.ordered_media_attachments.size > 0 diff --git a/app/views/notification_mailer/favourite.html.haml b/app/views/notification_mailer/favourite.html.haml index 5d9be3f57f..4ec89172d9 100644 --- a/app/views/notification_mailer/favourite.html.haml +++ b/app/views/notification_mailer/favourite.html.haml @@ -17,7 +17,7 @@ %tbody %tr %td - = image_tag full_pack_url('media/images/mailer/icon_grade.png'), alt:'' + = image_tag full_pack_url('media/images/mailer/icon_grade.png'), alt: '' %h1= t 'notification_mailer.favourite.title' %p.lead= t('notification_mailer.favourite.body', name: @account.pretty_acct) diff --git a/app/views/notification_mailer/follow_request.html.haml b/app/views/notification_mailer/follow_request.html.haml index 4c32c831ed..3885a411d9 100644 --- a/app/views/notification_mailer/follow_request.html.haml +++ b/app/views/notification_mailer/follow_request.html.haml @@ -39,5 +39,5 @@ %tbody %tr %td.button-primary - = link_to web_url("follow_requests") do + = link_to web_url('follow_requests') do %span= t 'notification_mailer.follow_request.action' diff --git a/app/views/oauth/authorizations/show.html.haml b/app/views/oauth/authorizations/show.html.haml index c3c9960d8a..a5122a87fc 100644 --- a/app/views/oauth/authorizations/show.html.haml +++ b/app/views/oauth/authorizations/show.html.haml @@ -3,5 +3,5 @@ %p= t('doorkeeper.authorizations.show.title') .input-copy .input-copy__wrapper - %input{ type: 'text', class: 'oauth-code', spellcheck: 'false', readonly: true, value: params[:code] } + %input.oauth-code{ type: 'text', spellcheck: 'false', readonly: true, value: params[:code] } %button{ type: :button }= t('generic.copy') diff --git a/app/views/relationships/show.html.haml b/app/views/relationships/show.html.haml index e1ead69456..fcda6317ec 100644 --- a/app/views/relationships/show.html.haml +++ b/app/views/relationships/show.html.haml @@ -45,7 +45,7 @@ = f.button safe_join([fa_icon('trash'), t('relationships.remove_selected_followers')]), name: :remove_from_followers, class: 'table-action-link', type: :submit, data: { confirm: t('relationships.confirm_remove_selected_followers') } unless following_relationship? - = f.button safe_join([fa_icon('trash'), t('relationships.remove_selected_domains')]), name: :block_domains, class: 'table-action-link', type: :submit, data: { confirm: t('admin.reports.are_you_sure') } if followed_by_relationship? + = f.button safe_join([fa_icon('trash'), t('relationships.remove_selected_domains')]), name: :remove_domains_from_followers, class: 'table-action-link', type: :submit, data: { confirm: t('admin.reports.are_you_sure') } if followed_by_relationship? .batch-table__body - if @accounts.empty? = nothing_here 'nothing-here--under-tabs' diff --git a/app/views/settings/applications/index.html.haml b/app/views/settings/applications/index.html.haml index a1f904a3a8..5c31d56bca 100644 --- a/app/views/settings/applications/index.html.haml +++ b/app/views/settings/applications/index.html.haml @@ -5,7 +5,7 @@ = link_to t('doorkeeper.applications.index.new'), new_settings_application_path, class: 'button' - if @applications.empty? - %div.muted-hint.center-text=t 'doorkeeper.applications.index.empty' + .muted-hint.center-text= t 'doorkeeper.applications.index.empty' - else .table-wrapper %table.table diff --git a/app/views/settings/applications/show.html.haml b/app/views/settings/applications/show.html.haml index 390682d6f9..466a8ba340 100644 --- a/app/views/settings/applications/show.html.haml +++ b/app/views/settings/applications/show.html.haml @@ -6,7 +6,7 @@ .table-wrapper %table.table %tbody - %tr + %tr %th= t('doorkeeper.applications.show.application_id') %td %code= @application.uid @@ -15,7 +15,7 @@ %td %code= @application.secret %tr - %th{ rowspan: 2}= t('applications.your_token') + %th{ rowspan: 2 }= t('applications.your_token') %td %code= current_user.token_for_app(@application).token %tr diff --git a/app/views/settings/exports/show.html.haml b/app/views/settings/exports/show.html.haml index c49613fdc0..d7b59af270 100644 --- a/app/views/settings/exports/show.html.haml +++ b/app/views/settings/exports/show.html.haml @@ -64,6 +64,6 @@ %td= l backup.created_at - if backup.processed? %td= number_to_human_size backup.dump_file_size - %td= table_link_to 'download', t('exports.archive_takeout.download'), backup.dump.url + %td= table_link_to 'download', t('exports.archive_takeout.download'), download_backup_url(backup) - else %td{ colspan: 2 }= t('exports.archive_takeout.in_progress') diff --git a/app/views/settings/flavours/show.html.haml b/app/views/settings/flavours/show.html.haml index c3f785aa03..ea2540858e 100644 --- a/app/views/settings/flavours/show.html.haml +++ b/app/views/settings/flavours/show.html.haml @@ -5,7 +5,7 @@ = render 'shared/error_messages', object: current_user - Themes.instance.flavour(@selected)['screenshot'].each do |screen| - %img.flavour-screen{ src: full_pack_url("media/#{screen}") } + %img.flavour-screen{ src: full_pack_url("media/#{screen}"), alt: '' } .flavour-description = t "flavours.#{@selected}.description", default: '' @@ -14,7 +14,7 @@ - if Themes.instance.skins_for(@selected).length > 1 .fields-group - = f.input :setting_skin, collection: Themes.instance.skins_for(@selected), label_method: lambda { |skin| I18n.t("skins.#{@selected}.#{skin}", default: skin) }, wrapper: :with_label, include_blank: false + = f.input :setting_skin, collection: Themes.instance.skins_for(@selected), label_method: ->(skin) { I18n.t("skins.#{@selected}.#{skin}", default: skin) }, wrapper: :with_label, include_blank: false .actions = f.button :button, t('generic.use_this'), type: :submit diff --git a/app/views/settings/login_activities/_login_activity.html.haml b/app/views/settings/login_activities/_login_activity.html.haml index 0c2c7087d7..94ed60312c 100644 --- a/app/views/settings/login_activities/_login_activity.html.haml +++ b/app/views/settings/login_activities/_login_activity.html.haml @@ -1,6 +1,6 @@ - method_str = content_tag(:span, login_activity.omniauth? ? t(login_activity.provider, scope: 'auth.providers') : t(login_activity.authentication_method, scope: 'login_activities.authentication_methods'), class: 'target') - ip_str = content_tag(:span, login_activity.ip, class: 'target') -- browser_str = content_tag(:span, t('sessions.description', browser: t("sessions.browsers.#{login_activity.browser}", default: "#{login_activity.browser}"), platform: t("sessions.platforms.#{login_activity.platform}", default: "#{login_activity.platform}")), class: 'target', title: login_activity.user_agent) +- browser_str = content_tag(:span, t('sessions.description', browser: t("sessions.browsers.#{login_activity.browser}", default: login_activity.browser.to_s), platform: t("sessions.platforms.#{login_activity.platform}", default: login_activity.platform.to_s)), class: 'target', title: login_activity.user_agent) .log-entry .log-entry__header diff --git a/app/views/settings/login_activities/index.html.haml b/app/views/settings/login_activities/index.html.haml index ce524fbef7..6fb1bc34c0 100644 --- a/app/views/settings/login_activities/index.html.haml +++ b/app/views/settings/login_activities/index.html.haml @@ -6,7 +6,7 @@ %hr.spacer/ - if @login_activities.empty? - %div.muted-hint.center-text + .muted-hint.center-text = t 'login_activities.empty' - else .announcements-list diff --git a/app/views/settings/preferences/appearance/show.html.haml b/app/views/settings/preferences/appearance/show.html.haml index 946cb845df..dc82ce5b60 100644 --- a/app/views/settings/preferences/appearance/show.html.haml +++ b/app/views/settings/preferences/appearance/show.html.haml @@ -5,62 +5,63 @@ = button_tag t('generic.save_changes'), class: 'button', form: 'edit_user' = simple_form_for current_user, url: settings_preferences_appearance_path, html: { method: :put, id: 'edit_user' } do |f| - .fields-group - = f.input :locale, collection: I18n.available_locales, wrapper: :with_label, include_blank: false, label_method: lambda { |locale| native_locale_name(locale) }, selected: I18n.locale, hint: false + .fields-row + .fields-group + = f.input :locale, collection: I18n.available_locales, wrapper: :with_label, include_blank: false, label_method: lambda { |locale| native_locale_name(locale) }, selected: I18n.locale, hint: false - unless I18n.locale == :en .flash-message.translation-prompt - #{t 'appearance.localization.body'} #{content_tag(:a, t('appearance.localization.guide_link_text'), href: t('appearance.localization.guide_link'), target: "_blank", rel: "noopener")} + #{t 'appearance.localization.body'} #{content_tag(:a, t('appearance.localization.guide_link_text'), href: t('appearance.localization.guide_link'), target: '_blank', rel: 'noopener')} = link_to t('appearance.localization.glitch_guide_link'), target: '_blank', rel: 'noopener noreferrer' do = t('appearance.localization.glitch_guide_link_text') - %h4= t 'appearance.advanced_web_interface' + = f.simple_fields_for :settings, current_user.settings do |ff| + %h4= t 'appearance.advanced_web_interface' - %p.hint= t 'appearance.advanced_web_interface_hint' + %p.hint= t 'appearance.advanced_web_interface_hint' - .fields-group - = f.input :setting_advanced_layout, as: :boolean, wrapper: :with_label, hint: false + .fields-group + = ff.input :'web.advanced_layout', wrapper: :with_label, hint: false, label: I18n.t('simple_form.labels.defaults.setting_advanced_layout') + %h4= t 'appearance.animations_and_accessibility' - %h4= t 'appearance.animations_and_accessibility' + .fields-group + = ff.input :'web.use_pending_items', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_use_pending_items'), hint: I18n.t('simple_form.hints.defaults.setting_use_pending_items') - .fields-group - = f.input :setting_use_pending_items, as: :boolean, wrapper: :with_label + .fields-group + = ff.input :'web.auto_play', wrapper: :with_label, recommended: true, label: I18n.t('simple_form.labels.defaults.setting_auto_play_gif') + = ff.input :'web.reduce_motion', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_reduce_motion') + = ff.input :'web.disable_swiping', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_disable_swiping') + = ff.input :'web.use_system_font', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_system_font_ui') + = ff.input :'web.use_system_emoji_font', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_system_emoji_font'), glitch_only: true - .fields-group - = f.input :setting_auto_play_gif, as: :boolean, wrapper: :with_label, recommended: true - = f.input :setting_reduce_motion, as: :boolean, wrapper: :with_label - = f.input :setting_disable_swiping, as: :boolean, wrapper: :with_label - = f.input :setting_system_font_ui, as: :boolean, wrapper: :with_label - = f.input :setting_system_emoji_font, as: :boolean, wrapper: :with_label, glitch_only: true + %h4= t 'appearance.toot_layout' - %h4= t 'appearance.toot_layout' + .fields-group + = ff.input :'web.crop_images', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_crop_images') - .fields-group - = f.input :setting_crop_images, as: :boolean, wrapper: :with_label + %h4= t 'appearance.discovery' - %h4= t 'appearance.discovery' + .fields-group + = ff.input :'web.trends', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_trends') - .fields-group - = f.input :setting_trends, as: :boolean, wrapper: :with_label + %h4= t 'appearance.confirmation_dialogs' - %h4= t 'appearance.confirmation_dialogs' + .fields-group + = ff.input :'web.unfollow_modal', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_unfollow_modal') + = ff.input :'web.reblog_modal', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_boost_modal') + = ff.input :'web.favourite_modal', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_favourite_modal'), glitch_only: true + = ff.input :'web.delete_modal', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_delete_modal') - .fields-group - = f.input :setting_unfollow_modal, as: :boolean, wrapper: :with_label - = f.input :setting_boost_modal, as: :boolean, wrapper: :with_label - = f.input :setting_favourite_modal, as: :boolean, wrapper: :with_label, glitch_only: true - = f.input :setting_delete_modal, as: :boolean, wrapper: :with_label + %h4= t 'appearance.sensitive_content' - %h4= t 'appearance.sensitive_content' + .fields-group + = ff.input :'web.display_media', collection: ['default', 'show_all', 'hide_all'],label_method: lambda { |item| t("simple_form.hints.defaults.setting_display_media_#{item}") }, hint: false, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', wrapper: :with_floating_label, label: I18n.t('simple_form.labels.defaults.setting_display_media') - .fields-group - = f.input :setting_display_media, collection: ['default', 'show_all', 'hide_all'],label_method: lambda { |item| t("simple_form.hints.defaults.setting_display_media_#{item}") }, hint: false, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', wrapper: :with_floating_label + .fields-group + = ff.input :'web.use_blurhash', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_use_blurhash'), hint: I18n.t('simple_form.hints.defaults.setting_use_blurhash') - .fields-group - = f.input :setting_use_blurhash, as: :boolean, wrapper: :with_label - - .fields-group - = f.input :setting_expand_spoilers, as: :boolean, wrapper: :with_label + .fields-group + = ff.input :'web.expand_content_warnings', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_expand_spoilers') .actions = f.button :button, t('generic.save_changes'), type: :submit diff --git a/app/views/settings/preferences/notifications/show.html.haml b/app/views/settings/preferences/notifications/show.html.haml index a03faa1456..cfc468eef3 100644 --- a/app/views/settings/preferences/notifications/show.html.haml +++ b/app/views/settings/preferences/notifications/show.html.haml @@ -11,27 +11,27 @@ %p.hint= t 'notifications.email_events_hint' - .fields-group - = f.simple_fields_for :notification_emails, hash_to_object(current_user.settings.notification_emails) do |ff| - = ff.input :follow, as: :boolean, wrapper: :with_label - = ff.input :follow_request, as: :boolean, wrapper: :with_label - = ff.input :reblog, as: :boolean, wrapper: :with_label - = ff.input :favourite, as: :boolean, wrapper: :with_label - = ff.input :mention, as: :boolean, wrapper: :with_label - = ff.input :report, as: :boolean, wrapper: :with_label if current_user.can?(:manage_reports) - = ff.input :appeal, as: :boolean, wrapper: :with_label if current_user.can?(:manage_appeals) - = ff.input :pending_account, as: :boolean, wrapper: :with_label if current_user.can?(:manage_users) - = ff.input :trending_tag, as: :boolean, wrapper: :with_label if current_user.can?(:manage_taxonomies) - = ff.input :trending_link, as: :boolean, wrapper: :with_label if current_user.can?(:manage_taxonomies) - = ff.input :trending_status, as: :boolean, wrapper: :with_label if current_user.can?(:manage_taxonomies) + = f.simple_fields_for :settings, current_user.settings do |ff| + .fields-group + = ff.input :'notification_emails.follow', wrapper: :with_label, label: I18n.t('simple_form.labels.notification_emails.follow') + = ff.input :'notification_emails.follow_request', wrapper: :with_label, label: I18n.t('simple_form.labels.notification_emails.follow_request') + = ff.input :'notification_emails.reblog', wrapper: :with_label, label: I18n.t('simple_form.labels.notification_emails.reblog') + = ff.input :'notification_emails.favourite', wrapper: :with_label, label: I18n.t('simple_form.labels.notification_emails.favourite') + = ff.input :'notification_emails.mention', wrapper: :with_label, label: I18n.t('simple_form.labels.notification_emails.mention') + = ff.input :'notification_emails.report', wrapper: :with_label, label: I18n.t('simple_form.labels.notification_emails.report') if current_user.can?(:manage_reports) + = ff.input :'notification_emails.appeal', as: :boolean, wrapper: :with_label, label: I18n.t('simple_form.labels.notification_emails.appeal') if current_user.can?(:manage_appeals) + = ff.input :'notification_emails.pending_account', wrapper: :with_label, label: I18n.t('simple_form.labels.notification_emails.pending_account') if current_user.can?(:manage_users) + = ff.input :'notification_emails.trends', wrapper: :with_label, label: I18n.t('simple_form.labels.notification_emails.trending_tag') if current_user.can?(:manage_taxonomies) + = ff.input :'notification_emails.link_trends', wrapper: :with_label, label: I18n.t('simple_form.labels.notification_emails.trending_link') if current_user.can?(:manage_taxonomies) + = ff.input :'notification_emails.status_trends', wrapper: :with_label, label: I18n.t('simple_form.labels.notification_emails.trending_status') if current_user.can?(:manage_taxonomies) - .fields-group - = f.input :setting_always_send_emails, as: :boolean, wrapper: :with_label + .fields-group + = ff.input :always_send_emails, wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_always_send_emails'), hint: I18n.t('simple_form.hints.defaults.setting_always_send_emails') %h4= t 'notifications.other_settings' .fields-group - = f.simple_fields_for :interactions, hash_to_object(current_user.settings.interactions) do |ff| - = ff.input :must_be_follower, as: :boolean, wrapper: :with_label - = ff.input :must_be_following, as: :boolean, wrapper: :with_label - = ff.input :must_be_following_dm, as: :boolean, wrapper: :with_label + = f.simple_fields_for :settings, current_user.settings do |ff| + = ff.input :'interactions.must_be_follower', wrapper: :with_label, label: I18n.t('simple_form.labels.interactions.must_be_follower') + = ff.input :'interactions.must_be_following', wrapper: :with_label, label: I18n.t('simple_form.labels.interactions.must_be_following') + = ff.input :'interactions.must_be_following_dm', wrapper: :with_label, label: I18n.t('simple_form.labels.interactions.must_be_following_dm') diff --git a/app/views/settings/preferences/other/show.html.haml b/app/views/settings/preferences/other/show.html.haml index fb3d21060c..6420b6634b 100644 --- a/app/views/settings/preferences/other/show.html.haml +++ b/app/views/settings/preferences/other/show.html.haml @@ -7,33 +7,34 @@ = simple_form_for current_user, url: settings_preferences_other_path, html: { method: :put, id: 'edit_preferences' } do |f| = render 'shared/error_messages', object: current_user - .fields-group - = f.input :setting_noindex, as: :boolean, wrapper: :with_label - - .fields-group - = f.input :setting_aggregate_reblogs, as: :boolean, wrapper: :with_label, recommended: true - - - unless Setting.hide_followers_count + = f.simple_fields_for :settings, current_user.settings do |ff| .fields-group - = f.input :setting_hide_followers_count, as: :boolean, wrapper: :with_label, glitch_only: true + = ff.input :noindex, wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_noindex'), hint: I18n.t('simple_form.hints.defaults.setting_noindex') - %h4= t 'preferences.posting_defaults' + .fields-group + = ff.input :aggregate_reblogs, wrapper: :with_label, recommended: true, label: I18n.t('simple_form.labels.defaults.setting_aggregate_reblogs'), hint: I18n.t('simple_form.hints.defaults.setting_aggregate_reblogs') - .fields-row - .fields-group.fields-row__column.fields-row__column-6 - = f.input :setting_default_privacy, collection: Status.selectable_visibilities, wrapper: :with_label, include_blank: false, label_method: lambda { |visibility| safe_join([I18n.t("statuses.visibilities.#{visibility}"), I18n.t("statuses.visibilities.#{visibility}_long")], ' - ') }, required: false, hint: false + - unless Setting.hide_followers_count + .fields-group + = ff.input :hide_followers_count, wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_hide_followers_count'), glitch_only: true - .fields-group.fields-row__column.fields-row__column-6 - = f.input :setting_default_language, collection: [nil] + filterable_languages, wrapper: :with_label, label_method: lambda { |locale| locale.nil? ? I18n.t('statuses.default_language') : native_locale_name(locale) }, required: false, include_blank: false, hint: false + %h4= t 'preferences.posting_defaults' - .fields-group - = f.input :setting_default_sensitive, as: :boolean, wrapper: :with_label + .fields-row + .fields-group.fields-row__column.fields-row__column-6 + = ff.input :default_privacy, collection: Status.selectable_visibilities, wrapper: :with_label, include_blank: false, label_method: lambda { |visibility| safe_join([I18n.t("statuses.visibilities.#{visibility}"), I18n.t("statuses.visibilities.#{visibility}_long")], ' - ') }, required: false, hint: false, label: I18n.t('simple_form.labels.defaults.setting_default_privacy') - .fields-group - = f.input :setting_show_application, as: :boolean, wrapper: :with_label, recommended: true + .fields-group.fields-row__column.fields-row__column-6 + = ff.input :default_language, collection: [nil] + filterable_languages, wrapper: :with_label, label_method: lambda { |locale| locale.nil? ? I18n.t('statuses.default_language') : native_locale_name(locale) }, required: false, include_blank: false, hint: false, label: I18n.t('simple_form.labels.defaults.setting_default_language') - .fields-group - = f.input :setting_default_content_type, collection: ['text/plain', 'text/markdown', 'text/html'], wrapper: :with_label, include_blank: false, label_method: lambda { |item| safe_join([t("simple_form.labels.defaults.setting_default_content_type_#{item.split('/')[1]}"), content_tag(:span, t("simple_form.hints.defaults.setting_default_content_type_#{item.split('/')[1]}"), class: 'hint')]) }, required: false, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', glitch_only: true + .fields-group + = ff.input :default_sensitive, wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_default_sensitive'), hint: I18n.t('simple_form.hints.defaults.setting_default_sensitive') + + .fields-group + = ff.input :show_application, wrapper: :with_label, recommended: true, label: I18n.t('simple_form.labels.defaults.setting_show_application'), hint: I18n.t('simple_form.hints.defaults.setting_show_application') + + .fields-group + = ff.input :default_content_type, collection: ['text/plain', 'text/markdown', 'text/html'], wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_default_content_type'), include_blank: false, label_method: lambda { |item| safe_join([t("simple_form.labels.defaults.setting_default_content_type_#{item.split('/')[1]}"), content_tag(:span, t("simple_form.hints.defaults.setting_default_content_type_#{item.split('/')[1]}"), class: 'hint')]) }, required: false, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', glitch_only: true %h4= t 'preferences.public_timelines' diff --git a/app/views/shared/_og.html.haml b/app/views/shared/_og.html.haml index 2941b566e0..a5d99ae33a 100644 --- a/app/views/shared/_og.html.haml +++ b/app/views/shared/_og.html.haml @@ -1,5 +1,5 @@ - thumbnail = @instance_presenter.thumbnail -- description ||= strip_tags(@instance_presenter.description.presence || t('about.about_mastodon_html')) +- description ||= @instance_presenter.description.presence || strip_tags(t('about.about_mastodon_html')) %meta{ name: 'description', content: description }/ diff --git a/app/views/statuses/_detailed_status.html.haml b/app/views/statuses/_detailed_status.html.haml index 989cbc3b32..c1a29e943c 100644 --- a/app/views/statuses/_detailed_status.html.haml +++ b/app/views/statuses/_detailed_status.html.haml @@ -66,18 +66,18 @@ - else = fa_icon('reply-all') %span.detailed-status__reblogs>= friendly_number_to_human status.replies_count - = " " + = ' ' · - if status.public_visibility? || status.unlisted_visibility? %span.detailed-status__link = fa_icon('retweet') %span.detailed-status__reblogs>= friendly_number_to_human status.reblogs_count - = " " + = ' ' · %span.detailed-status__link = fa_icon('star') %span.detailed-status__favorites>= friendly_number_to_human status.favourites_count - = " " + = ' ' - if user_signed_in? · diff --git a/app/views/statuses/_og_image.html.haml b/app/views/statuses/_og_image.html.haml index 39f390fdf4..1ae97adff6 100644 --- a/app/views/statuses/_og_image.html.haml +++ b/app/views/statuses/_og_image.html.haml @@ -31,7 +31,7 @@ - player_card = true = opengraph 'og:image', full_asset_url(account.avatar.url(:original)) = opengraph 'og:image:width', '400' - = opengraph 'og:image:height','400' + = opengraph 'og:image:height', '400' = opengraph 'og:audio', full_asset_url(media.file.url(:original)) = opengraph 'og:audio:secure_url', full_asset_url(media.file.url(:original)) = opengraph 'og:audio:type', media.file_content_type diff --git a/app/views/statuses/_poll.html.haml b/app/views/statuses/_poll.html.haml index d0f2640957..248c6058cb 100644 --- a/app/views/statuses/_poll.html.haml +++ b/app/views/statuses/_poll.html.haml @@ -21,7 +21,7 @@ %span.poll__chart - else %label.poll__option>< - %span.poll__input{ class: poll.multiple? ? 'checkbox' : nil}>< + %span.poll__input{ class: poll.multiple? ? 'checkbox' : nil }>< %span.poll__option__text = prerender_custom_emojis(h(option.title), status.emojis) .poll__footer diff --git a/app/views/statuses/_status.html.haml b/app/views/statuses/_status.html.haml index 3b7152753a..afeb55fafd 100644 --- a/app/views/statuses/_status.html.haml +++ b/app/views/statuses/_status.html.haml @@ -11,7 +11,7 @@ h_class = microformats_h_class(status, is_predecessor, is_successor, include_threads) style_classes = style_classes(status, is_predecessor, is_successor, include_threads) mf_classes = microformats_classes(status, is_direct_parent, is_direct_child) - entry_classes = h_class + ' ' + mf_classes + ' ' + style_classes + entry_classes = "#{h_class} #{mf_classes} #{style_classes}" - if status.reply? && include_threads - if @next_ancestor diff --git a/app/views/tags/show.rss.ruby b/app/views/tags/show.rss.ruby index 8e0c2327b5..bbda1ad4b5 100644 --- a/app/views/tags/show.rss.ruby +++ b/app/views/tags/show.rss.ruby @@ -3,7 +3,7 @@ RSS::Builder.build do |doc| doc.description(I18n.t('rss.descriptions.tag', hashtag: @tag.display_name)) doc.link(tag_url(@tag)) doc.last_build_date(@statuses.first.created_at) if @statuses.any? - doc.generator("Mastodon v#{Mastodon::Version.to_s}") + doc.generator("Mastodon v#{Mastodon::Version}") @statuses.each do |status| doc.item do |item| @@ -16,12 +16,12 @@ RSS::Builder.build do |doc| item.enclosure(full_asset_url(media.file.url(:original, false)), media.file.content_type, media.file.size) end - status.ordered_media_attachments.each do |media| - item.media_content(full_asset_url(media.file.url(:original, false)), media.file.content_type, media.file.size) do |media_content| - media_content.medium(media.gifv? ? 'image' : media.type.to_s) + status.ordered_media_attachments.each do |media_attachment| + item.media_content(full_asset_url(media_attachment.file.url(:original, false)), media_attachment.file.content_type, media_attachment.file.size) do |media_content| + media_content.medium(media_attachment.gifv? ? 'image' : media_attachment.type.to_s) media_content.rating(status.sensitive? ? 'adult' : 'nonadult') - media_content.description(media.description) if media.description.present? - media_content.thumbnail(media.thumbnail.url(:original, false)) if media.thumbnail? + media_content.description(media_attachment.description) if media_attachment.description.present? + media_content.thumbnail(media_attachment.thumbnail.url(:original, false)) if media_attachment.thumbnail? end end diff --git a/app/views/user_mailer/appeal_rejected.html.haml b/app/views/user_mailer/appeal_rejected.html.haml index 75cd9d023b..c316a73fb5 100644 --- a/app/views/user_mailer/appeal_rejected.html.haml +++ b/app/views/user_mailer/appeal_rejected.html.haml @@ -17,7 +17,7 @@ %tbody %tr %td - = image_tag full_pack_url('media/images/mailer/icon_warning.png'), alt: '' + = image_tag full_pack_url('media/images/mailer/icon_flag.png'), alt: '' %h1= t 'user_mailer.appeal_rejected.title' diff --git a/app/views/user_mailer/backup_ready.html.haml b/app/views/user_mailer/backup_ready.html.haml index 85140b08be..465ead2c8b 100644 --- a/app/views/user_mailer/backup_ready.html.haml +++ b/app/views/user_mailer/backup_ready.html.haml @@ -55,5 +55,5 @@ %tbody %tr %td.button-primary - = link_to full_asset_url(@backup.dump.url) do + = link_to download_backup_url(@backup) do %span= t 'exports.archive_takeout.download' diff --git a/app/views/user_mailer/backup_ready.text.erb b/app/views/user_mailer/backup_ready.text.erb index eb89e7d743..8ebbaae85a 100644 --- a/app/views/user_mailer/backup_ready.text.erb +++ b/app/views/user_mailer/backup_ready.text.erb @@ -4,4 +4,4 @@ <%= t 'user_mailer.backup_ready.explanation' %> -=> <%= full_asset_url(@backup.dump.url) %> +=> <%= download_backup_url(@backup) %> diff --git a/app/views/user_mailer/suspicious_sign_in.html.haml b/app/views/user_mailer/suspicious_sign_in.html.haml index 856f9fb7cf..e4ad500c3d 100644 --- a/app/views/user_mailer/suspicious_sign_in.html.haml +++ b/app/views/user_mailer/suspicious_sign_in.html.haml @@ -45,7 +45,7 @@ = @remote_ip %br/ %strong= "#{t('sessions.browser')}:" - %span{ title: @user_agent }= t 'sessions.description', browser: t("sessions.browsers.#{@detection.id}", default: "#{@detection.id}"), platform: t("sessions.platforms.#{@detection.platform.id}", default: "#{@detection.platform.id}") + %span{ title: @user_agent }= t 'sessions.description', browser: t("sessions.browsers.#{@detection.id}", default: @detection.id.to_s), platform: t("sessions.platforms.#{@detection.platform.id}", default: @detection.platform.id.to_s) %br/ = l(@timestamp) diff --git a/app/views/user_mailer/webauthn_credential_added.html.haml b/app/views/user_mailer/webauthn_credential_added.html.haml index 81de84b564..c91c96d6fa 100644 --- a/app/views/user_mailer/webauthn_credential_added.html.haml +++ b/app/views/user_mailer/webauthn_credential_added.html.haml @@ -20,7 +20,7 @@ = image_tag full_pack_url('media/images/mailer/icon_lock_open.png'), alt: '' %h1= t 'devise.mailer.webauthn_credential.added.title' - %p.lead= "#{t 'devise.mailer.webauthn_credential.added.explanation' }:" + %p.lead= "#{t('devise.mailer.webauthn_credential.added.explanation')}:" %p.lead= @webauthn_credential.nickname %table.email-table{ cellspacing: 0, cellpadding: 0 } diff --git a/app/views/user_mailer/webauthn_credential_deleted.html.haml b/app/views/user_mailer/webauthn_credential_deleted.html.haml index 7b47f0c88e..578a080220 100644 --- a/app/views/user_mailer/webauthn_credential_deleted.html.haml +++ b/app/views/user_mailer/webauthn_credential_deleted.html.haml @@ -20,7 +20,7 @@ = image_tag full_pack_url('media/images/mailer/icon_lock_open.png'), alt: '' %h1= t 'devise.mailer.webauthn_credential.deleted.title' - %p.lead= "#{t 'devise.mailer.webauthn_credential.deleted.explanation' }:" + %p.lead= "#{t('devise.mailer.webauthn_credential.deleted.explanation')}:" %p.lead= @webauthn_credential.nickname %table.email-table{ cellspacing: 0, cellpadding: 0 } diff --git a/app/views/well_known/host_meta/show.xml.ruby b/app/views/well_known/host_meta/show.xml.ruby index b4e867c5f8..bb5a01a1b5 100644 --- a/app/views/well_known/host_meta/show.xml.ruby +++ b/app/views/well_known/host_meta/show.xml.ruby @@ -9,4 +9,4 @@ doc << Ox::Element.new('XRD').tap do |xrd| end end -('' + Ox.dump(doc, effort: :tolerant)).force_encoding('UTF-8') +"#{Ox.dump(doc, effort: :tolerant)}".force_encoding('UTF-8') diff --git a/app/workers/activitypub/delivery_worker.rb b/app/workers/activitypub/delivery_worker.rb index d9153132b3..7c1c14766b 100644 --- a/app/workers/activitypub/delivery_worker.rb +++ b/app/workers/activitypub/delivery_worker.rb @@ -10,6 +10,16 @@ class ActivityPub::DeliveryWorker sidekiq_options queue: 'push', retry: 16, dead: false + # Unfortunately, we cannot control Sidekiq's jitter, so add our own + sidekiq_retry_in do |count| + # This is Sidekiq's default delay + delay = (count**4) + 15 + # Our custom jitter, that will be added to Sidekiq's built-in one. + # Sidekiq's built-in jitter is `rand(10) * (count + 1)` + jitter = rand(0.5 * (count**4)) + delay + jitter + end + HEADERS = { 'Content-Type' => 'application/activity+json' }.freeze def perform(json, source_account_id, inbox_url, options = {}) diff --git a/app/workers/activitypub/distribute_poll_update_worker.rb b/app/workers/activitypub/distribute_poll_update_worker.rb index 601075ea6e..ebdb78bb32 100644 --- a/app/workers/activitypub/distribute_poll_update_worker.rb +++ b/app/workers/activitypub/distribute_poll_update_worker.rb @@ -12,7 +12,7 @@ class ActivityPub::DistributePollUpdateWorker return if @status.preloadable_poll.nil? || @status.local_only? - ActivityPub::DeliveryWorker.push_bulk(inboxes) do |inbox_url| + ActivityPub::DeliveryWorker.push_bulk(inboxes, limit: 1_000) do |inbox_url| [payload, @account.id, inbox_url] end diff --git a/app/workers/activitypub/migrated_follow_delivery_worker.rb b/app/workers/activitypub/migrated_follow_delivery_worker.rb new file mode 100644 index 0000000000..daf30e0ae7 --- /dev/null +++ b/app/workers/activitypub/migrated_follow_delivery_worker.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class ActivityPub::MigratedFollowDeliveryWorker < ActivityPub::DeliveryWorker + def perform(json, source_account_id, inbox_url, old_target_account_id, options = {}) + super(json, source_account_id, inbox_url, options) + unfollow_old_account!(old_target_account_id) + end + + private + + def unfollow_old_account!(old_target_account_id) + old_target_account = Account.find(old_target_account_id) + UnfollowService.new.call(@source_account, old_target_account, skip_unmerge: true) + rescue + true + end +end diff --git a/app/workers/activitypub/move_distribution_worker.rb b/app/workers/activitypub/move_distribution_worker.rb index 65c5c0d1c3..1680fcc76e 100644 --- a/app/workers/activitypub/move_distribution_worker.rb +++ b/app/workers/activitypub/move_distribution_worker.rb @@ -10,7 +10,7 @@ class ActivityPub::MoveDistributionWorker @migration = AccountMigration.find(migration_id) @account = @migration.account - ActivityPub::DeliveryWorker.push_bulk(inboxes) do |inbox_url| + ActivityPub::DeliveryWorker.push_bulk(inboxes, limit: 1_000) do |inbox_url| [signed_payload, @account.id, inbox_url] end diff --git a/app/workers/activitypub/raw_distribution_worker.rb b/app/workers/activitypub/raw_distribution_worker.rb index 8ecc17db9a..c77821e0f1 100644 --- a/app/workers/activitypub/raw_distribution_worker.rb +++ b/app/workers/activitypub/raw_distribution_worker.rb @@ -25,7 +25,7 @@ class ActivityPub::RawDistributionWorker def distribute! return if inboxes.empty? - ActivityPub::DeliveryWorker.push_bulk(inboxes) do |inbox_url| + ActivityPub::DeliveryWorker.push_bulk(inboxes, limit: 1_000) do |inbox_url| [payload, source_account_id, inbox_url, options] end end diff --git a/app/workers/poll_expiration_notify_worker.rb b/app/workers/poll_expiration_notify_worker.rb index 0e29a5f60b..b7a60fab84 100644 --- a/app/workers/poll_expiration_notify_worker.rb +++ b/app/workers/poll_expiration_notify_worker.rb @@ -3,7 +3,7 @@ class PollExpirationNotifyWorker include Sidekiq::Worker - sidekiq_options lock: :until_executed + sidekiq_options lock: :until_executing def perform(poll_id) @poll = Poll.find(poll_id) diff --git a/app/workers/scheduler/follow_recommendations_scheduler.rb b/app/workers/scheduler/follow_recommendations_scheduler.rb index 04008a9d99..17cf3f2cc3 100644 --- a/app/workers/scheduler/follow_recommendations_scheduler.rb +++ b/app/workers/scheduler/follow_recommendations_scheduler.rb @@ -20,7 +20,7 @@ class Scheduler::FollowRecommendationsScheduler Trends.available_locales.each do |locale| recommendations = if AccountSummary.safe.filtered.localized(locale).exists? # We can skip the work if no accounts with that language exist - FollowRecommendation.localized(locale).order(rank: :desc).limit(SET_SIZE).map { |recommendation| [recommendation.account_id, recommendation.rank] } + FollowRecommendation.localized(locale).order(rank: :desc).limit(SET_SIZE).map { |recommendation| [recommendation.rank, recommendation.account_id] } else [] end @@ -33,14 +33,14 @@ class Scheduler::FollowRecommendationsScheduler # Language-specific results should be above language-agnostic ones, # otherwise language-agnostic ones will always overshadow them - recommendations.map! { |(account_id, rank)| [account_id, rank + max_fallback_rank] } + recommendations.map! { |(rank, account_id)| [rank + max_fallback_rank, account_id] } added = 0 fallback_recommendations.each do |recommendation| - next if recommendations.any? { |(account_id, _)| account_id == recommendation.account_id } + next if recommendations.any? { |(_, account_id)| account_id == recommendation.account_id } - recommendations << [recommendation.account_id, recommendation.rank] + recommendations << [recommendation.rank, recommendation.account_id] added += 1 break if added >= missing @@ -49,10 +49,7 @@ class Scheduler::FollowRecommendationsScheduler redis.multi do |multi| multi.del(key(locale)) - - recommendations.each do |(account_id, rank)| - multi.zadd(key(locale), rank, account_id) - end + multi.zadd(key(locale), recommendations) end end end diff --git a/app/workers/scheduler/indexing_scheduler.rb b/app/workers/scheduler/indexing_scheduler.rb index c423966297..d622f5586e 100644 --- a/app/workers/scheduler/indexing_scheduler.rb +++ b/app/workers/scheduler/indexing_scheduler.rb @@ -6,17 +6,19 @@ class Scheduler::IndexingScheduler sidekiq_options retry: 0 + IMPORT_BATCH_SIZE = 1000 + SCAN_BATCH_SIZE = 10 * IMPORT_BATCH_SIZE + def perform return unless Chewy.enabled? indexes.each do |type| with_redis do |redis| - ids = redis.smembers("chewy:queue:#{type.name}") - - type.import!(ids) - - redis.pipelined do |pipeline| - ids.each { |id| pipeline.srem("chewy:queue:#{type.name}", id) } + redis.sscan_each("chewy:queue:#{type.name}", count: SCAN_BATCH_SIZE).each_slice(IMPORT_BATCH_SIZE) do |ids| + type.import!(ids) + redis.pipelined do |pipeline| + pipeline.srem("chewy:queue:#{type.name}", ids) + end end end end diff --git a/app/workers/unfollow_follow_worker.rb b/app/workers/unfollow_follow_worker.rb index 7203b4888f..a4d57839de 100644 --- a/app/workers/unfollow_follow_worker.rb +++ b/app/workers/unfollow_follow_worker.rb @@ -10,13 +10,7 @@ class UnfollowFollowWorker old_target_account = Account.find(old_target_account_id) new_target_account = Account.find(new_target_account_id) - follow = follower_account.active_relationships.find_by(target_account: old_target_account) - reblogs = follow&.show_reblogs? - notify = follow&.notify? - languages = follow&.languages - - FollowService.new.call(follower_account, new_target_account, reblogs: reblogs, notify: notify, languages: languages, bypass_locked: bypass_locked, bypass_limit: true) - UnfollowService.new.call(follower_account, old_target_account, skip_unmerge: true) + FollowMigrationService.new.call(follower_account, new_target_account, old_target_account, bypass_locked: bypass_locked) rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError true end diff --git a/app/workers/webhooks/delivery_worker.rb b/app/workers/webhooks/delivery_worker.rb index b1e345c5ef..f8ed669fb5 100644 --- a/app/workers/webhooks/delivery_worker.rb +++ b/app/workers/webhooks/delivery_worker.rb @@ -19,7 +19,7 @@ class Webhooks::DeliveryWorker private def perform_request - request = Request.new(:post, @webhook.url, body: @body) + request = Request.new(:post, @webhook.url, body: @body, allow_local: true) request.add_headers( 'Content-Type' => 'application/json', diff --git a/babel.config.js b/babel.config.js index b040cc1596..9ed0740993 100644 --- a/babel.config.js +++ b/babel.config.js @@ -13,13 +13,14 @@ module.exports = (api) => { const config = { presets: [ + '@babel/preset-typescript', ['@babel/react', reactOptions], ['@babel/env', envOptions], ], plugins: [ - ['@babel/proposal-decorators', { legacy: true }], ['react-intl', { messagesDir: './build/messages' }], 'preval', + '@babel/plugin-proposal-nullish-coalescing-operator', ], overrides: [ { @@ -67,4 +68,3 @@ module.exports = (api) => { return config; }; - diff --git a/bin/tootctl b/bin/tootctl index a9ebb22c6d..9c7ae8b871 100755 --- a/bin/tootctl +++ b/bin/tootctl @@ -5,7 +5,9 @@ require_relative '../config/boot' require_relative '../lib/cli' begin - Mastodon::CLI.start(ARGV) + Chewy.strategy(:mastodon) do + Mastodon::CLI.start(ARGV) + end rescue Interrupt exit(130) end diff --git a/config/application.rb b/config/application.rb index c51eacd680..f0e65f4437 100644 --- a/config/application.rb +++ b/config/application.rb @@ -35,9 +35,11 @@ require_relative '../lib/terrapin/multi_pipe_extensions' require_relative '../lib/mastodon/snowflake' require_relative '../lib/mastodon/version' require_relative '../lib/mastodon/rack_middleware' +require_relative '../lib/public_file_server_middleware' require_relative '../lib/devise/two_factor_ldap_authenticatable' require_relative '../lib/devise/two_factor_pam_authenticatable' require_relative '../lib/chewy/strategy/mastodon' +require_relative '../lib/chewy/strategy/bypass_with_warning' require_relative '../lib/webpacker/manifest_extensions' require_relative '../lib/webpacker/helper_extensions' require_relative '../lib/rails/engine_extensions' @@ -181,6 +183,10 @@ module Mastodon config.active_job.queue_adapter = :sidekiq config.action_mailer.deliver_later_queue_name = 'mailers' + # We use our own middleware for this + config.public_file_server.enabled = false + + config.middleware.use PublicFileServerMiddleware if Rails.env.development? || ENV['RAILS_SERVE_STATIC_FILES'] == 'true' config.middleware.use Rack::Attack config.middleware.use Mastodon::RackMiddleware diff --git a/config/database.yml b/config/database.yml index bfb53f21b4..34acf2f19a 100644 --- a/config/database.yml +++ b/config/database.yml @@ -5,6 +5,7 @@ default: &default connect_timeout: 15 encoding: unicode sslmode: <%= ENV['DB_SSLMODE'] || "prefer" %> + application_name: '' development: <<: *default diff --git a/config/environments/development.rb b/config/environments/development.rb index de8762ff74..a633dfce51 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -16,15 +16,9 @@ Rails.application.configure do # Run rails dev:cache to toggle caching. if Rails.root.join('tmp/caching-dev.txt').exist? config.action_controller.perform_caching = true - config.cache_store = :redis_cache_store, REDIS_CACHE_PARAMS - - config.public_file_server.headers = { - 'Cache-Control' => "public, max-age=#{2.days.to_i}", - } else config.action_controller.perform_caching = false - config.cache_store = :null_store end @@ -34,9 +28,10 @@ Rails.application.configure do end # Generate random VAPID keys - vapid_key = Webpush.generate_key - config.x.vapid_private_key = vapid_key.private_key - config.x.vapid_public_key = vapid_key.public_key + Webpush.generate_key.tap do |vapid_key| + config.x.vapid_private_key = vapid_key.private_key + config.x.vapid_public_key = vapid_key.public_key + end # Don't care if the mailer can't send. config.action_mailer.raise_delivery_errors = false @@ -76,21 +71,9 @@ Rails.application.configure do # Otherwise, use letter_opener, which launches a browser window to view sent mail. config.action_mailer.delivery_method = (ENV['HEROKU'] || ENV['VAGRANT'] || ENV['REMOTE_DEV']) ? :letter_opener_web : :letter_opener - config.after_initialize do - Bullet.enable = true - Bullet.bullet_logger = true - Bullet.rails_logger = false - - Bullet.add_safelist type: :n_plus_one_query, class_name: 'User', association: :account - end - + # We provide a default secret for the development environment here. + # This value should not be used in production environments! config.x.otp_secret = ENV.fetch('OTP_SECRET', '1fc2b87989afa6351912abeebe31ffc5c476ead9bf8b3d74cbc4a302c7b69a45b40b1bbef3506ddad73e942e15ed5ca4b402bf9a66423626051104f4b5f05109') end -ActiveRecordQueryTrace.enabled = ENV['QUERY_TRACE_ENABLED'] == 'true' - -module PrivateAddressCheck - def self.private_address?(*) - false - end -end +Redis.raise_deprecations = true diff --git a/config/environments/production.rb b/config/environments/production.rb index 460313890a..95c6e790f6 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -19,27 +19,16 @@ Rails.application.configure do # or in config/master.key. This key is used to decrypt credentials (and other encrypted files). # config.require_master_key = true - # Disable serving static files from the `/public` folder by default since - # Apache or NGINX already handles this. - config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present? - ActiveSupport::Logger.new(STDOUT).tap do |logger| logger.formatter = config.log_formatter config.logger = ActiveSupport::TaggedLogging.new(logger) end - # Compress JavaScripts and CSS. - # config.assets.js_compressor = Uglifier.new(mangle: false) - # config.assets.css_compressor = :sass - # Do not fallback to assets pipeline if a precompiled asset is missed. config.assets.compile = false - # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb - # Specifies the header that your server uses for sending files. - # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache - # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX + config.action_dispatch.x_sendfile_header = ENV['SENDFILE_HEADER'] if ENV['SENDFILE_HEADER'].present? # Allow to specify public IP of reverse proxy if it's needed config.action_dispatch.trusted_proxies = ENV['TRUSTED_PROXY_IP'].split(/(?:\s*,\s*|\s+)/).map { |item| IPAddr.new(item) } if ENV['TRUSTED_PROXY_IP'].present? @@ -67,7 +56,7 @@ Rails.application.configure do # Enable locale fallbacks for I18n (makes lookups for any locale fall back to # English when a translation cannot be found). - config.i18n.fallbacks = [:en] + config.i18n.fallbacks = true # Send deprecation notices to registered listeners. config.active_support.deprecation = :notify @@ -128,6 +117,7 @@ Rails.application.configure do enable_starttls_auto: enable_starttls_auto, tls: ENV['SMTP_TLS'].presence && ENV['SMTP_TLS'] == 'true', ssl: ENV['SMTP_SSL'].presence && ENV['SMTP_SSL'] == 'true', + read_timeout: 20, } config.action_mailer.delivery_method = ENV.fetch('SMTP_DELIVERY_METHOD', 'smtp').to_sym @@ -137,7 +127,6 @@ Rails.application.configure do 'X-Frame-Options' => 'DENY', 'X-Content-Type-Options' => 'nosniff', 'X-XSS-Protection' => '0', - 'Permissions-Policy' => 'interest-cohort=()', 'X-Clacks-Overhead' => 'GNU Natalie Nguyen', 'Referrer-Policy' => 'same-origin', } diff --git a/config/environments/test.rb b/config/environments/test.rb index ef3cb2e487..493b041ebb 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -12,11 +12,6 @@ Rails.application.configure do # preloads Rails for running tests, you may have to set it to true. config.eager_load = false - # Configure public file server for tests with Cache-Control for performance. - config.public_file_server.enabled = true - config.public_file_server.headers = { - 'Cache-Control' => "public, max-age=#{1.hour.to_i}" - } config.assets.digest = false # Show full error reports and disable caching. @@ -56,6 +51,12 @@ Rails.application.configure do config.i18n.default_locale = :en config.i18n.fallbacks = true + + config.to_prepare do + # Force Status to always be SHAPE_TOO_COMPLEX + # Ref: https://github.com/mastodon/mastodon/issues/23644 + 10.times { |i| Status.allocate.instance_variable_set(:"@ivar_#{i}", nil) } + end end Paperclip::Attachment.default_options[:path] = "#{Rails.root}/spec/test_files/:class/:id_partition/:style.:extension" @@ -73,3 +74,5 @@ end # Catch serialization warnings early Sidekiq.strict_args! + +Redis.raise_deprecations = true diff --git a/config/initializers/0_duplicate_migrations.rb b/config/initializers/0_duplicate_migrations.rb index 6c45e4bd23..1b8b590255 100644 --- a/config/initializers/0_duplicate_migrations.rb +++ b/config/initializers/0_duplicate_migrations.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + # Some migrations have been present in glitch-soc for a long time and have then # been merged in upstream Mastodon, under a different version number. # @@ -12,24 +14,26 @@ # we decided monkey-patching Rails' Migrator to completely ignore the duplicate, # keeping only the one that has run, or an arbitrary one. -ALLOWED_DUPLICATES = [20180410220657, 20180831171112].freeze +ALLOWED_DUPLICATES = [2018_04_10_220657, 2018_08_31_171112].freeze module ActiveRecord class Migrator def self.new(direction, migrations, schema_migration, target_version = nil) migrated = Set.new(Base.connection.migration_context.get_all_versions) - migrations.group_by(&:name).each do |name, duplicates| - if duplicates.length > 1 && duplicates.all? { |m| ALLOWED_DUPLICATES.include?(m.version) } - # We have a set of allowed duplicates. Keep the migrated one, if any. - non_migrated = duplicates.reject { |m| migrated.include?(m.version.to_i) } + migrations.group_by(&:name).each do |_name, duplicates| + next unless duplicates.length > 1 && duplicates.all? { |m| ALLOWED_DUPLICATES.include?(m.version) } - if duplicates.length == non_migrated.length || non_migrated.length == 0 + # We have a set of allowed duplicates. Keep the migrated one, if any. + non_migrated = duplicates.reject { |m| migrated.include?(m.version.to_i) } + + migrations = begin + if duplicates.length == non_migrated.length || non_migrated.empty? # There weren't any migrated one, so we have to pick one “canonical” migration - migrations = migrations - duplicates[1..-1] + migrations - duplicates[1..] else # Just reject every duplicate which hasn't been migrated yet - migrations = migrations - non_migrated + migrations - non_migrated end end end @@ -43,10 +47,10 @@ module ActiveRecord # A set of duplicated migrations is considered migrated if at least one of # them is migrated. migrated = get_all_versions - migrations.group_by(&:name).each do |name, duplicates| + migrations.group_by(&:name).each do |_name, duplicates| return true unless duplicates.any? { |m| migrated.include?(m.version.to_i) } end - return false + false end end end diff --git a/config/initializers/chewy.rb b/config/initializers/chewy.rb index 752fc3c6df..daf4a5f326 100644 --- a/config/initializers/chewy.rb +++ b/config/initializers/chewy.rb @@ -19,7 +19,7 @@ Chewy.settings = { # cycle, which takes care of checking if Elasticsearch is enabled # or not. However, mind that for the Rails console, the :urgent # strategy is set automatically with no way to override it. -Chewy.root_strategy = :mastodon +Chewy.root_strategy = :bypass_with_warning if Rails.env.production? Chewy.request_strategy = :mastodon Chewy.use_after_commit_callbacks = false diff --git a/config/initializers/inflections.rb b/config/initializers/inflections.rb index a361cb0ec3..95f0b5788b 100644 --- a/config/initializers/inflections.rb +++ b/config/initializers/inflections.rb @@ -26,6 +26,7 @@ ActiveSupport::Inflector.inflections(:en) do |inflect| inflect.acronym 'URL' inflect.acronym 'ASCII' inflect.acronym 'DeepL' + inflect.acronym 'DSL' inflect.singular 'data', 'data' end diff --git a/config/initializers/paperclip.rb b/config/initializers/paperclip.rb index a2285427c8..bd37f67093 100644 --- a/config/initializers/paperclip.rb +++ b/config/initializers/paperclip.rb @@ -90,6 +90,12 @@ if ENV['S3_ENABLED'] == 'true' ) end + if ENV.has_key?('S3_STORAGE_CLASS') + Paperclip::Attachment.default_options[:s3_headers].merge!( + 'X-Amz-Storage-Class' => ENV['S3_STORAGE_CLASS'] + ) + end + # Some S3-compatible providers might not actually be compatible with some APIs # used by kt-paperclip, see https://github.com/mastodon/mastodon/issues/16822 if ENV['S3_FORCE_SINGLE_REQUEST'] == 'true' @@ -124,6 +130,7 @@ elsif ENV['SWIFT_ENABLED'] == 'true' openstack_domain_name: ENV.fetch('SWIFT_DOMAIN_NAME') { 'default' }, openstack_region: ENV['SWIFT_REGION'], openstack_cache_ttl: ENV.fetch('SWIFT_CACHE_TTL') { 60 }, + openstack_temp_url_key: ENV['SWIFT_TEMP_URL_KEY'], }, fog_file: { 'Cache-Control' => 'public, max-age=315576000, immutable' }, diff --git a/config/initializers/redis.rb b/config/initializers/redis.rb new file mode 100644 index 0000000000..f2bbd1e456 --- /dev/null +++ b/config/initializers/redis.rb @@ -0,0 +1 @@ +Redis.sadd_returns_boolean = false diff --git a/config/initializers/simple_form.rb b/config/initializers/simple_form.rb index d167a16005..fff4f538ea 100644 --- a/config/initializers/simple_form.rb +++ b/config/initializers/simple_form.rb @@ -22,6 +22,7 @@ end module GlitchOnlyComponent def glitch_only(_wrapper_options = nil) return unless options[:glitch_only] + options[:label_text] = ->(raw_label_text, _required_label_text, _label_present) { safe_join([raw_label_text, ' ', content_tag(:span, I18n.t('simple_form.glitch_only'), class: 'glitch_only')]) } nil end diff --git a/config/locales-glitch/es-AR.yml b/config/locales-glitch/es-AR.yml index fd38e165e3..93e3d05401 100644 --- a/config/locales-glitch/es-AR.yml +++ b/config/locales-glitch/es-AR.yml @@ -1,10 +1,21 @@ --- es-AR: admin: + custom_emojis: + batch_copy_error: Se produjo un error cuando se copian algunos emojis seleccionados %{message} + batch_error: Ocurrió un error %{message} settings: + captcha_enabled: + desc_html: Esto depende de scripts externos de hCaptcha, que pueden ser una preocupación de seguridad y privacidad. Además, esto puede hacer el proceso de registro significativamente menos accesible para algunas personas (especialmente minusválidos). Por estas razones, por favor considera medidas alternativas como el registro basado en la aprobación o la invitación.
    Los usuarios que han sido invitados a través de una invitación de uso limitado no necesitarán resolver un CAPTCHA + title: Pedir a los usuarios nuevos resolver un CAPTCHA para confirmar su cuenta + flavour_and_skin: + title: Sabor y apariencia hide_followers_count: desc_html: No mostrar el conteo de seguidorxs en perfiles de usuarix title: Ocultar conteo de seguidorxs + other: + preamble: Varias configuraciones de glitch-soc que no encajan en otras categorías. + title: Otro outgoing_spoilers: desc_html: Cuando los toots federen, agrega esta etiqueta de contenido a los toots que no tengan. Es útil si tu servidor se especializa en contenido que otros servidores desearían tener con una advertencia de contenido. Los medios también se marcarán como sensibles. title: Advertencia de contenido para los toots salientes @@ -14,6 +25,17 @@ es-AR: show_replies_in_public_timelines: desc_html: Además de auto-respuestas públicas (hilos), mostrar respuestas públicas en las línea de tiempo local y pública. title: Mostrar respuestas en líneas de tiempo públicas + trending_status_cw: + desc_html: Cuando las publicaciones en tendencia están habilitadas, permitir que la que contienen Advertencias de Contenido sean elegibles. Los cambios en esta configuración no son retroactivos. + title: Permitir que publicaciones con advertencias de contenido sean tendencia + appearance: + localization: + glitch_guide_link: https://crowdin.com/project/glitch-soc + glitch_guide_link_text: Igual para glitch-soc! + auth: + captcha_confirmation: + hint_html: ¡Solo un paso más! Para confirmar tu cuenta, este servidor requiere que resuelvas un CAPTCHA. Puedes contactar
    con el administrador del servidor si tienes preguntas o necesitas ayuda para confirmar tu cuenta. + title: Verificación de usuario generic: use_this: Usar settings: diff --git a/config/locales-glitch/es-MX.yml b/config/locales-glitch/es-MX.yml index 48e24be767..1319dd3e37 100644 --- a/config/locales-glitch/es-MX.yml +++ b/config/locales-glitch/es-MX.yml @@ -1,10 +1,21 @@ --- es-MX: admin: + custom_emojis: + batch_copy_error: Se produjo un error cuando se copian algunos emojis seleccionados %{message} + batch_error: Ocurrió un error %{message} settings: + captcha_enabled: + desc_html: Esto depende de scripts externos de hCaptcha, que pueden ser una preocupación de seguridad y privacidad. Además, esto puede hacer el proceso de registro significativamente menos accesible para algunas personas (especialmente minusválidos). Por estas razones, por favor considera medidas alternativas como el registro basado en la aprobación o la invitación.
    Los usuarios que han sido invitados a través de una invitación de uso limitado no necesitarán resolver un CAPTCHA + title: Pedir a los usuarios nuevos resolver un CAPTCHA para confirmar su cuenta + flavour_and_skin: + title: Sabor y apariencia hide_followers_count: desc_html: No mostrar el conteo de seguidorxs en perfiles de usuarix title: Ocultar conteo de seguidorxs + other: + preamble: Varias configuraciones de glitch-soc que no encajan en otras categorías. + title: Otro outgoing_spoilers: desc_html: Cuando los toots federen, agrega esta etiqueta de contenido a los toots que no tengan. Es útil si tu servidor se especializa en contenido que otros servidores desearían tener con una advertencia de contenido. Los medios también se marcarán como sensibles. title: Advertencia de contenido para los toots salientes @@ -14,6 +25,17 @@ es-MX: show_replies_in_public_timelines: desc_html: Además de auto-respuestas públicas (hilos), mostrar respuestas públicas en las línea de tiempo local y pública. title: Mostrar respuestas en líneas de tiempo públicas + trending_status_cw: + desc_html: Cuando las publicaciones en tendencia están habilitadas, permitir que la que contienen Advertencias de Contenido sean elegibles. Los cambios en esta configuración no son retroactivos. + title: Permitir que publicaciones con advertencias de contenido sean tendencia + appearance: + localization: + glitch_guide_link: https://crowdin.com/project/glitch-soc + glitch_guide_link_text: Igual para glitch-soc! + auth: + captcha_confirmation: + hint_html: ¡Solo un paso más! Para confirmar tu cuenta, este servidor requiere que resuelvas un CAPTCHA. Puedes contactar con el administrador del servidor si tienes preguntas o necesitas ayuda para confirmar tu cuenta. + title: Verificación de usuario generic: use_this: Usar settings: diff --git a/config/locales-glitch/es.yml b/config/locales-glitch/es.yml index 1cc1aca610..4e054b056c 100644 --- a/config/locales-glitch/es.yml +++ b/config/locales-glitch/es.yml @@ -2,14 +2,20 @@ es: admin: custom_emojis: - batch_copy_error: 'Se produjo un error cuando se copian algunos emojis seleccionados %{message}' - batch_error: 'Ocurrió un error %{message}' + batch_copy_error: Se produjo un error cuando se copian algunos emojis seleccionados %{message} + batch_error: Ocurrió un error %{message} settings: captcha_enabled: - title: Requerir que usuarixs nuevxs resuelvan un CAPTCHA para confirmar su cuenta + desc_html: Esto depende de scripts externos de hCaptcha, que pueden ser una preocupación de seguridad y privacidad. Además, esto puede hacer el proceso de registro significativamente menos accesible para algunas personas (especialmente minusválidos). Por estas razones, por favor considera medidas alternativas como el registro basado en la aprobación o la invitación.
    Los usuarios que han sido invitados a través de una invitación de uso limitado no necesitarán resolver un CAPTCHA + title: Pedir a los usuarios nuevos resolver un CAPTCHA para confirmar su cuenta + flavour_and_skin: + title: Sabor y apariencia hide_followers_count: - desc_html: No mostrar el conteo de seguidorxs en perfiles de usuarix + desc_html: No mostrar el conteo de seguidores en los perfiles de usuario title: Ocultar conteo de seguidorxs + other: + preamble: Varias configuraciones de glitch-soc que no encajan en otras categorías. + title: Otro outgoing_spoilers: desc_html: Cuando los toots federen, agrega esta etiqueta de contenido a los toots que no tengan. Es útil si tu servidor se especializa en contenido que otros servidores desearían tener con una advertencia de contenido. Los medios también se marcarán como sensibles. title: Advertencia de contenido para publicaciones salientes @@ -20,14 +26,16 @@ es: desc_html: Además de auto-respuestas públicas (hilos), mostrar respuestas públicas en las líneas de tiempo local y pública. title: Mostrar respuestas en líneas de tiempo públicas trending_status_cw: + desc_html: Cuando las publicaciones en tendencia están habilitadas, permitir que la que contienen Advertencias de Contenido sean elegibles. Los cambios en esta configuración no son retroactivos. title: Permitir que publicaciones con advertencias de contenido sean tendencia appearance: localization: glitch_guide_link: https://crowdin.com/project/glitch-soc - glitch_guide_link_text: Al igual que para glitch-soc! + glitch_guide_link_text: Igual para glitch-soc! auth: captcha_confirmation: - title: Verificación de usuarix + hint_html: ¡Solo un paso más! Para confirmar tu cuenta, este servidor requiere que resuelvas un CAPTCHA. Puedes contactar con el administrador del servidor si tienes preguntas o necesitas ayuda para confirmar tu cuenta. + title: Verificación de usuario generic: use_this: Usar settings: diff --git a/config/locales-glitch/pl.yml b/config/locales-glitch/pl.yml index 3fcdedcf35..33f947b897 100644 --- a/config/locales-glitch/pl.yml +++ b/config/locales-glitch/pl.yml @@ -1,5 +1,41 @@ --- pl: + admin: + custom_emojis: + batch_copy_error: 'Podczas kopiowania niektórych zaznaczonych emotikon wystąpił następujący problem: %{message}' + batch_error: 'Wystąpił problem: %{message}' + settings: + captcha_enabled: + desc_html: Wymaga użycia zewnętrznych skryptów hCaptcha, co może negatywnie wpływać na bezpieczeństwo i prywatność. Może również przyczynić się do znaczącego utrudnienia procesu rejestracji niektórym, np. niepełnosprawnym, osobom. Dlatego sugeruje się używanie zaproszeń bądź ręcznie potwierdzanie kont.
    Użytkownicy rejestrujący się za pomocą limitowanych zaproszeń nie będą musieli rozwiązywać zadania CHAPTCHA + title: W celu potwierdzenia ich kont wymagaj rozwiązania zadania CAPTCHA przez nowych użytkowników + flavour_and_skin: + title: Odmiana i motyw + hide_followers_count: + desc_html: Nie pokazuj liczby obserwujących w profilach użytkowników. + title: Ukryj liczbę obserwujących + other: + preamble: Ustawienia glitch-soc niepasujące do innych kategorii. + title: Inne + outgoing_spoilers: + desc_html: Podczas wysyłania wpisów do innych serwerów ukryj ich treść za tym ostrzeżeniem a załączniki oznacz jako wrażliwe. Ta opcja jest dedykowana serwerom specjalizującym się w tematyce, która przez innych może traktowana jako wymagająca ostrzeżenia. + title: Ostrzeżenie o zawartości dla wpisów wysyłanych do innych serwerów + show_reblogs_in_public_timelines: + desc_html: Pokaż publiczne podbicia publicznych wpisów w lokalnych i publicznych osiach czasu. + title: Pokaż podbicia w publicznych osiach czasu + show_replies_in_public_timelines: + desc_html: Oprócz odpowiedzi tworzących wątki pokazuj publiczne odpowiedzi w lokalnych i publicznych osiach czasu. + title: Pokaż odpowiedzi w publicznych osiach czasu + trending_status_cw: + desc_html: Pozwól ukrytym za ostrzeżeniem wpisom na włączenie do sekcji „Popularne teraz”, jeżeli jest ona włączona. Zmiana tego ustawienia nie wpłynie na już opublikowane wpisy. + title: Pozwól ukrytym za ostrzeżeniem wpisom na włączenie do sekcji „Popularne teraz” + appearance: + localization: + glitch_guide_link: https://crowdin.com/project/glitch-soc + glitch_guide_link_text: Również w wypadku glitch-soc. + auth: + captcha_confirmation: + hint_html: Aby potwierdzić Twoje konto, ten serwer wymaga rozwiązania przez Ciebie zadania CAPTCHA. Możesz skontaktować się z administratorem, jeśli masz jakieś pytania lub potrzebujesz pomocy. + title: Weryfikacja użytkownika generic: use_this: Użyj tego settings: diff --git a/config/locales-glitch/simple_form.es-AR.yml b/config/locales-glitch/simple_form.es-AR.yml index affb4eae31..76529e4e34 100644 --- a/config/locales-glitch/simple_form.es-AR.yml +++ b/config/locales-glitch/simple_form.es-AR.yml @@ -1,18 +1,27 @@ --- es-AR: simple_form: + glitch_only: glitch-soc hints: defaults: + fields: Puedes tener hasta %{count} elementos mostrados como una tabla en tu perfil setting_default_content_type_html: Al escribir toots, asume que estás escritos en HTML, a menos que se especifique lo contrario setting_default_content_type_markdown: Al escribir toots, asume que estás usando Markdown para dar formato de texto enriquecido, a menos que se especifique lo contrario setting_default_content_type_plain: Al escribir toots, asume que estás usando texto sin formato, a menos que se especifique lo contrario (predeterminado de Mastodon) setting_default_language: El idioma de tus toots se puede detectar automáticamente, pero no siempre es correcto + setting_hide_followers_count: Ocultar el conteo de seguidores de todos, incluyendo tú. Algunas aplicaciones pueden mostrar un conteo de seguidores negativos. setting_skin: Cambia el diseño de la edición seleccionada de Mastodon labels: defaults: setting_default_content_type: Formato predeterminado de tus toots + setting_default_content_type_html: HTML + setting_default_content_type_markdown: Markdown setting_default_content_type_plain: Sin formato setting_favourite_modal: Mostrar diálogo de confirmación antes de marcar como favorito (sólo aplica a la edición Glich) setting_hide_followers_count: Ocultar tu conteo de seguidorxs setting_skin: Diseño setting_system_emoji_font: Usar la fuente predeterminada del sistema para emojis (sólo aplica a la edición Glitch) + notification_emails: + trending_link: Un vínculo en tendencia requiere revisión + trending_status: Una publicación en tendencia requiere revisión + trending_tag: Una etiqueta en tendencia requiere revisión diff --git a/config/locales-glitch/simple_form.es-MX.yml b/config/locales-glitch/simple_form.es-MX.yml index 561ca3b28b..377f20a6e3 100644 --- a/config/locales-glitch/simple_form.es-MX.yml +++ b/config/locales-glitch/simple_form.es-MX.yml @@ -1,18 +1,27 @@ --- es-MX: simple_form: + glitch_only: glitch-soc hints: defaults: + fields: Puedes tener hasta %{count} elementos mostrados como una tabla en tu perfil setting_default_content_type_html: Al escribir toots, asume que estás escritos en HTML, a menos que se especifique lo contrario setting_default_content_type_markdown: Al escribir toots, asume que estás usando Markdown para dar formato de texto enriquecido, a menos que se especifique lo contrario setting_default_content_type_plain: Al escribir toots, asume que estás usando texto sin formato, a menos que se especifique lo contrario (predeterminado de Mastodon) setting_default_language: El idioma de tus toots se puede detectar automáticamente, pero no siempre es correcto + setting_hide_followers_count: Ocultar el conteo de seguidores de todos, incluyendo tú. Algunas aplicaciones pueden mostrar un conteo de seguidores negativos. setting_skin: Cambia el diseño de la edición seleccionada de Mastodon labels: defaults: setting_default_content_type: Formato predeterminado de tus toots + setting_default_content_type_html: HTML + setting_default_content_type_markdown: Markdown setting_default_content_type_plain: Sin formato setting_favourite_modal: Mostrar diálogo de confirmación antes de marcar como favorito (sólo aplica a la edición Glich) setting_hide_followers_count: Ocultar tu conteo de seguidorxs setting_skin: Diseño setting_system_emoji_font: Usar la fuente predeterminada del sistema para emojis (sólo aplica a la edición Glitch) + notification_emails: + trending_link: Un vínculo en tendencia requiere revisión + trending_status: Una publicación en tendencia requiere revisión + trending_tag: Una etiqueta en tendencia requiere revisión diff --git a/config/locales-glitch/simple_form.es.yml b/config/locales-glitch/simple_form.es.yml index 22277d30d2..6c16642c1c 100644 --- a/config/locales-glitch/simple_form.es.yml +++ b/config/locales-glitch/simple_form.es.yml @@ -1,18 +1,27 @@ --- es: simple_form: + glitch_only: glitch-soc hints: defaults: + fields: Puedes tener hasta %{count} elementos mostrados como una tabla en tu perfil setting_default_content_type_html: Al escribir toots, asume que estás escritos en HTML, a menos que se especifique lo contrario setting_default_content_type_markdown: Al escribir toots, asume que estás usando Markdown para dar formato de texto enriquecido, a menos que se especifique lo contrario setting_default_content_type_plain: Al escribir toots, asume que estás usando texto sin formato, a menos que se especifique lo contrario (predeterminado de Mastodon) setting_default_language: El idioma de tus toots se puede detectar automáticamente, pero no siempre es correcto + setting_hide_followers_count: Ocultar el conteo de seguidores de todos, incluyendo tú. Algunas aplicaciones pueden mostrar un conteo de seguidores negativos. setting_skin: Cambia el diseño de la edición seleccionada de Mastodon labels: defaults: setting_default_content_type: Formato predeterminado de tus toots + setting_default_content_type_html: HTML + setting_default_content_type_markdown: Markdown setting_default_content_type_plain: Sin formato setting_favourite_modal: Mostrar diálogo de confirmación antes de marcar como favorito (sólo aplica a la edición Glich) setting_hide_followers_count: Ocultar tu conteo de seguidorxs setting_skin: Diseño setting_system_emoji_font: Usar la fuente predeterminada del sistema para emojis (sólo aplica a la edición Glitch) + notification_emails: + trending_link: Un vínculo en tendencia requiere revisión + trending_status: Una publicación en tendencia requiere revisión + trending_tag: Una etiqueta en tendencia requiere revisión diff --git a/config/locales-glitch/simple_form.pl.yml b/config/locales-glitch/simple_form.pl.yml index 264494c2de..081587b144 100644 --- a/config/locales-glitch/simple_form.pl.yml +++ b/config/locales-glitch/simple_form.pl.yml @@ -1,10 +1,27 @@ --- pl: simple_form: + glitch_only: glitch-soc hints: defaults: + fields: Możesz ustawić maksymalnie %{count} niestandardowe pola wyświetlane jako tabela w Twoim profilu + setting_default_content_type_html: Jeżeli nie powiedziano inaczej, załóż, że wpisy są pisane w HTML + setting_default_content_type_markdown: Jeżeli nie powiedziano inaczej, załóż, że wpisy są pisane w Markdown + setting_default_content_type_plain: Jeżeli nie powiedziano inaczej, załóż, że wpisy zawierają jedynie czysty tekst (domyślne zachowane Mastodonu) + setting_default_language: Język Twoich wpisów może zostać wykryty automatycznie, aczkolwiek poprawność działania tej fukcji nie jest gwarantowana + setting_hide_followers_count: Ukryj ilość Twoich obserwujących przed wszystkimi (równiej przed Tobą). Może to spowodować wyświetlanie ujemnej liczby obserwujących przez niektóre aplikacje. setting_skin: Zmienia wygląd używanej odmiany Mastodona labels: defaults: + setting_default_content_type: Domyślny format wpisów + setting_default_content_type_html: HTML + setting_default_content_type_markdown: Markdown + setting_default_content_type_plain: Czysty tekst setting_favourite_modal: Pytaj o potwierdzenie przed dodaniem do ulubionych + setting_hide_followers_count: Ukryj liczbę Twoich obserwujących setting_skin: Motyw + setting_system_emoji_font: Użyj systemowej czcionki emotikon (tylko w wypadku odmiany „Glitch”) + notification_emails: + trending_link: Nowy, popularny link wymaga przeglądu + trending_status: Nowy, popularny wpis wymaga przeglądu + trending_tag: Nowy, popularny tag wymaga przeglądu diff --git a/config/locales-glitch/simple_form.zh-CN.yml b/config/locales-glitch/simple_form.zh-CN.yml index 63b9e92221..c162ba721e 100644 --- a/config/locales-glitch/simple_form.zh-CN.yml +++ b/config/locales-glitch/simple_form.zh-CN.yml @@ -1,18 +1,27 @@ --- zh-CN: simple_form: + glitch_only: glitch-soc hints: defaults: + fields: 您可以在您的个人资料中最多显示 %{count} 个项目 setting_default_content_type_html: 在撰写嘟文时,除非另有指定,假定它们使用原始 HTML 语言撰写 setting_default_content_type_markdown: 在撰写嘟文时,除非另有指定,假定它们使用 Markdown 进行富文本格式化 setting_default_content_type_plain: 在撰写嘟文时,除非另有指定,假定它们是没有特殊格式的纯文本(默认的 Mastodon 行为) setting_default_language: 你的嘟文语言可以自动检测,但不一定准确 - setting_skin: 更换为所选择的 Mastodon 风味 + setting_hide_followers_count: 对所有人隐藏您的粉丝数量,包括您在内。一些应用程序可能显示负粉丝数。 + setting_skin: 更换为所选择的 Mastodon 风格 labels: defaults: setting_default_content_type: 嘟文的默认格式 + setting_default_content_type_html: HTML + setting_default_content_type_markdown: Markdown setting_default_content_type_plain: 纯文本 - setting_favourite_modal: 在喜欢嘟文前询问我 (仅限于 Glitch 风味) + setting_favourite_modal: 在喜欢嘟文前询问我 (仅限于 Glitch 风格) setting_hide_followers_count: 隐藏你的关注者人数 setting_skin: 皮肤 - setting_system_emoji_font: 表情符号使用系统默认字体 (仅限于 Glitch 风味) + setting_system_emoji_font: 表情符号使用系统默认字体 (仅限于 Glitch 风格) + notification_emails: + trending_link: 新热门链接需要审核 + trending_status: 新热门贴文需要审核 + trending_tag: 新热门话题标签需要审核 diff --git a/config/locales-glitch/zh-CN.yml b/config/locales-glitch/zh-CN.yml index 40a09c1c9d..d449f83b21 100644 --- a/config/locales-glitch/zh-CN.yml +++ b/config/locales-glitch/zh-CN.yml @@ -1,10 +1,21 @@ --- zh-CN: admin: + custom_emojis: + batch_copy_error: '复制部分所选表情时发生错误: %{message}' + batch_error: 发生了一个错误:%{message} settings: + captcha_enabled: + desc_html: 这依赖于来自hCaptcha的外部脚本,这可能是一个安全和隐私问题。 此外, 这可能使得某些人(尤其是残疾人)的注册简单程度大幅减少。 出于这些原因,请考虑采取其他措施,例如基于审核或邀请的注册。
    通过限定邀请链接注册的用户将不需要解决验证码问题 + title: 要求新用户解决验证码以确认他们的帐户 + flavour_and_skin: + title: 风格与皮肤 hide_followers_count: desc_html: 不要在用户资料中显示关注者人数 title: 隐藏关注者人数 + other: + preamble: 各种不适合归类到其他类别的glitch-soc设置。 + title: 其它 outgoing_spoilers: desc_html: 在联邦化嘟文的时候,将这个内容警告添加到没有内容警告的嘟文中。如果你的服务器专用于其他服务器可能希望有内容警告的内容,它会很有用。媒体也将被标记为敏感。 title: 对外嘟文的内容警告 @@ -14,7 +25,18 @@ zh-CN: show_replies_in_public_timelines: desc_html: 除了公开的自我回复(线程模式),在本地和跨站时间轴中显示公开回复。 title: 在公共时间轴中显示回复 + trending_status_cw: + desc_html: 当热门帖子被启用时,允许带有内容警告的帖子获得资格。此设置的更改不具有追溯性。 + title: 允许带有内容警告的帖子进入热门 + appearance: + localization: + glitch_guide_link: https://crowdin.com/project/glitch-soc + glitch_guide_link_text: Glitch-soc也是如此! + auth: + captcha_confirmation: + hint_html: 只需最后一步!为了确认您的账户,本服务器需要您解决一个验证码。如果您有疑问或需要帮助确认您的账户,请联系服务器管理员。 + title: 用户验证 generic: use_this: 使用这个 settings: - flavours: 风味 + flavours: 风格 diff --git a/config/locales/activerecord.fi.yml b/config/locales/activerecord.fi.yml index c1dbaff0fe..2cf1c823d3 100644 --- a/config/locales/activerecord.fi.yml +++ b/config/locales/activerecord.fi.yml @@ -24,11 +24,11 @@ fi: admin/webhook: attributes: url: - invalid: ei ole kelvollinen URL + invalid: ei ole kelvollinen verkko-osoite doorkeeper/application: attributes: website: - invalid: ei ole kelvollinen URL + invalid: ei ole kelvollinen verkko-osoite import: attributes: data: diff --git a/config/locales/activerecord.hu.yml b/config/locales/activerecord.hu.yml index 67bad4cb45..003afa8177 100644 --- a/config/locales/activerecord.hu.yml +++ b/config/locales/activerecord.hu.yml @@ -40,7 +40,7 @@ hu: user: attributes: email: - blocked: egy letiltott e-mail szolgáltatót használ + blocked: egy letiltott email szolgáltatót használ unreachable: úgy tűnik, hogy nem létezik role_id: elevated: nem lehet magasabb, mint a jelenlegi szereped diff --git a/config/locales/activerecord.ka.yml b/config/locales/activerecord.ka.yml index cdd4f9c4c6..cb8a03702d 100644 --- a/config/locales/activerecord.ka.yml +++ b/config/locales/activerecord.ka.yml @@ -1,13 +1,50 @@ --- ka: activerecord: + attributes: + poll: + expires_at: ბოლო ვადა + options: არჩევანი + user: + agreement: მომსახურების ხელშეკრულება + email: ელ-ფოსტის მისამართი + locale: ლოკალი + password: პაროლი + user/account: + username: მომხმარებლის სახელი + user/invite_request: + text: მიზეზი errors: models: account: attributes: username: invalid: მხოლოდ ასოები, ციფრები და "ქვედა-ტირე" + reserved: რეზერვირებულია + admin/webhook: + attributes: + url: + invalid: არასწორი URL + doorkeeper/application: + attributes: + website: + invalid: არასწორი URL + import: + attributes: + data: + malformed: არასწორად არის ფორმირებული status: attributes: reblog: taken: სტატუსის უკვე არსებობს + user: + attributes: + email: + blocked: იყენებს აკრძალულ ელ-ფოსტის პროვაიდერს + unreachable: როგორც ჩანს, არ არსებობს + role_id: + elevated: არ შეიძლება იყოს თქვენს ამჟამინდელ როლზე მაღალი + user_role: + attributes: + permissions_as_keys: + dangerous: მოიცავს ნებართვებს, რომლებიც არ არის უსაფრთხო საბაზისო როლისთვის diff --git a/config/locales/activerecord.tt.yml b/config/locales/activerecord.tt.yml index 5f28508d63..0526634be0 100644 --- a/config/locales/activerecord.tt.yml +++ b/config/locales/activerecord.tt.yml @@ -5,8 +5,8 @@ tt: user: email: Почта адресы locale: Тел - password: Парол + password: Серсүз user/account: username: Кулланучы исеме user/invite_request: - text: Сәбаб + text: Сәбәп diff --git a/config/locales/an.yml b/config/locales/an.yml index 3a6ddda1b7..43c83efdc3 100644 --- a/config/locales/an.yml +++ b/config/locales/an.yml @@ -1159,8 +1159,6 @@ an: index: hint: Este filtro s'aplica a la selección de publicacions individuals independientment d'atros criterios. Puede anyadir mas publicacions a este filtro dende la interficie web. title: Publicacions filtradas - footer: - trending_now: Tendencia agora generic: all: Totz all_items_on_page_selected_html: @@ -1429,7 +1427,6 @@ an: ios: iOS linux: Linux mac: Mac - other: plataforma desconoixida windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1646,7 +1643,6 @@ an: seamless_external_login: Has iniciau sesión dende un servicio externo, asinas que los achustes de clau y correu no son disponibles. signed_in_as: 'Sesión iniciada como:' verification: - explanation_html: 'Puetz verificar-te a tu mesmo como lo duenyo d''os links en os metadatos d''o tuyo perfil . Pa ixo, lo puesto vinculau ha de contener un vinclo a lo tuyo perfil de Mastodon. Lo vinclo en o tuyo puesto debe tener un atributo rel="me". Lo texto d''o vinclo no importa. Aquí un eixemplo:' verification: Verificación webauthn_credentials: add: Adhibir nueva clau de seguranza diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 32130cc7da..04631f7fe5 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -1214,8 +1214,6 @@ ar: index: hint: ينطبق الفلتر هذا على اختيار المنشورات الفردية بغض النظر عن المعايير الأخرى. يمكنك إضافة المزيد من المنشورات إلى هذا الفلتر من واجهة الويب. title: الرسائل المصفّاة - footer: - trending_now: المتداولة الآن generic: all: الكل changes_saved_msg: تم حفظ التعديلات بنجاح! @@ -1424,6 +1422,7 @@ ar: confirm_remove_selected_followers: هل أنت متأكد من أنك تريد إزالة المتابِعين المحددين؟ confirm_remove_selected_follows: هل أنت متيقِّن من أنك تريد إزالة الاشتراكات المحدَّدة؟ dormant: في سبات + follow_failure: تعذرت متابعة بعض الحسابات المختارة. follow_selected_followers: متابَعة المتابِعين المحددين followers: المتابِعون following: يُتابِع @@ -1463,6 +1462,7 @@ ar: electron: إلكترون firefox: فايرفكس generic: متصفح مجهول + huawei_browser: متصفح هواواي ie: إنترنت إكسبلورر micro_messenger: مايكرو ميسنجر nokia: متصفح Nokia S40 Ovi @@ -1472,6 +1472,7 @@ ar: qq: متصفح كيوكيو safari: سفاري uc_browser: متصفح UC Browser + unknown_browser: متصفح غير معروف weibo: وايبو current_session: الجلسة الحالية description: "%{browser} على %{platform}" @@ -1484,9 +1485,10 @@ ar: chrome_os: نظام كروم أواس firefox_os: نظام فايرفكس أواس ios: نظام آي أواس + kai_os: KaiOS linux: لينكس mac: ماك - other: نظام مجهول + unknown_platform: منصة غير معروفة windows: ويندوز windows_mobile: ويندوز موبايل windows_phone: ويندوز فون @@ -1728,7 +1730,6 @@ ar: seamless_external_login: لقد قمت بتسجيل الدخول عبر خدمة خارجية، إنّ إعدادات الكلمة السرية و البريد الإلكتروني غير متوفرة. signed_in_as: 'تم تسجيل دخولك بصفة:' verification: - explanation_html: 'يمكنك التحقق من نفسك كمالك لروابط البيانات التعريفية على صفحتك الشخصية. لذلك، يجب أن يحتوي الموقع المقترِن على رابط إلى صفحتك التعريفية الشخصية على ماستدون. الرابط الخلفي يجب أن يحتوي على رمز rel="me". محتوى النص في الرابط غير مهم. على سبيل المثال:' verification: التحقق webauthn_credentials: add: إضافة مفتاح أمان جديد diff --git a/config/locales/ast.yml b/config/locales/ast.yml index afdb5176c4..62da6ff901 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -601,8 +601,6 @@ ast: title: Peñeres new: title: Amestar una peñera - footer: - trending_now: En tendencia generic: all: Too all_items_on_page_selected_html: @@ -752,6 +750,7 @@ ast: electron: Electron firefox: Firefox generic: Restolador desconocíu + huawei_browser: Restolador de Huawei ie: Internet Explorer micro_messenger: MicroMessenger nokia: Restolador Ovi pa S40 de Nokia @@ -761,6 +760,7 @@ ast: qq: QQ Browser safari: Safari uc_browser: UC Browser + unknown_browser: Restolador desconocíu weibo: Weibo current_session: Sesión actual ip: IP @@ -771,9 +771,10 @@ ast: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: GNU/Linux mac: macOS - other: plataforma desconocida + unknown_platform: Plataforma desconocida windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -904,7 +905,6 @@ ast: seamless_external_login: Aniciesti la sesión pente un serviciu esternu, polo que la configuración de la contraseña ya de la direición de corréu electrónicu nun tán disponibles. signed_in_as: 'Aniciesti la sesión como:' verification: - explanation_html: 'Pues verificate como la persona propietaria de los enllaces nos metadatos del to perfil. Pa ello, el sitiu web enllaciáu ha contener un enllaz al to perfil de Mastodon. Esti enllaz ha tener l''atributu rel="me". El testu del enllaz nun importa. Equí tienes un exemplu:' verification: Verificación webauthn_credentials: create: diff --git a/config/locales/be.yml b/config/locales/be.yml index 17fcabe9b0..0509fc8307 100644 --- a/config/locales/be.yml +++ b/config/locales/be.yml @@ -840,6 +840,12 @@ be: message_html: Вы не вызначылі ніякіх правілаў сервера. sidekiq_process_check: message_html: Не працуе працэс Sidekiq для %{value} чаргі. Калі ласка праверце вашу канфігурацыю Sidekiq + upload_check_privacy_error: + action: Для падрабязнасцей націсніце тут + message_html: "Ваш сервер не наладжаны. Прыватнасць карыстальнікаў пад пагрозай." + upload_check_privacy_error_object_storage: + action: Для падрабязнасцей націсніце тут + message_html: "Ваша сховішча не наладжана. Прыватнасць карыстальнікаў пад пагрозай." tags: review: Стан праверкі updated_msg: Налады хэштэгаў паспяхова змененыя @@ -1238,8 +1244,6 @@ be: index: hint: Гэты фільтр прымяняецца для выбару асобных допісаў незалежна ад іншых крытэрыяў. Вы можаце дадаць больш допісаў у гэты фільтр з вэб-інтэрфейсу. title: Адфільтраваныя допісы - footer: - trending_now: Актуальнае generic: all: Усе all_items_on_page_selected_html: @@ -1459,6 +1463,7 @@ be: confirm_remove_selected_followers: Вы ўпэўнены, што жадаеце выдаліць выбраных падпісчыкаў? confirm_remove_selected_follows: Вы ўпэўнены, што жадаеце выдаліць выбраныя падпіскі? dormant: Занядбаны + follow_failure: Вы не можаце падпісацца на некаторыя акаўнты. follow_selected_followers: Падпісацца на выбраных падпісчыкаў followers: Падпісчыкі following: Падпісаны @@ -1498,6 +1503,7 @@ be: electron: Electron firefox: Firefox generic: Невядомы браўзер + huawei_browser: Браўзер Huawei ie: Internet Explorer micro_messenger: MicroMessenger nokia: Nokia S40 Ovi Browser @@ -1507,6 +1513,7 @@ be: qq: QQ Browser safari: Safari uc_browser: UC Browser + unknown_browser: Невядомы браўзер weibo: Weibo current_session: Бягучая сесія description: "%{browser} на %{platform}" @@ -1519,9 +1526,10 @@ be: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: macOS - other: невядомай платформе + unknown_platform: Невядомая платформа windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1746,12 +1754,13 @@ be: title: Рады вітаць вас, %{name}! users: follow_limit_reached: Вы не можаце падпісацца на большую колькасць людзей чым %{limit} + go_to_sso_account_settings: Перайдзіце ў налады ідэнтыфікацыі вашага ўліковага запісу invalid_otp_token: Няправільны код двухфактарнай аўтэнтыфікацыі otp_lost_help_html: Калі вы страцілі доступ да абодвух, вы можаце скарыстацца %{email} seamless_external_login: Вы ўвайшлі праз знешні сэрвіс, таму налады пароля і эл. пошты недаступныя. signed_in_as: 'Увайшлі як:' verification: - explanation_html: 'Вы можаце пацвердзіць сябе як уладальніка спасылак у метададзеных вашага профілю. Для гэтага спасылка на вэб-сайт павінна ўтрымліваць спасылку на ваш профіль Mastodon. Зваротная спасылка павінна мець атрыбут rel="me". Тэкставы змест спасылкі не мае значэння. Вось прыклад:' + explanation_html: 'Вы можаце пацвердзіць сябе як уладальніка спасылак у метададзеных вашага профілю. Для гэтага спасылка на вэб-сайт павінна ўтрымліваць спасылку на ваш профіль Mastodon. Пасля дадавання спасылка, вам спатрэбіцца вярнуцца і перазахаваць свой профіль, каб усё адбыдося. Зваротная спасылка павінна мець атрыбут rel="me". Тэкставы змест спасылкі не мае значэння. Вось прыклад:' verification: Верыфікацыя webauthn_credentials: add: Дадаць новы ключ бяспекі diff --git a/config/locales/bg.yml b/config/locales/bg.yml index 7483c562b0..4304966fa4 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -812,6 +812,12 @@ bg: message_html: Не сте определили никакви правила на сървъра. sidekiq_process_check: message_html: Не работи процес Sidekiq за %{value} опашка/и. Прегледайте настройките си за Sidekiq + upload_check_privacy_error: + action: Щракнете тук за повече информация + message_html: "Вашият уеб сървър е погрешно конфигуриран. Поверителността на потребителите ви е изложена на риск." + upload_check_privacy_error_object_storage: + action: Щракнете тук за повече информация + message_html: "Вашето съхранение на предмети е погрешно конфигурирано. Поверителността на потребителите ви е изложена на риск." tags: review: Преглед на състояние updated_msg: Успешно осъвременени настройки на хаштага @@ -935,7 +941,7 @@ bg: new_trending_tags: no_approved_tags: Сега няма одобрени налагащи се хаштагове. requirements: 'Всеки от тези кандидати може да надмине #%{rank} одобрен актуален хаштаг, който в момента е #%{lowest_tag_name} с резултат %{lowest_tag_score}.' - title: Нашумели хаштагове + title: Налагащи се хаштагове subject: Нови нашумели, готови за преглед в %{instance} aliases: add_new: Създаване на псевдоним @@ -1196,8 +1202,6 @@ bg: index: hint: Този филтър се прилага за избор на отделни публикации, независимо от други критерии. Може да добавите още публикации в този филтър от уебинтерфейса. title: Филтрирани публикации - footer: - trending_now: Налагащи се сега generic: all: Всичко all_items_on_page_selected_html: @@ -1407,6 +1411,7 @@ bg: confirm_remove_selected_followers: Наистина ли искате да премахнете избраните последователи? confirm_remove_selected_follows: Наистина ли искате да премахнете избраните последвания? dormant: Неактивен + follow_failure: Не може да се последват някои от избраните акаунти. follow_selected_followers: Последване на избраните последователи followers: Последователи following: Последвани @@ -1446,6 +1451,7 @@ bg: electron: Electron firefox: Firefox generic: Неизвестен браузър + huawei_browser: Браузър Хуауей ie: Internet Explorer micro_messenger: MicroMessenger nokia: Браузър Nokia S40 Ovi @@ -1455,6 +1461,7 @@ bg: qq: Браузър QQ safari: Safari uc_browser: Браузър UC + unknown_browser: Неизвестен браузър weibo: Weibo current_session: Текуща сесия description: "%{browser} на %{platform}" @@ -1467,9 +1474,10 @@ bg: chrome_os: ChromeOS firefox_os: Оп. сист. Firefox ios: iOS + kai_os: KaiOS linux: Линукс mac: macOS - other: неизвестна платформа + unknown_platform: Неизвестна платформа windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1682,12 +1690,13 @@ bg: title: Добре дошли на борда, %{name}! users: follow_limit_reached: Не може да последвате повече от %{limit} души + go_to_sso_account_settings: Отидете при настройките на акаунта на своя доставчик на идентичност invalid_otp_token: Невалиден код otp_lost_help_html: Ако загубите достъп до двете, то може да се свържете с %{email} seamless_external_login: Влезли сте чрез външна услуга, така че настройките за парола и имейл не са налични. signed_in_as: 'Влезли като:' verification: - explanation_html: 'Можете да удостоверите самоличността си като собственик на линковете в метаданните на своя профил. За целта сайтът, към който води линк от метаданните, трябва да съдържа линк обратно към вашия профил в Mastodon. Линкът от сайта трябва да съдържа атрибут rel="me". Текстовото съдържание на линка няма значение. Ето пример:' + explanation_html: 'Може да потвърдите себе си като собственик на връзките в метаданните на профила си. За целта свързаният уебсайт трябва да съдържа обратна връзка към профилa ви в Mastodon. След добавянето на връзката, може да се наложи да се върнете тук и да запазите пак профила си, за да влезе в сила потвърждаването. Връзката обратно трябва да има атрибут rel="me". Текстовото съдържание на връзката няма значение. Ето пример:' verification: Проверка webauthn_credentials: add: Добавяне на нов ключ за сигурност diff --git a/config/locales/br.yml b/config/locales/br.yml index 6be93d2924..ee465368af 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -469,7 +469,6 @@ br: ios: iOS linux: Linux mac: macOS - other: savenn dianav windows: Windows revoke: Dizober settings: @@ -536,7 +535,6 @@ br: users: signed_in_as: 'Aet-tre evel:' verification: - explanation_html: 'Gallout a rit gwiriañ c''hwi a zo perc''henn. ez liammoù metadata ho profil. Ret eo d''al lec''hienn web staget enderc''hel ul liamm evit mont d''ho profil Mastodon. Ret eo d''al liamm-se enderc''hel un doarenn rel="me". Ne ra forzh an destenn a zo e-barzh al liamm. Setu ur skouer:' verification: Amprouadur webauthn_credentials: add: Ouzphennañ un alc'hwez surentez nevez diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 68c5db23e4..0d84c2c90b 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -812,6 +812,12 @@ ca: message_html: No has definit cap norma del servidor. sidekiq_process_check: message_html: No hi ha cap procés de Sidekiq executant-se per a la cua (o cues) de %{value}. Si us plau revisa la teva configuració de Sidekiq + upload_check_privacy_error: + action: Consulta aquí per a més informació + message_html: "El teu servidor no està ben configurat. La privacitat dels teus usuaris està en risc." + upload_check_privacy_error_object_storage: + action: Consulta aquí per a més informació + message_html: "El teu emagatzamatge d'objectes no està ben configurat. La privacitat dels teus usuaris està en risc." tags: review: Revisar l'estat updated_msg: Ajustaments d'etiquetes actualitzats amb èxit @@ -1196,8 +1202,6 @@ ca: index: hint: Aquest filtre aplica als tuts seleccionats independentment d'altres criteris. Pots afegir més tuts a aquest filtre des de la interfície Web. title: Tuts filtrats - footer: - trending_now: En tendència generic: all: Tot all_items_on_page_selected_html: @@ -1407,6 +1411,7 @@ ca: confirm_remove_selected_followers: Segur que vols esborrar els seguidors seleccionats? confirm_remove_selected_follows: Segur que vols esborrar els seguits seleccionats? dormant: Inactiu + follow_failure: No es poden seguir alguns dels comptes seleccionats. follow_selected_followers: Segueix als seguidors seleccionats followers: Seguidors following: Seguint @@ -1446,15 +1451,17 @@ ca: electron: Electron firefox: Firefox generic: Navegador desconegut + huawei_browser: Navegador Huawei ie: Internet Explorer micro_messenger: MicroMessenger - nokia: Nokia S40 Ovi Browser + nokia: Navegador Nokia S40 Ovi opera: Opera otter: Otter phantom_js: PhantomJS - qq: QQ Browser + qq: Navegador QQ safari: Safari uc_browser: Navegador UC + unknown_browser: Navegador Desconegut weibo: Weibo current_session: Sessió actual description: "%{browser} de %{platform}" @@ -1467,9 +1474,10 @@ ca: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: Mac - other: plataforma desconeguda + unknown_platform: Plataforma desconeguda windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1682,12 +1690,13 @@ ca: title: Benvingut a bord, %{name}! users: follow_limit_reached: No pots seguir més de %{limit} persones + go_to_sso_account_settings: Ves a la configuració del compte del teu proveïdor d'identitat invalid_otp_token: El codi de dos factors no és correcte otp_lost_help_html: Si has perdut l'accés a tots dos pots contactar per %{email} seamless_external_login: Has iniciat sessió via un servei extern per tant els ajustos de contrasenya i correu electrònic no estan disponibles. signed_in_as: 'Sessió iniciada com a:' verification: - explanation_html: 'Pots verificar-te com a propietari dels enllaços a les metadades del teu perfil. Per això, el lloc web enllaçat ha de contenir un enllaç al teu perfil de Mastodon. El vincle ha de tenir l''atribut rel="me". El contingut del text de l''enllaç no importa. Aquí tens un exemple:' + explanation_html: 'Pots verificar-te com a propietari dels enllaços a les metadades del teu perfil. Per això, el lloc web enllaçat ha de contenir un enllaç al teu perfil de Mastodon. Després d''afegir l''enllaç, podries necessitar tornar aquí a desar el teu perfil per a fer efectiva la verificació. El vincle ha de tenir l''atribut rel="me". El contingut del text de l''enllaç no importa. Aquí tens un exemple:' verification: Verificació webauthn_credentials: add: Afegir nova clau de seguretat diff --git a/config/locales/ckb.yml b/config/locales/ckb.yml index 2cfa5dfee8..1970761e17 100644 --- a/config/locales/ckb.yml +++ b/config/locales/ckb.yml @@ -744,8 +744,6 @@ ckb: title: فلتەرەکان new: title: زیادکردنی فلتەری نوێ - footer: - trending_now: هەوادارانی ئێستا generic: all: هەموو changes_saved_msg: گۆڕانکاریەکان بە سەرکەوتوویی هەڵگیرا! @@ -943,7 +941,6 @@ ckb: firefox_os: سیستەمی کارگێڕی فایەرفۆکس linux: لینۆکس mac: ماک - other: سیستەمیکارگێڕی نەناسراو windows: ویندۆز windows_mobile: ویندۆزموبایل windows_phone: ویندۆزفۆن @@ -1073,7 +1070,6 @@ ckb: seamless_external_login: تۆ لە ڕێگەی خزمەتگوزاری دەرەکیەوە داخڵ بووی، بۆیە ڕێکبەندەکانی نهێنوشە و ئیمەیل بەردەست نین. signed_in_as: 'چوونە ژوورەوە وەک:' verification: - explanation_html: 'دەتوانیت خۆت بسەلمێنیت وەک خاوەنی لینکەکان لە مێتاداتای پرۆفایلەکەت. بۆ ئەمە، ماڵپەڕە لینککراوەکە پێویستە لینکێکی تێدا بێت بۆ پرۆفایلی ماستۆدۆنەکەت. بەستەری دەبێت هەبێت ="me". ناوەڕۆکی دەقی لینکەکە گرنگ نییە. ئەمە نموونەیەکە:' verification: ساغ کردنەوە webauthn_credentials: add: زیادکردنی کلیلی ئاسایشی نوێ diff --git a/config/locales/co.yml b/config/locales/co.yml index 6cf1f28b33..9f48bdb4bc 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -704,8 +704,6 @@ co: title: Filtri new: title: Aghjunghje un novu filtru - footer: - trending_now: Tindenze d'avà generic: all: Tuttu changes_saved_msg: Cambiamenti salvati! @@ -930,7 +928,6 @@ co: ios: iOS linux: Linux mac: macOS - other: piattaforma scunnisciuta windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1092,7 +1089,6 @@ co: seamless_external_login: Site cunnettatu·a dapoi un serviziu esternu, allora i parametri di chjave d’accessu è d’indirizzu e-mail ùn so micca dispunibili. signed_in_as: 'Cunnettatu·a cum’è:' verification: - explanation_html: 'Pudete verificavi cum''è u pruprietariu di i ligami in i metadati di u vostru prufile. Per quessa, u vostru situ deve avè un ligame versu a vostra pagina Mastodon. U ligame deve avè un''attributu rel="me". U cuntenutu di u testu di u ligame ùn hè micca impurtante. Eccu un''esempiu:' verification: Verificazione webauthn_credentials: add: Aghjunghje una chjave di sicurità diff --git a/config/locales/cs.yml b/config/locales/cs.yml index f6796ec6b8..9e7ecb6ede 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -635,6 +635,7 @@ cs: placeholder: Popište, jaké akce byly vykonány, nebo jakékoliv jiné související aktuality… title: Poznámky notes_description_html: Zobrazit a zanechat poznámky pro ostatní moderátory i sebe v budoucnu + processed_msg: Nahlášení č.%{id} bylo úspěšně zpracováno quick_actions_description_html: 'Proveďte rychlou akci nebo skrolujte dolů pro nahlášený obsah:' remote_user_placeholder: vzdálený uživatel z %{instance} reopen: Znovu otevřít hlášení @@ -647,6 +648,10 @@ cs: status: Stav statuses: Nahlášený obsah statuses_description_html: Obsah porušující pravidla bude uveden v komunikaci s nahlášeným účtem + summary: + actions: + delete_html: Odstranit urážlivé příspěvky + close_report: Označit nahlášení č.%{id} za vyřešené target_origin: Původ nahlášeného účtu title: Hlášení unassign: Odebrat @@ -805,6 +810,7 @@ cs: suspend: Uživatel %{name} pozastavil účet %{target} appeal_approved: Podáno odvolání appeal_pending: Čekající odvolání + appeal_rejected: Odvolání zamítnuto system_checks: database_schema_check: message_html: Na spuštění čekají databázové migrace. Nechte je prosím proběhnout pro zajištění očekávaného chování aplikace @@ -1213,8 +1219,6 @@ cs: index: hint: Tento filtr se vztahuje na výběr jednotlivých příspěvků bez ohledu na jiná kritéria. Do tohoto filtru můžete přidat více příspěvků z webového rozhraní. title: Filtrované příspěvky - footer: - trending_now: Právě populární generic: all: Všechny all_items_on_page_selected_html: @@ -1473,6 +1477,7 @@ cs: electron: Electron firefox: Firefox generic: Neznámý prohlížeč + huawei_browser: Prohlížeč Huawei ie: Internet Explorer micro_messenger: MicroMessenger nokia: Nokia S40 Ovi Browser @@ -1482,6 +1487,7 @@ cs: qq: QQ Browser safari: Safari uc_browser: UC Browser + unknown_browser: Neznámý prohlížeč weibo: Weibo current_session: Aktuální relace description: "%{browser} na systému %{platform}" @@ -1494,9 +1500,10 @@ cs: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: macOS - other: neznámá platforma + unknown_platform: Neznámá platforma windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1726,7 +1733,6 @@ cs: seamless_external_login: Jste přihlášeni přes externí službu, nastavení hesla a e-mailu proto nejsou dostupná. signed_in_as: 'Přihlášeni jako:' verification: - explanation_html: 'Můžete se ověřit jako vlastník odkazů v metadatech profilu. Pro tento účel musí stránka v odkazu obsahovat odkaz zpět na váš profil na Mastodonu. Odkaz zpět musí mít atribut rel="me". Na textu odkazu nezáleží. Zde je příklad:' verification: Ověření webauthn_credentials: add: Přidat nový bezpečnostní klíč diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 14ecbe7034..3f451ef725 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -868,6 +868,12 @@ cy: message_html: Nid ydych wedi diffinio unrhyw reolau gweinydd. sidekiq_process_check: message_html: Does dim proses Sidekiq yn rhedeg ar gyfer y ciw(iau) %{value}. Adolygwch eich ffurfweddiad Sidekiq + upload_check_privacy_error: + action: Ewch yma am fwy o wybodaeth + message_html: "Mae eich gweinydd gwe wedi'i gam ffurfweddu.. Mae preifatrwydd eich defnyddwyr mewn perygl." + upload_check_privacy_error_object_storage: + action: Ewch yma am fwy o wybodaeth + message_html: "Mae eich storfa gwrthrychau wedi'i cham ffurfweddu. Mae preifatrwydd eich defnyddwyr mewn perygl." tags: review: Adolygu statws updated_msg: Gosodiadau hashnodau wedi'i diweddaru'n llwyddiannus @@ -1280,8 +1286,6 @@ cy: index: hint: Mae'r hidlydd hwn yn berthnasol i ddethol postiadau unigol waeth beth fo'r meini prawf eraill. Gallwch ychwanegu mwy o bostiadau at yr hidlydd hwn o'r rhyngwyneb gwe. title: Postiadau wedi'u hidlo - footer: - trending_now: Trendiau generic: all: Popeth all_items_on_page_selected_html: @@ -1511,6 +1515,7 @@ cy: confirm_remove_selected_followers: Ydych chi'n siŵr eich bod am ddileu'r dilynwyr a ddewiswyd? confirm_remove_selected_follows: Ydych chi'n siŵr eich bod am ddileu'r canlynol? dormant: Segur + follow_failure: Methu dilyn rhai o'r cyfrifon a ddewiswyd. follow_selected_followers: Dilynwch y dilynwyr a ddewiswyd followers: Dilynwyr following: Yn dilyn @@ -1550,6 +1555,7 @@ cy: electron: Electron firefox: Firefox generic: Porwr anhysbys + huawei_browser: Porwr Huawei ie: Nid yw'r rhaglen hon yn gydnaws ag Internet Explorer micro_messenger: MicroMessenger nokia: Porwr Nokia S40 Ovi @@ -1559,6 +1565,7 @@ cy: qq: Porwr QQ safari: Agor yn Safari uc_browser: UC Browser + unknown_browser: Porwr Anhysbys weibo: Weibo current_session: Sesiwn gyfredol description: "%{browser} ar %{platform}" @@ -1571,9 +1578,10 @@ cy: chrome_os: ChromeOS firefox_os: OS Firefox ios: iOS + kai_os: KaiOS linux: Linux mac: Mac - other: platfform anhysbys + unknown_platform: Platfform Anhysbys windows: Windows windows_mobile: Windows Mobile windows_phone: Ffôn Windows @@ -1810,12 +1818,13 @@ cy: title: Croeso, %{name}! users: follow_limit_reached: Nid oes modd i chi ddilyn mwy na %{limit} o bobl + go_to_sso_account_settings: Ewch i osodiadau cyfrif eich darparwr hunaniaeth invalid_otp_token: Côd dau-ffactor annilys otp_lost_help_html: Os colloch chi fynediad i'r ddau, mae modd i chi gysylltu a %{email} seamless_external_login: Yr ydych wedi'ch mewngofnodi drwy wasanaeth allanol, felly nid yw gosodiadau cyfrinair ac e-bost ar gael. signed_in_as: 'Wedi mewngofnodi fel:' verification: - explanation_html: 'Mae modd i chi ddilysu eich hun fel perchenog y dolenni yn metadata eich proffil. Rhaid i''r wefan â dolen iddi gynnwys dolen yn ôl i''ch proffil Mastodon. Rhaid i''r ddolen yn ôl cynnwys y nodwedd rel="me". Does dim ots beth yw cynnwys testun y ddolen. Dyma enghraifft:' + explanation_html: 'Gallwch wirio eich hun fel perchennog y dolenni ym metadata eich proffil . Ar gyfer gwneud hynny, rhaid i''r wefan gysylltiedig gynnwys dolen yn ôl i''ch proffil Mastodon. Ar ôl ychwanegu''r ddolen efallai y bydd angen i chi ddod yn ôl yma ac ail-gadw''ch proffil er mwyn i''r dilysiad ddod i rym. Rhaid i''r ddolen yn ôl gael priodoledd rêl="me". Nid yw cynnwys testun y ddolen o bwys. Dyma enghraifft:' verification: Dilysu webauthn_credentials: add: Ychwanegu allwedd ddiogelwch newydd diff --git a/config/locales/da.yml b/config/locales/da.yml index 38111748d8..c558aafd67 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -580,7 +580,10 @@ da: mark_as_sensitive_description_html: Medierne i det anmeldte indlæg markeres som sensitive, og en advarsel (strike) registreres mhp. eskalering ved evt. fremtidige overtrædelser fra samme konto. other_description_html: Se flere muligheder relateret til at adfærdshåndtering for, samt tilpasning af kommunikation til, den anmeldte konto. resolve_description_html: Ingen foranstaltninger træffes mod den anmeldte konto, ingen advarsel (strike) registreres og anmeldelsen lukkes. + silence_description_html: Kontoen vil kun være synlig for følgerene eller dem, som manuelt slå den op, hvilket markant begrænser dens udbredelse. Kan altid omgøres. Lukker alle indrapporteringer af kontoen. + suspend_description_html: Kontoen inkl. alt indhold utilgængeliggøres og interaktion umuliggøres, og den slettes på et tidspunkt. Kan omgøres inden for 30 dage. Lukker alle indrapporteringer af kontoen. actions_description_html: Afgør, hvilke foranstaltning, der skal træffes for at løse denne anmeldelse. Træffes en straffende foranstaltning mod den anmeldte konto, fremsendes en e-mailnotifikation, undtagen når kategorien Spam er valgt. + actions_description_remote_html: Fastslå en nødvendig handling mhp. at løse denne anmeldelse. Dette vil kun påvirke din servers kommunikation med, og indholdshåndtering for, fjernkontoen. add_to_report: Føj mere til anmeldelse are_you_sure: Sikker? assign_to_self: Tildel til mig @@ -739,6 +742,7 @@ da: preamble: At vise interessant indhold er vitalt ifm. at få nye brugere om bord, som måske ikke kender nogen på Mastodon. Styr, hvordan forskellige opdagelsesfunktioner fungerer på serveren. profile_directory: Profiloversigt public_timelines: Offentlige tidslinjer + publish_discovered_servers: Udgiv fundne servere publish_statistics: Udgiv statistik title: Opdagelse trends: Trends @@ -808,6 +812,12 @@ da: message_html: Ingen serverregler defineret. sidekiq_process_check: message_html: Ingen Sidekiq-proces kører for %{value}-kø(er). Gennemgå Sidekiq-opsætningen + upload_check_privacy_error: + action: Tjek her for flere oplysninger + message_html: "Webserveren er fejlopsat. Brugernes fortrolighed er i fare." + upload_check_privacy_error_object_storage: + action: Tjek her for flere oplysninger + message_html: "Objektlageret er fejlopsat. Brugernes fortrolighed er i fare." tags: review: Revisionsstatus updated_msg: Hashtag-indstillinger opdateret @@ -971,7 +981,7 @@ da: apply_for_account: Anmod om en konto change_password: Adgangskode confirmations: - wrong_email_hint: Er denne e-mail-adresse ikke korrekt, kan den ændres i kontoindstillinger. + wrong_email_hint: Er denne e-mailadresse ikke korrekt, kan den ændres i kontoindstillinger. delete_account: Slet konto delete_account_html: Ønsker du at slette din konto, kan du gøre dette hér. Du vil blive bedt om bekræftelse. description: @@ -1192,8 +1202,6 @@ da: index: hint: Dette filter gælder for udvalgte, individuelle indlæg uanset andre kriterier. Flere indlæg kan føjes til filteret via webfladen. title: Filtrerede indlæg - footer: - trending_now: Trender lige nu generic: all: Alle all_items_on_page_selected_html: @@ -1401,7 +1409,9 @@ da: activity: Kontoaktivitet confirm_follow_selected_followers: Sikker på, at de valgte følgere skal følges? confirm_remove_selected_followers: Sikker på, at de valgte følgere skal fjernes? + confirm_remove_selected_follows: Sikker på, at de valgte følgere skal fjernes? dormant: I dvale + follow_failure: Kunne ikke følge alle af de valgte konti. follow_selected_followers: Følg valgte følgere followers: Følgere following: Følger @@ -1441,6 +1451,7 @@ da: electron: Electron firefox: Firefox generic: Ukendt browser + huawei_browser: Huawei Browser ie: IE micro_messenger: MicroMessenger nokia: Nokia S40 Ovi Browser @@ -1450,6 +1461,7 @@ da: qq: QQ Browser safari: Safari uc_browser: UC Browser + unknown_browser: Ukendt browser weibo: Weibo current_session: Aktuelle session description: "%{browser} på %{platform}" @@ -1462,9 +1474,10 @@ da: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: macOS - other: ukendt platform + unknown_platform: Ukendt platform windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1677,12 +1690,13 @@ da: title: Velkommen ombord, %{name}! users: follow_limit_reached: Du kan maks. følge %{limit} personer + go_to_sso_account_settings: Gå til identitetsudbyderens kontoindstillinger invalid_otp_token: Ugyldig tofaktorkode otp_lost_help_html: Har du mistet adgang til begge, kan du kontakte %{email} seamless_external_login: Du er logget ind via en ekstern tjeneste, så adgangskode- og e-mailindstillinger er utilgængelige. signed_in_as: 'Logget ind som:' verification: - explanation_html: 'Du kan bekræfte dig selv som ejer af linkene i din profilmetadata. For at gøre det, skal det linkede websted indeholde et link pegende tilbage til din Mastodon-profil. Returlinket skal have en rel="me"-attribut. Linkets tekstindhold betyder ikke noget. Her er et eksempel:' + explanation_html: 'Man kan bekræfte sig selv som ejer af linkene i profilmetadataene. For at gøre dette, skal det linkede websted indeholde et link tilbage til Mastodon-profilen. Efter tilføjelse af linket, skal man muligvis returnere hertil og gemme sin profil igen, før bekræftelsen effektueres. Returlinket skal have en rel="me"-attribut. Linkets tekstindhold er ligegyldigt. Her er et eksempel:' verification: Bekræftelse webauthn_credentials: add: Tilføj ny sikkerhedsnøgle diff --git a/config/locales/de.yml b/config/locales/de.yml index 69284b09f9..91e4e84ae4 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -12,12 +12,12 @@ de: one: Follower other: Folgende following: Folge ich - instance_actor_flash: Dieses Konto ist ein virtueller Akteur, der den Server selbst repräsentiert und nicht ein einzelner Benutzer. Es wird für Föderationszwecke verwendet und sollte nicht gesperrt werden. + instance_actor_flash: Dieses Konto ist ein virtueller Akteur, der den Server selbst repräsentiert, und kein persönliches Profil. Es wird für Föderationszwecke verwendet und sollte daher nicht gesperrt werden. last_active: zuletzt aktiv link_verified_on: Das Profil mit dieser E-Mail-Adresse wurde bereits am %{date} bestätigt nothing_here: Keine Treffer mit dieser Auswahl pin_errors: - following: Du musst dieser Person bereits folgen, um sie empfehlen zu können + following: Du musst dieser Person folgen, um sie empfehlen zu können posts: one: Beitrag other: Beiträge @@ -29,7 +29,7 @@ de: account_moderation_notes: create: Notiz abspeichern created_msg: Moderationshinweis erfolgreich abgespeichert! - destroyed_msg: Moderationsnotiz erfolgreich gelöscht! + destroyed_msg: Moderationsnotiz erfolgreich entfernt! accounts: add_email_domain_block: E-Mail-Domain sperren approve: Genehmigen @@ -58,7 +58,7 @@ de: demote: Zurückstufen destroyed_msg: Daten von %{username} wurden zum Löschen in die Warteschlange eingereiht disable: Einfrieren - disable_sign_in_token_auth: Deaktiviere die Zwei-Faktor-Authentisierung (2FA) per E-Mail + disable_sign_in_token_auth: E-Mail-Token-Authentisierung deaktivieren disable_two_factor_authentication: Zwei-Faktor-Authentisierung (2FA) deaktivieren disabled: Eingefroren display_name: Angezeigter Name @@ -67,7 +67,7 @@ de: email: E-Mail-Adresse email_status: Status der E-Mail-Adresse enable: Freischalten - enable_sign_in_token_auth: Aktiviere die Zwei-Faktor-Authentisierung (2FA) per E-Mail + enable_sign_in_token_auth: E-Mail-Token-Authentisierung aktivieren enabled: Freigegeben enabled_msg: Konto von %{username} erfolgreich freigegeben followers: Follower @@ -105,10 +105,10 @@ de: not_subscribed: Nicht abonniert pending: Überprüfung ausstehend perform_full_suspension: Sperren - previous_strikes: Vorherige Verstöße + previous_strikes: Vorherige Maßnahmen previous_strikes_description_html: - one: Dieses Konto hat einen Verstoß. - other: Dieses Konto hat %{count} Verstöße. + one: Gegen dieses Konto wurde eine Maßnahme verhängt. + other: Gegen dieses Konto wurden %{count} Maßnahmen verhängt. promote: Berechtigungen erweitern protocol: Protokoll public: Öffentlich @@ -259,7 +259,7 @@ de: destroy_user_role_html: "%{name} löschte die Rolle %{target}" disable_2fa_user_html: "%{name} hat die Zwei-Faktor-Authentisierung für %{target} deaktiviert" disable_custom_emoji_html: "%{name} deaktivierte das Emoji %{target}" - disable_sign_in_token_auth_user_html: "%{name} hat die E-Mail-Token-Authentifizierung für %{target} deaktiviert" + disable_sign_in_token_auth_user_html: "%{name} hat die E-Mail-Token-Authentisierung für %{target} deaktiviert" disable_user_html: "%{name} hat den Zugang für %{target} deaktiviert" enable_custom_emoji_html: "%{name} aktivierte das Emoji %{target}" enable_sign_in_token_auth_user_html: "%{name} hat die E-Mail-Token-Authentifizierung für %{target} aktiviert" @@ -441,7 +441,7 @@ de: import: description_html: Du bist dabei, eine Liste von Domains zu importieren, die auf diesem Server gesperrt oder anderweitig eingeschränkt werden. Bitte überprüfe diese Liste sehr sorgfältig, insbesondere dann, wenn du sie nicht selbst erstellt hast. existing_relationships_warning: Bestehende Folgebeziehungen - private_comment_description_html: 'Damit du später nachvollziehen kannst, woher die importierten Sperren stammen, kannst du diesem Eintrag eine private Notiz hinzufügen: %{comment}' + private_comment_description_html: 'Damit du später nachvollziehen kannst, woher die importierten Sperren stammen, werden sie mit diesem privaten Kommentar erstellt: %{comment}' private_comment_template: Importiert von %{source} am %{date} title: Domains importieren invalid_domain_block: 'Ein oder mehrere Domainsperren wurden wegen folgenden Fehler(n) übersprungen: %{error}' @@ -452,19 +452,19 @@ de: description_html: "Folgeempfehlungen helfen neuen Nutzer*innen, interessante Inhalte schnell zu finden. Wenn ein*e Nutzer*in noch nicht genug mit anderen interagiert hat, um personalisierte Folgeempfehlungen zu erhalten, werden stattdessen diese Profile verwendet. Sie werden täglich, basierend auf einer Mischung aus am meisten interagierenden Konten und jenen mit den meisten Followern für eine bestimmte Sprache, neu berechnet." language: Für Sprache status: Status - suppress: Folgeempfehlungen unterdrücken + suppress: Folgeempfehlung unterbinden suppressed: Unterdrückt title: Folgeempfehlungen - unsuppress: Nicht mehr unterdrücken + unsuppress: Folgeempfehlung nicht mehr unterbinden instances: availability: description_html: - one: Wenn die Zustellung an die Domain seit %{count} Tag erfolglos bleibt, werden keine weiteren Auslieferungsversuche unternommen, es sei denn, eine Zustellung von dieser Domain wird empfangen. - other: Wenn die Zustellung an die Domain seit %{count} Tagen erfolglos bleibt, werden keine weiteren Zustellungsversuche unternommen, es sei denn, eine Zustellung von dieser Domain wird empfangen. + one: Wenn die Zustellung an die Domain %{count} Tag lang erfolglos bleibt, werden keine weiteren Zustellversuche unternommen, bis eine Zustellung von der Domain empfangen wird. + other: Wenn die Zustellung an die Domain an %{count} unterschiedlichen Tagen erfolglos bleibt, werden keine weiteren Zustellversuche unternommen, bis eine Zustellung von der Domain empfangen wird. failure_threshold_reached: Fehlschlag-Schwelle am %{date} erreicht. failures_recorded: - one: Fehlgeschlagener Versuch am %{count}. Tag. - other: Fehlgeschlagener Versuch am %{count}. Tag. + one: Fehlgeschlagener Versuch an %{count} Tag. + other: Fehlgeschlagene Versuche an %{count} unterschiedlichen Tagen. no_failures_recorded: Keine Fehler bei der Aufzeichnung. title: Verfügbarkeit warning: Der letzte Versuch, sich mit diesem Server zu verbinden, war nicht erfolgreich @@ -472,7 +472,7 @@ de: back_to_limited: Stummgeschaltet back_to_warning: Warnung by_domain: Domain - confirm_purge: Bist du dir sicher, dass du die Daten für diese Domain für immer löschen möchtest? + confirm_purge: Bist du dir sicher, dass du die Daten von dieser Domain dauerhaft löschen möchtest? content_policies: comment: Interne Notiz description_html: Du kannst Inhaltsrichtlinien definieren, die auf alle Konten dieser Domain und einer ihrer Subdomains angewendet werden. @@ -503,7 +503,7 @@ de: unavailable: Nicht verfügbar delivery_available: Zustellung funktioniert delivery_error_days: Tage der fehlerhaften Zustellung - delivery_error_hint: Wenn eine Auslieferung %{count} Tage lang nicht möglich ist, wird sie automatisch als unzustellbar markiert. + delivery_error_hint: Wenn eine Zustellung %{count} Tage lang nicht möglich ist, wird sie automatisch als unzustellbar markiert. destroyed_msg: Daten von %{domain} sind nun in der Warteschlange für die bevorstehende Löschung. empty: Keine Domains gefunden. known_accounts: @@ -556,7 +556,7 @@ de: disable: Ausschalten disabled: Ausgeschaltet enable: Einschalten - enable_hint: Sobald aktiviert, wird dein Server alle öffentlichen Beiträge dieses Relays abonnieren und alle öffentlichen Beiträge dieses Servers an dieses senden. + enable_hint: Sobald aktiviert, wird dein Server alle öffentlichen Beiträge dieses Relais abonnieren und alle öffentlichen Beiträge dieses Servers an dieses senden. enabled: Eingeschaltet inbox_url: Relay-URL pending: Warte auf Zustimmung des Relays @@ -566,8 +566,8 @@ de: status: Status title: Relais report_notes: - created_msg: Meldungs-Kommentar erfolgreich erstellt! - destroyed_msg: Meldungs-Kommentar erfolgreich gelöscht! + created_msg: Notiz zur Meldung erfolgreich erstellt! + destroyed_msg: Notiz zur Meldung erfolgreich entfernt! reports: account: notes: @@ -576,27 +576,27 @@ de: action_log: Protokoll action_taken_by: Maßnahme ergriffen von actions: - delete_description_html: Der gemeldete Beitrag wird gelöscht und ein Strike wird aufgezeichnet, um dir bei zukünftigen Verstößen des gleichen Accounts zu helfen. + delete_description_html: Der gemeldete Beitrag wird gelöscht und die ergriffene Maßnahme wird aufgezeichnet, um dir bei zukünftigen Verstößen des gleichen Kontos zu helfen. mark_as_sensitive_description_html: Die Medien in den gemeldeten Beiträgen werden mit einer Inhaltswarnung versehen und ein Verstoß wird vermerkt, um bei zukünftigen Verstößen desselben Kontos besser reagieren zu können. other_description_html: Weitere Optionen zur Steuerung des Kontoverhaltens und zur Anpassung der Kommunikation mit dem gemeldeten Konto. - resolve_description_html: Es wird keine Maßnahme gegen das gemeldete Konto ergriffen, es wird kein Strike verzeichnet und die Meldung wird geschlossen. + resolve_description_html: Es wird keine Maßnahme gegen das gemeldete Konto ergriffen und der Vorgang wird nicht aufgezeichnet – die Meldung wird hiermit geschlossen. silence_description_html: Das Konto wird nur für diejenigen sichtbar sein, die dem Konto bereits folgen oder es manuell suchen, was die Reichweite stark einschränkt. Kann jederzeit rückgängig gemacht werden. Alle Meldungen zu diesem Konto werden geschlossen. suspend_description_html: Das Konto und alle Inhalte werden unzugänglich und ggf. gelöscht. Eine Interaktion mit dem Konto wird unmöglich. Dies kann innerhalb von 30 Tagen rückgängig gemacht werden. Alle Meldungen zu diesem Konto werden geschlossen. actions_description_html: Entscheide, welche Maßnahmen zur Lösung dieses Berichts zu ergreifen sind. Wenn du eine Strafmaßnahme gegen das gemeldete Konto ergreifst, wird eine E-Mail-Benachrichtigung an diese gesendet, außer wenn die Spam-Kategorie ausgewählt ist. actions_description_remote_html: Entscheide, welche Maßnahmen du zur Lösung dieser Meldungen ergreifen möchtest. Dies wirkt sich lediglich darauf aus, wie dein Server mit diesem externen Konto kommuniziert und dessen Inhalt handhabt. - add_to_report: Mehr zur Meldung hinzufügen + add_to_report: Meldung ergänzen are_you_sure: Bist du dir sicher? assign_to_self: Mir zuweisen assigned: Zugewiesene*r Moderator*in by_target_domain: Domain des gemeldeten Kontos cancel: Abbrechen category: Kategorie - category_description_html: Der Grund, warum dieses Konto und/oder der Inhalt gemeldet wurden, wird in der Kommunikation mit dem gemeldeten Konto zitiert + category_description_html: Der Grund, weshalb dieses Konto und/oder der Inhalt gemeldet worden ist, wird in der Kommunikation mit dem gemeldeten Konto erwähnt comment: none: Kein - comment_description_html: 'Um weitere Informationen bereitzustellen, schrieb %{name} Folgendes:' + comment_description_html: "%{name} ergänzte die Meldung um folgende Hinweis:" confirm: Bestätigen - confirm_action: Moderationsaktion gegen @%{acct} bestätigen + confirm_action: Maßnahme gegen @%{acct} bestätigen created_at: Gemeldet delete_and_resolve: Beiträge löschen forwarded: Weitergeleitet @@ -617,12 +617,12 @@ de: quick_actions_description_html: 'Eine schnelle Aktion ausführen oder nach unten rolle, um gemeldete Inhalte zu sehen:' remote_user_placeholder: das externe Profil von %{instance} reopen: Meldung wieder eröffnen - report: 'Meldung #%{id}' + report: "%{id}. Meldung" reported_account: Gemeldetes Konto reported_by: Gemeldet von resolved: Gelöst - resolved_msg: Meldung erfolgreich gelöst! - skip_to_actions: Zu Aktionen springen + resolved_msg: Meldung erfolgreich geklärt! + skip_to_actions: Zur Maßnahme springen status: Status statuses: Gemeldeter Inhalt statuses_description_html: Störende Inhalte werden in der Kommunikation mit dem gemeldeten Konto zitiert @@ -646,7 +646,7 @@ de: warning_placeholder: Optional zusätzliche Begründung für die Moderationsmaßnahme. target_origin: Domain des gemeldeten Kontos title: Meldungen - unassign: Zuweisung entfernen + unassign: Zuweisung aufheben unknown_action_msg: 'Unbekannte Aktion: %{action}' unresolved: Ungelöst updated_at: Aktualisiert @@ -742,7 +742,7 @@ de: preamble: Das Auffinden interessanter Inhalte ist wichtig, um neue Nutzer einzubinden, die Mastodon noch nicht kennen. Bestimme, wie verschiedene Suchfunktionen auf deinem Server funktionieren. profile_directory: Profilverzeichnis public_timelines: Öffentliche Timeline - publish_discovered_servers: Veröffentliche bekannte Server + publish_discovered_servers: Entdeckte Server offenlegen publish_statistics: Statistiken veröffentlichen title: Entdecken trends: Trends @@ -789,11 +789,11 @@ de: with_media: Mit Medien strikes: actions: - delete_statuses: "%{name} hat die Beiträge von %{target} entfernt" + delete_statuses: "%{name} entfernte die Beiträge von %{target}" disable: "%{name} fror das Konto von %{target} ein" mark_statuses_as_sensitive: "%{name} hat die Beiträge von %{target} mit einer Inhaltswarnung versehen" - none: "%{name} hat eine Warnung an %{target} gesendet" - sensitive: "%{name} hat das Profil von %{target} mit einer Inhaltswarnung versehen" + none: "%{name} schickte eine Warnung an %{target}" + sensitive: "%{name} versah das Konto von %{target} mit einer Inhaltswarnung" silence: "%{name} schaltete das Konto von %{target} stumm" suspend: "%{name} sperrte das Konto von %{target}" appeal_approved: Einspruch angenommen @@ -812,6 +812,12 @@ de: message_html: Du hast keine Serverregeln definiert. sidekiq_process_check: message_html: Kein Sidekiq-Prozess läuft für die %{value} Warteschlange(n). Bitte überprüfe deine Sidekiq-Konfiguration + upload_check_privacy_error: + action: Für weitere Informationen hier klicken + message_html: "Die Konfiguration deines Servers ist fehlerhaft. Die Privatsphäre deiner Benutzer*innen ist gefährdet." + upload_check_privacy_error_object_storage: + action: Für weitere Informationen hier klicken + message_html: "Die Konfiguration deines Objektspeichers ist fehlerhaft. Die Privatsphäre deiner Benutzer*innen ist gefährdet." tags: review: Prüfstatus updated_msg: Hashtageinstellungen wurden erfolgreich aktualisiert @@ -939,7 +945,7 @@ de: subject: Neue Trends zur Überprüfung auf %{instance} aliases: add_new: Alias erstellen - created_msg: Ein neuer Alias wurde erfolgreich erstellt. Du kannst nun den Wechsel vom alten Konto starten. + created_msg: Neuer Alias erfolgreich erstellt. Du kannst nun den Umzug vom alten zum neuen Konto starten. deleted_msg: Der Alias wurde erfolgreich entfernt. Aus jenem Konto zu diesem zu verschieben, ist nicht mehr möglich. empty: Du hast keine Aliase. hint_html: Wenn du von einem Konto zu einem anderen Konto wechseln möchtest, dann kannst du einen Alias erstellen, welcher benötigt wird, bevor du deine Follower vom alten Account zu diesen migrierst. Die Aktion allein ist harmlos und wi­der­ruf­lich. Die Kontenmigration wird vom alten Konto aus eingeleitet. @@ -975,7 +981,7 @@ de: apply_for_account: Konto beantragen change_password: Passwort confirmations: - wrong_email_hint: Wenn diese E-Mail-Adresse nicht korrekt ist, kann sie in den Kontoeinstellungen geändert werden. + wrong_email_hint: Sollte diese E-Mail-Adresse nicht korrekt sein, kannst du sie in den Kontoeinstellungen ändern. delete_account: Konto löschen delete_account_html: Falls du dein Konto endgültig löschen möchtest, kannst du das
    hier vornehmen. Du musst dies zusätzlich bestätigen. description: @@ -983,10 +989,10 @@ de: prefix_sign_up: Registriere dich noch heute bei Mastodon! suffix: Mit einem Konto kannst du Profilen folgen, neue Beiträge veröffentlichen, Nachrichten mit Personen von jedem Mastodon-Server austauschen und vieles mehr! didnt_get_confirmation: Keine Bestätigungsanweisungen erhalten? - dont_have_your_security_key: Hast du keinen Sicherheitsschlüssel? + dont_have_your_security_key: Du hast keinen Sicherheitsschlüssel? forgot_password: Passwort vergessen? invalid_reset_password_token: Das Token zum Zurücksetzen des Passworts ist ungültig oder abgelaufen. Bitte fordere ein neues an. - link_to_otp: Gib einen Zwei-Faktor-Code von deinem Handy oder einen Wiederherstellungscode ein + link_to_otp: Gib einen Zwei-Faktor-Code von deinem Smartphone oder einen Wiederherstellungscode ein link_to_webauth: Verwende dein Sicherheitsschlüsselgerät log_in_with: Anmelden mit login: Anmelden @@ -1017,7 +1023,7 @@ de: preamble_html: Melde dich mit deinen Zugangsdaten für %{domain} an. Solltest du dein Konto auf einem anderen Server registriert haben, ist eine Anmeldung hier nicht möglich. title: Bei %{domain} anmelden sign_up: - preamble: Mit einem Account auf diesem Mastodon-Server kannst du jeder anderen Person im Netzwerk folgen, unabhängig davon, wo ihr Account gehostet wird. + preamble: Mit einem Konto auf diesem Mastodon-Server kannst du jeder anderen Person im Netzwerk folgen, unabhängig davon, wo ihr Account gehostet ist. title: Okay, lass uns mit %{domain} anfangen. status: account_status: Kontostatus @@ -1030,7 +1036,7 @@ de: use_security_key: Sicherheitsschlüssel verwenden authorize_follow: already_following: Du folgst diesem Konto bereits - already_requested: Du hast bereits eine Anfrage zum Folgen diesen Accounts gestellt + already_requested: Du hast bereits eine Folgeanfrage an dieses Konto gestellt error: Bedauerlicherweise konnte das externe Konto nicht geladen werden follow: Folgen follow_request: 'Du hast eine Folgeanfrage gestellt an:' @@ -1038,7 +1044,7 @@ de: post_follow: close: Oder du schließt einfach dieses Fenster. return: Benutzerprofil anzeigen - web: In der Benutzeroberfläche öffnen + web: Im Webinterface öffnen title: "%{acct} folgen" challenge: confirm: Fortfahren @@ -1052,21 +1058,21 @@ de: date: formats: default: "%d. %b %Y" - with_month_name: "%B %d, %Y" + with_month_name: "%d. %B %Y" datetime: distance_in_words: - about_x_hours: "%{count} h" + about_x_hours: "%{count} Std." about_x_months: "%{count} Mon." - about_x_years: "%{count} J" - almost_x_years: "%{count} J" + about_x_years: "%{count} J." + almost_x_years: "%{count} J." half_a_minute: Gerade eben - less_than_x_minutes: "%{count} Min" + less_than_x_minutes: "%{count} Min." less_than_x_seconds: Gerade eben - over_x_years: "%{count}J" - x_days: "%{count}T" - x_minutes: "%{count}m" - x_months: "%{count}mo" - x_seconds: "%{count}s" + over_x_years: "%{count} J." + x_days: "%{count} T." + x_minutes: "%{count} Min." + x_months: "%{count} Mon." + x_seconds: "%{count} Sek." deletes: challenge_not_passed: Die eingegebenen Informationen waren nicht korrekt confirm_password: Gib dein derzeitiges Passwort ein, um deine Identität zu bestätigen @@ -1075,18 +1081,18 @@ de: success_msg: Dein Konto wurde erfolgreich gelöscht warning: before: 'Bevor du fortfährst, lies bitte diese Punkte sorgfältig durch:' - caches: Inhalte, die von anderen Servern zwischengespeichert wurden, können weiterhin bestehen + caches: Inhalte, die von anderen Servern zwischengespeichert wurden, können fortbestehen data_removal: Deine Beiträge und alle anderen Daten werden für immer entfernt email_change_html: Du kannst deine E-Mail-Adresse ändern, ohne dein Konto zu löschen - email_contact_html: Wenn die Bestätigungs-E-Mail immer noch nicht ankam, kannst du eine E-Mail an %{email} senden, um weitere Hilfe zu erhalten + email_contact_html: Sollte sie noch immer nicht angekommen sein, kannst du eine E-Mail an %{email} schicken, um weitere Hilfe zu erhalten email_reconfirmation_html: Wenn du die Bestätigungs-E-Mail nicht erhalten hast, kannst du sie erneut anfordern - irreversible: Du kannst dein Konto nicht mehr wiederherstellen oder reaktivieren + irreversible: Du wirst dein Konto nicht mehr wiederherstellen oder reaktivieren können more_details_html: Weitere Details findest du in der Datenschutzerklärung. username_available: Dein Profilname wird wieder verfügbar sein username_unavailable: Dein Profilname wird auch nach dem Löschen für andere nicht zugänglich sein disputes: strikes: - action_taken: Maßnahme ergriffen + action_taken: Maßnahme appeal: Einspruch appeal_approved: Dieser Verstoß wurde erfolgreich angefochten und ist nicht mehr gültig appeal_rejected: Der Einspruch wurde abgelehnt @@ -1097,28 +1103,28 @@ de: approve_appeal: Einspruch annehmen associated_report: Zugehöriger Bericht created_at: Datum - description_html: Dies sind Aktionen gegen dein Konto und Warnungen, die von den Mitarbeitern von %{instance} an dich gesendet wurden. + description_html: Dies sind Maßnahmen, die gegen dein Konto ergriffen worden sind, und Warnungen, die dir die Mitarbeiter*innen von %{instance} geschickt haben. recipient: Adressiert an reject_appeal: Einspruch ablehnen - status: 'Beitrag #%{id}' + status: "%{id}. Beitrag" status_removed: Beitrag bereits vom System entfernt title: "%{action} vom %{date}" title_actions: delete_statuses: Beitragsentfernung - disable: Einfrieren des Kontos + disable: Konto einfrieren mark_statuses_as_sensitive: Beiträge mit einer Inhaltswarnung versehen - none: Warnung + none: Verwarnung sensitive: Profil mit einer Inhaltswarnung versehen silence: Kontobeschränkung suspend: Kontosperre your_appeal_approved: Dein Einspruch wurde angenommen - your_appeal_pending: Du hast Einspruch eingelegt + your_appeal_pending: Du hast Einspruch erhoben your_appeal_rejected: Dein Einspruch wurde abgelehnt domain_validator: - invalid_domain: ist kein gültiger Domain-Name + invalid_domain: ist keine gültige Domain errors: - '400': Die Anfrage, die du gesendet hast, war ungültig oder fehlerhaft. - '403': Dir fehlt die Befugnis, diese Seite sehen zu können. + '400': Die Anfrage, die du gestellt hast, war ungültig oder fehlerhaft. + '403': Dir fehlt die Berechtigung, diese Seite aufzurufen. '404': Die Seite, nach der du gesucht hast, wurde nicht gefunden. '406': Diese Seite ist im gewünschten Format nicht verfügbar. '410': Die Seite, nach der du gesucht hast, existiert hier nicht mehr. @@ -1163,12 +1169,12 @@ de: thread: Unterhaltungen edit: add_keyword: Schlagwort hinzufügen - keywords: Schlagworte + keywords: Schlagwörter statuses: Individuelle Beiträge - statuses_hint_html: Dieser Filter gilt für die Auswahl einzelner Beiträge, unabhängig davon, ob sie mit den unten stehenden Schlüsselwörtern übereinstimmen. Beiträge im Filter ansehen oder entfernen.. + statuses_hint_html: Dieser Filter gilt für die Auswahl einzelner Beiträge, unabhängig davon, ob sie mit den unten aufgeführten Schlagwörtern übereinstimmen. Beiträge überprüfen oder aus dem Filter entfernen. title: Filter bearbeiten errors: - deprecated_api_multiple_keywords: Diese Parameter können von dieser Anwendung nicht geändert werden, da sie auf mehr als ein Filterschlüsselwort angewendet werden. Verwende eine neuere Anwendung oder das Webinterface. + deprecated_api_multiple_keywords: Diese Parameter können von dieser Anwendung nicht geändert werden, da sie für mehr als ein Filterschlagwort gelten. Verwende eine aktuellere Anwendung oder das Webinterface. invalid_context: Ungültiger oder fehlender Kontext übergeben index: contexts: Filter in %{contexts} @@ -1177,8 +1183,8 @@ de: expires_in: Läuft ab in %{distance} expires_on: Läuft am %{date} ab keywords: - one: "%{count} Schlagworte" - other: "%{count} Stichwörter" + one: "%{count} Schlagwort" + other: "%{count} Schlagwörter" statuses: one: "%{count} Beitrag" other: "%{count} Beiträge" @@ -1196,8 +1202,6 @@ de: index: hint: Dieser Filter wird verwendet, um einzelne Beiträge unabhängig von anderen Kriterien auszuwählen. Du kannst mehr Beiträge zu diesem Filter über das Webinterface hinzufügen. title: Gefilterte Beiträge - footer: - trending_now: Jetzt in den Trends generic: all: Alle all_items_on_page_selected_html: @@ -1270,7 +1274,7 @@ de: sign_in_token: E-Mail-Sicherheitscode webauthn: Sicherheitsschlüssel description_html: Wenn du verdächtige Aktivitäten bemerkst, die du nicht verstehst oder zuordnen kannst, solltest du dringend dein Passwort ändern und ungeachtet dessen die Zwei-Faktor-Authentisierung (2FA) aktivieren. - empty: Kein Authentifizierungsverlauf verfügbar + empty: Kein Authentisierungsverlauf verfügbar failed_sign_in_html: Fehler beim Anmeldeversuch mit %{method} von %{ip} (%{browser}) successful_sign_in_html: Erfolgreiche Anmeldung mit %{method} von %{ip} (%{browser}) title: Authentifizierungsverlauf @@ -1296,20 +1300,20 @@ de: moved_msg: Dein altes Profil wird jetzt zum neuen Account %{acct} weitergeleitet und deine Follower werden übertragen. not_redirecting: Dein Konto wird derzeit nicht auf ein anderes Konto weitergeleitet. on_cooldown: Du hast dein Konto vor kurzem migriert. Diese Funktion wird in %{count} Tagen wieder verfügbar sein. - past_migrations: Vorherige Migrationen + past_migrations: Vorherige Umzüge proceed_with_move: Follower übertragen redirected_msg: Dein Konto wird nun zu %{acct} weitergeleitet. redirecting_to: Dein Konto wird zu %{acct} weitergeleitet. set_redirect: Umleitung einrichten warning: - backreference_required: Das neue Konto muss zuerst so konfiguriert werden, dass es auf das alte Konto referenziert + backreference_required: Das neue Konto muss zuerst auf das alte Konto verweisen before: 'Bevor du fortfährst, lies bitte diese Hinweise sorgfältig durch:' - cooldown: Nach dem Migrieren wird es eine Abklingzeit geben, in der du das Konto nicht noch einmal migrieren kannst - disabled_account: Dein aktuelles Konto wird nachher nicht vollständig nutzbar sein. Du hast jedoch Zugriff auf den Datenexport sowie die Reaktivierung. - followers: Alle Follower werden vom aktuellen zum neuen Konto übertragen - only_redirect_html: Alternativ kannst du nur eine Weiterleitung auf dein Profil erstellen. - other_data: Keine anderen Daten werden automatisch verschoben - redirect: Das Profil deines aktuellen Kontos wird mit einer Weiterleitungsnachricht versehen und von Suchanfragen ausgeschlossen + cooldown: Nach dem Umzug wird es eine Weile dauern, bis du erneut umziehen darfst + disabled_account: Dein altes Konto ist nur noch eingeschränkt nutzbar. Du kannst jedoch deine Daten exportieren und das Konto wieder reaktivieren. + followers: Alle Follower werden vom alten zum neuen Konto übertragen + only_redirect_html: Alternativ kannst du auch nur eine Weiterleitung zu deinem neuen Profil einrichten, ohne die Follower zu übertragen. + other_data: Keine anderen Daten werden automatisch zum neuen Konto übertragen + redirect: Dein altes Konto wird einen Hinweis erhalten, dass Du umgezogen bist. Außerdem wird das Profil von Suchanfragen ausgeschlossen moderation: title: Moderation move_handler: @@ -1333,7 +1337,7 @@ de: subject: "%{name} folgt dir jetzt" title: Neuer Follower follow_request: - action: Verwalte Folge-Anfragen + action: Folgeanfragen verwalten body: "%{name} möchte dir folgen" subject: 'Ausstehende Folgeanfragen: %{name}' title: Neue Folgeanfrage @@ -1364,13 +1368,13 @@ de: billion: Mrd million: Mio quadrillion: Q - thousand: Tsd + thousand: Tsd. trillion: T otp_authentication: code_hint: Gib den Code ein, den deine 2FA- bzw. TOTP-App generiert hat, um den Vorgang zu bestätigen description_html: Wenn du die Zwei-Faktor-Authentisierung (2FA) mit einer Authentifizierungs-App deines Smartphones aktivierst, benötigst du neben dem regulären Passwort zusätzlich auch den zeitbasierten Code der 2FA-App, um dich anmelden zu können. enable: Aktivieren - instructions_html: "Scanne diesen QR-Code mit einer TOTP-App (wie dem Google Authenticator). Die 2FA-App generiert dann zeitbasierte Codes, die du beim Login zusätzlich zum regulären Passwort eingeben musst." + instructions_html: "Scanne diesen QR-Code mit einer beliebigen Authentisierungs-App (TOTP). Diese App generiert dann zeitbasierte Codes, die du beim Anmelden zusätzlich zum regulären Passwort eingeben musst." manual_instructions: Wenn du den QR-Code nicht einscannen kannst, sondern die Zahlenfolge manuell eingeben musst, ist hier der geheime Token für deine 2FA-App. setup: Einrichten wrong_code: Der eingegebene Code ist ungültig! Laufen Serverzeit und Gerätezeit synchron? @@ -1407,33 +1411,34 @@ de: confirm_remove_selected_followers: Bist du sicher, dass du den ausgewählten Konten entfolgen möchtest? confirm_remove_selected_follows: Bist du sicher, dass du den ausgewählten Konten entfolgen möchtest? dormant: Inaktiv + follow_failure: Einigen der ausgewählten Konten konnte nicht gefolgt werden. follow_selected_followers: Ausgewählten Followern folgen followers: Follower following: Folge ich invited: Eingeladen last_active: Zuletzt aktiv - most_recent: Neuste + most_recent: Neueste moved: Umgezogen mutual: Gegenseitig primary: Primär relationship: Beziehung - remove_selected_domains: Entferne alle Follower von den ausgewählten Domains - remove_selected_followers: Entferne ausgewählte Follower - remove_selected_follows: Ausgewählten Benutzer*innen entfolgen + remove_selected_domains: Alle Follower von den ausgewählten Domains entfernen + remove_selected_followers: Ausgewählten Followern entfolgen + remove_selected_follows: Ausgewählten Profilen entfolgen status: Kontostatus remote_follow: missing_resource: Die erforderliche Weiterleitungs-URL für dein Konto konnte nicht gefunden werden reports: errors: - invalid_rules: verweist nicht auf gültige Regeln + invalid_rules: verweist nicht auf gültige Serverregeln rss: content_warning: 'Inhaltswarnung:' descriptions: account: Öffentliche Beiträge von @%{acct} tag: 'Öffentliche Beiträge mit dem Hashtag #%{hashtag}' scheduled_statuses: - over_daily_limit: Du hast das Limit für geplante Beiträge, welches %{limit} beträgt, für heute erreicht - over_total_limit: Du hast das Limit für geplante Beiträge, welches %{limit} beträgt, erreicht + over_daily_limit: Du hast das heutige Limit für geplante Beiträge, das %{limit} beträgt, erreicht + over_total_limit: Du hast das Limit für geplante Beiträge, das %{limit} beträgt, erreicht too_soon: Das geplante Datum muss in der Zukunft liegen sessions: activity: Letzte Aktivität @@ -1446,6 +1451,7 @@ de: electron: Electron firefox: Firefox generic: Unbekannter Browser + huawei_browser: Huawei Browser ie: Internet Explorer micro_messenger: MicroMessenger nokia: Nokia S40 Ovi Browser @@ -1455,6 +1461,7 @@ de: qq: QQ Browser safari: Safari uc_browser: UC Browser + unknown_browser: Unbekannter Browser weibo: Weibo current_session: Aktuelle Sitzung description: "%{browser} auf %{platform}" @@ -1467,9 +1474,10 @@ de: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: macOS - other: unbekanntes Betriebssystem + unknown_platform: Unbekannte Plattform windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1495,9 +1503,9 @@ de: notifications: Benachrichtigungen preferences: Einstellungen profile: Profil - relationships: Folge ich und Follower + relationships: Follower und Folge ich statuses_cleanup: Automatische Löschung - strikes: Moderieren von Verstößen + strikes: Maßnahmen two_factor_authentication: Zwei-Faktor-Authentisierung (2FA) webauthn_authentication: Sicherheitsschlüssel statuses: @@ -1521,8 +1529,8 @@ de: edited_at_html: 'Bearbeitet: %{date}' errors: in_reply_not_found: Der Beitrag, auf den du antworten möchtest, scheint nicht zu existieren. - open_in_web: Im Web öffnen - over_character_limit: Zeichenlimit von %{max} überschritten + open_in_web: Im Webinterface öffnen + over_character_limit: Begrenzung von %{max} Zeichen überschritten pin_errors: direct: Beiträge, die nur für erwähnte Profile sichtbar sind, können nicht angeheftet werden limit: Du hast bereits die maximale Anzahl an Beiträgen angeheftet @@ -1582,7 +1590,7 @@ de: '7889238': 3 Monate min_age_label: Altersgrenze min_favs: Behalte Beiträge, die häufiger favorisiert wurden als … - min_favs_hint: Löscht keine Beiträge, die mindestens so oft favorisiert worden sind. Lass das Feld leer, um alle Beiträge, unabhängig der Anzahl an Favorisierungen zu löschen + min_favs_hint: Löscht keine Beiträge, die mindestens so oft favorisiert worden sind. Lass das Feld leer, um alle Beiträge – unabhängig der Anzahl an Favoriten – zu löschen min_reblogs: Behalte Beiträge, die öfter geteilt wurden als min_reblogs_hint: Löscht keine Beiträge, die mindestens so oft geteilt worden sind. Lass das Feld leer, um alle Beiträge – unabhängig der Anzahl an geteilten Beiträgen – zu löschen stream_entries: @@ -1611,12 +1619,12 @@ de: enabled: Zwei-Faktor-Authentisierung (2FA) ist aktiviert enabled_success: Zwei-Faktor-Authentisierung (2FA) erfolgreich aktiviert generate_recovery_codes: Wiederherstellungscodes erstellen - lost_recovery_codes: Wiederherstellungscodes erlauben es dir, wieder Zugang zu deinem Konto zu erlangen, falls du keinen Zugriff mehr auf die Zwei-Faktor-Authentisierung (2FA) oder den Sicherheitsschlüssel hast. Solltest Du diese Wiederherstellungscodes verloren haben, kannst du sie hier neu generieren. Deine alten, bereits erstellten Wiederherstellungscodes werden dadurch ungültig. + lost_recovery_codes: Wiederherstellungscodes ermöglichen es dir, wieder Zugang zu deinem Konto zu erlangen, falls du keinen Zugriff mehr auf dein Smartphone oder zum Sicherheitsschlüssel hast. Solltest du deine Wiederherstellungscodes verloren haben, kannst du sie hier neu generieren. Die alten Wiederherstellungscodes werden dann ungültig. methods: Methoden der Zwei-Faktor-Authentisierung (2FA) otp: Authentifizierungs-App recovery_codes: Wiederherstellungscodes sichern recovery_codes_regenerated: Wiederherstellungscodes erfolgreich neu erstellt - recovery_instructions_html: Wenn du den Zugang zu deinem Telefon verlieren solltest, kannst du einen untenstehenden Wiederherstellungscode benutzen, um wieder auf dein Konto zugreifen zu können. Bewahre die Wiederherstellungscodes gut auf. Du könntest sie beispielsweise ausdrucken und bei deinen restlichen wichtigen Dokumenten aufbewahren. + recovery_instructions_html: Falls du jemals den Zugang zu deinem Smartphone verlierst, kannst du einen der unten aufgeführten Wiederherstellungscodes verwenden, um wieder Zugang zu deinem Konto zu erhalten. Bewahre die Wiederherstellungscodes sicher auf. Du kannst sie zum Beispiel ausdrucken und zusammen mit anderen wichtigen Dokumenten aufbewahren. webauthn: Sicherheitsschlüssel user_mailer: appeal_approved: @@ -1644,7 +1652,7 @@ de: appeal_description: Wenn du glaubst, dass es sich um einen Fehler handelt, kannst du einen Einspruch an die Administration von %{instance} senden. categories: spam: Spam - violation: Inhalt verstößt gegen die folgenden Gemeinschaftsrichtlinien + violation: Inhalt verstößt gegen die folgenden Serverregeln explanation: delete_statuses: Einige deiner Beiträge wurden als Verstoß gegen eine oder mehrere Gemeinschaftsrichtlinien erkannt und von den Moderator*innen von %{instance} entfernt. disable: Du kannst dein Konto nicht mehr verwenden, aber dein Profil und andere Daten bleiben unversehrt. Du kannst eine Sicherung deiner Daten anfordern, die Kontoeinstellungen ändern oder dein Konto löschen. @@ -1682,24 +1690,25 @@ de: title: Willkommen an Bord, %{name}! users: follow_limit_reached: Du kannst nicht mehr als %{limit} Leuten folgen + go_to_sso_account_settings: Kontoeinstellungen des Identitätsanbieters aufrufen invalid_otp_token: Ungültiger Code der Zwei-Faktor-Authentisierung (2FA) otp_lost_help_html: Wenn du beides nicht mehr weißt, melde dich bitte bei uns unter der E-Mail-Adresse %{email} seamless_external_login: Du bist über einen externen Dienst angemeldet, daher sind Passwort- und E-Mail-Einstellungen nicht verfügbar. signed_in_as: 'Angemeldet als:' verification: - explanation_html: 'Du kannst bestätigen, dass die Links in deinen Profil-Metadaten dir gehören. Dafür muss die verlinkte Website einen Link zurück auf dein Mastodon-Profil enthalten. Dieser Link muss ein rel="me"-Attribut enthalten. Der Linktext ist dabei egal. Hier ist ein Beispiel:' + explanation_html: "Du kannst bestätigen, dass die Links in deinen Profil-Metadaten dir gehören. Dafür muss die verlinkte Website einen Link zurück auf dein Mastodon-Profil enthalten. \nNach dem Hinzufügen des Links musst du möglicherweise hierhin zurückkommen und dein Profil erneut speichern, um dass die Verifikation wirksam wird. Der Link zurück muss ein rel=\"me\"-Attribut enthalten. Der Linktext ist dabei egal. Hier ist ein Beispiel:" verification: Verifizierung webauthn_credentials: add: Sicherheitsschlüssel hinzufügen create: error: Beim Hinzufügen des Sicherheitsschlüssels ist ein Fehler aufgetreten. Bitte versuche es erneut. success: Dein Sicherheitsschlüssel wurde erfolgreich hinzugefügt. - delete: Löschen - delete_confirmation: Bist du dir sicher, dass du diesen Sicherheitsschlüssel löschen möchtest? - description_html: Wenn du die Authentifizierung mit Sicherheitsschlüssel aktivierst, musst du einen deiner Sicherheitsschlüssel verwenden, um dich anmelden zu können. + delete: Entfernen + delete_confirmation: Möchtest du diesen Sicherheitsschlüssel wirklich entfernen? + description_html: Wenn du die Authentisierung mit Sicherheitsschlüssel aktivierst, musst du dich mit einem deiner Sicherheitsschlüssel anmelden. destroy: - error: Es gab ein Problem beim Löschen deines Sicherheitsschlüssels. Bitte versuche es erneut. - success: Dein Sicherheitsschlüssel wurde erfolgreich gelöscht. + error: Beim Entfernen des Sicherheitsschlüssels ist ein Fehler aufgetreten. Bitte versuche es erneut. + success: Dein Sicherheitsschlüssel wurde erfolgreich entfernt. invalid_credential: Ungültiger Sicherheitsschlüssel nickname_hint: Gib den Spitznamen deines neuen Sicherheitsschlüssels ein not_enabled: Du hast WebAuthn noch nicht aktiviert diff --git a/config/locales/devise.de.yml b/config/locales/devise.de.yml index c4d41aa620..0c25f21b6c 100644 --- a/config/locales/devise.de.yml +++ b/config/locales/devise.de.yml @@ -21,7 +21,7 @@ de: action: E-Mail-Adresse verifizieren action_with_app: Bestätigen – und dann zur App %{app} zurückkehren explanation: Du hast mit dieser E-Mail-Adresse ein Konto auf %{host} erstellt. Du bist nur noch einen Klick von der Aktivierung entfernt. Wenn du das nicht warst, kannst du diese E-Mail ignorieren. - explanation_when_pending: Du hast dich für eine Einladung bei %{host} mit dieser E-Mailadresse beworben. Sobald du deine E-Mailadresse bestätigst hast, werden wir deine Anfrage überprüfen. Du kannst dich in dieser Zeit nicht anmelden. Wenn deine Anfrage abgelehnt wird, werden deine Daten entfernt, also wird keine weitere Handlung benötigt. Wenn du das nicht warst, kannst du diese E-Mail ignorieren. + explanation_when_pending: Du hast dich für eine Einladung bei %{host} mit dieser E-Mail-Adresse beworben. Sobald du deine E-Mail-Adresse bestätigt hast, werden wir deine Anfrage überprüfen. Du kannst dich in dieser Zeit nicht anmelden. Wenn deine Anfrage abgelehnt wird, werden deine Daten entfernt – von dir ist keine weitere Handlung notwendig. Wenn du das nicht warst, kannst du diese E-Mail ignorieren. extra_html: Bitte beachte auch die
    Serverregeln und unsere Datenschutzerklärung. subject: 'Mastodon: Bestätigung deines Kontos bei %{instance}' title: E-Mail-Adresse verifizieren @@ -67,15 +67,15 @@ de: title: Ein neuer Sicherheitsschlüssel wurde hinzugefügt deleted: explanation: Der folgende Sicherheitsschlüssel wurde aus deinem Konto gelöscht - subject: 'Mastodon: Sicherheitsschlüssel gelöscht' - title: Einer deiner Sicherheitsschlüssel wurde gelöscht + subject: 'Mastodon: Sicherheitsschlüssel entfernt' + title: Einer deiner Sicherheitsschlüssel wurde entfernt webauthn_disabled: - explanation: Die Authentifizierung mit Sicherheitsschlüssel wurde für dein Konto deaktiviert. Der Login ist nun nur mit dem Token möglich, der von der eingerichteten TOTP-App generiert wird. - subject: 'Mastodon: Authentifizierung mit Sicherheitsschlüssel deaktiviert' + explanation: Die Authentisierung mit Sicherheitsschlüsseln wurde für dein Konto deaktiviert. Die Anmeldung ist jetzt nur noch mit dem Token möglich, der von der eingerichteten TOTP-App generiert wird. + subject: 'Mastodon: Authentisierung mit Sicherheitsschlüsseln deaktiviert' title: Sicherheitsschlüssel deaktiviert webauthn_enabled: - explanation: Die Authentifizierung mit einem Sicherheitsschlüssel wurde für dein Konto aktiviert. Dein Sicherheitsschlüssel kann nun für die Anmeldung verwendet werden. - subject: 'Mastodon: Authentifizierung mit Sicherheitsschlüssel aktiviert' + explanation: Die Authentisierung mit Sicherheitsschlüssel wurde für dein Konto aktiviert. Dein Sicherheitsschlüssel kann nun für die Anmeldung verwendet werden. + subject: 'Mastodon: Authentisierung mit Sicherheitsschlüssel aktiviert' title: Sicherheitsschlüssel aktiviert omniauth_callbacks: failure: Du konntest nicht mit deinem %{kind}-Konto angemeldet werden, weil „%{reason}“. @@ -111,5 +111,5 @@ de: not_found: nicht gefunden not_locked: ist nicht gesperrt not_saved: - one: '1 Fehler hat verhindert, dass %{resource} gespeichert wurde:' - other: "%{count} Fehler haben verhindert, dass %{resource} gespeichert wurde:" + one: '1 Fehler verhinderte, dass %{resource} gespeichert wurde:' + other: "%{count} Fehler verhinderten, dass %{resource} gespeichert wurde:" diff --git a/config/locales/devise.et.yml b/config/locales/devise.et.yml index c15801f4cc..da1cc989d2 100644 --- a/config/locales/devise.et.yml +++ b/config/locales/devise.et.yml @@ -78,7 +78,7 @@ et: subject: 'Mastodon: turvavõtme autentimine sisse lülitatud' title: Turvavõtmed on sisse lülitatud omniauth_callbacks: - failure: Ei saanud teid tuvastada %{kind} kaudu, kuna "%{reason}". + failure: Ei saanud sind tuvastada %{kind} kaudu, kuna "%{reason}". success: Tuvastamine %{kind} konto järgi õnnestus. passwords: no_token: Sellele leheküljele ei pääse tulemata salasõna lähtestamise e-kirjast. Kui tuled salasõna lähtestamise e-kirjast, palun veendu, et kasutasid tervet saadetud URLi. @@ -87,7 +87,7 @@ et: updated: Salasõna muutmine õnnestus. Oled nüüd sisse logitud. updated_not_active: Sinu salasõna muutmine õnnestus. registrations: - destroyed: Nägemist! sinu konto sulgemine õnnestus. Me loodame sind varsti taas näha. + destroyed: Nägemist! Sinu konto sulgemine õnnestus. Me loodame sind varsti taas näha. signed_up: Tere tulemast! Sinu konto loomine õnnestus. signed_up_but_inactive: Sinu konto loodi edukalt, kuid me ei saanud sind sisse logida, kuna konto pole veel aktiveeritud. signed_up_but_locked: Sinu konto loodi edukalt, kuid me ei saanud sind sisse logida, kuna konto on lukustatud. diff --git a/config/locales/devise.fi.yml b/config/locales/devise.fi.yml index 08bc18ec1f..86360c2ab7 100644 --- a/config/locales/devise.fi.yml +++ b/config/locales/devise.fi.yml @@ -2,17 +2,17 @@ fi: devise: confirmations: - confirmed: Sähköpostiosoitteesi on vahvistettu onnistuneesti. + confirmed: Sähköpostiosoitteesi on vahvistettu. send_instructions: Saat pian sähköpostitse ohjeet sähköpostiosoitteesi vahvistamiseen. Jos et saanut viestiä, tarkista roskapostikansiosi. - send_paranoid_instructions: Jos sähköpostiosoitteesi on tietokannassamme, saat pian ohjeet osoitteesi vahvistamiseen. Jos et saanut viestiä, tarkista roskapostikansiosi. + send_paranoid_instructions: Jos sähköpostiosoitteesi on tiedossammme, saat pian sähköpostiisi ohjeet sen vahvistamiseen. Jos et saanut viestiä, tarkista roskapostikansiosi. failure: already_authenticated: Olet jo kirjautunut sisään. inactive: Tiliäsi ei ole vielä aktivoitu. invalid: Virheellinen %{authentication_keys} tai salasana. - last_attempt: Sinulla on vielä yksi yritys ennen kuin tunnuksesi lukitaan. + last_attempt: Sinulla on vielä yksi yritys ennen kuin tilisi lukitaan. locked: Tilisi on lukittu. not_found_in_database: Virheellinen %{authentication_keys} tai salasana. - pending: Tämä tili on vielä tarkistamatta. + pending: Tilisi on vielä tarkistamatta. timeout: Istuntosi on umpeutunut. Jatka kirjautumalla uudelleen sisään. unauthenticated: Sinun pitää kirjautua sisään tai rekisteröityä ennen kuin voit jatkaa. unconfirmed: Vahvista sähköpostiosoitteesi, ennen kuin jatkat. @@ -33,41 +33,41 @@ fi: password_change: explanation: Tilisi salasana on vaihdettu. extra: Jos et vaihtanut salasanaasi, joku muu on todennäköisesti päässyt käyttämään tiliäsi. Vaihda salasanasi viipymättä. Jos et pääse kirjautumaan tilillesi, ota yhteyttä instanssin ylläpitäjään. - subject: 'Mastodon: Salasana vaihdettu' + subject: 'Mastodon: salasana vaihdettu' title: Salasana vaihdettu reconfirmation_instructions: explanation: Vahvista uusi sähköpostiosoite, niin muutos astuu voimaan. extra: Jos et tehnyt muutosta itse, voit jättää tämän viestin huomiotta. Mastodon-tilin sähköpostiosoitetta ei vaihdeta, ennen kuin klikkaat yllä olevaa linkkiä. - subject: 'Mastodon: Vahvista sähköpostiosoite instanssille %{instance}' + subject: 'Mastodon: vahvista sähköpostiosoite: %{instance}' title: Vahvista sähköpostiosoite reset_password_instructions: action: Vaihda salasana explanation: Pyysit tilillesi uuden salasanan. extra: Jos et tehnyt pyyntöä itse, voit jättää tämän viestin huomiotta. Salasanaasi ei vaihdeta, ennen kuin klikkaat yllä olevaa linkkiä ja luot uuden salasanan. - subject: 'Mastodon: Ohjeet salasanan vaihtoon' + subject: 'Mastodon: ohjeet salasanan vaihtoon' title: Salasanan vaihto two_factor_disabled: - explanation: Kaksivaiheinen tunnistus tilillesi on otettu pois käytöstä. Kirjautuminen onnistuu nyt pelkällä sähköpostiosoitteella ja salasanalla. - subject: 'Mastodon: Kaksivaiheinen tunnistut otettu pois käytöstä' - title: 2FA poistettu käytöstä + explanation: Kaksivaiheinen todennus tilillesi poistettiin käytöstä. Kirjautuminen onnistuu nyt käyttäen pelkkää sähköpostiosoitetta ja salasanaa. + subject: 'Mastodon: kaksivaiheinen todennus poistettu käytöstä' + title: 2-vaiheinen todennus pois käytöstä two_factor_enabled: - explanation: Kaksivaiheinen tunnistus on otettu käyttöön tilillesi. Koodi kaksivaiheisen tunnistuksen sovelluksesta tarvitaan kirjautumiseen. - subject: 'Mastodon: Kaksivaiheinen tunnistus otettu käyttöön' - title: 2FA käytössä + explanation: Kaksivaiheinen tunnistus on otettu käyttöön tilillesi. Kaksivaiheisen tunnistuksen sovelluksesta saatu koodi tarvitaan kirjautumiseen. + subject: 'Mastodon: kaksivaiheinen todennus otettu käyttöön' + title: 2-vaiheinen todennus käytössä two_factor_recovery_codes_changed: - explanation: Aiemmat palautuskoodi on poistettu käytöstä ja uudet on luotu. - subject: 'Mastodon: Kaksivaiheisen tunnistuksen palautuskoodit uudelleenluotu' - title: 2FA palautuskoodit vaihdettu + explanation: Uudet palautuskoodit on nyt luotu ja vanhat on mitätöity. + subject: 'Mastodon: kaksivaiheisen todennuksen palautuskoodit luotiin uudelleen' + title: 2-vaiheisen todennuksen palautuskoodit vaihdettiin unlock_instructions: - subject: 'Mastodon: Ohjeet lukituksen poistoon' + subject: 'Mastodon: lukituksen poistamisen ohjeet' webauthn_credential: added: explanation: Seuraava suojausavain on lisätty tilillesi - subject: 'Mastodon: Uusi suojausavain' + subject: 'Mastodon: uusi suojausavain' title: Uusi suojausavain on lisätty deleted: explanation: Seuraava suojausavain on poistettu tililtäsi - subject: 'Mastodon: Suojausavain poistettu' + subject: 'Mastodon: suojausavain poistettu' title: Yksi suojausavaimistasi on poistettu webauthn_disabled: explanation: Suojausavaimilla todennus on poistettu käytöstä tililtäsi. Kirjautuminen on nyt mahdollista käyttämällä vain paritetun TOTP-sovelluksen luomaa tokenia. diff --git a/config/locales/devise.hu.yml b/config/locales/devise.hu.yml index ddadd17894..3a37ec29e5 100644 --- a/config/locales/devise.hu.yml +++ b/config/locales/devise.hu.yml @@ -7,43 +7,43 @@ hu: send_paranoid_instructions: Ha az e-mail címed már szerepel az adatbázisunkban, néhány percen belül kapsz egy levelet az e-mail cím megerősítésére vonatkozó utasításokkal. Kérjük, ellenőrizd a spam mappád, ha nem látod az e-mailt. failure: already_authenticated: Már bejelentkeztél. - inactive: A fiókod még nincs aktiválva. + inactive: Fiókodat még nem aktiválták. invalid: Helytelen %{authentication_keys} vagy jelszó. last_attempt: Már csak egy próbálkozásod maradt, mielőtt a fiókodat zároljuk. locked: A fiókodat zároltuk. not_found_in_database: Helytelen %{authentication_keys} vagy jelszó. - pending: A fiókod még engedélyezésre vár. + pending: A fiók még áttekintés alatt áll. timeout: A munkameneted lejárt. Kérjük, a folytatáshoz jelentkezz be újra. unauthenticated: A folytatás előtt be kell jelentkezned vagy regisztrálnod kell. - unconfirmed: A folytatás előtt meg kell erősítened az e-mail címed. + unconfirmed: A folytatás előtt meg kell erősíteni az email címet. mailer: confirmation_instructions: - action: Erősítsd meg az e-mail címedet - action_with_app: Megerősítés majd vissza ide %{app} - explanation: Ezzel az e-mail címmel kezdeményeztek regisztrációt a(z) %{host} oldalon. Csak egy kattintás, és a felhasználói fiókodat aktiváljuk. Ha a regisztrációt nem te kezdeményezted, kérjük tekintsd ezt az e-mailt tárgytalannak. - explanation_when_pending: Ezzel az e-mail címmel meghívást kértél a(z) %{host} oldalon. Ahogy megerősíted az e-mail címed, átnézzük a jelentkezésedet. Ennek ideje alatt nem tudsz belépni. Ha a jelentkezésed elutasítjuk, az adataidat töröljük, más teendőd nincs. Ha a kérelmet nem te kezdeményezted, kérjük tekintsd ezt az e-mailt tárgytalannak. - extra_html: Tekintsd át a a kiszolgáló szabályait és a felhasználási feltételeket. - subject: 'Mastodon: Megerősítési lépések ehhez az instancehez: %{instance}' - title: E-mail cím megerősítése + action: Email cím ellenőrzése + action_with_app: 'Megerősítés majd visszatérés: %{app}' + explanation: Ezzel az email címmel kezdeményeztek regisztrációt %{host} kiszolgálón. Csak egy kattintás, és a felhasználói fiók bekapcsolásra kerül. Ha a regisztráció kezdeményezése téves volt, tekintsük ezt az emailt tárgytalannak. + explanation_when_pending: Ezzel az email címmel meghívás kérés történt %{host} kiszolgálón. Az email cím megerősítése után a jelentkezés áttekintésre kerül. Ennek ideje alatt nem lehet belépni. Ha a jelentkezés elutasításra kerül, az adatok törlésre kerülnek, más teendő nincs. Ha a kérelem kezdeményezése téves volt, tekintsük ezt az emailt tárgytalannak. + extra_html: Tekintsük át a a kiszolgáló szabályait és a felhasználási feltételeket. + subject: 'Mastodon: Megerősítési utasítások: %{instance}' + title: Email cím megerősítése email_changed: explanation: 'A fiókodhoz tartozó e-mail cím a következőre változik:' extra: Ha nem változtattad meg az e-mail címed, akkor valószínű, hogy valaki hozzáférhetett a fiókodhoz. Kérjük, azonnal változtasd meg a jelszavadat, vagy lépj kapcsolatba a szerver adminisztrátorával, ha ki vagy zárva a fiókodból. - subject: 'Mastodon: a fiókodhoz tartozó e-mail címet megváltoztattuk' - title: Új e-mail cím + subject: 'Mastodon: a fiókhoz tartozó email cím megváltoztatásra került' + title: Új email cím password_change: - explanation: A fiókodhoz tartozó jelszót megváltoztattuk. - extra: Ha nem te kérted a fiókod jelszavának módosítását, akkor valaki hozzáférhetett a fiókodhoz. Legjobb, ha azonnal megváltoztatod a jelszavadat; ha nem férsz hozzá a fiókodhoz, vedd fel a kapcsolatot a kiszolgálód adminisztrátorával. - subject: 'Mastodon: Jelszavad megváltoztattuk' - title: Sikeres jelszómódosítás + explanation: A fiókhoz tartozó jelszó megváltoztatásra került. + extra: Ha a fiók jelszavának módosítási kérelme téves volt, akkor valaki hozzáférhetett a fiókhoz. Legjobb, a jelszó azonnali megváltoztatása vagy ha kizárásra kerültünk a fiókból, vegyük fel a kapcsolatot a kiszolgáló adminisztrátorával. + subject: 'Mastodon: A jelszó megváltoztatásra került' + title: A jelszó megváltoztatásra került reconfirmation_instructions: - explanation: Az e-mail cím megváltoztatásához meg kell erősítened az új címet. - extra: Amennyiben nem te kezdeményezted a módosítást, kérjük tekintsd ezt az e-mailt tárgytalannak. A Mastodon fiókodhoz tartozó e-mail címed változatlan marad mindaddig, amíg rá nem kattintasz a fenti linkre. - subject: 'Mastodon: erősítsd meg a(z) %{instance} szerverhez tartozó e-mail címed' - title: E-mail cím megerősítése + explanation: Az email cím megváltoztatásához meg kell erősíteni az új email címet. + extra: Amennyiben a kezdeményezés téves volt, tekintsük ezt az emailt tárgytalannak. A Mastodon fiókhoz tartozó email cím változatlan marad a fenti hivatkozásra kattintásig. + subject: 'Mastodon: Email cím megerősítése: %{instance}' + title: Email cím megerősítése reset_password_instructions: action: Jelszó módosítása - explanation: A fiókodhoz tartozó jelszó módosítását kezdeményezted. - extra: Amennyiben nem te kezdeményezted a módosítást, kérjük tekintsd ezt az e-mailt tárgytalannak. A Mastodon fiókodhoz tartozó jelszavad változatlan marad mindaddig, amíg újat nem hozol létre a fenti linkre kattintva. + explanation: A fiókhoz tartozó jelszó módosítása kezdeményezésre került. + extra: Amennyiben a kezdeményezés téves volt, tekintsük ezt az emailt tárgytalannak. A Mastodon fiókhoz tartozó jelszó változatlan marad a fenti hivatkozásra kattintásig. subject: 'Mastodon: Jelszó visszaállítási lépések' title: Jelszó visszaállítása two_factor_disabled: @@ -55,54 +55,54 @@ hu: subject: Kétlépcsős azonosítás engedélyezve title: Kétlépcsős hitelesítés engedélyezve two_factor_recovery_codes_changed: - explanation: A korábbi helyreállítási kódokat letiltottuk, és újakat generáltunk. + explanation: A korábbi helyreállítási kódok letiltásra és újragenerálásra kerültek. subject: Kétlépcsős helyreállítási kódok újra létrejöttek - title: A kétlépcsős kódok megváltozott + title: A kétlépcsős kódok megváltoztak unlock_instructions: subject: 'Mastodon: Feloldási lépések' webauthn_credential: added: - explanation: A következő biztonsági kulcsot hozzáadtuk a fiókodhoz + explanation: A következő biztonsági kulcs a fiókhoz hozzáadásra került subject: 'Mastodon: Új biztonsági kulcs' - title: Új biztonsági kulcsot vettünk fel + title: Új biztonsági kulcs lett hozzáadva deleted: - explanation: A következő biztonsági kulcsot töröltük a fiókodból - subject: 'Mastodon: Biztonsági kulcs törölve' - title: Az egyik biztonsági kulcsodat törölték + explanation: A következő biztonsági kulcs törlésre került a fiókból + subject: 'Mastodon: A biztonsági kulcs törlésre került' + title: Az egyik biztonsági kulcs törlésre került webauthn_disabled: - explanation: A biztonsági kulccsal történő hitelesítést letiltottuk a fiókodon. Bejelentkezni csak a párosított TOTP app által generált tokennel lehet. - subject: 'Mastodon: Biztonsági kulccsal történő hitelesítés letiltva' - title: Biztonsági kulcsok letiltva + explanation: A biztonsági kulccsal történő hitelesítés letiltásra kerüt a fióknál. Bejelentkezni csak a párosított TOTP app által generált vezérjellel lehet. + subject: 'Mastodon: A biztonsági kulccsal történő hitelesítés letiltásra került' + title: A bztonsági kulcsok letiltásra kerültek webauthn_enabled: - explanation: A biztonsági kulccsal történő hitelesítést engedélyeztük a fiókodon. A biztonsági kulcsodat mostantól használhatod bejelentkezésre. - subject: 'Mastodon: Biztonsági kulcsos hitelesítés engedélyezve' - title: Biztonsági kulcsok engedélyezve + explanation: A biztonsági kulccsal történő hitelesítést engedélyezve lett a fióknál. A biztonsági kulcs mostantól használható a bejelentkezésre. + subject: 'Mastodon: A biztonsági kulcsos hitelesítés engedélyezésre került' + title: A bztonsági kulcsok engedélyezésre kerültek omniauth_callbacks: failure: Sikertelen hitelesítés %{kind} fiókról, mert "%{reason}". success: Sikeres hitelesítés %{kind} fiókról. passwords: - no_token: Nem férhetsz hozzá ehhez az oldalhoz jelszó visszaállító e-mail nélkül. Ha egy jelszó visszaállító e-mail hozott ide, ellenőrizd, hogy a megadott teljes URL-t használd. - send_instructions: Pár percen belül kapni fogsz egy e-mailt arról, hogy hogyan tudod visszaállítani a jelszavadat. Kérlek ellenőrizd a levélszemét mappádat, ha nem kaptál ilyen e-mailt. - send_paranoid_instructions: Ha létezik az e-mail cím, pár percen belül kapni fogsz egy e-mailt arról, hogy hogyan tudod visszaállítani a jelszavadat. Kérlek ellenőrizd a levélszemét mappádat, ha nem kaptál ilyen e-mailt. - updated: Jelszavad sikeresen frissült. Bejelentkeztél. - updated_not_active: Jelszavad sikeresen megváltoztattuk. + no_token: Nem lehet hozzáférni ehhez az oldalhoz jelszó visszaállító email nélkül. Ha egy jelszó visszaállító email miatt érkeztünk ide, ellenőrizzük a megadott teljes webcím használatát. + send_instructions: Ha az email cím létezik az adatbázisban, néhány perc alatt megérkezik jelszó helyreállítási hivatkozás az email címre. Ellenőrizzük a spam mappát, ha nem érkezett meg ez az email. + send_paranoid_instructions: Ha az email cím létezik az adatbázisban, néhány perc alatt megérkezik jelszó helyreállítási hivatkozás az email címre. Ellenőrizzük a spam mappát, ha nem érkezett meg ez az email. + updated: A jelszó sikeresen megváltozott. Megtörtént a bejelentkezés. + updated_not_active: A jelszó sikeresen megváltoztatásra került. registrations: - destroyed: Viszlát! A fiókodat sikeresen töröltük. Reméljük hamarosan viszontláthatunk. + destroyed: Viszontásátásra! A fiók sikeresen törlésre került. Reméljük hamarosan visszatér. signed_up: Üdvözlünk! Sikeresen regisztráltál. signed_up_but_inactive: Sikeresen regisztráltál. Ennek ellenére nem tudunk beléptetni, ugyanis a fiókodat még nem aktiválták. signed_up_but_locked: Sikeresen regisztráltál. Ennek ellenére nem tudunk beléptetni, ugyanis a fiókod le van zárva. signed_up_but_pending: Egy megerősítési hivatkozással ellátott üzenetet kiküldtünk az e-mail címedre. Ha kattintasz a hivatkozásra, átnézzük a kérelmedet. Értesítünk, ha jóváhagytuk. signed_up_but_unconfirmed: Egy megerősítési hivatkozással ellátott üzenetet kiküldtünk az e-mail címedre. Kérjük használd a hivatkozást a fiókod aktiválásához. Ellenőrizd a spam mappádat, ha nem kaptad meg ezt a levelet. - update_needs_confirmation: Sikeresen frissítetted a fiókodat, de szükségünk van az e-mail címed megerősítésére. Kérlek ellenőrizd az e-mailedet és kövesd a levélben szereplő megerősítési linket az e-mail címed megerősítéséhez. Ellenőrizd a levélszemét mappád, ha nem kaptál volna ilyen levelet. - updated: Fiókod frissítése sikeres. + update_needs_confirmation: A fiókodat sikeresen frissítésre került, de szükség van az email cím megerősítésére. Ellenőrizzük az emailt és kövessük a benne levő megerősítési hivatkozást az email cím megerősítéséhez. Ellenőrizzük a levélszemét mappát, ha nemérkezett volna meg ez az email. + updated: A fiók sikeresen frissítésre került. sessions: - already_signed_out: Sikeres kijelentkezés. - signed_in: Sikeres bejelentkezés. - signed_out: Sikeres kijelentkezés. + already_signed_out: A kijelentkezés sikeres volt. + signed_in: A bejelentkezés sikeres volt. + signed_out: A kijelentkezés sikeres volt. unlocks: - send_instructions: Pár percen belül egy e-mailt fogsz kapni a feloldáshoz szükséges lépésekkel. Ellenőrizd a levélszemét mappád, ha nem kaptál volna ilyen levelet. - send_paranoid_instructions: Ha a fiókod létezik, pár percen belül egy e-mailt fogsz kapni a feloldáshoz szükséges lépésekkel. Ellenőrizd a levélszemét mappád, ha nem kaptál volna ilyen levelet. - unlocked: A fiókodat sikeresen feloldottuk. Jelentkezz be a folytatáshoz. + send_instructions: Néhány perc múlva egy email érkezik a fiók feloldásáról. Ellenőrizzük a spam mappát, ha nem érkezett volna meg at email. + send_paranoid_instructions: Ha a fiók létezik, pár percen belül egy email érkezik a feloldáshoz szükséges lépésekkel. Ellenőrizzük a levélszemét mappát, ha nem érkezett volna ilyen email. + unlocked: A fiók sikeresen feloldásra került. Jelentkezzünk be a folytatáshoz. errors: messages: already_confirmed: már meg lett erősítve, kérjük jelentkezz be diff --git a/config/locales/devise.my.yml b/config/locales/devise.my.yml index 4a5500aed4..04d744cf2b 100644 --- a/config/locales/devise.my.yml +++ b/config/locales/devise.my.yml @@ -7,7 +7,7 @@ my: send_paranoid_instructions: အကယ်၍ သင့်အီးမေးလ်လိပ်စာသည် ကျွန်ုပ်တို့၏ဒေတာဘေ့စ်တွင် ရှိနေပါက မိနစ်အနည်းငယ်အတွင်း သင့်အီးမေးလ်လိပ်စာကို အတည်ပြုရန်အတွက် ညွှန်ကြားချက်များပါရှိသည့် အီးမေးလ်တစ်စောင်ကို သင်ရရှိမည်ဖြစ်ပါသည်။ ဤအီးမေးလ်ကို လက်ခံမရရှိပါက သင်၏ Spam ဖိုင်ကို စစ်ဆေးပါ။ failure: already_authenticated: သင်ဝင်ရောက်ပြီးဖြစ်သည်။ - inactive: သင့်အကောင့်မှာ အတည်မဖြစ်သေးပါ။ + inactive: သင်၏အကောင့်သည်အသက်မဝင်သေးပါ invalid: မှားယွင်းသော %{authentication_keys} သို့မဟုတ် စကားဝှက် ဖြစ်ပါသည်။ last_attempt: သင့်အကောင့်ကို လော့ခ်မချမီ နောက်ထပ်ကြိုးစားမှုတစ်ခု ရှိသေးသည်။ locked: သင့်အကောင့်ကို လော့ခ်ချထားသည်။ @@ -110,3 +110,5 @@ my: expired: သည် သက်တမ်းကျော်လွန်သွားပြီ။ ကျေးဇူးပြု၍အသစ်တစ်ခု တောင်းဆိုပါ not_found: ရှာမတွေ့ပါ not_locked: လော့ခ် မချထားပါ + not_saved: + other: "%{count} အမှားသည် ဤ %{resource} အား သိမ်းဆည်းခြင်းမှ တားမြစ်ထားသည်-" diff --git a/config/locales/devise.zh-CN.yml b/config/locales/devise.zh-CN.yml index 4a47dddec4..d21c0c7f13 100644 --- a/config/locales/devise.zh-CN.yml +++ b/config/locales/devise.zh-CN.yml @@ -96,9 +96,9 @@ zh-CN: update_needs_confirmation: 账号信息更新成功,但我们需要验证你的新电子邮件地址,请点击邮件中的链接以确认。如果没有收到邮件,请检查你的垃圾邮箱。 updated: 账户资料更新成功。 sessions: - already_signed_out: 已成功登出。 + already_signed_out: 已成功退出登录。 signed_in: 已成功登录。 - signed_out: 已成功登出。 + signed_out: 已成功退出登录。 unlocks: send_instructions: 几分钟后,你将收到一封解锁账户的邮件。如果没有,请检查你的垃圾邮箱。 send_paranoid_instructions: 如果你的账号存在,你将会在几分钟内收到一封指引你如何解锁账号的邮件。如果你没有收到这封邮件,请检查你邮箱的垃圾箱。 diff --git a/config/locales/devise.zh-TW.yml b/config/locales/devise.zh-TW.yml index 3c1968e50b..f69434dc4c 100644 --- a/config/locales/devise.zh-TW.yml +++ b/config/locales/devise.zh-TW.yml @@ -82,8 +82,8 @@ zh-TW: success: 成功透過 %{kind} 帳號登入。 passwords: no_token: 您必須透過密碼重設信件才能存取此頁面。若確實如此,請確定輸入的網址是完整的。 - send_instructions: 若電子郵件地址存在於我們的資料庫,幾分鐘後您將在信箱中收到密碼復原連結。若未收到請檢查垃圾郵件資料夾。 - send_paranoid_instructions: 若電子郵件地址存在於我們的資料庫,幾分鐘後您將在信箱中收到密碼復原連結。若未收到請檢查垃圾郵件資料夾。 + send_instructions: 若電子郵件地址存在於我們的資料庫,幾分鐘後您將於信箱中收到密碼復原連結。若未收到請檢查垃圾郵件資料夾。 + send_paranoid_instructions: 若電子郵件地址存在於我們的資料庫,幾分鐘後您將於信箱中收到密碼復原連結。若未收到請檢查垃圾郵件資料夾。 updated: 您的密碼已成功變更,現在已經登入。 updated_not_active: 您的密碼已成功變更。 registrations: @@ -101,7 +101,7 @@ zh-TW: signed_out: 已成功登出。 unlocks: send_instructions: 幾分鐘後您將收到解鎖帳號的指引信件。若未收到請檢查垃圾郵件資料夾。 - send_paranoid_instructions: 若此帳號存在,您將在幾分鐘後收到解鎖指引信件。若未收到請檢查垃圾郵件資料夾。 + send_paranoid_instructions: 若此帳號存在,您將於幾分鐘後收到解鎖指引信件。若未收到請檢查垃圾郵件資料夾。 unlocked: 已解鎖您的帳號,請登入繼續。 errors: messages: diff --git a/config/locales/doorkeeper.de.yml b/config/locales/doorkeeper.de.yml index 00c4ad678e..3b69cb0556 100644 --- a/config/locales/doorkeeper.de.yml +++ b/config/locales/doorkeeper.de.yml @@ -3,7 +3,7 @@ de: activerecord: attributes: doorkeeper/application: - name: Name der Anwendung + name: Anwendungsname redirect_uri: Weiterleitungs-URI scopes: Befugnisse website: Website der Anwendung @@ -60,7 +60,7 @@ de: error: title: Ein Fehler ist aufgetreten new: - prompt_html: "%{client_name} möchte auf dein Konto zugreifen. Es ist eine Anwendung von Drittanbietern. Wenn du ihr nicht vertraust, dann solltest du sie nicht autorisieren." + prompt_html: "%{client_name} möchte auf dein Konto zugreifen. Es handelt sich um eine Drittanbieter-Software. Wenn du der Anwendung nicht vertraust, solltest du ihr keinen Zugriff auf dein Konto geben." review_permissions: Berechtigungen überprüfen title: Autorisierung erforderlich show: @@ -82,7 +82,7 @@ de: messages: access_denied: Die Anfrage wurde durch Benutzer_in oder Autorisierungs-Server verweigert. credential_flow_not_configured: Das Konto konnte nicht gefunden werden, da Doorkeeper.configure.resource_owner_from_credentials nicht konfiguriert ist. - invalid_client: 'Client-Authentifizierung ist fehlgeschlagen: Client unbekannt, keine Authentisierung mitgeliefert oder Authentisierungsmethode wird nicht unterstützt.' + invalid_client: 'Client-Authentisierung ist fehlgeschlagen: Client unbekannt, keine Authentisierung mitgeliefert oder Authentisierungsmethode wird nicht unterstützt.' invalid_grant: Die beigefügte Autorisierung ist ungültig, abgelaufen, wurde widerrufen oder einem anderen Client ausgestellt, oder der Weiterleitungs-URI stimmt nicht mit der Autorisierungs-Anfrage überein. invalid_redirect_uri: Der beigefügte Weiterleitungs-URI ist ungültig. invalid_request: @@ -119,7 +119,7 @@ de: write: Nur Schreibzugriff title: accounts: Konten - admin/accounts: Verwaltung der Konten + admin/accounts: Kontenverwaltung admin/all: Alle administrativen Funktionen admin/reports: Verwaltung der Berichte all: Voller Zugriff auf dein Mastodon-Konto diff --git a/config/locales/doorkeeper.es.yml b/config/locales/doorkeeper.es.yml index e8d9d8e93f..dc9308e5f8 100644 --- a/config/locales/doorkeeper.es.yml +++ b/config/locales/doorkeeper.es.yml @@ -129,7 +129,7 @@ es: crypto: Cifrado de extremo a extremo favourites: Favoritos filters: Filtros - follow: Seguimientos, silenciad@s y bloqueos + follow: Seguimientos, silenciados y bloqueos follows: Seguidos lists: Listas media: Adjuntos multimedia diff --git a/config/locales/doorkeeper.fi.yml b/config/locales/doorkeeper.fi.yml index e2a81b4e9f..00a23f3a09 100644 --- a/config/locales/doorkeeper.fi.yml +++ b/config/locales/doorkeeper.fi.yml @@ -14,14 +14,14 @@ fi: redirect_uri: fragment_present: ei voi sisältää osia. invalid_uri: on oltava kelvollinen URI. - relative_uri: on oltava täydellinen URI. + relative_uri: on oltava täysi URI. secured_uri: on oltava HTTPS/SSL-URI. doorkeeper: applications: buttons: authorize: Valtuuta cancel: Peruuta - destroy: Tuhoa + destroy: Poista edit: Muokkaa submit: Lähetä confirmations: @@ -29,11 +29,11 @@ fi: edit: title: Muokkaa sovellusta form: - error: Hups! Tarkista, että lomakkeessa ei ole virheitä + error: Hupsis! Tarkista, ettei lomakkeessasi ole virheitä help: native_redirect_uri: Käytä %{native_redirect_uri} paikallisiin testeihin redirect_uri: Lisää jokainen URI omalle rivilleen - scopes: Erota oikeudet välilyönnein. Jos kenttä jätetään tyhjäksi, käytetään oletusoikeuksia. + scopes: Erota oikeudet välilyönneillä. Jätä kenttä tyhjäksi, jos haluat käyttää oletusoikeuksia. index: application: Sovellus callback_url: Takaisinkutsu-URL @@ -48,19 +48,19 @@ fi: title: Uusi sovellus show: actions: Toiminnot - application_id: Asiakasohjelman tunnus + application_id: Ohjelman tunnus callback_urls: Takaisinkutsu-URL:t scopes: Oikeudet - secret: Asiakasohjelman salainen avain + secret: Ohjelman salaisuus title: 'Sovellus: %{name}' authorizations: buttons: authorize: Valtuuta - deny: Evää + deny: Estä error: title: Tapahtui virhe new: - prompt_html: "%{client_name} pyytää lupaa käyttää tiliäsi. Se on kolmannen osapuolen sovellus. Jos et luota siihen, sinun ei pitäisi sallia sitä." + prompt_html: "%{client_name} pyytää lupaa käyttää tiliäsi. Se on kolmannen osapuolen sovellus. Jos et luota siihen, älä valtuuta sitä." review_permissions: Tarkista käyttöoikeudet title: Valtuutus vaaditaan show: @@ -81,7 +81,7 @@ fi: errors: messages: access_denied: Resurssin omistaja tai valtuutuspalvelin hylkäsi pyynnön. - credential_flow_not_configured: Resurssin omistajan salasana epäonnistui, koska asetusta Doorkeeper.configure.resource_owner_from_credentials ei ole konfiguroitu. + credential_flow_not_configured: Resurssin omistajan salasanatietojen luku epäonnistui, koska asetusta Doorkeeper.configure.resource_owner_from_credentials ei ole konfiguroitu. invalid_client: Asiakasohjelman valtuutus epäonnistui, koska asiakas on tuntematon, asiakkaan valtuutus ei ollut mukana tai valtuutustapaa ei tueta. invalid_grant: Valtuutuslupa on virheellinen, umpeutunut, peruttu, valtuutuspyynnössä käytettyä uudelleenohjaus-URI:tä vastaamaton tai myönnetty toiselle asiakkaalle. invalid_redirect_uri: Uudelleenohjaus-URI on virheellinen. @@ -111,12 +111,12 @@ fi: notice: Sovellus päivitetty. authorized_applications: destroy: - notice: Sovellus peruttu. + notice: Sovellus poistettu. grouped_scopes: access: read: Vain luku read/write: Luku- ja kirjoitusoikeudet - write: Vain kirjoitus + write: Vain kirjoitusoikeus title: accounts: Tilit admin/accounts: Tilien hallinta diff --git a/config/locales/doorkeeper.gl.yml b/config/locales/doorkeeper.gl.yml index 622fcfe768..c7f21d1ba8 100644 --- a/config/locales/doorkeeper.gl.yml +++ b/config/locales/doorkeeper.gl.yml @@ -120,7 +120,7 @@ gl: title: accounts: Contas admin/accounts: Administración das contas - admin/all: Tódalas funcións administrativas + admin/all: Todas as funcións administrativas admin/reports: Administración das denuncias all: Acceso completo á túa conta de Mastodon blocks: Bloqueos @@ -129,7 +129,7 @@ gl: crypto: Cifrado extremo-a-extremo favourites: Favoritas filters: Filtros - follow: Seguidas, Silenciadas e Bloqueadas + follow: Seguidas, Acaladas e Bloqueadas follows: Seguimentos lists: Listas media: Anexos multimedia @@ -150,7 +150,7 @@ gl: admin:read: ler todos os datos no servidor admin:read:accounts: ler información sensible de todas as contas admin:read:canonical_email_blocks: ler a información sensíbel de tódolos bloqueos de correos electrónicos canónicos - admin:read:domain_allows: ler a información sensible de tódolos dominios permitidos + admin:read:domain_allows: ler a información sensible de todos os dominios permitidos admin:read:domain_blocks: ler a información sensible de tódolos bloqueos de dominio admin:read:email_domain_blocks: ler a información sensible de tódolos dominios de correo electrónico admin:read:ip_blocks: ler a información sensible de tódolos bloqueos de IP diff --git a/config/locales/doorkeeper.hu.yml b/config/locales/doorkeeper.hu.yml index 51f42405a6..1d75beef5a 100644 --- a/config/locales/doorkeeper.hu.yml +++ b/config/locales/doorkeeper.hu.yml @@ -5,7 +5,7 @@ hu: doorkeeper/application: name: Alkalmazás neve redirect_uri: Átirányító URI - scopes: Hatáskör + scopes: Hatókör website: Az alkalmazás weboldala errors: models: @@ -19,65 +19,65 @@ hu: doorkeeper: applications: buttons: - authorize: Engedélyezés + authorize: Hitelesítés cancel: Mégsem destroy: Törlés edit: Szerkesztés submit: Elküldés confirmations: - destroy: Biztos vagy benne? + destroy: Biztos így legyen? edit: title: Alkalmazás szerkesztése form: - error: Hoppá! Ellenőrizd az űrlapot az esetleges hibák miatt + error: Hoppá! Ellenőrizük az űrlapot az esetleges hibák miatt help: - native_redirect_uri: Használj %{native_redirect_uri} a helyi tesztekhez + native_redirect_uri: "%{native_redirect_uri} használata a helyi tesztekhez" redirect_uri: Egy sor URI-nként - scopes: A hatásköröket szóközzel válaszd el. Hagyd üresen az alapértelmezett hatáskörökhöz. + scopes: A hatóköröket szóközzel válasszuk el. Hagyjuk üresen az alapértelmezett hatókörökhöz. index: application: Alkalmazás callback_url: Visszahívási URL delete: Eltávolítás - empty: Nincsenek alkalmazásaid. + empty: Nincsenek saját alkalmazások. name: Név new: Új alkalmazás - scopes: Hatáskör - show: Mutat - title: Alkalmazásaid + scopes: Hatókörök + show: Megjelenítés + title: Saját alkalmazások new: title: Új alkalmazás show: actions: Műveletek - application_id: Alkalmazás azonosító - callback_urls: Callback URL-ek + application_id: Ügyfél kulcs + callback_urls: Visszahívási URL-ek scopes: Hatáskörök - secret: Titok + secret: Ügyfél titkos kulcs title: 'Alkalmazás: %{name}' authorizations: buttons: - authorize: Engedélyezés + authorize: Hitelesítés deny: Tiltás error: title: Hiba történt new: - prompt_html: "%{client_name} szeretné elérni a fiókodat. Ez egy harmadik féltől származó alkalmazás. Ha nem bízol meg benne, ne addj felhatalmazást neki." - review_permissions: Engedélyek áttekintése - title: Engedély szükséges + prompt_html: "%{client_name} szeretné elérni a fiókomat. Ez egy harmadik féltől származó alkalmazás. Ha nem bízunk meg benne, ne adjunk hitlesítést." + review_permissions: Jogosultságok áttekintése + title: Hitelesítés szükséges show: title: Másold le ezt az engedélyező kódot és írd be az alkalmazásba. authorized_applications: buttons: revoke: Visszavonás confirmations: - revoke: Biztos vagy benne? + revoke: Biztos így legyen? index: - authorized_at: 'Felhatalmazva ekkor: %{date}' + authorized_at: 'Hitelesítés: %{date}' description_html: Ezek olyan alkalmazások, melyek API-n keresztül érhetik el a fiókodat. Ha vannak itt olyanok, melyeket nem ismersz fel, vagy valamelyik alkalmazás rosszul működik, visszavonhatod az engedélyét. - last_used_at: 'Utoljára ekkor használva: %{date}' + last_used_at: 'Utolsó használat: %{date}' never_used: Soha sem volt használva - scopes: Engedélyek + scopes: Jogosultságok superapp: Belső - title: Engedélyezett alkalmazásaid + title: Hitelesített saját alkalmazások errors: messages: access_denied: Az erőforrás tulajdonosa vagy az engedélyező kiszolgáló elutasította a kérést. @@ -92,10 +92,10 @@ hu: invalid_resource_owner: A biztosított erőforrás tulajdonosának hitelesítő adatai nem valósak, vagy az erőforrás tulajdonosa nem található. invalid_scope: A kért nézet érvénytelen, ismeretlen, vagy hibás. invalid_token: - expired: Hozzáférési kulcs lejárt - revoked: Hozzáférési kulcsot visszavonták - unknown: Hozzáférési kulcs érvénytelen - resource_owner_authenticator_not_configured: Erőforrás tulajdonos keresés megszakadt, ugyanis a Doorkeeper.configure.resource_owner_authenticator beállítatlan. + expired: A hozzáférési kulcs lejárt. + revoked: A hozzáférési kulcsot visszavonták. + unknown: A hozzáférési kulcs érvénytelen. + resource_owner_authenticator_not_configured: Az erőforrás tulajdonos keresés megszakadt, ugyanis a Doorkeeper.configure.resource_owner_authenticator beállítatlan. server_error: Az engedélyező kiszolgáló váratlan körülménybe ütközött, ami megakadályozta, hogy teljesítse a kérést. temporarily_unavailable: Az engedélyezési kiszolgáló jelenleg nem tudja kezelni a kérelmet a kiszolgáló ideiglenes túlterhelése vagy karbantartása miatt. unauthorized_client: A kliens nincs feljogosítva erre a kérésre. @@ -104,14 +104,14 @@ hu: flash: applications: create: - notice: Alkalmazás létrehozva. + notice: Az alkalmazás létrejött. destroy: - notice: Alkalmazás törölve. + notice: Az alkalmazás törlésre került. update: notice: Alkalmazás frissítve. authorized_applications: destroy: - notice: Alkalmazás visszavonva. + notice: Az alkalmazás visszavonásra került. grouped_scopes: access: read: Csak olvasási elérés @@ -122,7 +122,7 @@ hu: admin/accounts: Fiókok adminisztrációja admin/all: Minden adminisztratív funkció admin/reports: Bejelentések adminisztrációja - all: Teljes hozzáférés a Mastodon fiókodhoz + all: Teljes hozzáférés a Mastodon saját fiókhoz blocks: Letiltások bookmarks: Könyvjelzők conversations: Beszélgetések @@ -164,12 +164,12 @@ hu: admin:write:ip_blocks: moderáció végrehajtása IP-blokkokon admin:write:reports: moderációs műveletek végzése bejelentéseken crypto: végpontok közti titkosítás használata - follow: fiókok követése, letiltása, tiltás feloldása és követés abbahagyása + follow: fiókok kapcsolatok módosítása push: push értesítések fogadása - read: fiókod adatainak olvasása + read: saját fiók adatainak olvasása read:accounts: fiók adatainak megtekintése read:blocks: letiltások megtekintése - read:bookmarks: könyvjelzőid megtekintése + read:bookmarks: könyvjelzőik megtekintése read:favourites: kedvencek megtekintése read:filters: szűrök megtekintése read:follows: követések megtekintése @@ -177,10 +177,10 @@ hu: read:mutes: némítások megtekintése read:notifications: értesítések megtekintése read:reports: bejelentések megtekintése - read:search: nevedben keresés + read:search: keresés saját nevemben read:statuses: bejegyzések megtekintése write: fiókod adatainak megváltoztatása - write:accounts: profilod megváltoztatása + write:accounts: saját profil megváltoztatása write:blocks: fiókok és domainek letiltása write:bookmarks: bejegyzések könyvjelzőzése write:conversations: beszélgetések némítása és törlése diff --git a/config/locales/doorkeeper.ko.yml b/config/locales/doorkeeper.ko.yml index 584ff7219a..ef020bd853 100644 --- a/config/locales/doorkeeper.ko.yml +++ b/config/locales/doorkeeper.ko.yml @@ -40,7 +40,7 @@ ko: delete: 삭제 empty: 앱이 없습니다. name: 이름 - new: 새로운 앱 + new: 새 애플리케이션 scopes: 범위 show: 표시 title: 내 응용프로그램 @@ -67,12 +67,12 @@ ko: title: 이 승인 코드를 복사해 앱에 붙여 넣어야 합니다. authorized_applications: buttons: - revoke: 삭제 + revoke: 취소 confirmations: revoke: 확실합니까? index: authorized_at: "%{date}에 승인됨" - description_html: 이 계정에 API를 통해 접근 가능한 앱의 목록입니다. 알 수 없는 앱이나 잘못된 행위를 하는 앱이 있다면 권한을 취소할 수 있습니다. + description_html: 이 계정에 API를 통해 접근 가능한 애플리케이션의 목록입니다. 알 수 없는 애플리케이션이나 잘못된 행위를 하는 애플리케이션이 있다면 권한을 취소할 수 있습니다. last_used_at: "%{date}에 마지막으로 사용됨" never_used: 사용되지 않음 scopes: 권한 @@ -93,7 +93,7 @@ ko: invalid_scope: 요청한 범위가 올바르지 않거나, 알 수 없거나, 잘못 된 형식입니다. invalid_token: expired: 액세스 토큰이 만료되었습니다. - revoked: 액세스 토큰이 삭제되었습니다. + revoked: 액세스 토큰이 취소되었습니다. unknown: 액세스 토큰이 잘못되었습니다. resource_owner_authenticator_not_configured: Doorkeeper.configure.resource_owner_authenticator가 설정되지 않아 리소스 소유자 찾기가 실패하였습니다. server_error: 권한 부여 서버에 예기치 않은 상태가 발생하여, 요청을 수행할 수 없습니다. @@ -104,14 +104,14 @@ ko: flash: applications: create: - notice: 앱이 생성 되었습니다. + notice: 애플리케이션을 만들었습니다. destroy: - notice: 앱을 삭제했습니다. + notice: 애플리케이션을 삭제하였습니다. update: - notice: 앱을 갱신했습니다. + notice: 애플리케이션을 갱신했습니다. authorized_applications: destroy: - notice: 운영자에 의해 앱이 해지되었습니다. + notice: 애플리케이션을 취소하였습니다. grouped_scopes: access: read: 읽기 전용 권한 diff --git a/config/locales/doorkeeper.my.yml b/config/locales/doorkeeper.my.yml index 8a92d7e79f..241dcb6914 100644 --- a/config/locales/doorkeeper.my.yml +++ b/config/locales/doorkeeper.my.yml @@ -83,6 +83,7 @@ my: access_denied: မူလပိုင်ရှင် သို့မဟုတ် ခွင့်ပြုချက်ရှိသောဆာဗာမှ တောင်းဆိုချက်ကို ငြင်းပယ်ခဲ့သည်။ credential_flow_not_configured: Doorkeeper.configure.resource_owner_from_credentials ကို သတ်မှတ်မထားသည့်အတွက် မူလပိုင်ရှင် စကားဝှက် အထောက်အထားများထည့်သွင်းခြင်းမှာ မအောင်မြင်တော့ပါ။ invalid_client: Client အထောက်အထားစိစစ်မှု မအောင်မြင်ခြင်းမှာ အမည်မသိ Client ဖြစ်ခြင်း၊ Client စစ်မှန်ကြောင်းအထောက်အထားမပါဝင်ခြင်း သို့မဟုတ် ပံ့ပိုးမထားသည့် အထောက်အထားဖြစ်နေခြင်းကြောင့် ဖြစ်ပါသည်။ + invalid_grant: ပံ့ပိုးပေးထားသည့် ခွင့်ပြုချက်ပေးသည် မမှန်ကန်ပါ၊ သက်တမ်းကုန်၊ ရုပ်သိမ်းလိုက်သည်၊ ခွင့်ပြုချက်တောင်းခံမှုတွင် အသုံးပြုထားသော ပြန်ညွှန်း URI နှင့် မကိုက်ညီပါ သို့မဟုတ် အခြားအသုံးပြုသူထံသို့ ထုတ်ပေးထားသည်။ invalid_redirect_uri: ပြန်ညွှန်းထားခြင်းတွင် ပါဝင်သော URI မှာ မမှန်ကန်ပါ။ invalid_request: missing_param: ပျောက်နေသည့် လိုအပ်သောအရာ - %{value}။ @@ -190,4 +191,5 @@ my: write:media: မီဒီယာဖိုင်များကို အင်တာနက်ပေါ်တင်ပါ write:mutes: လူများနှင့် စကားဝိုင်းများကို ပိတ်ထားပါ write:notifications: သင့်အအသိပေးချက်များကို ရှင်းလင်းပါ + write:reports: အခြားလူများကို သတင်းပို့မည် write:statuses: ပို့စ်များအား ရအောင်ပို့ခြင်း diff --git a/config/locales/doorkeeper.sr-Latn.yml b/config/locales/doorkeeper.sr-Latn.yml index 5e46d01240..3dca04d0a4 100644 --- a/config/locales/doorkeeper.sr-Latn.yml +++ b/config/locales/doorkeeper.sr-Latn.yml @@ -122,16 +122,18 @@ sr-Latn: admin/accounts: Administracija naloga admin/all: Sve funkcije administracije admin/reports: Administracija prijava + all: Potpuni pristup vašem Mastodon nalogu blocks: Blokirani bookmarks: Obeleživači conversations: Razgovori crypto: End-to-end enkripcija favourites: Omiljeni filters: Filteri + follow: Praćenja, ignorisanja i blokiranja follows: Praćeni lists: Liste media: Multimedijalni prilozi - mutes: Utišani + mutes: Ignorisani notifications: Obaveštenja push: Prosleđena obaveštenja reports: Prijave @@ -147,17 +149,22 @@ sr-Latn: scopes: admin:read: čitanje svih podataka na serveru admin:read:accounts: čitanje osetljivih podataka za sve naloge + admin:read:canonical_email_blocks: pročitaj osetljive informacije i kanonske imejl blokove admin:read:domain_allows: pročitaj osetljive informacije za sve dozvole domena admin:read:domain_blocks: pročitaj osetljive informacije za sve blokove domena + admin:read:email_domain_blocks: pročitaj osetljive informacije svih blokova imejl domena admin:read:ip_blocks: pročitaj osetljive informacije za sve IP blokove admin:read:reports: čitanje osetljivih podataka svih izveštaja i prijavljenih naloga admin:write: menjanje svih podataka na serveru admin:write:accounts: vršenje moderatorskih aktivnosti nad nalozima + admin:write:canonical_email_blocks: izvrši moderacijske radnje nad kanonskim imejl blokovima + admin:write:domain_allows: izvrši moderacijske radnje nad dozvolama domena admin:write:domain_blocks: izvrši moderatorske aktivnosti na blokovima domena + admin:write:email_domain_blocks: izvrši moderacijske radnje nad blokovima imejl domena admin:write:ip_blocks: izvrši moderatorske aktivnosti na IP blokovima admin:write:reports: vršenje moderatorskih aktivnosti nad izveštajima crypto: korišćenje end-to-end enkripcije - follow: prati, blokira, odblokira i otprati naloge + follow: menja odnose naloga push: primanje prosleđenih obaveštenja read: čita podatke Vašeg naloga read:accounts: pogledaj informacije o nalozima @@ -167,7 +174,7 @@ sr-Latn: read:filters: pogledaj svoje filtere read:follows: pogledaj koga pratiš read:lists: pogledaj svoje liste - read:mutes: pogledaj svoje utišane + read:mutes: pogledaj ignorisanja read:notifications: pogledaj svoja obaveštenja read:reports: pogledaj svoje prijave read:search: pretraži u svoje ime @@ -176,13 +183,13 @@ sr-Latn: write:accounts: izmeni svoj profil write:blocks: blokiraj naloge i domene write:bookmarks: obeleži objave - write:conversations: utišaj i obriši razgovore + write:conversations: ignoriši i izbriši razgovore write:favourites: omiljene objave write:filters: kreiraj filtere write:follows: prati korisnike write:lists: kreiraj liste write:media: otpremi medijske datoteke - write:mutes: utišaj korinsike i razgovore + write:mutes: ignoriši korisnike i razgovore write:notifications: obriši svoja obaveštenja write:reports: prijavi druge korisnike write:statuses: objavi objave diff --git a/config/locales/doorkeeper.sr.yml b/config/locales/doorkeeper.sr.yml index db399b05f6..00287543f3 100644 --- a/config/locales/doorkeeper.sr.yml +++ b/config/locales/doorkeeper.sr.yml @@ -149,13 +149,18 @@ sr: scopes: admin:read: читање свих података на серверу admin:read:accounts: читање осетљивих података за све налоге + admin:read:canonical_email_blocks: прочитај осетљиве информације и канонске имејл блокове admin:read:domain_allows: прочитај осетљиве информације за све дозволе домена admin:read:domain_blocks: прочитај осетљиве информације за све блокове домена + admin:read:email_domain_blocks: прочитај осетљиве информације свих блокова имејл домена admin:read:ip_blocks: прочитај осетљиве информације за све IP блокове admin:read:reports: читање осетљивих података свих извештаја и пријављених налога admin:write: мењање свих података на серверу admin:write:accounts: вршење модераторских активности над налозима + admin:write:canonical_email_blocks: изврши модерацијске радње над канонским имејл блоковима + admin:write:domain_allows: изврши модерацијске радње над дозволама домена admin:write:domain_blocks: изврши модераторске активности на блоковима домена + admin:write:email_domain_blocks: изврши модерацијске радње над блоковима имејл домена admin:write:ip_blocks: изврши модераторске активности на IP блоковима admin:write:reports: вршење модераторских активности над извештајима crypto: коришћење end-to-end енкрипције diff --git a/config/locales/doorkeeper.th.yml b/config/locales/doorkeeper.th.yml index b36ec21b9e..ceb81f656c 100644 --- a/config/locales/doorkeeper.th.yml +++ b/config/locales/doorkeeper.th.yml @@ -82,7 +82,7 @@ th: messages: access_denied: เจ้าของทรัพยากรหรือเซิร์ฟเวอร์การอนุญาตปฏิเสธคำขอ credential_flow_not_configured: โฟลว์ข้อมูลประจำตัวรหัสผ่านเจ้าของทรัพยากรล้มเหลวเนื่องจากไม่ได้กำหนดค่า Doorkeeper.configure.resource_owner_from_credentials - invalid_client: การรับรองความถูกต้องไคลเอ็นต์ล้มเหลวเนื่องจากไคลเอ็นต์ที่ไม่รู้จัก ไม่มีการรับรองความถูกต้องไคลเอ็นต์ที่รวมอยู่ หรือวิธีการรับรองความถูกต้องที่ไม่รองรับ + invalid_client: การรับรองความถูกต้องไคลเอ็นต์ล้มเหลวเนื่องจากไคลเอ็นต์ที่ไม่รู้จัก ไม่ได้รวมการรับรองความถูกต้องไคลเอ็นต์ หรือวิธีการรับรองความถูกต้องที่ไม่รองรับ invalid_grant: การให้การรับรองความถูกต้องที่ให้มาไม่ถูกต้อง หมดอายุแล้ว เพิกถอนแล้ว ไม่ตรงกับ URI การเปลี่ยนเส้นทางที่ใช้ในคำขอการรับรองความถูกต้อง หรือออกให้ไคลเอ็นต์อื่น invalid_redirect_uri: URI การเปลี่ยนเส้นทางที่รวมอยู่ไม่ถูกต้อง invalid_request: @@ -99,7 +99,7 @@ th: server_error: เซิร์ฟเวอร์การรับรองความถูกต้องพบเงื่อนไขที่ไม่คาดคิดซึ่งป้องกันไม่ให้เซิร์ฟเวอร์ดำเนินการตามคำขอ temporarily_unavailable: เซิร์ฟเวอร์การรับรองความถูกต้องไม่สามารถจัดการคำขอได้ในปัจจุบันเนื่องจากการทำงานเกินพิกัดชั่วคราวหรือการบำรุงรักษาเซิร์ฟเวอร์ unauthorized_client: ไคลเอ็นต์ไม่ได้รับอนุญาตให้ทำคำขอนี้โดยใช้วิธีการนี้ - unsupported_grant_type: ชนิดการให้การรับรองความถูกต้องไม่รองรับโดยเซิร์ฟเวอร์การรับรองความถูกต้อง + unsupported_grant_type: ไม่รองรับชนิดการให้การรับรองความถูกต้องโดยเซิร์ฟเวอร์การรับรองความถูกต้อง unsupported_response_type: เซิร์ฟเวอร์การอนุญาตไม่รองรับชนิดการตอบสนองนี้ flash: applications: diff --git a/config/locales/el.yml b/config/locales/el.yml index 7994f71740..e5dce13b0e 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -11,31 +11,31 @@ el: followers: one: Ακόλουθος other: Ακόλουθοι - following: Ακολουθεί - instance_actor_flash: Αυτός ο λογαριασμός είναι εικονικός και χρησιμοποιείται για να αντιπροσωπεύει τον ίδιο τον εξυπηρετητή και όχι κάποιον μεμονωμένο χρήστη. Χρησιμοποιείται για ομοσπονδιακούς σκοπούς και δεν πρέπει να ανασταλεί. + following: Ακολουθείτε + instance_actor_flash: Αυτός ο λογαριασμός είναι εικονικός και χρησιμοποιείται για να αντιπροσωπεύει τον ίδιο τον διακομιστή και όχι κάποιον μεμονωμένο χρήστη. Χρησιμοποιείται για ομοσπονδιακούς σκοπούς και δεν πρέπει να ανασταλεί. last_active: τελευταία ενεργός/ή - link_verified_on: Η κυριότητα αυτού του συνδέσμου ελέγχθηκε στις %{date} + link_verified_on: Η ιδιοκτησία αυτού του συνδέσμου ελέγχθηκε στις %{date} nothing_here: Δεν υπάρχει τίποτα εδώ! pin_errors: following: Πρέπει ήδη να ακολουθείς το άτομο που θέλεις να επιδοκιμάσεις posts: - one: Τουτ - other: Τουτ - posts_tab_heading: Τουτ + one: Ανάρτηση + other: Αναρτήσεις + posts_tab_heading: Αναρτήσεις admin: account_actions: action: Εκτέλεση ενέργειας - title: Εκτέλεση ενέργειας διαχείρισης στο %{acct} + title: Εκτέλεση ενέργειας συντονισμού στον %{acct} account_moderation_notes: create: Άφησε σημείωση - created_msg: Επιτυχής δημιουργία σημειώματος μεσολάβησης! - destroyed_msg: Επιτυχής καταστροφή σημειώματος μεσολάβησης! + created_msg: Επιτυχής δημιουργία σημειώματος συντονισμού! + destroyed_msg: Η σημείωση συντονισμού καταστράφηκε επιτυχώς! accounts: - add_email_domain_block: Εγγραφή τομέα email σε μαύρη λίστα + add_email_domain_block: Αποκλεισμός τομέα email approve: Έγκριση approved_msg: Επιτυχής έγκριση αίτησης εγγραφής του/της %{username} are_you_sure: Σίγουρα; - avatar: Αβατάρ + avatar: Άβαταρ by_domain: Τομέας change_email: changed_msg: Το email άλλαξε επιτυχώς! @@ -57,27 +57,27 @@ el: deleted: Διαγραμμένοι demote: Υποβίβαση destroyed_msg: Τα δεδομένα του/της %{username} εκκρεμούν για άμεση διαγραφή - disable: Απενεργοποίηση + disable: Πάγωμα disable_sign_in_token_auth: Απενεργοποίηση επαλήθευσης μέσω email disable_two_factor_authentication: Απενεργοποίηση 2FA - disabled: Απενεργοποιημένο - display_name: Όνομα εμφάνισης + disabled: Παγωμένος + display_name: Εμφανιζόμενο όνομα domain: Τομέας edit: Επεξεργασία email: Email email_status: Κατάσταση email - enable: Ενεργοποίηση + enable: Ξεπάγωμα enable_sign_in_token_auth: Ενεργοποίηση ελέγχου ταυτότητας μέσω e-mail enabled: Ενεργοποιημένο enabled_msg: Επιτυχές ξεπάγωμα λογαριασμού του/της %{username} followers: Ακόλουθοι follows: Ακολουθεί - header: Επικεφαλίδα + header: Κεφαλίδα inbox_url: URL εισερχομένων - invite_request_text: Λόγοι για εγγραφή + invite_request_text: Λόγοι για συμμετοχή invited_by: Προσκλήθηκε από ip: IP - joined: Γράφτηκε + joined: Έγινε μέλος location: all: Όλες local: Τοπική @@ -85,25 +85,25 @@ el: title: Τοποθεσία login_status: Κατάσταση σύνδεσης media_attachments: Συνημμένα πολυμέσα - memorialize: Μετατροπή σε νεκρολογία - memorialized: Μετατροπή σε αναμνηστικό - memorialized_msg: Επιτυχής μετατροπή λογαριασμού του/της %{username} σε αναμνηστικό + memorialize: Μετατροπή σε εις μνήμην + memorialized: Μετατράπηκε σε εις μνήμην + memorialized_msg: Επιτυχής μετατροπή λογαριασμού του/της %{username} σε εις μνήμην moderation: - active: Ενεργός/ή - all: Όλα + active: Ενεργός + all: Όλοι disabled: Απενεργοποιημένο pending: Εκκρεμούν - silenced: Περιορισμένοι + silenced: Περιορισμένη suspended: Σε αναστολή - title: Μεσολάβηση - moderation_notes: Σημειώσεις μεσολάβησης + title: Συντονισμός + moderation_notes: Σημειώσεις συντονισμού most_recent_activity: Πιο πρόσφατη δραστηριότητα most_recent_ip: Πιο πρόσφατη IP no_account_selected: Κανείς λογαριασμός δεν ενημερώθηκε αφού κανείς δεν ήταν επιλεγμένος no_limits_imposed: Χωρίς όρια no_role_assigned: Δεν έχει ανατεθεί ρόλος - not_subscribed: Άνευ συνδρομής - pending: Εκκρεμεί έγκριση + not_subscribed: Δεν έγινε εγγραφή + pending: Εκκρεμεί αξιολόγηση perform_full_suspension: Αναστολή previous_strikes: Προηγούμενα παραπτώματα previous_strikes_description_html: @@ -113,15 +113,15 @@ el: protocol: Πρωτόκολλο public: Δημόσιο push_subscription_expires: Η εγγραφή PuSH λήγει - redownload: Ανανέωση αβατάρ - redownloaded_msg: Επιτυχής ανανέωη προφίλ του/της %{username} από την πηγή + redownload: Ανανέωση άβαταρ + redownloaded_msg: Επιτυχής ανανέωση προφίλ του/της %{username} από την πηγή reject: Απόρριψη rejected_msg: Επιτυχής απόρριψη αίτησης εγγραφής του/της %{username} remote_suspension_irreversible: Τα δεδομένα αυτού του λογαριασμού έχουν διαγραφεί αμετάκλητα. - remote_suspension_reversible_hint_html: Ο λογαριασμός έχει ανασταλλεί στον server του και τα δεδομένα του θα διαγραφούν πλήρως στις %{date}. Μέχρι τότε, ο απομακρυσμένος server μπορεί να επαναφέρει τον λογαριασμό χωρίς επιπτώσεις. Αν θέλεις να διαγράψεις αμέσως όλα τα δεδομένα του λογαριασμού, μπορείς να το κάνεις παρακάτω. - remove_avatar: Απομακρυσμένο αβατάρ - remove_header: Αφαίρεση επικεφαλίδας - removed_avatar_msg: Επιτυχής αφαίρεση εικόνας προφίλ του/της%{username} + remote_suspension_reversible_hint_html: Ο λογαριασμός έχει ανασταλλεί στον διακομιστή του και τα δεδομένα του θα διαγραφούν πλήρως στις %{date}. Μέχρι τότε, ο απομακρυσμένος διακομιστής μπορεί να επαναφέρει τον λογαριασμό χωρίς επιπτώσεις. Αν θέλεις να διαγράψεις αμέσως όλα τα δεδομένα του λογαριασμού, μπορείς να το κάνεις παρακάτω. + remove_avatar: Αφαίρεση άβαταρ + remove_header: Αφαίρεση κεφαλίδας + removed_avatar_msg: Επιτυχής αφαίρεση εικόνας προφίλ του/της %{username} removed_header_msg: Επιτυχής αφαίρεση εικόνας κεφαλίδας του/της %{username} resend_confirmation: already_confirmed: Ήδη επιβεβαιωμένος χρήστης @@ -139,14 +139,14 @@ el: only_password: Μόνο κωδικός πρόσβασης password_and_2fa: Κωδικός πρόσβασης και 2FA sensitive: Ευαίσθητο - sensitized: σήμανση ως ευαίσθητο + sensitized: Επισημάνθηκε ως ευαίσθητος shared_inbox_url: URL κοινόχρηστων εισερχομένων show: - created_reports: Αναφορές από αυτόν το λογαριασμό - targeted_reports: Αναφορές για αυτόν το λογαριασμό - silence: Αποσιώπησε - silenced: Αποσιωπημένοι - statuses: Καταστάσεις + created_reports: Αναφορές από τον ίδιο + targeted_reports: Αναφορές από άλλους + silence: Περιορισμός + silenced: Περιορισμένος + statuses: Αναρτήσεις strikes: Προηγούμενα παραπτώματα subscribe: Εγγραφή suspend: Αναστολή @@ -154,20 +154,20 @@ el: suspension_irreversible: Τα δεδομένα αυτού του λογαριασμού έχουν διαγραφεί οριστικά. Μπορείς να άρεις την αναστολή του λογαριασμού για να μπορέσει να χρησιμοποιηθεί αλλά αυτό δεν θα επαναφέρει όσα δεδομένα είχε προηγουμένως. suspension_reversible_hint_html: Ο λογαριασμός έχει ανασταλλεί και τα δεδομένα του θα διαγραφούν πλήρως στις %{date}. Μέχρι τότε ο λογαριασμός μπορεί να επανέλθει κανονικά. Αν θέλεις να διαγράψεις όλα τα δεδομένα του λογαριασμού, μπορείς να το κάνεις παρακάτω. title: Λογαριασμοί - unblock_email: Ξεμπλοκάρισμα διεύθυνσης email - unblocked_email_msg: Επιτυχής κατάργηση αποκλεισμού διεύθυνσης ηλεκτρονικού ταχυδρομείου %{username} + unblock_email: Άρση αποκλεισμού διεύθυνσης email + unblocked_email_msg: Επιτυχής άρση αποκλεισμού διεύθυνσης email %{username} unconfirmed_email: Ανεπιβεβαίωτο email - undo_sensitized: Αναίρεση ευαίσθητου - undo_silenced: Αναίρεση αποσιώπησης + undo_sensitized: Άρση ευαίσθητου + undo_silenced: Άρση περιορισμού undo_suspension: Αναίρεση παύσης unsilenced_msg: Επιτυχής άρση περιορισμών λογαριασμού του/της %{username} unsubscribe: Κατάργηση εγγραφής unsuspended_msg: Επιτυχής άρση αναστολής λογαριασμού του/της %{username} username: Όνομα χρήστη - view_domain: Προβολή περίληψης για τομέα + view_domain: Προβολή περίληψης τομέα warn: Προειδοποίηση web: Διαδίκτυο - whitelisted: Εγκεκριμένοι + whitelisted: Εγκεκριμένοι για συναλλαγές action_logs: action_types: approve_appeal: Έγκριση Έφεσης @@ -180,9 +180,9 @@ el: create_announcement: Δημιουργία Ανακοίνωσης create_canonical_email_block: Δημιουργία αποκλεισμού e-mail create_custom_emoji: Δημιουργία Προσαρμοσμένου Emoji - create_domain_allow: Δημιουργία Επιτρεπτού Τομέα - create_domain_block: Δημιουργία Αποκλεισμένου Τομέα - create_email_domain_block: Δημουργία Αποκλεισμένου Τομέα email + create_domain_allow: Δημιουργία ΑποδεκτούΤομέα + create_domain_block: Δημιουργία Αποκλεισμού Τομέα + create_email_domain_block: Δημουργία Αποκλεισμού Τομέα email create_ip_block: Δημιουργία κανόνα IP create_unavailable_domain: Δημιουργία Μη Διαθέσιμου Τομέα create_user_role: Δημιουργία ρόλου @@ -190,7 +190,7 @@ el: destroy_announcement: Διαγραφή Ανακοίνωσης destroy_canonical_email_block: Διαγραφή Αποκλεισμού email destroy_custom_emoji: Διαγραφή Προσαρμοσμένου Emoji - destroy_domain_allow: Διαγραφή Επιτρεπτού Τομέα + destroy_domain_allow: Διαγραφή Αποδεκτού Τομέα destroy_domain_block: Διαγραφή Αποκλεισμού Τομέα destroy_email_domain_block: Διαγραφή Αποκλεισμένου Τομέα email destroy_instance: Εκκαθάριση Τομέα @@ -205,33 +205,33 @@ el: enable_custom_emoji: Ενεργοποίηση Προσαρμοσμένων Emoji enable_sign_in_token_auth_user: Ενεργοποίηση Ελέγχου Ταυτότητας Μέσω E-mail για το Χρήστη enable_user: Ενεργοποίηση Χρήστη - memorialize_account: Μετατροπή Λογαριασμού σε Αναμνηστικό + memorialize_account: Μετατροπή Λογαριασμού σε Εις Μνήμην promote_user: Προαγωγή Χρήστη reject_appeal: Απόρριψη Έφεσης reject_user: Απόρριψη Χρήστη - remove_avatar_user: Αφαίρεση Avatar - reopen_report: Ξανάνοιγμα Καταγγελίας + remove_avatar_user: Αφαίρεση Άβαταρ + reopen_report: Ξανάνοιγμα Ανααφοράς resend_user: Επαναποστολή του email επιβεβαίωσης reset_password_user: Επαναφορά Συνθηματικού - resolve_report: Επίλυση Καταγγελίας - sensitive_account: Σήμανση των πολυμέσων στον λογαριασμό σας ως ευαίσθητων - silence_account: Σίγαση Λογαριασμού + resolve_report: Επίλυση Αναφοράς + sensitive_account: Ευαίσθητος Λογιαριασμός + silence_account: Περιορισμός Λογαριασμού suspend_account: Αναστολή Λογαριασμού - unassigned_report: Αποδέσμευση Καταγγελίας - unblock_email_account: Ξεμπλοκάρισμα διεύθυνσης email - unsensitive_account: Αφαίρεση σήμανσης των πολυμέσων στον λογαριασμό σας ως ευαίσθητων - unsilence_account: Άρση Σίγασης Λογαριασμού + unassigned_report: Αποδέσμευση Αναφοράς + unblock_email_account: Άρση αποκλεισμού διεύθυνσης email + unsensitive_account: Άρση επισήμανσης Λογαριασμού ως Ευαίσθητο + unsilence_account: Άρση Περιορισμού Λογαριασμού unsuspend_account: Άρση Αναστολής Λογαριασμού update_announcement: Ενημέρωση Ανακοίνωσης update_custom_emoji: Ενημέρωση Προσαρμοσμένου Emoji update_domain_block: Ενημέρωση Αποκλεισμού Τομέα update_ip_block: Ενημέρωση κανόνα IP - update_status: Ενημέρωση Κατάστασης + update_status: Ενημέρωση Ανάρτησης update_user_role: Ενημέρωση ρόλου actions: - approve_appeal_html: Ο/Η %{name} ενέκρινε την ένσταση της απόφασης των διαχειριστών από %{target} - approve_user_html: "%{name} εγκρίθηκε εγγραφή από %{target}" - assigned_to_self_report_html: Ο/Η %{name} ανάθεσε την καταγγελία %{target} στον εαυτό του/της + approve_appeal_html: Ο/Η %{name} ενέκρινε την ένσταση της απόφασης των συντονιστών από %{target} + approve_user_html: ο/η %{name} ενέκρινε την εγγραφή του %{target} + assigned_to_self_report_html: Ο/Η %{name} ανάθεσε την αναφορά %{target} στον εαυτό του/της change_email_user_html: Ο/Η %{name} άλλαξε τη διεύθυνση email του χρήστη %{target} change_role_user_html: Ο/Η %{name} άλλαξε ρόλο του/της %{target} confirm_user_html: Ο/Η %{name} επιβεβαίωσε τη διεύθυνση email του χρήστη %{target} @@ -239,7 +239,7 @@ el: create_announcement_html: Ο/Η %{name} δημιούργησε νέα ανακοίνωση %{target} create_canonical_email_block_html: Ο/Η %{name} απέκλεισε e-mail με το hash %{target} create_custom_emoji_html: Ο/Η %{name} ανέβασε νέο emoji %{target} - create_domain_allow_html: Ο/Η %{name} έβαλε τον τομέα %{target} σε λευκή λίστα + create_domain_allow_html: Ο/Η %{name} επέτρεψε την συναλλαγή με τον τομέα %{target} create_domain_block_html: Ο/Η %{name} απέκλεισε τον τομέα %{target} create_email_domain_block_html: Ο/Η %{name} απέκλεισε τον τομέα email %{target} create_ip_block_html: Ο/Η %{name} δημιούργησε κανόνα για την IP %{target} @@ -257,18 +257,18 @@ el: destroy_status_html: Ο/Η %{name} αφαίρεσε την ανάρτηση του/της %{target} destroy_unavailable_domain_html: Ο/Η %{name} ξανάρχισε να τροφοδοτεί το domain %{target} destroy_user_role_html: Ο/Η %{name} διέγραψε τον ρόλο του %{target} - disable_2fa_user_html: Ο/Η %{name} απενεργοποίησε το two factor requirement για τον χρήστη %{target} + disable_2fa_user_html: Ο/Η %{name} απενεργοποίησε την απαίτηση για ταυτοποίηση δύο παραγόντων για τον χρήστη %{target} disable_custom_emoji_html: Ο/Η %{name} απενεργοποίησε το emoji %{target} - disable_sign_in_token_auth_user_html: Ο/Η %{name} απενεργοποίησε την πιστοποίηση e-mail token του %{target} + disable_sign_in_token_auth_user_html: Ο/Η %{name} απενεργοποίησε την ταυτοποίηση χαρακτηριστικού μέσω e-mail του %{target} disable_user_html: Ο/Η %{name} απενεργοποίησε τη σύνδεση για τον χρήστη %{target} enable_custom_emoji_html: Ο/Η %{name} ενεργοποίησε το emoji %{target} - enable_sign_in_token_auth_user_html: Ο/Η %{name} ενεργοποίησε την πιστοποίηση e-mail token του %{target} + enable_sign_in_token_auth_user_html: Ο/Η %{name} ενεργοποίησε την ταυτοποίηση χαρακτηριστικού μέσω e-mail του %{target} enable_user_html: Ο/Η %{name} ενεργοποίησε τη σύνδεση για τον χρήστη %{target} - memorialize_account_html: O/H %{name} μετέτρεψε τον λογαριασμό του %{target} σε σελίδα μνήμης + memorialize_account_html: O/H %{name} μετέτρεψε τον λογαριασμό του %{target} σε σελίδα εις μνήμην promote_user_html: Ο/Η %{name} προβίβασε το χρήστη %{target} - reject_appeal_html: Ο/Η %{name} απέρριψε την ένσταση της απόφασης των διαχειριστών από %{target} - reject_user_html: "%{name} απορρίφθηκε εγγραφή από %{target}" - remove_avatar_user_html: Ο/Η %{name} αφαίρεσε το αβατάρ του/της %{target} + reject_appeal_html: Ο/Η %{name} απέρριψε την ένσταση της απόφασης των συντονιστών από %{target} + reject_user_html: ο/η %{name} απέρριψε την εγγραφή από %{target} + remove_avatar_user_html: ο/η %{name} αφαίρεσε το άβαταρ του/της %{target} reopen_report_html: Ο/Η %{name} ξανάνοιξε την αναφορά %{target} resend_user_html: Ο/Η %{name} έστειλε ξανά e-mail επιβεβαίωσης για τον/την %{target} reset_password_user_html: Ο/Η %{name} επανέφερε το συνθηματικό του χρήστη %{target} @@ -277,11 +277,11 @@ el: silence_account_html: Ο/Η %{name} περιόρισε τον λογαριασμό του/της %{target} suspend_account_html: Ο/Η %{name} ανέστειλε τον λογαριασμό του/της %{target} unassigned_report_html: Ο/Η %{name} αποδέσμευσε την αναφορά %{target} - unblock_email_account_html: "%{name} ξεμπλόκαρε τη διεύθυνση ηλεκτρονικού ταχυδρομείου του %{target}" - unsensitive_account_html: Ο/Η %{name} επισήμανε τα πολυμέσα του/της %{target} ως ευαίσθητα - unsilence_account_html: Ο/Η %{name} αφαίρεσε το όριο του λογαριασμού του/της %{target} + unblock_email_account_html: "%{name} έκανε άρση αποκλεισμού στη διεύθυνση email του %{target}" + unsensitive_account_html: Ο/Η %{name} επισήμανε τα πολυμέσα του/της %{target} ως μη ευαίσθητα + unsilence_account_html: Ο/Η %{name} αφαίρεσε το περιορισμό του λογαριασμού του/της %{target} unsuspend_account_html: Ο/Η %{name} επανέφερε τον λογαριασμό του/της %{target} - update_announcement_html: Ο/Η %{name} ενημέρωση την ανακοίνωση %{target} + update_announcement_html: Ο/Η %{name} ενημέρωσε την ανακοίνωση %{target} update_custom_emoji_html: Ο/Η %{name} ενημέρωσε το emoji %{target} update_domain_block_html: Ο/Η %{name} ενημέρωσε τον αποκλεισμό τομέα για %{target} update_ip_block_html: Ο/Η %{name} άλλαξε τον κανόνα για την IP %{target} @@ -310,12 +310,12 @@ el: unpublished_msg: Επιτυχής ακύρωση δημοσίευσης ανακοίνωσης! updated_msg: Επιτυχής ενημέρωση ανακοίνωσης! custom_emojis: - assign_category: Κατηγορία + assign_category: Ανάθεση κατηγορίας by_domain: Τομέας copied_msg: Επιτυχής δημιουργία τοπικού αντίγραφου του emoji copy: Αντιγραφή copy_failed_msg: Αδυναμία δημιουργίας τοπικού αντίγραφου αυτού του emoji - create_new_category: Νέα κατηγορία + create_new_category: Δημιούργησε νέα κατηγορία created_msg: Επιτυχής δημιουργία του emoji! delete: Διαγραφή destroyed_msg: Επιτυχής καταστροφή του emojo! @@ -327,7 +327,7 @@ el: enabled: Ενεργοποιημένα enabled_msg: Επιτυχής ενεργοποίηση αυτού του emoji image_hint: PNG ή GIF έως %{size} - list: Εμφάνιση + list: Παράθεση listed: Αναφερθέντα new: title: Προσθήκη νέου προσαρμοσμένου emoji @@ -338,17 +338,20 @@ el: shortcode_hint: Τουλάχιστον 2 χαρακτήρες, μόνο αλφαριθμητικοί και κάτω παύλες title: Προσαρμοσμένα emoji uncategorized: Χωρίς κατηγορία - unlist: Απόκρυψη + unlist: Αφαίρεση από λίστα unlisted: Μη καταχωρημένα update_failed_msg: Αδυναμία ενημέρωσης του emoji updated_msg: Επιτυχής ενημέρωση του emoji! - upload: Ανέβασμα + upload: Μεταμόρφωση dashboard: active_users: ενεργοί χρήστες interactions: αλληλεπιδράσεις - media_storage: Αποθηκευτικός Χώρος + media_storage: Χώρος πολυμέσων new_users: νέοι χρήστες - opened_reports: αναφορές που ανοίχτηκαν + opened_reports: ανοιγμένες αναφορές + pending_appeals_html: + one: "%{count} έφεση σε εκκρεμότητα" + other: "%{count} εφέσεις σε εκκρεμότητα" pending_reports_html: one: "%{count} εκκρεμής αναφορά" other: "%{count} εκκρεμείς αναφορές" @@ -372,88 +375,155 @@ el: title: Εφέσεις domain_allows: add_new: Έγκριση τομέα - created_msg: Ο τομέας εγκρίθηκε με επιτυχία - destroyed_msg: Ο τομέας δεν είναι πια εγκεκριμένος + created_msg: Ο τομέας εγκρίθηκε με επιτυχία για συναλλαγές + destroyed_msg: Ο τομέας δεν είναι πια εγκεκριμένος για συναλλαγές export: Εξαγωγή import: Εισαγωγή - undo: Αφαίρεση έγκρισης + undo: Αφαίρεση συναλλαγής με τον τομέα domain_blocks: - add_new: Προσθήκη νέου + add_new: Προσθήκη νέου αποκλεισμού τομέα created_msg: Ο αποκλεισμός τομέα είναι υπό επεξεργασία - destroyed_msg: Ο αποκλεισμός τομέα άρθηκε + destroyed_msg: Ο αποκλεισμός τομέα αναιρέθηκε domain: Τομέας - edit: Επεξεργασία αποκλεισμένου τομέα + edit: Επεξεργασία αποκλεισμού τομέα existing_domain_block: Έχετε ήδη επιβάλει αυστηρότερα όρια στο %{name}. existing_domain_block_html: Έχεις ήδη επιβάλλει αυστηρότερους περιορισμούς στο %{name}, πρώτα θα πρέπει να τους αναιρέσεις. export: Εξαγωγή import: Εισαγωγή new: create: Δημιουργία αποκλεισμού - hint: Ο αποκλεισμός τομέα δεν θα αποτρέψει νέες καταχωρίσεις λογαριασμών στην βάση δεδομένων, αλλά θα εφαρμόσει αναδρομικά και αυτόματα συγκεκριμένες πολιτικές μεσολάβησης σε αυτούς τους λογαριασμούς. + hint: Ο αποκλεισμός τομέα δεν θα αποτρέψει νέες καταχωρίσεις λογαριασμών στην βάση δεδομένων, αλλά θα εφαρμόσει αναδρομικά και αυτόματα συγκεκριμένες πολιτικές συντονισμού σε αυτούς τους λογαριασμούς. severity: - desc_html: Ο περιορισμός θα κάνει αόρατες τις δημοσιεύσεις ενός λογαριασμού σε όσους δεν τον ακολουθούν. Η αναστολή θα αφαιρέσει όλο το περιεχόμενο, τα πολυμέσα και τα στοιχεία προφίλ ενός λογαριασμού. Χρησιμοποίησε το κανένα αν θέλεις απλά να απορρίψεις τα αρχεία πολυμέσων. + desc_html: Ο περιορισμός θα κάνει αόρατες τις ανάρτησεις ενός λογαριασμού σε όσους δεν τον ακολουθούν. Η αναστολή θα αφαιρέσει όλο το περιεχόμενο, τα πολυμέσα και τα στοιχεία προφίλ ενός λογαριασμού. Χρησιμοποίησε το κανένα αν θέλεις απλά να απορρίψεις τα αρχεία πολυμέσων. noop: Κανένα silence: Περιορισμός suspend: Αναστολή title: Αποκλεισμός νέου τομέα no_domain_block_selected: Δεν άλλαξαν οι αποκλεισμοί τομέα καθώς δεν επιλέχθηκε κανένας not_permitted: Δεν επιτρπέπεται να εκτελέσετε αυτήν την ενέργεια + obfuscate: Θόλωμα ονόματος τομέα + obfuscate_hint: Μερικό θόλωμα του ονόματος τομέα στη λίστα, εάν η ανακοίνωση της λίστας των περιορισμών τομέα είναι ενεργή private_comment: Ιδιωτικό σχόλιο - private_comment_hint: Σχόλιο για τον περιορισμό αυτού του τομέα για εσωτερική χρήση από τους διαχειριστές. + private_comment_hint: Σχόλιο για τον περιορισμό αυτού του τομέα για εσωτερική χρήση από τους συντονιστές. public_comment: Δημόσιο σχόλιο - public_comment_hint: Σχόλιο σχετικά με τον περιορισμό αυτού του τομέα προς το κοινό, αν η λειτουργία δημοσιοποίησης των περιορισμένων τομέων είναι ενεργοποιημένη. - reject_media: Απόρριψη πολυμέσων + public_comment_hint: Σχόλιο σχετικά με τον περιορισμό αυτού του τομέα προς το κοινό, αν η λειτουργία διαφήμισης των περιορισμένων τομέων είναι ενεργοποιημένη. + reject_media: Απόρριψη αρχείων πολυμέσων reject_media_hint: Αφαιρεί τα τοπικά αποθηκευμένα αρχεία πολυμέσων και αποτρέπει τη λήψη άλλων στο μέλλον. Δεν έχει σημασία για τις αναστολές - reject_reports: Απόρριψη καταγγελιών - reject_reports_hint: Αγνόηση όσων καταγγελιών προέρχονται από αυτό τον τομέα. Δεν σχετίζεται με τις παύσεις - undo: Αναίρεση + reject_reports: Απόρριψη αναφορών + reject_reports_hint: Αγνόησε όσων αναφορών που προέρχονται από αυτό τον τομέα. Δεν σχετίζεται με τις παύσεις + undo: Αναίρεση αποκλεισμού τομέα view: Εμφάνιση αποκλεισμού τομέα email_domain_blocks: add_new: Πρόσθεση νέου attempts_over_week: one: "%{count} προσπάθεια την τελευταία εβδομάδα" other: "%{count} προσπάθειες εγγραφής την τελευταία εβδομάδα" - created_msg: Επιτυχής πρόσθεση email τομέα σε μαύρη λίστα + created_msg: Επιτυχής αποκλεισμού email τομέα delete: Διαγραφή dns: types: mx: Εγγραφή MX domain: Τομέας new: - create: Πρόσθεση τομέα - title: Νέα εγγραφή email στη μαύρη λίστα + create: Προσθήκη τομέα + resolve: Επίλυση τομέα + title: Αποκλεισμός νέου τομέα email + no_email_domain_block_selected: Δεν άλλαξαν οι αποκλεισμοί τομέα καθώς δεν επιλέχθηκε κανένας not_permitted: Δεν επιτρέπεται - title: Μαύρη λίστα email + resolved_dns_records_hint_html: Το όνομα τομέα επιλύεται στους ακόλουθους τομείς MX, οι οποίοι είναι τελικά υπεύθυνοι για την αποδοχή των e-mail. Αποκλείοντας έναν τομέα MX θα μπλοκάρει τις εγγραφές από οποιαδήποτε διεύθυνση email που χρησιμοποιεί τον ίδιο τομέα MX, ακόμη και αν το ορατό όνομα τομέα είναι διαφορετικό. Προσέξτε να μην αποκλείσετε τους μεγάλους παρόχους ηλεκτρονικού ταχυδρομείου. + resolved_through_html: Επιλύθηκε μέσω %{domain} + title: Αποκλεισμένοι τομείς email export_domain_allows: + new: + title: Εισαγωγή επιτρεπόμενων τομέων no_file: Δεν επιλέχθηκε αρχείο export_domain_blocks: + import: + description_html: Πρόκειται να εισαγάγετε μια λίστα με αποκλεισμένους τομείς. Παρακαλώ ελέγξτε τη λίστα πολύ προσεκτικά, ειδικά αν δεν έχετε συντάξει τη λίστα μόνοι σας. + existing_relationships_warning: Υπάρχουσες σχέσεις ακολούθησης + private_comment_description_html: 'Για να σας βοηθήσουμε να παρακολουθείτε από πού προέρχονται οι εισαγόμενοι αποκλεισμοί, οι εισαγόμενοι αποκλεισμοί θα δημιουργηθούν με το ακόλουθο ιδιωτικό σχόλιο: %{comment}' + private_comment_template: Εισήχθη από %{source} στις %{date} + title: Εισαγωγή αποκλεισμένων τομέων + invalid_domain_block: 'Ένας ή περισσότεροι αποκλεισμοί τομέα παραλείφθηκαν λόγω των ακόλουθων σφαλμάτων: %{error}' + new: + title: Εισαγωγή αποκλεισμένων τομέων no_file: Δεν επιλέχθηκε αρχείο follow_recommendations: + description_html: "Ακολουθώντας συστάσεις βοηθάει τους νέους χρήστες να βρουν γρήγορα ενδιαφέρον περιεχόμενο. Όταν ένας χρήστης δεν έχει αλληλεπιδράσει με άλλους αρκετά για να διαμορφώσει εξατομικευμένες συστάσεις, συνιστώνται αυτοί οι λογαριασμοί. Υπολογίζονται εκ νέου σε καθημερινή βάση από ένα σύνολο λογαριασμών με τις υψηλότερες πρόσφατες αλληλεπιδράσεις και μεγαλύτερο αριθμό τοπικών ακόλουθων για μια δεδομένη γλώσσα." language: Για τη γλώσσα status: Κατάσταση + suppress: Καταστολή της πρότασης ακολούθησης + suppressed: Κατασταλμένο + title: Ακολούθησε τις προτάσεις + unsuppress: Επαναφορά των συστάσεων ακολούθησης instances: + availability: + description_html: + one: Εάν η παράδοση στον τομέα αποτύχει για %{count} ημέρα, δεν θα γίνουν περαιτέρω προσπάθειες παράδοσης εκτός αν μια παράδοση από τον τομέα ληφθεί. + other: Εάν η παράδοση στον τομέα αποτύχει για %{count} διαφορετικές ημέρες, δεν θα γίνουν περαιτέρω προσπάθειες παράδοσης εκτός αν μια παράδοση από τον τομέα ληφθεί. + failure_threshold_reached: Το όριο αποτυχίας επετεύχθη στις %{date}. + failures_recorded: + one: Αποτυχία προσπάθειας την %{count} ημέρα. + other: Αποτυχημένες προσπάθειες σε %{count} διαφορετικές ημέρες. + no_failures_recorded: Καμία καταγεγραμμένη αποτυχία. + title: Διαθεσιμότητα + warning: Η τελευταία προσπάθεια σύνδεσης σε αυτόν τον διακομιστή απέτυχε + back_to_all: Όλα + back_to_limited: Περιορισμένα + back_to_warning: Προειδοποίηση by_domain: Τομέας - confirm_purge: Είστε βέβαιοι ότι θέλετε να διαγράψετε μόνιμα τα δεδομένα από αυτόν τον τομέα; + confirm_purge: Είσαι βέβαιος ότι θες να διαγράψεις μόνιμα τα δεδομένα από αυτόν τον τομέα; + content_policies: + comment: Εσωτερική σημείωση + description_html: Μπορείς να ορίσεις τις πολιτικές περιεχομένου που θα εφαρμόζονται σε όλους τους λογαριασμούς από αυτόν τον τομέα και οποιονδήποτε από τους υποτομείς του. + limited_federation_mode_description_html: Μπορείτε να επιλέξετε αν θα επιτρέψετε τις συναλλαγές με αυτόν τον τομέα. + policies: + reject_media: Απόρριψη πολυμέσων + reject_reports: Απόρριψη αναφορών + silence: Περιορισμός + suspend: Αναστολή + policy: Πολιτική + reason: Δημόσιος λόγος + title: Πολιτικές περιεχομένου dashboard: + instance_accounts_dimension: Λογαριασμοί με τους περισσότερους ακόλουθους + instance_accounts_measure: αποθηκευμένοι λογαριασμοί + instance_followers_measure: οι ακόλουθοί μας εκεί + instance_follows_measure: οι ακόλουθοί τους εδώ instance_languages_dimension: Κορυφαίες γλώσσες + instance_media_attachments_measure: αποθηκευμένα συνημμένα πολυμέσων + instance_reports_measure: αναφορές γι' αυτές + instance_statuses_measure: αποθηκευμένες αναρτήσεις delivery: - failing: Αποτυγχάνει + all: Όλες + clear: Εκκαθάριση σφαλμάτων παράδοσης + failing: Αποτυχημένες + restart: Επανεκκίνηση παράδοσης + stop: Διακοπή παράδοσης + unavailable: Μη διαθέσιμο delivery_available: Διαθέσιμη παράδοση + delivery_error_days: Ημέρες σφάλματος παράδοσης + delivery_error_hint: Εάν η παράδοση δεν είναι δυνατή για %{count} ημέρες, θα επισημανθεί αυτόματα ως μη παραδόσιμη. destroyed_msg: Τα δεδομένα από το %{domain} βρίσκονται σε αναμονή για επικείμενη διαγραφή. empty: Δεν βρέθηκαν τομείς. + known_accounts: + one: "%{count} γνωστός λογαριασμός" + other: "%{count} γνωστοί λογαριασμοί" moderation: all: Όλα limited: Περιορισμένα - title: Διαμεσολάβηση + title: Συντονισμός private_comment: Ιδιωτικό σχόλιο public_comment: Δημόσιο σχόλιο purge: Εκκαθάριση - title: Γνωστοί κόμβοι - total_blocked_by_us: Μπλοκάρονται από εμάς + purge_description_html: Εάν πιστεύεις ότι αυτός ο τομέας είναι πλήρως εκτός σύνδεσης, μπορείς να διαγράψεις όλες τις καταχωρήσεις λογαριασμών και τα σχετικά δεδομένα από αυτόν τον τομέα από τον αποθηκευτικό σου χώρο. Αυτό μπορεί να διαρκέσει λίγη ώρα. + title: Συναλλαγές + total_blocked_by_us: Αποκλεισμένοι από εμάς total_followed_by_them: Ακολουθούνται από εκείνους total_followed_by_us: Ακολουθούνται από εμάς - total_reported: Καταγγελίες προς εκείνους + total_reported: Αναφορές προς εκείνους total_storage: Συνημμένα πολυμέσα + totals_time_period_hint_html: Τα σύνολα που εμφανίζονται παρακάτω περιλαμβάνουν στοιχεία από την αρχή. invites: deactivate_all: Απενεργοποίηση όλων filter: @@ -475,28 +545,29 @@ el: '94670856': 3 χρόνια new: title: Δημιουργία νέου κανόνα IP + no_ip_block_selected: Δεν άλλαξαν οι κανόνες IP καθώς κανένας δεν επιλέχθηκε title: Κανόνες IP relationships: - title: Σχέσεις %{acct} + title: Σχέσεις του %{acct} relays: - add_new: Πρόσθεσε νέο ανταποκριτή (relay) + add_new: Προσθήκη νέου ανταποκριτή delete: Διαγραφή - description_html: Ο ομοσπονδιακός ανταποκριτής είναι ένας ενδιάμεσος εξυπηρετητής (server) που ανταλλάσσει μεγάλους όγκους δημόσιων τουτ μεταξύ εξυπηρετητών που εγγράφονται και δημοσιεύουν σε αυτόν. Βοηθάει μικρούς και μεσαίους εξυπηρετητές να ανακαλύψουν περιεχόμενο στο fediverse, που υπό άλλες συνθήκες θα χρειαζόταν κάποιους τοπικούς χρήστες που να ακολουθούν χρήστες σε απομακρυσμένους εξυπηρετητές. + description_html: Ο ανταποκριτής συναλλαγών είναι ένας ενδιάμεσος διακομιστής που ανταλλάσσει μεγάλους όγκους δημόσιων αναρτήσεων μεταξύ διακομιστών που εγγράφονται και δημοσιεύουν σε αυτόν. Βοηθάει μικρούς και μεσαίους να ανακαλύψουν περιεχόμενο στο fediverse, που υπό άλλες συνθήκες θα χρειαζόταν κάποιους τοπικούς χρήστες που να ακολουθούν χρήστες σε απομακρυσμένους διακομιστές. disable: Απενεργοποίηση disabled: Απενεργοποιημένο enable: Ενεργοποίηση - enable_hint: Μόλις ενεργοποιηθεί, ο εξυπηρετητής (server) σου θα εγγραφεί σε όλα τα δημόσια τουτ αυτού του ανταποκριτή (relay) και θα αρχίσει να προωθεί τα δικά του δημόσια τουτ σε αυτόν. + enable_hint: Μόλις ενεργοποιηθεί, ο διακομιστής σου θα εγγραφεί σε όλα τις δημόσιες αναρτήσεις αυτού του ανταποκριτή και θα αρχίσει να προωθεί τις δικές του δημόσιες αναρτήσεις σε αυτόν. enabled: Ενεργοποιημένο inbox_url: URL ανταποκριτή pending: Περιμένοντας την έγκριση του ανταποκριτή save_and_enable: Αποθήκευση και ενεργοποίηση setup: Όρισε μια σύνδεση ανταπόκρισης - signatures_not_enabled: Οι ανταποκριτές δεν θα λειτουργούν σωστά όσο είναι ενεργοποιημένες οι επιλογές ασφαλούς λειτουργίας ή επιτρεπόμενων συνδέσεων + signatures_not_enabled: Οι ανταποκριτές δεν θα λειτουργούν σωστά όσο είναι ενεργοποιημένες οι επιλογές ασφαλούς λειτουργίας ή περιορισμένων συναλλαγών status: Κατάσταση title: Ανταποκριτές report_notes: - created_msg: Επιτυχής δημιουργία σημείωσης καταγγελίας! - destroyed_msg: Επιτυχής διαγραφή σημείωσης καταγγελίας! + created_msg: Επιτυχής δημιουργία σημείωσης αναφοράς! + destroyed_msg: Επιτυχής διαγραφή σημείωσης αναφοράς! reports: account: notes: @@ -505,45 +576,78 @@ el: action_log: Αρχείο ελέγχου action_taken_by: Ενέργεια από τον/την actions: + delete_description_html: Οι δημοσιεύσεις με αναφορά θα διαγραφούν και θα καταγραφεί μια ποινή που θα σας βοηθήσει να αποφασίσετε σε μελλοντικές παραβάσεις από τον ίδιο λογαριασμό. + mark_as_sensitive_description_html: Τα πολυμέσα με αναφορά θα επισημανθούν ως ευαίσθητα και θα καταγραφεί μια ποινή που θα σας βοηθήσει να αποφασίσετε σε μελλοντικές παραβάσεις από τον ίδιο λογαριασμό. other_description_html: Δείτε περισσότερες επιλογές για τον έλεγχο της συμπεριφοράς του λογαριασμού και προσαρμόσετε την επικοινωνία στον αναφερόμενο λογαριασμό. - add_to_report: Προσθέστε περισσότερα στην αναφορά + resolve_description_html: Δεν θα ληφθούν μέτρα κατά του αναφερόμενου λογαριασμού, δεν θα καταγραφεί κανένα παράπτωμα, και η αναφορά θα κλείσει. + silence_description_html: Ο λογαριασμός θα είναι ορατός μόνο σε εκείνους που ήδη τον ακολουθούν ή τον αναζητούν χειροκίνητα, περιορίζοντας κατά πολύ την εμβέλειά του. Η ενέργεια αυτή είναι αναστρέψιμη. Κλείνει όλες τις αναφορές εναντίον αυτού του λογαριασμού. + suspend_description_html: Ο λογαριασμός και όλο το περιεχόμενό του θα είναι απρόσιτα και τελικά θα διαγραφούν και η αλληλεπίδραση με αυτόν θα είναι αδύνατη. Αναστρέψιμη εντός 30 ημερών. Κλείνει όλες τις αναφορές εναντίον αυτού του λογαριασμού. + actions_description_html: Αποφάσισε ποια μέτρα θα ληφθούν για την επίλυση αυτής της αναφοράς. Εάν προβείς σε τιμωρητική ενέργεια κατά του αναφερόμενου λογαριασμού, θα αποσταλεί ειδοποίηση μέσω ηλεκτρονικού ταχυδρομείου σε αυτόν, εκτός όταν η κατηγορία Σπαμ είναι επιλεγμένη. + actions_description_remote_html: Αποφάσισε ποια μέτρα θα ληφθούν για την επίλυση αυτής της αναφοράς. Αυτό θα επηρεάσει μόνο το πώς ο δικός σας διακομιστής επικοινωνεί με αυτόν τον απομακρυσμένο λογαριασμό και χειρίζεται το περιεχόμενό του. + add_to_report: Πρόσθεσε περισσότερα στην αναφορά are_you_sure: Σίγουρα; assign_to_self: Ανάθεση σε μένα assigned: Αρμόδιος συντονιστής - by_target_domain: Κόμβος του λογαριασμού υπό καταγγελία + by_target_domain: Τομέας του αναφερόμενου λογαριασμού cancel: Άκυρο category: Κατηγορία + category_description_html: Ο λόγος για τον οποίο αναφέρθηκε αυτός ο λογαριασμός και/ή το περιεχόμενο θα εσωκλείεται σε επικοινωνία με τον αναφερόμενο λογαριασμό comment: none: Κανένα + comment_description_html: 'Για να δώσει περισσότερες πληροφορίες, ο/η %{name} έγραψε:' confirm: Επιβεβαίωση - created_at: Καταγγέλθηκε - delete_and_resolve: Διαγραφή δημοσιεύσεων + confirm_action: Επιβεβαίωση ενέργειας συντονισμού ενάντια στον λογαριασμό @%{acct} + created_at: Αναφέρθηκε + delete_and_resolve: Διαγραφή αναρτήσεων forwarded: Προωθημένα forwarded_to: Προώθημένα προς %{domain} - mark_as_resolved: Σημειωμένο ως επιλυμένο + mark_as_resolved: Σημείωση ως επιλυμένο mark_as_sensitive: Σήμανση ως ευαίσθητο - mark_as_unresolved: Σημειωμένο ως ανεπίλυτο + mark_as_unresolved: Σήμανση ως ανεπίλυτο no_one_assigned: Κανένας notes: create: Πρόσθεσε σημείωση - create_and_resolve: Επίλυσε με σημείωση - create_and_unresolve: Ξανάνοιξε με σημείωση + create_and_resolve: Επίλυσε μέ σημείωση + create_and_unresolve: Ξανάνοιξε μέ σημείωση delete: Διαγραφή - placeholder: Περιέγραψε τις ενέργειες που έγιναν, ή οποιαδήποτε άλλη ενημέρωση... + placeholder: Περιέγραψε τις ενέργειες που έγιναν, ή οποιαδήποτε άλλη σχετική ενημέρωση... title: Σημειώσεις - quick_actions_description_html: 'Κάντε μια γρήγορη ενέργεια ή μετακινηθείτε προς τα κάτω για να δείτε το αναφερόμενο περιεχόμενο:' + notes_description_html: Δες και άφησε σημειώσεις σε άλλους συντονιστές και τον μελλοντικό εαυτό σου + processed_msg: 'Η αναφορά #%{id} διεκπεραιώθηκε με επιτυχία' + quick_actions_description_html: 'Κάνε μια γρήγορη ενέργεια ή μετακινήσου προς τα κάτω για να δεις το αναφερόμενο περιεχόμενο:' remote_user_placeholder: ο απομακρυσμένος χρήστης από %{instance} - reopen: Ξανάνοιξε την καταγγελία - report: 'Καταγγελία #%{id}' + reopen: Ξανάνοιξε την αναφορά + report: 'Αναφορά #%{id}' reported_account: Αναφερόμενος λογαριασμός reported_by: Αναφέρθηκε από resolved: Επιλύθηκε - resolved_msg: Η καταγγελία επιλύθηκε επιτυχώς! + resolved_msg: Η αναφορά επιλύθηκε επιτυχώς! skip_to_actions: Μετάβαση στις ενέργειες status: Κατάσταση statuses: Αναφερόμενο περιεχόμενο + statuses_description_html: Το προσβλητικό περιεχόμενο θα εσωκλείεται στην επικοινωνία με τον αναφερόμενο λογαριασμό + summary: + action_preambles: + delete_html: 'Πρόκειται να αφαιρέσεις μερικές από τις αναρτήσεις του @%{acct}. Αυτό θα:' + mark_as_sensitive_html: 'Πρόκειται να επισημάνεις μερικές από τις αναρτήσεις του @%{acct} ως ευαίσθητες. Αυτό θα:' + silence_html: 'Πρόκειται να περιορίσεις τον λογαριασμό του @%{acct}. Αυτό θα:' + suspend_html: 'Πρόκειται να αναστείλεις τον λογαριασμό του @%{acct}. Αυτό θα:' + actions: + delete_html: Αφαίρεσε τις προσβλητικές αναρτήσεις + mark_as_sensitive_html: Σημειώστε τα πολυμέσα των προσβλητικών αναρτήσεων ως ευαίσθητα + silence_html: Περιορίσε σοβαρά την εμβέλεια του @%{acct} κάνοντας το προφίλ και το περιεχόμενό του ορατά μόνο σε άτομα που ήδη τον ακολουθούν ή που αναζητούν χειροκίνητα το προφίλ του + suspend_html: Αναστολή του @%{acct}, καθιστώντας το προφίλ και το περιεχόμενό του μη προσβάσιμα και αδύνατο να αλληλεπιδράσει κανείς με αυτά + close_report: 'Επισήμανση αναφοράς #%{id} ως επιλυμένη' + close_reports_html: Επισήμανε όλες τις αναφορές ενάντια στον λογαριασμό @%{acct} ως επιλυμένες + delete_data_html: Διάγραψε το προφίλ και το περιεχόμενο του @%{acct} σε 30 ημέρες από τώρα εκτός αν, εν τω μεταξύ, ανακληθεί η αναστολή + preview_preamble_html: 'Ο @%{acct} θα λάβει μια προειδοποίηση με τα ακόλουθο περιεχόμενο:' + record_strike_html: Κατάγραψε ένα παράπτωμα εναντίον του @%{acct} για να σε βοηθήσει να αποφασίσει; σε μελλοντικές παραβιάσεις από αυτόν τον λογαριασμό + send_email_html: Στείλε στον @%{acct} ένα προειδοποιητικό e-mail + warning_placeholder: Προαιρετικές επιπλέον εξηγήσεις για αυτή την ενέργεια από την ομάδα συντονισμού. + target_origin: Προέλευση του αναφερόμενου λογαριασμού title: Αναφορές - unassign: Αποσύνδεση + unassign: Αναίρεση ανάθεσης + unknown_action_msg: 'Άγνωστη ενέργεια: %{action}' unresolved: Άλυτη updated_at: Ενημερωμένη view_profile: Προβολή προφίλ @@ -554,50 +658,100 @@ el: other: "%{count} χρήστες" categories: administration: Διαχείριση - devops: Devops + devops: DevOps invites: Προσκλήσεις + moderation: Συντονισμός + special: Ειδικός delete: Διαγραφή + description_html: Με τους ρόλους χρηστών, μπορείς να προσαρμόσεις σε ποιες λειτουργίες και περιοχές του Mastodon, οι χρήστες σας μπορούν να έχουν πρόσβαση. edit: Επεξεργασία ρόλου '%{name}' everyone: Προεπιλεγμένα δικαιώματα + everyone_full_description_html: Αυτός είναι ο βασικός ρόλος που επηρεάζει όλους τους χρήστες, ακόμη και εκείνους που δεν έχουν κάποιον ρόλο. Όλοι οι άλλοι ρόλοι κληρονομούν δικαιώματα από αυτόν. permissions_count: one: "%{count} δικαίωμα" other: "%{count} δικαιώματα" privileges: administrator: Διαχειριστής - invite_users: Πρόσκληση χρηστών - manage_announcements: Διαχείριση ανακοινώσεων + administrator_description: Οι χρήστες με αυτό το δικαίωμα θα παρακάμπτουν κάθε δικαίωμα + delete_user_data: Διαγραφή Δεδομένων Χρήστη + delete_user_data_description: Επιτρέπει στους χρήστες να διαγράφουν τα δεδομένα άλλων χρηστών χωρίς καθυστέρηση + invite_users: Πρόσκληση Χρηστών + invite_users_description: Επιτρέπει στους χρήστες να προσκαλούν νέα άτομα στον διακομιστή + manage_announcements: Διαχείριση Ανακοινώσεων + manage_announcements_description: Επιτρέπει στους χρήστες να διαχειρίζονται ανακοινώσεις στον διακομιστή + manage_appeals: Διαχείριση Εφέσεων + manage_appeals_description: Επιτρέπει στους χρήστες να εξετάζουν τις εφέσεις κατά των ενεργειών της ομάδας συντονισμού + manage_blocks: Διαχείριση Αποκλεισμών + manage_blocks_description: Επιτρέπει στους χρήστες να αποκλείουν παρόχους e-mail και διευθύνσεις IP + manage_custom_emojis: Διαχείριση Προσαρμοσμένων Emojis + manage_custom_emojis_description: Επιτρέπει στους χρήστες να διαχειρίζονται προσαρμοσμένα emojis στον διακομιστή + manage_federation: Διαχείριση Συναλλαγών + manage_federation_description: Επιτρέπει στους χρήστες να αποκλείουν ή να επιτρέπουν τις συναλλαγές με άλλους τομείς και να ελέγχουν την παράδοση + manage_invites: Διαχείριση Προσκλήσεων + manage_invites_description: Επιτρέπει στους χρήστες να περιηγούνται και να απενεργοποιούν τους συνδέσμους πρόσκλησης + manage_reports: Διαχείριση Αναφορών + manage_reports_description: Επιτρέπει στους χρήστες να εξετάζουν τις αναφορές και να εκτελούν ενέργειες συντονισμού εναντίον τους manage_roles: Διαχείριση ρόλων + manage_roles_description: Επιτρέπει στους χρήστες να διαχειρίζονται και να αναθέτουν ρόλους κατώτερων των δικών τους + manage_rules: Διαχείριση Κανόνων + manage_rules_description: Επιτρέπει στους χρήστες να αλλάξουν τους κανόνες του διακομιστή manage_settings: Διαχείριση ρυθμίσεων + manage_settings_description: Επιτρέπει στους χρήστες να αλλάξουν τις ρυθμίσεις του ιστοτόπου + manage_taxonomies: Διαχείριση Ταξινομιών + manage_taxonomies_description: Επιτρέπει στους χρήστες να εξετάζουν το δημοφιλές περιεχόμενο και να ενημερώνουν τις ρυθμίσεις ετικέτας + manage_user_access: Διαχείριση Πρόσβασης Χρήστη + manage_user_access_description: Επιτρέπει στους χρήστες να απενεργοποιούν την ταυτοποίηση δύο παραγόντων άλλων χρηστών, να αλλάξουν τη διεύθυνση ηλεκτρονικού ταχυδρομείου τους και να επαναφέρουν τον κωδικό πρόσβασής τους manage_users: Διαχείριση χρηστών + manage_users_description: Επιτρέπει στους χρήστες να βλέπουν τις λεπτομέρειες άλλων χρηστών και να εκτελούν ενέργειες συντονισμού εναντίον τους + manage_webhooks: Διαχείριση Webhooks + manage_webhooks_description: Επιτρέπει στους χρήστες να ορίζουν webhooks για συμβάντα διαχείρισης + view_audit_log: Προβολή Καταλόγου Καταγραφών + view_audit_log_description: Επιτρέπει στους χρήστες να βλέπουν ένα ιστορικό ενεργειών διαχείρισης στον διακομιστή + view_dashboard: Προβολή Ταμπλό + view_dashboard_description: Επιτρέπει στους χρήστες να έχουν πρόσβαση στον ταμπλό πληροφοριών και σε διάφορες μετρήσεις view_devops: DevOps + view_devops_description: Επιτρέπει στους χρήστες να έχουν πρόσβαση στα ταμπλό πληροφοριών Sidekiq και pgHero title: Ρόλοι rules: add_new: Προσθήκη κανόνα delete: Διαγραφή - description_html: Ενώ οι περισσότεροι ισχυρίζονται ότι έχουν διαβάσει και συμφωνούν με τους όρους της υπηρεσίας, συνήθως οι άνθρωποι δεν διαβάζουν μέχρι μετά την εμφάνιση ενός προβλήματος. Κάντε ευκολότερο να δουν τους κανόνες του διακομιστή σας με μια ματιά παρέχοντας τους σε μια λίστα σημείων. Προσπαθήστε να κρατήσετε μεμονωμένους κανόνες σύντομους και απλούς, αλλά προσπαθήστε να μην τους χωρίσετε σε πολλά ξεχωριστά αντικείμενα. + description_html: Ενώ οι περισσότεροι ισχυρίζονται ότι έχουν διαβάσει και συμφωνούν με τους όρους της υπηρεσίας, συνήθως οι άνθρωποι δεν διαβάζουν μέχρι μετά την εμφάνιση ενός προβλήματος. Κάνε ευκολότερο να δουν τους κανόνες του διακομιστή σας με μια ματιά παρέχοντας τους σε μια λίστα. Προσπάθησε να κρατήσεις τους μεμονωμένους κανόνες σύντομους και απλούς, αλλά προσπάθησε να μην τους χωρίσεις σε πολλά ξεχωριστά αντικείμενα. edit: Επεξεργασία κανόνα empty: Δεν έχουν οριστεί ακόμα κανόνες διακομιστή. title: Κανόνες διακομιστή settings: about: manage_rules: Διαχείριση κανόνων διακομιστή + preamble: Παρέχετε αναλυτικές πληροφορίες σχετικά με τη λειτουργία του διακομιστή, τον συντονισμό και τη χρηματοδότηση. + rules_hint: Υπάρχει μια ειδική περιοχή για τους κανόνες που αναμένεται να τηρούν οι χρήστες σας. title: Σχετικά με appearance: + preamble: Προσάρμοσε την ιστοσελίδα του Mastodon. title: Εμφάνιση + branding: + preamble: Η ταυτότητα του διακομιστή σου, τον διαφοροποιεί από άλλους διακομιστές του δικτύου. Αυτές οι πληροφορίες μπορεί να εμφανίζονται σε διάφορα περιβάλλοντα, όπως η ιστοσελίδα του Mastodon, εγγενείς εφαρμογές, σε προεπισκοπήσεις συνδέσμου σε άλλους ιστότοπους και εντός εφαρμογών μηνυμάτων και ούτω καθεξής. Γι' αυτό, είναι καλύτερο να διατηρούνται αυτές οι πληροφορίες σαφείς, σύντομες και συνοπτικές. + title: Ταυτότητα content_retention: + preamble: Έλεγξε πώς αποθηκεύεται το περιεχόμενο που δημιουργείται από τους χρήστες στο Mastodon. title: Διατήρηση περιεχομένου default_noindex: - desc_html: Επηρεάζει όσους χρήστες δεν έχουν αλλάξει αυτή τη ρύθμιση οι ίδιοι + desc_html: Επηρεάζει όσους χρήστες δεν έχουν αλλάξει οι ίδιοι αυτή τη ρύθμιση title: Εξαίρεση χρηστών από τις μηχανές αναζήτησης discovery: + follow_recommendations: Ακολούθησε τις προτάσεις + preamble: Δημοσιεύοντας ενδιαφέρον περιεχόμενο είναι καθοριστικό για την ενσωμάτωση νέων χρηστών που μπορεί να μη γνωρίζουν κανέναν στο Mastodon. Έλεγξε πώς λειτουργούν διάφορες δυνατότητες ανακάλυψης στον διακομιστή σας. profile_directory: Κατάλογος προφίλ public_timelines: Δημόσιες ροές + publish_discovered_servers: Δημοσίευση διακομιστών που έχουν ανακαλυφθεί + publish_statistics: Δημοσίευση στατιστικών + title: Ανακάλυψη trends: Τάσεις domain_blocks: all: Για όλους disabled: Για κανέναν users: Προς συνδεδεμένους τοπικούς χρήστες registrations: + preamble: Έλεγξε ποιος μπορεί να δημιουργήσει ένα λογαριασμό στον διακομιστή σας. title: Εγγραφές registrations_mode: modes: @@ -612,6 +766,7 @@ el: account: Συντάκτης application: Εφαρμογή back_to_account: Επιστροφή στη σελίδα λογαριασμού + back_to_report: Πίσω στη σελίδα αναφοράς batch: remove_from_report: Αφαίρεση από την αναφορά report: Αναφορά @@ -624,68 +779,181 @@ el: title: Πολυμέσα metadata: Μεταδεδομένα no_status_selected: Καμία δημοσίευση δεν άλλαξε αφού καμία δεν ήταν επιλεγμένη - open: Άνοιγμα δημοσίευσης + open: Άνοιγμα ανάρτησης + original_status: Αρχική ανάρτηση reblogs: Αναδημοσιεύσεις status_changed: Η ανάρτηση άλλαξε title: Καταστάσεις λογαριασμού - trending: Δημοφιλή + trending: Τάσεις visibility: Ορατότητα with_media: Με πολυμέσα strikes: - appeal_rejected: Η αίτηση απορρίφθηκε + actions: + delete_statuses: Ο/Η %{name} διέγραψε τις αναρτήσεις του/της %{target} + disable: Ο/Η %{name} πάγωσε τον λογαριασμό του/της %{target} + mark_statuses_as_sensitive: Ο/Η %{name} επισήμανε τα πολυμέσα του/της %{target} ως ευαίσθητα + none: Ο/Η %{name} έστειλε προειδοποίηση προς τον/την %{target} + sensitive: Ο/Η %{name} επισήμανε τα πολυμέσα του λογαριασμού %{target} ως ευαίσθητα + silence: Ο/Η %{name} περιόρισε τον λογαριασμό %{target} + suspend: ο/η %{name} ανέστειλε τον λογαριασμό %{target} + appeal_approved: Έγινε έφεση + appeal_pending: Έφεση σε εκκρεμότητα + appeal_rejected: Η έφεση απορρίφθηκε system_checks: database_schema_check: - message_html: Υπάρχουν μετακινήσεις βάσης δεδομένων που εκκρεμούν. Παρακαλώ εκτελέστε τις για να βεβαιωθείτε ότι η εφαρμογή συμπεριφέρεται όπως αναμένεται + message_html: Υπάρχουν μετακινήσεις βάσεων δεδομένων που εκκρεμούν. Παρακαλώ εκτέλεσέ τες για να βεβαιωθείς ότι η εφαρμογή συμπεριφέρεται όπως αναμένεται + elasticsearch_running_check: + message_html: Δεν ήταν δυνατή η σύνδεση στο Elasticsearch. Παρακαλώ έλεγξε ότι εκτελείται ή απενεργοποίησε την αναζήτηση πλήρους κειμένου + elasticsearch_version_check: + message_html: 'Μη συμβατή έκδοση Elasticsearch: %{value}' + version_comparison: Εκτελείται η έκδοση Elasticsearch %{running_version} ενώ απαιτείται %{required_version} rules_check: action: Διαχείριση κανόνων διακομιστή - message_html: Δεν έχετε ορίσει κανέναν κανόνα διακομιστή. + message_html: Δεν έχεις ορίσει κανέναν κανόνα διακομιστή. + sidekiq_process_check: + message_html: Καμία διεργασία Sidekiq δεν εκτελείται για την ουρά %{value}. Παρακαλώ έλεγξε τη διαμόρφωση του Sidekiq + upload_check_privacy_error: + action: Δες εδώ για περισσότερες πληροφορίες + message_html: "Ο διακομιστής σας δεν έχει ρυθμιστεί σωστά. Το απόρρητο των χρηστών σας κινδυνεύει." + upload_check_privacy_error_object_storage: + action: Δες εδώ για περισσότερες πληροφορίες + message_html: "Ο χώρος αποθήκευσης αντικειμένων σας δεν έχει ρυθμιστεί σωστά. Το απόρρητο των χρηστών σας κινδυνεύει." tags: - review: Κατάσταση έγκρισης + review: Κατάσταση αξιολόγησης updated_msg: Οι ρυθμίσεις των ετικετών ενημερώθηκαν επιτυχώς title: Διαχείριση trends: - not_allowed_to_trend: Δεν επιτρέπεται η τάση + allow: Επιτρέπεται + approved: Εγκρίθηκε + disallow: Να μην επιτρέπεται + links: + allow: Να επιτρέπεται σύνδεσμος + allow_provider: Να επιτρέπεται ο εκδότης + description_html: Αυτοί οι σύνδεσμοι μοιράζονται αρκετά από λογαριασμούς των οποίων τις δημοσιεύσεις, βλέπει ο διακομιστής σας. Μπορεί να βοηθήσει τους χρήστες σας να μάθουν τί συμβαίνει στον κόσμο. Οι σύνδεσμοι δεν εμφανίζονται δημόσια μέχρι να εγκρίνετε τον εκδότη. Μπορείτε επίσης να επιτρέψετε ή να απορρίψετε μεμονωμένους συνδέσμους. + disallow: Να μην επιτρέπεται ο σύνδεσμος + disallow_provider: Να μην επιτρέπεται ο εκδότης + no_link_selected: Κανένας σύνδεσμος δεν άλλαξε αφού κανείς δεν επιλέχθηκε + publishers: + no_publisher_selected: Κανένας εκδότης δεν άλλαξε καθώς κανένας δεν επιλέχθηκε + shared_by_over_week: + one: Κοινοποιήθηκε από ένα άτομο την τελευταία εβδομάδα + other: Κοινοποιήθηκε από %{count} άτομα την τελευταία εβδομάδα + title: Δημοφιλείς σύνδεσμοι + usage_comparison: Κοινοποιήθηκε %{today} φορές σήμερα, σε σύγκριση με %{yesterday} χθες + not_allowed_to_trend: Δεν επιτρέπεται να γίνει δημοφιλές only_allowed: Μόνο επιτρεπόμενα + pending_review: Εκκρεμεί αξιολόγηση + preview_card_providers: + allowed: Σύνδεσμοι από αυτόν τον εκδότη μπορούν να γίνουν δημοφιλείς + description_html: Αυτοί είναι τομείς από τους οποίους οι σύνδεσμοι συχνά μοιράζονται στον διακομιστή σας. Σύνδεσμοι δεν γίνουν δημοφιλείς δημοσίως εκτός και αν ο τομέας του συνδέσμου εγκριθεί. Η έγκρισή σας (ή απόρριψη) περιλαμβάνει και τους υποτομείς. + rejected: Σύνδεσμοι από αυτόν τον εκδότη δε θα γίνουν δημοφιλείς + title: Εκδότες + rejected: Απορρίφθηκε + statuses: + allow: Να επιτρέπεται η ανάρτηση + allow_account: Να επιτρέπεται ο συγγραφέας + description_html: Αυτές είναι αναρτήσεις για τις οποίες ο διακομιστής σας γνωρίζει ότι κοινοποιούνται και αρέσουν πολύ αυτή τη περίοδο. Μπορεί να βοηθήσει νέους και χρήστες που επιστρέφουν, να βρουν περισσότερα άτομα να ακολουθήσουν. Καμία ανάρτηση δεν εμφανίζεται δημόσια μέχρι να εγκρίνετε το συντάκτη και ο συντάκτης να επιτρέπει ο λογαριασμός του να προτείνεται και σε άλλους. Μπορείτε επίσης να επιτρέψετε ή να απορρίψετε μεμονωμένες δημοσιεύσεις. + disallow: Να μην επιτρέπεται η δημοσίευση + disallow_account: Να μην επιτρέπεται ο συντάκτης + no_status_selected: Καμία δημοφιλής ανάρτηση δεν άλλαξε αφού καμία δεν επιλέχθηκε + not_discoverable: Ο συντάκτης δεν έχει επιλέξει να είναι ανακαλύψιμος + shared_by: + one: Μοιράστηκε ή προστέθηκε στα αγαπημένα μία φορά + other: Μοιράστηκε και προστέθηκε στα αγαπημένα %{friendly_count} φορές + title: Δημοφιλείς αναρτήσεις tags: + current_score: Τρέχουσα βαθμολογία %{score} dashboard: + tag_accounts_measure: μοναδικές χρήσεις tag_languages_dimension: Κορυφαίες γλώσσες tag_servers_dimension: Κορυφαίοι διακομιστές tag_servers_measure: διαφορετικοί διακομιστές - trending: Δημοφιλή + tag_uses_measure: συνολικές χρήσεις + description_html: Αυτές είναι ετικέτες που εμφανίζονται αυτή τη στιγμή σε πολλές αναρτήσεις που βλέπει ο διακομιστής σας. Μπορεί να βοηθήσει τους χρήστες σας να μάθουν τί συζητείται αυτή τη στιγμή. Δεν εμφανίζονται ετικέτες δημοσίως μέχρι να τις εγκρίνετε. + listable: Μπορεί να προταθεί + no_tag_selected: Καμία ετικέτα δεν άλλαξε αφού καμία δεν ήταν επιλεγμένη + not_listable: Δεν θα προτείνεται + not_trendable: Δεν θα εμφανίζεται στις τάσεις + not_usable: Δεν μπορεί να χρησιμοποιηθεί + peaked_on_and_decaying: Κορυφαία θέση στις %{date}, τώρα φθίνει + title: Δημοφιλείς ετικέτες + trendable: Μπορεί να εμφανιστεί στις τάσεις + trending_rank: 'Δημοφιλές #%{rank}' + usable: Μπορεί να χρησιμοποιηθεί + usage_comparison: Χρησιμοποιήθηκε %{today} φορές σήμερα, σε σύγκριση με %{yesterday} χθες + used_by_over_week: + one: Χρησιμοποιήθηκε από ένα άτομο την τελευταία εβδομάδα + other: Χρησιμοποιήθηκε από %{count} άτομα την τελευταία εβδομάδα + title: Δημοφιλή + trending: Τάσεις warning_presets: add_new: Πρόσθεση νέου delete: Διαγραφή edit_preset: Ενημέρωση προκαθορισμένης προειδοποίησης - empty: Δεν έχετε ακόμη ορίσει κάποια προεπιλογή προειδοποίησης. + empty: Δεν έχετε ακόμη ορίσει κάποια προκαθορισμένη προειδοποίηση. title: Διαχείριση προκαθορισμένων προειδοποιήσεων webhooks: + add_new: Προσθήκη σημείου τερματισμού delete: Διαγραφή + description_html: Ένα webhook επιτρέπει στο Mastodon να στείλει ειδοποιήσεις πραγματικού χρόνου σχετικά με επιλεγμένα γεγονότα στη δική σας εφαρμογή, ώστε η εφαρμογή να σας μπορεί να προκαλέσει αντιδράσεις αυτόματα. disable: Απενεργοποίηση disabled: Απενεργοποιημένα + edit: Επεξεργασία σημείου τερματισμού + empty: Δεν έχετε ακόμα ρυθμισμένα σημεία τερματισμού webhook. enable: Ενεργοποίηση + enabled: Ενεργό + enabled_events: + one: 1 ενεργό συμβάν + other: "%{count} ενεργά συμβάντα" + events: Συμβάντα + new: Νέο webhook + rotate_secret: Περιστροφή μυστικού + secret: Υπογραφή μυστικού status: Κατάσταση + title: Webhooks + webhook: Webhook admin_mailer: new_appeal: actions: + delete_statuses: διαγραφή των αναρτήσεών του + disable: να παγώσει τον λογαριασμό του + mark_statuses_as_sensitive: να επισημάνουν τις δημοσιεύσεις του ως ευαίσθητες none: μια προειδοποίηση + sensitive: να επισημάνουν τον λογαριασμό του ως ευαίσθητο + silence: να περιορίσουν το λογαριασμό του + suspend: να αναστείλουν τον λογαριασμό του + body: 'Ο/Η %{target} κάνει έφεση στην απόφαση συντονισμού που έγινε από τον/την %{action_taken_by} στις %{date}, η οποία ήταν %{type}. Έγραψαν:' + next_steps: Μπορείτε να εγκρίνετε την έφεση για να αναιρέσετε την απόφαση της ομάδας συντονισμού ή να την αγνοήσετε. + subject: Ο/Η %{username} κάνει έφεση σε μια απόφαση της ομάδας συντονισμού στον %{instance} new_pending_account: body: Τα στοιχεία του νέου λογαριασμού είναι παρακάτω. Μπορείς να εγκρίνεις ή να απορρίψεις αυτή την αίτηση. subject: Νέος λογαριασμός προς έγκριση στο %{instance} (%{username}) new_report: - body: Ο/Η %{reporter} κατήγγειλε τον/την %{target} - body_remote: Κάποιος/α από τον τομέα %{domain} κατήγγειλε τον/την %{target} - subject: Νέα καταγγελία για %{instance} (#%{id}) + body: Ο/Η %{reporter} ανέφερε τον/την %{target} + body_remote: Κάποιος/α από τον τομέα %{domain} ανέφερε τον/την %{target} + subject: Νέα αναφορά για %{instance} (#%{id}) + new_trends: + body: 'Τα ακόλουθα στοιχεία χρειάζονται αξιολόγηση για να μπορούν να προβληθούν δημόσια:' + new_trending_links: + title: Σύνδεσμοι σε τάση + new_trending_statuses: + title: Αναρτήσεις σε τάση + new_trending_tags: + no_approved_tags: Προς το παρόν δεν υπάρχουν εγκεκριμένες δημοφιλείς ετικέτες. + requirements: 'Οποιοσδήποτε από αυτούς τους υποψηφίους θα μπορούσε να ξεπεράσει την #%{rank} εγκεκριμένη δημοφιλή ετικέτα, που επί του παρόντος είναι #%{lowest_tag_name} με βαθμολογία %{lowest_tag_score}.' + title: Δημοφιλείς ετικέτες + subject: Νέες τάσεις προς αξιολόγηση στο %{instance} aliases: add_new: Δημιουργία ψευδώνυμου created_msg: Δημιουργήθηκε νέο ψευδώνυμο. Τώρα μπορείς να ξεκινήσεις τη μεταφορά από τον παλιό λογαριασμό. deleted_msg: Αφαιρέθηκε το ψευδώνυμο. Η μεταφορά από εκείνον τον λογαριασμό σε αυτόν εδώ δε θα είναι πλέον δυνατή. empty: Δεν έχεις ψευδώνυμα. - hint_html: Αν θέλεις να μετακομίσεις από έναν άλλο λογαριασμό σε αυτόν εδώ, μπορείς εδώ να δημιουργήσεις ένα ψευδώνυμο, πράγμα που απαιτείται πριν προχωρήσεις για να μεταφέρεις τους ακολούθους σου από τον παλιό λογαριασμό σε αυτόν εδώ. Η ενέργεια αυτή είναι ακίνδυνη και αναστρέψιμη.Η μετακόμιση του λογαριασμού ξεκινάει από τον παλιό λογαριασμό. + hint_html: Αν θέλεις να μετακομίσεις από έναν άλλο λογαριασμό σε αυτόν εδώ, εδώ μπορείς να δημιουργήσεις ένα ψευδώνυμο, πράγμα που απαιτείται πριν προχωρήσεις για να μεταφέρεις τους ακολούθους σου από τον παλιό λογαριασμό σε αυτόν εδώ. Η ενέργεια αυτή είναι ακίνδυνη και αναστρέψιμη.Η μετακόμιση του λογαριασμού ξεκινάει από τον παλιό λογαριασμό. remove: Αφαίρεση ψευδώνυμου appearance: - advanced_web_interface: Προηγμένη λειτουργία χρήσης - advanced_web_interface_hint: 'Αν θέλεις να χρησιμοποιήσεις ολόκληρο το πλάτος της οθόνης σου, η προηγμένη λειτουργία χρήσης σου επιτρέπει να ορίσεις πολλαπλές κολώνες ώστε να βλέπεις ταυτόχρονα όση πληροφορία θέλεις: Την αρχική ροή, τις ειδοποιήσεις, την ομοσπονδιακή ροή και όσες λίστες και ετικέτες θέλεις.' - animations_and_accessibility: Κίνηση και προσβασιμότητα + advanced_web_interface: Προηγμένη διεπαφή ιστού + advanced_web_interface_hint: 'Αν θέλεις να χρησιμοποιήσεις ολόκληρο το πλάτος της οθόνης σου, η προηγμένη λειτουργία χρήσης σου επιτρέπει να ορίσεις πολλαπλές στύλες ώστε να βλέπεις ταυτόχρονα όση πληροφορία θέλεις: Την αρχική ροή, τις ειδοποιήσεις, την ροή συναλλαγών και όσες λίστες και ετικέτες θέλεις.' + animations_and_accessibility: Εφέ κινήσεων και προσβασιμότητα confirmation_dialogs: Ερωτήσεις επιβεβαίωσης discovery: Εξερεύνηση localization: @@ -693,30 +961,32 @@ el: guide_link: https://crowdin.com/project/mastodon guide_link_text: Μπορεί να συνεισφέρει ο οποιοσδήποτε. sensitive_content: Ευαίσθητο περιεχόμενο - toot_layout: Διαρρύθμιση τουτ + toot_layout: Διαρρύθμιση αναρτήσεων application_mailer: notification_preferences: Αλλαγή προτιμήσεων email salutation: "%{name}," settings: 'Άλλαξε τις προτιμήσεις email: %{link}' view: 'Προβολή:' view_profile: Προβολή προφίλ - view_status: Προβολή κατάστασης + view_status: Προβολή ανάρτησης applications: created: Η εφαρμογή δημιουργήθηκε επιτυχώς destroyed: Η εφαρμογή διαγράφηκε επιτυχώς logout: Αποσύνδεση regenerate_token: Αναδημιουργία του διακριτικού πρόσβασης (access token) - token_regenerated: Το διακριτικό πρόσβασης (access token) αναδημιουργήθηκε επιτυχώς - warning: Μεγάλη προσοχή με αυτά τα στοιχεία. Μην τα μοιραστείς ποτέ με κανέναν! - your_token: Το διακριτικό πρόσβασής σου (access token) + token_regenerated: Το διακριτικό πρόσβασης αναδημιουργήθηκε επιτυχώς + warning: Να είσαι πολύ προσεκτικός με αυτά τα στοιχεία. Μην τα μοιραστείς ποτέ με κανέναν! + your_token: Το διακριτικό πρόσβασής σου auth: apply_for_account: Ζητήστε έναν λογαριασμό change_password: Συνθηματικό + confirmations: + wrong_email_hint: Εάν αυτή η διεύθυνση email δεν είναι σωστή, μπορείς να την αλλάξεις στις ρυθμίσεις λογαριασμού. delete_account: Διαγραφή λογαριασμού delete_account_html: Αν θέλεις να διαγράψεις το λογαριασμό σου, μπορείς να συνεχίσεις εδώ. Θα σου ζητηθεί επιβεβαίωση. description: prefix_invited_by_user: Ο/Η @%{name} σε προσκαλεί να συνδεθείς με αυτό τον διακομιστή του Mastodon! - prefix_sign_up: Άνοιξε λογαριασμό στο Mastodon σήμερα! + prefix_sign_up: Κάνε εγγραφή στο Mastodon σήμερα! suffix: Ανοίγοντας λογαριασμό θα μπορείς να ακολουθείς άλλους, να ανεβάζεις ενημερώσεις και να ανταλλάζεις μηνύματα με χρήστες σε οποιοδήποτε διακομιστή Mastodon, καθώς και άλλα! didnt_get_confirmation: Δεν έλαβες τις οδηγίες επιβεβαίωσης; dont_have_your_security_key: Δεν έχετε κλειδί ασφαλείας; @@ -730,6 +1000,7 @@ el: migrate_account: Μετακόμιση σε διαφορετικό λογαριασμό migrate_account_html: Αν θέλεις να ανακατευθύνεις αυτό τον λογαριασμό σε έναν διαφορετικό, μπορείς να το διαμορφώσεις εδώ. or_log_in_with: Ή συνδέσου με + privacy_policy_agreement_html: Έχω διαβάσει και συμφωνώ με την πολιτική απορρήτου providers: cas: Υπηρεσία Κεντρικής Πιστοποίησης (CAS) saml: Πρωτόκολλο SAML @@ -740,6 +1011,7 @@ el: rules: accept: Αποδοχή back: Πίσω + preamble: Αυτά ορίζονται και επιβάλλονται από τους συντονιστές του%{domain}. title: Ορισμένοι βασικοί κανόνες. security: Ασφάλεια set_new_password: Ορισμός νέου συνθηματικού @@ -748,14 +1020,18 @@ el: email_settings_hint_html: Το email επιβεβαίωσης στάλθηκε στο %{email}. Αν η διεύθυνση αυτή δεν είναι σωστή, μπορείτε να την ενημερώσετε στις ρυθμίσεις λογαριασμού. title: Ρυθμίσεις sign_in: + preamble_html: Συνδεθείτε με τα διαπιστευτήριά σας στον %{domain}. Αν ο λογαριασμός σας φιλοξενείται σε διαφορετικό διακομιστή, δε θα μπορείτε να συνδεθείτε εδώ. title: Συνδεθείτε στο %{domain} sign_up: + preamble: Με έναν λογαριασμό σ' αυτόν τον διακομιστή Mastodon, θα μπορείτε να ακολουθήσετε οποιοδήποτε άλλο άτομο στο δίκτυο, ανεξάρτητα από το πού φιλοξενείται ο λογαριασμός του. title: Ας ξεκινήσουμε τις ρυθμίσεις στο %{domain}. status: account_status: Κατάσταση λογαριασμού confirming: Αναμονή για ολοκλήρωση επιβεβαίωσης του email. + functional: Ο λογαριασμός σας είναι πλήρως λειτουργικός. pending: Η εφαρμογή σας εκκρεμεί έγκρισης, πιθανόν θα διαρκέσει κάποιο χρόνο. Θα λάβετε email αν εγκριθεί. redirecting_to: Ο λογαριασμός σου είναι ανενεργός γιατί επί του παρόντος ανακατευθύνει στον %{acct}. + view_strikes: Προβολή προηγούμενων ποινών εναντίον του λογαριασμού σας too_fast: Η φόρμα υποβλήθηκε πολύ γρήγορα, προσπαθήστε ξανά. use_security_key: Χρήση κλειδιού ασφαλείας authorize_follow: @@ -779,6 +1055,10 @@ el: errors: invalid_key: δεν είναι έγκυρο κλειδί Ed25519 ή Curve25519 invalid_signature: δεν είναι έγκυρη υπογραφή Ed25519 + date: + formats: + default: "%b %d, %Y" + with_month_name: "%B %d, %Y" datetime: distance_in_words: about_x_hours: "%{count}ω" @@ -812,8 +1092,34 @@ el: username_unavailable: Το όνομα χρήστη σου θα παραμείνει μη διαθέσιμο disputes: strikes: + action_taken: Ενέργεια που πραγματοποιήθηκε + appeal: Έφεση + appeal_approved: Αυτή η ποινή έχει αναιρεθεί επιτυχώς και δεν είναι πλέον έγκυρη + appeal_rejected: Η έφεση απορρίφθηκε + appeal_submitted_at: Η έφεση υποβλήθηκε + appealed_msg: Η έφεσή σας έχει υποβληθεί. Αν εγκριθεί, θα ειδοποιηθείτε. + appeals: + submit: Υποβολή έφεσης approve_appeal: Έγκριση έφεσης + associated_report: Συσχετισμένη αναφορά + created_at: Χρονολογείται + description_html: Αυτές είναι ενέργειες που λήφθηκαν κατά του λογαριασμού σας και προειδοποιήσεις που σας έχουν σταλεί από το προσωπικό του %{instance}. + recipient: Απευθύνεται σε reject_appeal: Απόρριψη έφεσης + status: 'Δημοσίευση #%{id}' + status_removed: Η δημοσιεύση έχει ήδη αφαιρεθεί από το σύστημα + title: "%{action} στις %{date}" + title_actions: + delete_statuses: Αφαίρεση δημοσίευσης + disable: Πάγωμα λογαριασμού + mark_statuses_as_sensitive: Σήμανση δημοσιεύσεων ως ευαίσθητες + none: Προειδοποίηση + sensitive: Σήμανση λογαριασμού ως ευαίσθητο + silence: Περιορισμός λογαριασμού + suspend: Αναστολή λογαριασμού + your_appeal_approved: Η έφεση σας έχει εγκριθεί + your_appeal_pending: Υποβάλατε έφεση + your_appeal_rejected: Η έφεση σας απορρίφθηκε domain_validator: invalid_domain: δεν είναι έγκυρο όνομα τομέα errors: @@ -851,6 +1157,8 @@ el: storage: Αποθήκευση πολυμέσων featured_tags: add_new: Προσθήκη νέας + errors: + limit: Έχεις ήδη προσθέσει το μέγιστο αριθμό ετικετών hint_html: "Τι είναι οι προβεβλημένες ετικέτες; Προβάλλονται στο δημόσιο προφίλ σου επιτρέποντας σε όποιον το βλέπει να χαζέψει τις δημοσιεύσεις που τις χρησιμοποιούν. Είναι ένας ωραίος τρόπος να παρακολουθείς την πορεία μιας δημιουργία ή ενός μακροπρόθεσμου έργου." filters: contexts: @@ -862,8 +1170,11 @@ el: edit: add_keyword: Προσθήκη λέξης-κλειδιού keywords: Λέξεις-κλειδιά + statuses: Μεμονωμένες δημοσιεύσεις + statuses_hint_html: Αυτό το φίλτρο εφαρμόζεται για την επιλογή μεμονωμένων δημοσιεύσεων, ανεξάρτητα από το αν ταιριάζουν με τις λέξεις - κλειδιά παρακάτω. Επισκόπηση ή αφαίρεση δημοσιεύσεων από το φίλτρο. title: Ενημέρωση φίλτρου errors: + deprecated_api_multiple_keywords: Αυτές οι παράμετροι δεν μπορούν να αλλάξουν από αυτήν την εφαρμογή επειδή ισχύουν για περισσότερες από μία λέξεις - κλειδιά φίλτρου. Χρησιμοποιήστε μια πιο πρόσφατη εφαρμογή ή την ιστοσελίδα. invalid_context: Έδωσες λάθος ή ανύπαρκτο πλαίσιο index: contexts: Φίλτρα σε %{contexts} @@ -871,19 +1182,44 @@ el: empty: Δεν έχεις φίλτρα. expires_in: Λήγει σε %{distance} expires_on: Λήγει στις %{date} + keywords: + one: "%{count} λέξη - κλειδί" + other: "%{count} λέξεις - κλειδιά" + statuses: + one: "%{count} δημοσίευση" + other: "%{count} δημοσιεύσεις" + statuses_long: + one: "%{count} κρυμμένη μεμονωμένη δημοσίευση" + other: "%{count} κρυμμένες μεμονωμένες δημοσιεύσεις" title: Φίλτρα new: save: Αποθήκευση νέου φίλτρου title: Πρόσθεσε νέο φίλτρο - footer: - trending_now: Τάσεις + statuses: + back_to_filter: Πίσω στο φίλτρο + batch: + remove: Αφαίρεση από φίλτρο + index: + hint: Αυτό το φίλτρο ισχύει για την επιλογή μεμονωμένων δημοσιεύσεων ανεξάρτητα από άλλα κριτήρια. Μπορείτε να προσθέσετε περισσότερες δημοσιεύσεις σε αυτό το φίλτρο από την ιστοσελίδα. + title: Φιλτραρισμένες δημοσιεύσεις generic: all: Όλα + all_items_on_page_selected_html: + one: "%{count} στοιχείο σε αυτή τη σελίδα είναι επιλεγμένο." + other: Όλα τα %{count} 5 στοιχεία σε αυτή τη σελίδα είναι επιλεγμένα. + all_matching_items_selected_html: + one: "%{count} στοιχείο που ταιριάζει με την αναζήτησή σας είναι επιλεγμένο." + other: Όλα τα %{count} στοιχεία που ταιριάζουν στην αναζήτησή σας είναι επιλεγμένα. changes_saved_msg: Οι αλλαγές αποθηκεύτηκαν! copy: Αντιγραφή delete: Διαγραφή + deselect: Αποεπιλογή όλων + none: Κανένα order_by: Ταξινόμηση κατά save_changes: Αποθήκευση αλλαγών + select_all_matching_items: + one: Επιλέξτε %{count} στοιχείο που ταιριάζει με την αναζήτησή σας. + other: Επιλέξτε και τα %{count} αντικείμενα που ταιριάζουν στην αναζήτησή σας. today: σήμερα validation_errors: one: Κάτι δεν είναι εντάξει ακόμα! Για κοίταξε το παρακάτω σφάλμα @@ -928,6 +1264,20 @@ el: expires_at: Λήγει uses: Χρήσεις title: Προσκάλεσε κόσμο + lists: + errors: + limit: Έχεις φτάσει το μέγιστο αριθμό λιστών + login_activities: + authentication_methods: + otp: εφαρμογή ταυτοποίησης δύο παραγόντων + password: συνθηματικό + sign_in_token: κωδικός ασφαλείας e-mail + webauthn: κλειδιά ασφαλείας + description_html: Αν δείτε δραστηριότητα που δεν αναγνωρίζετε, σκεφτείτε να αλλάξετε τον κωδικό πρόσβασής σας και να ενεργοποιήσετε τον έλεγχο ταυτότητας δύο παραγόντων. + empty: Δεν υπάρχει διαθέσιμο ιστορικό ελέγχου ταυτότητας + failed_sign_in_html: Αποτυχημένη προσπάθεια σύνδεσης με %{method} από %{ip} (%{browser}) + successful_sign_in_html: Επιτυχής σύνδεση με %{method} από %{ip} (%{browser}) + title: Ιστορικό ελέγχου ταυτότητας media_attachments: validations: images_and_video: Δεν γίνεται να προσθέσεις βίντεο σε ενημέρωση που ήδη περιέχει εικόνες @@ -996,6 +1346,8 @@ el: body: 'Αναφέρθηκες από τον/την %{name} στο:' subject: Αναφέρθηκες από τον/την %{name} title: Νέα αναφορά + poll: + subject: Μια δημοσκόπηση του %{name} έληξε reblog: body: 'Η κατάστασή σου προωθήθηκε από τον/την %{name}:' subject: Ο/Η %{name} προώθησε την κατάστασή σου @@ -1020,8 +1372,12 @@ el: trillion: τρις. otp_authentication: code_hint: Για να συνεχίσεις, γράψε τον κωδικό που δημιούργησε η εφαρμογή πιστοποίησης + description_html: Αν ενεργοποιήσεις την ταυτοποίηση δύο παραγόντων χρησιμοποιώντας εφαρμογή ταυτοποίησης, για να συνδεθείς θα πρέπει να έχεις το τηλέφωνό σου, που θα σού δημιουργήσει κλειδιά εισόδου. enable: Ενεργοποίηση + instructions_html: "Σάρωσε αυτόν τον κωδικό QR με την εφαρμογή Google Authenticator ή κάποια άλλη αντίστοιχη στο τηλέφωνό σου. Από εδώ και στο εξής, η εφαρμογή θα δημιουργεί κλειδιά που θα πρέπει να εισάγεις όταν συνδέεσαι." + manual_instructions: 'Αν δεν μπορείς να σαρώσεις τον κωδικό QR και χρειάζεσαι να τον εισάγεις χειροκίνητα, ορίστε η μυστική φράση σε μορφή κειμένου:' setup: Ρύθμιση + wrong_code: Ο κωδικός που έβαλες ήταν άκυρος! Η ώρα στον διακομιστή και τη συσκευή είναι σωστή; pagination: newer: Νεότερο next: Επόμενο @@ -1051,7 +1407,12 @@ el: unrecognized_emoji: δεν αναγνωρίζεται ως emoji relationships: activity: Δραστηριότητα λογαριασμού + confirm_follow_selected_followers: Είσαι βέβαιος ότι θες να ακολουθήσεις τους επιλεγμένους ακόλουθους; + confirm_remove_selected_followers: Είσαι βέβαιος ότι θες να αφαιρέσεις τους επιλεγμένους ακόλουθους; + confirm_remove_selected_follows: Είσαι βέβαιος ότι θες να αφαιρέσεις τα επιλεγμένα άτομα που ακολουθείς; dormant: Αδρανείς + follow_failure: Δεν ήταν δυνατή η παρακολούθηση ορισμένων από τους επιλεγμένους λογαριασμούς. + follow_selected_followers: Ακολουθήστε τους επιλεγμένους ακόλουθους followers: Σε ακολουθούν following: Ακολουθείς invited: Προσκεκλημένοι @@ -1072,6 +1433,9 @@ el: invalid_rules: δεν παραπέμπει σε έγκυρους κανόνες rss: content_warning: 'Προειδοποίηση περιεχομένου:' + descriptions: + account: Δημόσιες δημοσιεύσεις από @%{acct} + tag: 'Δημόσιες δημοσιεύσεις με ετικέτα #%{hashtag}' scheduled_statuses: over_daily_limit: Έχεις υπερβεί το όριο των %{limit} προγραμματισμένων τουτ για εκείνη τη μέρα over_total_limit: Έχεις υπερβεί το όριο των %{limit} προγραμματισμένων τουτ @@ -1080,33 +1444,47 @@ el: activity: Τελευταία δραστηριότητα browser: Φυλλομετρητής (Browser) browsers: + alipay: Alipay blackberry: BlackBerry chrome: Chrome edge: Microsoft Edge + electron: Electron firefox: Firefox generic: Άγνωστος φυλλομετρητής + huawei_browser: Huawei Browser ie: Internet Explorer + micro_messenger: MicroMessenger + nokia: Nokia S40 Ovi Browser opera: Opera otter: Otter phantom_js: PhantomJS qq: QQ Browser safari: Safari uc_browser: UC Browser + unknown_browser: Άγνωστος φυλλομετρητής + weibo: Weibo current_session: Τρέχουσα σύνδεση description: "%{browser} σε %{platform}" explanation: Αυτοί είναι οι φυλλομετρητές (browsers) που είναι συνδεδεμένοι στον λογαριασμό σου στο Mastodon αυτή τη στιγμή. + ip: IP platforms: + adobe_air: Adobe Air android: Android blackberry: BlackBerry chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: Mac - other: άγνωστη πλατφόρμα + unknown_platform: Άγνωστη Πλατφόρμα + windows: Windows + windows_mobile: Windows Mobile + windows_phone: Windows Phone revoke: Ανακάλεσε revoke_success: Η σύνδεση ανακλήθηκε επιτυχώς title: Σύνδεση + view_authentication_history: Δείτε το ιστορικό ταυτοποιήσεων του λογαριασμού σας settings: account: Λογαριασμός account_settings: Ρυθμίσεις λογαριασμού @@ -1126,7 +1504,10 @@ el: preferences: Προτιμήσεις profile: Προφίλ relationships: Ακολουθείς και σε ακολουθούν + statuses_cleanup: Αυτοματοποιημένη διαγραφή δημοσιεύσεων + strikes: Ποινές από ομάδα συντονισμού two_factor_authentication: Πιστοποίηση 2 παραγόντων (2FA) + webauthn_authentication: Κλειδιά ασφαλείας statuses: attached: audio: @@ -1168,7 +1549,9 @@ el: show_older: Εμφάνιση παλαιότερων show_thread: Εμφάνιση νήματος sign_in_to_participate: Συνδέσου για να συμμετάσχεις στη συζήτηση + title: '%{name}: "%{quote}"' visibilities: + direct: Άμεση private: Μόνο ακόλουθοι private_long: Εμφάνιση μόνο σε ακόλουθους public: Δημόσιο @@ -1176,6 +1559,26 @@ el: unlisted: Μη καταχωρημένο unlisted_long: Βλέπει οποιοσδήποτε, αλλά δεν καταχωρείται στις δημόσιες ροές statuses_cleanup: + enabled: Αυτόματη διαγραφή παλιών δημοσιεύσεων + enabled_hint: Διαγράφει αυτόματα τις δημοσιεύσεις σας μόλις φτάσουν σε ένα καθορισμένο όριο ηλικίας, εκτός αν ταιριάζουν με μία από τις παρακάτω εξαιρέσεις + exceptions: Εξαιρέσεις + explanation: Επειδή η διαγραφή δημοσιέυσεων είναι μια κοστοβόρα διαδικασία, γίνεται σε αραιά τακτά διαστήματα, όταν ο διακομιστής δεν είναι ιδιαίτερα απασχολημένος. Γι' αυτό, οι δημοσιεύσεις σας μπορεί να διαγραφούν λίγο μετά το πέρας του ορίου ηλικίας. + ignore_favs: Αγνόηση αγαπημένων + ignore_reblogs: Αγνόηση ενισχύσεων + interaction_exceptions: Εξαιρέσεις βασισμένες σε αλληλεπιδράσεις + interaction_exceptions_explanation: Σημειώστε ότι δεν υπάρχει εγγύηση για πιθανή διαγραφή δημοσιεύσεων αν αυτά πέσουν κάτω από το όριο αγαπημένων ή ενισχύσεων ακόμα και αν κάποτε το είχαν ξεπεράσει. + keep_direct: Διατήρηση άμεσων μηνυμάτων + keep_direct_hint: Δεν διαγράφει κανένα από τα άμεσα μηνύματά σας + keep_media: Διατήρηση δημοσιεύσεων με συνημμένα πολυμέσων + keep_media_hint: Δεν διαγράφει καμία από τις δημοσιεύσεις σας που έχουν συνημμένα πολυμέσων + keep_pinned: Διατήρηση καρφιτσωμένων δημοσιεύσεων + keep_pinned_hint: Δεν διαγράφει καμία από τις καρφιτσωμένες δημοσιεύσεις σας + keep_polls: Διατήρηση δημοσκοπήσεων + keep_polls_hint: Δεν διαγράφει καμία από τις δημοσκοπήσεις σας + keep_self_bookmark: Διατήρηση δημοσιεύσεων που έχετε σελιδοδείκτη + keep_self_bookmark_hint: Δεν διαγράφει τις δημοσιεύσεις σας αν τις έχετε προσθέσει στους σελιδοδείκτες + keep_self_fav: Κρατήστε τις δημοσιεύσεις που έχετε στα αγαπημένες + keep_self_fav_hint: Δεν διαγράφει τις δημοσιεύσεις σας αν τις έχετε στα αγαπημένα min_age: '1209600': 2 εβδομάδες '15778476': 6 μήνες @@ -1185,10 +1588,18 @@ el: '604800': 1 εβδομάδα '63113904': 2 χρόνια '7889238': 3 μήνες + min_age_label: Όριο ηλικίας + min_favs: Κρατήστε τις δημοσιεύσεις που έχουν γίνει αγαπημένες τουλάχιστον + min_favs_hint: Δεν διαγράφει καμία από τις δημοσιεύσεις σας που έχει λάβει τουλάχιστον αυτόν τον αριθμό αγαπημένων. Αφήστε κενό για να διαγράψετε δημοσιεύσεις ανεξάρτητα από τον αριθμό των αγαπημένων + min_reblogs: Διατήρηση δημοσιεύσεων που έχουν ενισχυθεί τουλάχιστον + min_reblogs_hint: Δεν διαγράφει καμία από τις δημοσιεύσεις σας που έχει λάβει τουλάχιστον αυτόν τον αριθμό ενισχύσεων. Αφήστε κενό για να διαγράψετε δημοσιεύσεις ανεξάρτητα από τον αριθμό των ενισχύσεων stream_entries: pinned: Καρφιτσωμένο τουτ reblogged: προωθημένο sensitive_content: Ευαίσθητο περιεχόμενο + strikes: + errors: + too_late: Είναι πολύ αργά για να κάνετε έφεση σε αυτήν την ποινή tags: does_not_match_previous_name: δεν ταιριάζει με το προηγούμενο όνομα themes: @@ -1197,64 +1608,110 @@ el: mastodon-light: Mastodon (Ανοιχτόχρωμο) time: formats: + default: "%b %d, %Y, %H:%M" + month: "%b %Y" time: "%H:%M" two_factor_authentication: add: Προσθήκη disable: Απενεργοποίησε + disabled_success: Η ταυτοποίηση δύο παραγόντων απενεργοποιήθηκε επιτυχώς edit: Επεξεργασία enabled: Η πιστοποίηση 2 παραγόντων (2FA) είναι ενεργοποιημένη enabled_success: Η πιστοποίηση 2 παραγόντων (2FA) ενεργοποιήθηκε επιτυχώς generate_recovery_codes: Δημιούργησε κωδικούς ανάκτησης lost_recovery_codes: Οι κωδικοί ανάκτησης σου επιτρέπουν να ανακτήσεις ξανά πρόσβαση στον λογαριασμό σου αν χάσεις το τηλέφωνό σου. Αν έχεις χάσει τους κωδικούς ανάκτησης, μπορείς να τους δημιουργήσεις ξανά εδώ. Οι παλιοί κωδικοί σου θα ακυρωθούν. + methods: Μέθοδοι δύο παραγόντων otp: Εφαρμογή επαλήθευσης recovery_codes: Εφεδρικοί κωδικοί ανάκτησης recovery_codes_regenerated: Οι εφεδρικοί κωδικοί ανάκτησης δημιουργήθηκαν επιτυχώς recovery_instructions_html: Αν ποτέ δεν έχεις πρόσβαση στο κινητό σου, μπορείς να χρησιμοποιήσεις έναν από τους παρακάτω κωδικούς ανάκτησης για να αποκτήσεις πρόσβαση στο λογαριασμό σου. Διαφύλαξε τους κωδικούς ανάκτησης. Για παράδειγμα, μπορείς να τους εκτυπώσεις και να τους φυλάξεις μαζί με άλλα σημαντικά σου έγγραφα. + webauthn: Κλειδιά ασφαλείας user_mailer: + appeal_approved: + action: Μετάβαση στον λογαριασμό σας + explanation: Η έφεση της ποινής εναντίον του λογαριασμού σας στις %{strike_date}, που υποβάλλατε στις %{appeal_date}, έχει εγκριθεί. Ο λογαριασμός σας είναι και πάλι σε καλή κατάσταση. + subject: Η έφεση σας από τις %{date} έχει εγκριθεί + title: Έφεση εγκρίθηκε + appeal_rejected: + explanation: Η έφεση της ποινής εναντίον του λογαριασμού σας στις %{strike_date}, που υποβάλλατε στις %{appeal_date}, έχει απορριφθεί. + subject: Η έφεση σας από τις %{date} έχει απορριφθεί + title: Έφεση απορρίφθηκε backup_ready: explanation: Είχες ζητήσει εφεδρικό αντίγραφο του λογαριασμού σου στο Mastodon. Είναι έτοιμο για κατέβασμα! subject: Το εφεδρικό αντίγραφό σου είναι έτοιμο για κατέβασμα title: Λήψη εφεδρικού αρχείου suspicious_sign_in: change_password: αλλάξτε τον κωδικό πρόσβασής σας + details: 'Εδώ είναι οι λεπτομέρειες της σύνδεσης:' + explanation: Εντοπίσαμε μια σύνδεση στο λογαριασμό σας από μια νέα διεύθυνση IP. + further_actions_html: Αν δεν ήσασταν εσείς, σας συνιστούμε να %{action} αμέσως και να ενεργοποιήσετε τον έλεγχο ταυτοποίησης δύο παραγόντων για να διατηρήσετε τον λογαριασμό σας ασφαλή. + subject: Ο λογαριασμός σας έχει συνδεθεί από μια νέα διεύθυνση IP + title: Μια νέα σύνδεση warning: + appeal: Υποβολή έφεσης + appeal_description: Αν πιστεύετε ότι έγινε λάθος, μπορείτε να υποβάλετε μια αίτηση στο προσωπικό του %{instance}. categories: spam: Ανεπιθύμητο + violation: Το περιεχόμενο παραβιάζει τις ακόλουθες οδηγίες κοινότητας + explanation: + delete_statuses: Μερικές από τις δημοσιεύσεις σου έχουν βρεθεί να παραβιάζουν μία ή περισσότερες οδηγίες κοινότητας και έχουν συνεπώς αφαιρεθεί από τους συντονιστές του %{instance}. + disable: Δεν μπορείς πλέον να χρησιμοποιήσεις τον λογαριασμό σου, αλλά το προφίλ σου και άλλα δεδομένα παραμένουν άθικτα. Μπορείς να ζητήσετε ένα αντίγραφο ασφαλείας των δεδομένων σου, να αλλάξεις τις ρυθμίσεις του λογαριασμού σου ή να διαγράψεις τον λογαριασμό σου. + mark_statuses_as_sensitive: Μερικές από τις δημοσιεύσεις σου έχουν επισημανθεί ως ευαίσθητες από τους συντονιστές του %{instance}. Αυτό σημαίνει ότι οι άνθρωποι θα πρέπει να πατήσουν τα πολυμέσα στις δημοσιεύσεις πριν εμφανιστεί μια προεπισκόπηση. Μπορείς να επισημάνεις τα πολυμέσα ως ευαίσθητα όταν δημοσιεύεις στο μέλλον. + sensitive: Από δω και στο εξής, όλα τα μεταφορτωμένα αρχεία πολυμέσων σου θα επισημανθούν ως ευαίσθητα και κρυμμένα πίσω από μια προειδοποίηση πατήστε - για - εμφάνιση. + silence: Μπορείς ακόμα να χρησιμοποιείς το λογαριασμό σου, αλλά μόνο άτομα που σε ακολουθούν ήδη θα δουν τις δημοσιεύσεις σου σε αυτόν τον διακομιστή και μπορεί να αποκλειστείς από διάφορες δυνατότητες ανακάλυψης. Ωστόσο, οι άλλοι μπορούν ακόμα να σε ακολουθήσουν με μη αυτόματο τρόπο. + suspend: Δε μπορείς πλέον να χρησιμοποιήσεις τον λογαριασμό σου και το προφίλ σου και άλλα δεδομένα δεν είναι πλέον προσβάσιμα. Μπορείς ακόμα να συνδεθείς για να αιτηθείς αντίγραφο των δεδομένων σου μέχρι να αφαιρεθούν πλήρως σε περίπου 30 μέρες αλλά, θα διατηρήσουμε κάποια βασικά δεδομένα για να σε αποτρέψουμε να παρακάμψεις την αναστολή. reason: 'Αιτιολογία:' + statuses: 'Αναφερόμενες δημοσιεύσεις:' subject: + delete_statuses: Οι δημοσιεύσεις σου στον %{acct} έχουν αφαιρεθεί disable: Ο λογαριασμός σου %{acct} έχει παγώσει + mark_statuses_as_sensitive: Οι δημοσιεύσεις σου στον %{acct} έχουν επισημανθεί ως ευαίσθητες none: Προειδοποίηση προς %{acct} + sensitive: Οι δημοσιεύσεις σου στο %{acct} θα επισημανθούν ως ευαίσθητες από 'δω και στο εξής silence: Ο λογαριασμός σου %{acct} έχει περιοριστεί suspend: Ο λογαριασμός σου %{acct} έχει ανασταλεί title: + delete_statuses: Οι δημοσιεύσεις αφαιρέθηκαν disable: Παγωμένος λογαριασμός + mark_statuses_as_sensitive: Οι δημοσιέυσεις επισημάνθηκαν ως ευαίσθητες none: Προειδοποίηση + sensitive: Ο λογαριασμός επισημάνθηκε ως ευαίσθητος silence: Περιορισμένος λογαριασμός suspend: Λογαριασμός σε αναστολή welcome: edit_profile_action: Στήσιμο προφίλ + edit_profile_step: Μπορείς να προσαρμόσεις το προφίλ σου ανεβάζοντας μια εικόνα προφίλ, αλλάζοντας το εμφνιζόμενο όνομα και άλλα. Μπορείς να επιλέξεις να αξιολογείς νέους ακόλουθους πριν τους επιτραπεί να σε ακολουθήσουν. explanation: Μερικές συμβουλές για να ξεκινήσεις final_action: Ξεκίνα τις δημοσιεύσεις + final_step: 'Ξεκίνα να δημοσιεύεις! Ακόμα και χωρίς ακόλουθους τις δημόσιες δημοσιεύσεις σου μπορεί να τις δουν άλλοι, για παράδειγμα στην τοπική ροή ή στις ετικέτες. Ίσως να θέλεις να μας γνωρίσεις τον εαυτό σου με την ετικέτα #introductions.' full_handle: Το πλήρες όνομά σου full_handle_hint: Αυτό θα εδώ θα πεις στους φίλους σου για να σου μιλήσουν ή να σε ακολουθήσουν από άλλο κόμβο. subject: Καλώς ήρθες στο Mastodon title: Καλώς όρισες, %{name}! users: follow_limit_reached: Δεν μπορείς να ακολουθήσεις περισσότερα από %{limit} άτομα + go_to_sso_account_settings: Μεταβείτε στις ρυθμίσεις λογαριασμού του παρόχου ταυτότητας σας invalid_otp_token: Άκυρος κωδικός πιστοποίησης 2 παραγόντων (2FA) otp_lost_help_html: Αν χάσεις και τα δύο, μπορείς να επικοινωνήσεις με τον/την %{email} seamless_external_login: Επειδή έχεις συνδεθεί μέσω τρίτης υπηρεσίας, οι ρυθμίσεις συνθηματικού και email δεν είναι διαθέσιμες. signed_in_as: 'Έχεις συνδεθεί ως:' verification: - explanation_html: 'Μπορείς να πιστοποιήσεις τον εαυτό σου ως ιδιοκτήτη των συνδέσμων που εμφανίζεις στα μεταδεδομένα του προφίλ σου. Για να συμβεί αυτό, ο συνδεδεμένος ιστότοπος πρέπει να περιέχει ένα σύνδεσμο που να επιστρέφει προς το προφίλ σου στο Mastodon. Ο σύνδεσμος επιστροφής πρέπει περιέχει την ιδιότητα (attribute) rel="me". Το περιεχόμενο του κειμένου δεν έχει σημασία. Για παράδειγμα:' + explanation_html: 'Μπορείς να επαληθεύσεις τον εαυτό σου ως ιδιοκτήτη των συνδέσμων που εμφανίζεις στα μεταδεδομένα του προφίλ σου. Για να συμβεί αυτό, ο συνδεδεμένος ιστότοπος πρέπει να περιέχει ένα σύνδεσμο που να επιστρέφει προς το προφίλ σου στο Mastodon. Ο σύνδεσμος επιστροφής πρέπει να περιέχει την ιδιότητα rel="me". Το περιεχόμενο του κειμένου δεν έχει σημασία. Για παράδειγμα:' verification: Πιστοποίηση webauthn_credentials: add: Προσθήκη νέου κλειδιού ασφαλείας create: + error: Παρουσιάστηκε πρόβλημα κατά την προσθήκη του κλειδιού ασφαλείας. Παρακαλώ δοκίμασε ξανά. success: Το κλειδί ασφαλείας σας προστέθηκε με επιτυχία. delete: Διαγραφή delete_confirmation: Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το κλειδί ασφαλείας; + description_html: Αν ενεργοποιήσεις την ταυτοποίηση κλειδιού ασφαλείας, κατά τη σύνδεσή σου θα χρειαστεί να χρησιμοποιήσεις ένα από τα κλειδιά ασφαλείας σου. destroy: + error: Παρουσιάστηκε πρόβλημα κατά την διαγραφή του κλειδιού ασφαλείας. Παρακαλώ δοκίμασε ξανά. success: Το κλειδί ασφαλείας σας διαγράφηκε με επιτυχία. invalid_credential: Άκυρο κλειδί ασφαλείας + nickname_hint: Εισάγετε το ψευδώνυμο του νέου κλειδιού ασφαλείας σου + not_enabled: Δεν έχεις ενεργοποιήσει το WebAuthn ακόμα + not_supported: Αυτό το πρόγραμμα περιήγησης δεν υποστηρίζει κλειδιά ασφαλείας + otp_required: Για να χρησιμοποιήσεις κλειδιά ασφαλείας, ενεργοποιήσε πρώτα την ταυτοποίηση δύο παραγόντων. registered_on: Εγγραφή στις %{date} diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml index 9b4f28c5d6..db4f83b936 100644 --- a/config/locales/en-GB.yml +++ b/config/locales/en-GB.yml @@ -366,27 +366,1105 @@ en-GB: sources: Sign-up sources space: Space usage title: Dashboard + top_languages: Top active languages + top_servers: Top active servers + website: Website + disputes: + appeals: + empty: No appeals found. + title: Appeals + domain_allows: + add_new: Allow federation with domain + created_msg: Domain has been successfully allowed for federation + destroyed_msg: Domain has been disallowed from federation + export: Export + import: Import + undo: Disallow federation with domain + domain_blocks: + add_new: Add new domain block + created_msg: Domain block is now being processed + destroyed_msg: Domain block has been undone + domain: Domain + edit: Edit domain block + existing_domain_block: You have already imposed stricter limits on %{name}. + existing_domain_block_html: You have already imposed stricter limits on %{name}, you need to unblock it first. + export: Export + import: Import + new: + create: Create block + hint: The domain block will not prevent creation of account entries in the database, but will retroactively and automatically apply specific moderation methods on those accounts. + severity: + desc_html: "Limit will make posts from accounts at this domain invisible to anyone who isn't following them. Suspend will remove all content, media, and profile data for this domain's accounts from your server. Use None if you just want to reject media files." + noop: None + silence: Limit + suspend: Suspend + title: New domain block + no_domain_block_selected: No domain blocks were changed as none were selected + not_permitted: You are not permitted to perform this action + obfuscate: Obfuscate domain name + obfuscate_hint: Partially obfuscate the domain name in the list if advertising the list of domain limitations is enabled + private_comment: Private comment + private_comment_hint: Comment about this domain limitation for internal use by the moderators. + public_comment: Public comment + public_comment_hint: Comment about this domain limitation for the general public, if advertising the list of domain limitations is enabled. + reject_media: Reject media files + reject_media_hint: Removes locally stored media files and refuses to download any in the future. Irrelevant for suspensions + reject_reports: Reject reports + reject_reports_hint: Ignore all reports coming from this domain. Irrelevant for suspensions + undo: Undo domain block + view: View domain block + email_domain_blocks: + add_new: Add new + attempts_over_week: + one: "%{count} attempt over the last week" + other: "%{count} sign-up attempts over the last week" + created_msg: Successfully blocked e-mail domain + delete: Delete + dns: + types: + mx: MX record + domain: Domain + new: + create: Add domain + resolve: Resolve domain + title: Block new e-mail domain + no_email_domain_block_selected: No e-mail domain blocks were changed as none were selected + not_permitted: Not permitted + resolved_dns_records_hint_html: The domain name resolves to the following MX domains, which are ultimately responsible for accepting e-mail. Blocking an MX domain will block sign-ups from any e-mail address which uses the same MX domain, even if the visible domain name is different. Be careful not to block major e-mail providers. + resolved_through_html: Resolved through %{domain} + title: Blocked e-mail domains + export_domain_allows: + new: + title: Import domain allows + no_file: No file selected + export_domain_blocks: + import: + description_html: You are about to import a list of domain blocks. Please review this list very carefully, especially if you have not authored this list yourself. + existing_relationships_warning: Existing follow relationships + private_comment_description_html: 'To help you track where imported blocks come from, imported blocks will be created with the following private comment: %{comment}' + private_comment_template: Imported from %{source} on %{date} + title: Import domain blocks + invalid_domain_block: 'One or more domain blocks were skipped because of the following error(s): %{error}' + new: + title: Import domain blocks + no_file: No file selected + follow_recommendations: + description_html: "Follow recommendations help new users quickly find interesting content. When a user has not interacted with others enough to form personalised follow recommendations, these accounts are recommended instead. They are re-calculated on a daily basis from a mix of accounts with the highest recent engagements and highest local follower counts for a given language." + language: For language + status: Status + suppress: Suppress follow recommendation + suppressed: Suppressed + title: Follow recommendations + unsuppress: Restore follow recommendation + instances: + availability: + description_html: + one: If delivering to the domain fails %{count} day without succeeding, no further delivery attempts will be made unless a delivery from the domain is received. + other: If delivering to the domain fails on %{count} different days without succeeding, no further delivery attempts will be made unless a delivery from the domain is received. + failure_threshold_reached: Failure threshold reached on %{date}. + failures_recorded: + one: Failed attempt on %{count} day. + other: Failed attempts on %{count} different days. + no_failures_recorded: No failures on record. + title: Availability + warning: The last attempt to connect to this server has been unsuccessful + back_to_all: All + back_to_limited: Limited + back_to_warning: Warning + by_domain: Domain + confirm_purge: Are you sure you want to permanently delete data from this domain? + content_policies: + comment: Internal note + description_html: You can define content policies that will be applied to all accounts from this domain and any of its subdomains. + limited_federation_mode_description_html: You can chose whether to allow federation with this domain. + policies: + reject_media: Reject media + reject_reports: Reject reports + silence: Limit + suspend: Suspend + policy: Policy + reason: Public reason + title: Content policies + dashboard: + instance_accounts_dimension: Most followed accounts + instance_accounts_measure: stored accounts + instance_followers_measure: our followers there + instance_follows_measure: their followers here + instance_languages_dimension: Top languages + instance_media_attachments_measure: stored media attachments + instance_reports_measure: reports about them + instance_statuses_measure: stored posts + delivery: + all: All + clear: Clear delivery errors + failing: Failing + restart: Restart delivery + stop: Stop delivery + unavailable: Unavailable + delivery_available: Delivery is available + delivery_error_days: Delivery error days + delivery_error_hint: If delivery is not possible for %{count} days, it will be automatically marked as undeliverable. + destroyed_msg: Data from %{domain} is now queued for imminent deletion. + empty: No domains found. + known_accounts: + one: "%{count} known account" + other: "%{count} known accounts" + moderation: + all: All + limited: Limited + title: Moderation + private_comment: Private comment + public_comment: Public comment + purge: Purge + purge_description_html: If you believe this domain is offline for good, you can delete all account records and associated data from this domain from your storage. This may take a while. + title: Federation + total_blocked_by_us: Blocked by us + total_followed_by_them: Followed by them + total_followed_by_us: Followed by us + total_reported: Reports about them + total_storage: Media attachments + totals_time_period_hint_html: The totals displayed below include data for all time. + invites: + deactivate_all: Deactivate all + filter: + all: All + available: Available + expired: Expired + title: Filter + title: Invites + ip_blocks: + add_new: Create rule + created_msg: Successfully added new IP rule + delete: Delete + expires_in: + '1209600': 2 weeks + '15778476': 6 months + '2629746': 1 month + '31556952': 1 year + '86400': 1 day + '94670856': 3 years + new: + title: Create new IP rule + no_ip_block_selected: No IP rules were changed as none were selected + title: IP rules + relationships: + title: "%{acct}'s relationships" + relays: + add_new: Add new relay + delete: Delete + description_html: A federation relay is an intermediary server that exchanges large volumes of public posts between servers that subscribe and publish to it. It can help small and medium servers discover content from the fediverse, which would otherwise require local users manually following other people on remote servers. + disable: Disable + disabled: Disabled + enable: Enable + enable_hint: Once enabled, your server will subscribe to all public posts from this relay, and will begin sending this server's public posts to it. + enabled: Enabled + inbox_url: Relay URL + pending: Waiting for relay's approval + save_and_enable: Save and enable + setup: Setup a relay connection + signatures_not_enabled: Relays may not work correctly while secure mode or limited federation mode is enabled + status: Status + title: Relays + report_notes: + created_msg: Report note successfully created! + destroyed_msg: Report note successfully deleted! + reports: + account: + notes: + one: "%{count} note" + other: "%{count} notes" + action_log: Audit log + action_taken_by: Action taken by + actions: + delete_description_html: The reported posts will be deleted and a strike will be recorded to help you escalate on future infractions by the same account. + mark_as_sensitive_description_html: The media in the reported posts will be marked as sensitive and a strike will be recorded to help you escalate on future infractions by the same account. + other_description_html: See more options for controlling the account's behaviour and customise communication to the reported account. + resolve_description_html: No action will be taken against the reported account, no strike recorded, and the report will be closed. + silence_description_html: The account will be visible only to those who already follow it or manually look it up, severely limiting its reach. Can always be reverted. Closes all reports against this account. + suspend_description_html: The account and all its contents will be inaccessible and eventually deleted, and interacting with it will be impossible. Reversible within 30 days. Closes all reports against this account. + actions_description_html: Decide which action to take to resolve this report. If you take a punitive action against the reported account, an e-mail notification will be sent to them, except when the Spam category is selected. + actions_description_remote_html: Decide which action to take to resolve this report. This will only affect how your server communicates with this remote account and handle its content. + add_to_report: Add more to report + are_you_sure: Are you sure? + assign_to_self: Assign to me + assigned: Assigned moderator + by_target_domain: Domain of reported account + cancel: Cancel + category: Category + category_description_html: The reason this account and/or content was reported will be cited in communication with the reported account + comment: + none: None + comment_description_html: 'To provide more information, %{name} wrote:' + confirm: Confirm + confirm_action: Confirm moderation action against @%{acct} + created_at: Reported + delete_and_resolve: Delete posts + forwarded: Forwarded + forwarded_to: Forwarded to %{domain} + mark_as_resolved: Mark as resolved + mark_as_sensitive: Mark as sensitive + mark_as_unresolved: Mark as unresolved + no_one_assigned: No one + notes: + create: Add note + create_and_resolve: Resolve with note + create_and_unresolve: Reopen with note + delete: Delete + placeholder: Describe what actions have been taken, or any other related updates... + title: Notes + notes_description_html: View and leave notes to other moderators and your future self + processed_msg: 'Report #%{id} successfully processed' + quick_actions_description_html: 'Take a quick action or scroll down to see reported content:' + remote_user_placeholder: the remote user from %{instance} + reopen: Reopen report + report: 'Report #%{id}' + reported_account: Reported account + reported_by: Reported by + resolved: Resolved + resolved_msg: Report successfully resolved! + skip_to_actions: Skip to actions + status: Status + statuses: Reported content + statuses_description_html: Offending content will be cited in communication with the reported account + summary: + action_preambles: + delete_html: 'You are about to remove some of @%{acct}''s posts. This will:' + mark_as_sensitive_html: 'You are about to mark some of @%{acct}''s posts as sensitive. This will:' + silence_html: 'You are about to limit @%{acct}''s account. This will:' + suspend_html: 'You are about to suspend @%{acct}''s account. This will:' + actions: + delete_html: Remove the offending posts + mark_as_sensitive_html: Mark the offending posts' media as sensitive + silence_html: Severely limit @%{acct}'s reach by making their profile and contents only visible to people already following them or manually looking it profile up + suspend_html: Suspend @%{acct}, making their profile and contents inaccessible and impossible to interact with + close_report: 'Mark report #%{id} as resolved' + close_reports_html: Mark all reports against @%{acct} as resolved + delete_data_html: Delete @%{acct}'s profile and contents 30 days from now unless they get unsuspended in the meantime + preview_preamble_html: "@%{acct} will receive a warning with the following contents:" + record_strike_html: Record a strike against @%{acct} to help you escalate on future violations from this account + send_email_html: Send @%{acct} a warning e-mail + warning_placeholder: Optional additional reasoning for the moderation action. + target_origin: Origin of reported account + title: Reports + unassign: Unassign + unknown_action_msg: 'Unknown action: %{action}' + unresolved: Unresolved + updated_at: Updated + view_profile: View profile roles: + add_new: Add role + assigned_users: + one: "%{count} user" + other: "%{count} users" categories: + administration: Administration devops: DevOps + invites: Invites + moderation: Moderation + special: Special + delete: Delete + description_html: With user roles, you can customize which functions and areas of Mastodon your users can access. + edit: Edit '%{name}' role + everyone: Default permissions + everyone_full_description_html: This is the base role affecting all users, even those without an assigned role. All other roles inherit permissions from it. + permissions_count: + one: "%{count} permission" + other: "%{count} permissions" privileges: + administrator: Administrator + administrator_description: Users with this permission will bypass every permission + delete_user_data: Delete User Data + delete_user_data_description: Allows users to delete other users' data without delay + invite_users: Invite Users + invite_users_description: Allows users to invite new people to the server + manage_announcements: Manage Announcements + manage_announcements_description: Allows users to manage announcements on the server + manage_appeals: Manage Appeals + manage_appeals_description: Allows users to review appeals against moderation actions + manage_blocks: Manage Blocks + manage_blocks_description: Allows users to block e-mail providers and IP addresses + manage_custom_emojis: Manage Custom Emojis + manage_custom_emojis_description: Allows users to manage custom emojis on the server + manage_federation: Manage Federation + manage_federation_description: Allows users to block or allow federation with other domains, and control deliverability + manage_invites: Manage Invites + manage_invites_description: Allows users to browse and deactivate invite links + manage_reports: Manage Reports + manage_reports_description: Allows users to review reports and perform moderation actions against them + manage_roles: Manage Roles + manage_roles_description: Allows users to manage and assign roles below theirs + manage_rules: Manage Rules + manage_rules_description: Allows users to change server rules + manage_settings: Manage Settings + manage_settings_description: Allows users to change site settings + manage_taxonomies: Manage Taxonomies + manage_taxonomies_description: Allows users to review trending content and update hashtag settings + manage_user_access: Manage User Access + manage_user_access_description: Allows users to disable other users' two-factor authentication, change their e-mail address, and reset their password + manage_users: Manage Users + manage_users_description: Allows users to view other users' details and perform moderation actions against them + manage_webhooks: Manage Webhooks + manage_webhooks_description: Allows users to set up webhooks for administrative events + view_audit_log: View Audit Log + view_audit_log_description: Allows users to see a history of administrative actions on the server + view_dashboard: View Dashboard + view_dashboard_description: Allows users to access the dashboard and various metrics view_devops: DevOps + view_devops_description: Allows users to access Sidekiq and pgHero dashboards + title: Roles + rules: + add_new: Add rule + delete: Delete + description_html: While most claim to have read and agree to the terms of service, usually people do not read through until after a problem arises. Make it easier to see your server's rules at a glance by providing them in a flat bullet point list. Try to keep individual rules short and simple, but try not to split them up into many separate items either. + edit: Edit rule + empty: No server rules have been defined yet. + title: Server rules + settings: + about: + manage_rules: Manage server rules + registrations: + title: Registrations + registrations_mode: + modes: + approved: Approval required for sign up + none: Nobody can sign up + open: Anyone can sign up + title: Server Settings + site_uploads: + delete: Delete uploaded file + destroyed_msg: Site upload successfully deleted! + statuses: + account: Author + application: Application + back_to_account: Back to account page + back_to_report: Back to report page + batch: + remove_from_report: Remove from report + report: Report + deleted: Deleted + favourites: Favourites + history: Version history + in_reply_to: Replying to + trends: + tags: + listable: Can be suggested + no_tag_selected: No tags were changed as none were selected + not_listable: Won't be suggested + not_trendable: Won't appear under trends + not_usable: Cannot be used + peaked_on_and_decaying: Peaked on %{date}, now decaying + title: Trending hashtags + trendable: Can appear under trends + trending_rank: 'Trending #%{rank}' + usable: Can be used + usage_comparison: Used %{today} times today, compared to %{yesterday} yesterday + used_by_over_week: + one: Used by one person over the last week + other: Used by %{count} people over the last week + title: Trends + trending: Trending + warning_presets: + add_new: Add new + delete: Delete + edit_preset: Edit warning preset + empty: You haven't defined any warning presets yet. + title: Manage warning presets + webhooks: + add_new: Add endpoint + delete: Delete + description_html: A webhook enables Mastodon to push real-time notifications about chosen events to your own application, so your application can automatically trigger reactions. + disable: Disable + disabled: Disabled + edit: Edit endpoint + empty: You don't have any webhook endpoints configured yet. + enable: Enable + enabled: Active + enabled_events: + one: 1 enabled event + other: "%{count} enabled events" + events: Events + new: New webhook + rotate_secret: Rotate secret + secret: Signing secret + status: Status + title: Webhooks + webhook: Webhook + admin_mailer: + new_appeal: + actions: + delete_statuses: to delete their posts + disable: to freeze their account + mark_statuses_as_sensitive: to mark their posts as sensitive + none: a warning + sensitive: to mark their account as sensitive + silence: to limit their account + suspend: to suspend their account + body: "%{target} is appealing a moderation decision by %{action_taken_by} from %{date}, which was %{type}. They wrote:" + next_steps: You can approve the appeal to undo the moderation decision, or ignore it. + subject: "%{username} is appealing a moderation decision on %{instance}" + new_pending_account: + body: The details of the new account are below. You can approve or reject this application. + subject: New account up for review on %{instance} (%{username}) + new_report: + body: "%{reporter} has reported %{target}" + body_remote: Someone from %{domain} has reported %{target} + subject: New report for %{instance} (#%{id}) + new_trends: + body: 'The following items need a review before they can be displayed publicly:' + new_trending_links: + title: Trending links + new_trending_statuses: + title: Trending posts + new_trending_tags: + no_approved_tags: There are currently no approved trending hashtags. + requirements: 'Any of these candidates could surpass the #%{rank} approved trending hashtag, which is currently #%{lowest_tag_name} with a score of %{lowest_tag_score}.' + title: Trending hashtags + subject: New trends up for review on %{instance} + aliases: + add_new: Create alias + created_msg: Successfully created a new alias. You can now initiate the move from the old account. + deleted_msg: Successfully removed the alias. Moving from that account to this one will no longer be possible. + empty: You have no aliases. + hint_html: If you want to move from another account to this one, here you can create an alias, which is required before you can proceed with moving followers from the old account to this one. This action by itself is harmless and reversible. The account migration is initiated from the old account. + remove: Unlink alias + appearance: + advanced_web_interface: Advanced web interface + advanced_web_interface_hint: 'If you want to make use of your entire screen width, the advanced web interface allows you to configure many different columns to see as much information at the same time as you want: Home, notifications, federated timeline, any number of lists and hashtags.' + animations_and_accessibility: Animations and accessibility + confirmation_dialogs: Confirmation dialogues + discovery: Discovery + localization: + body: Mastodon is translated by volunteers. + guide_link: https://crowdin.com/project/mastodon + guide_link_text: Everyone can contribute. + sensitive_content: Sensitive content + toot_layout: Post layout + application_mailer: + notification_preferences: Change e-mail preferences + salutation: "%{name}," + settings: 'Change e-mail preferences: %{link}' + view: 'View:' + view_profile: View profile + view_status: View post + applications: + created: Application successfully created + destroyed: Application successfully deleted + logout: Logout + regenerate_token: Regenerate access token + token_regenerated: Access token successfully regenerated + warning: Be very careful with this data. Never share it with anyone! + your_token: Your access token + auth: + apply_for_account: Request an account + change_password: Password + confirmations: + wrong_email_hint: If that e-mail address is not correct, you can change it in account settings. + delete_account: Delete account + delete_account_html: If you wish to delete your account, you can proceed here. You will be asked for confirmation. + description: + prefix_invited_by_user: "@%{name} invites you to join this server of Mastodon!" + prefix_sign_up: Sign up on Mastodon today! + suffix: With an account, you will be able to follow people, post updates and exchange messages with users from any Mastodon server and more! + didnt_get_confirmation: Didn't receive confirmation instructions? + dont_have_your_security_key: Don't have your security key? + forgot_password: Forgot your password? + invalid_reset_password_token: Password reset token is invalid or expired. Please request a new one. + link_to_otp: Enter a two-factor code from your phone or a recovery code + link_to_webauth: Use your security key device + log_in_with: Log in with + login: Log in + logout: Logout + migrate_account: Move to a different account + migrate_account_html: If you wish to redirect this account to a different one, you can configure it here. + or_log_in_with: Or log in with + privacy_policy_agreement_html: I have read and agree to the privacy policy + providers: + cas: CAS + saml: SAML + register: Sign up + registration_closed: "%{instance} is not accepting new members" + resend_confirmation: Resend confirmation instructions + reset_password: Reset password + rules: + accept: Accept + back: Back + preamble: These are set and enforced by the %{domain} moderators. + title: Some ground rules. + security: Security + set_new_password: Set new password + setup: + email_below_hint_html: If the below e-mail address is incorrect, you can change it here and receive a new confirmation e-mail. + email_settings_hint_html: The confirmation e-mail was sent to %{email}. If that e-mail address is not correct, you can change it in account settings. + title: Setup + sign_in: + preamble_html: Sign in with your %{domain} credentials. If your account is hosted on a different server, you will not be able to log in here. + title: Sign in to %{domain} + sign_up: + preamble: With an account on this Mastodon server, you'll be able to follow any other person on the network, regardless of where their account is hosted. + title: Let's get you set up on %{domain}. + status: + account_status: Account status + confirming: Waiting for e-mail confirmation to be completed. + functional: Your account is fully operational. + pending: Your application is pending review by our staff. This may take some time. You will receive an e-mail if your application is approved. + redirecting_to: Your account is inactive because it is currently redirecting to %{acct}. + view_strikes: View past strikes against your account + too_fast: Form submitted too fast, try again. + use_security_key: Use security key + authorize_follow: + already_following: You are already following this account + already_requested: You have already sent a follow request to that account + error: Unfortunately, there was an error looking up the remote account + follow: Follow + follow_request: 'You have sent a follow request to:' + following: 'Success! You are now following:' + post_follow: + close: Or, you can just close this window. + return: Show the user's profile + web: Go to web + title: Follow %{acct} + challenge: + confirm: Continue + hint_html: "Tip: We won't ask you for your password again for the next hour." + invalid_password: Invalid password + prompt: Confirm password to continue + crypto: + errors: + invalid_key: is not a valid Ed25519 or Curve25519 key + invalid_signature: is not a valid Ed25519 signature + date: + formats: + default: "%b %d, %Y" + with_month_name: "%B %d, %Y" + datetime: + distance_in_words: + about_x_hours: "%{count}h" + about_x_months: "%{count}mo" + about_x_years: "%{count}y" + almost_x_years: "%{count}y" + half_a_minute: Just now + less_than_x_minutes: "%{count}m" + less_than_x_seconds: Just now + over_x_years: "%{count}y" + x_days: "%{count}d" + x_minutes: "%{count}m" + x_months: "%{count}mo" + x_seconds: "%{count}s" + deletes: + challenge_not_passed: The information you entered was not correct + confirm_password: Enter your current password to verify your identity + confirm_username: Enter your username to confirm the procedure + proceed: Delete account + success_msg: Your account was successfully deleted + warning: + before: 'Before proceeding, please read these notes carefully:' + caches: Content that has been cached by other servers may persist + data_removal: Your posts and other data will be permanently removed + email_change_html: You can change your e-mail address without deleting your account + email_contact_html: If it still doesn't arrive, you can e-mail %{email} for help + email_reconfirmation_html: If you are not receiving the confirmation e-mail, you can request it again + irreversible: You will not be able to restore or reactivate your account + more_details_html: For more details, see the privacy policy. + username_available: Your username will become available again + username_unavailable: Your username will remain unavailable + disputes: + strikes: + action_taken: Action taken + appeal: Appeal + appeal_approved: This strike has been successfully appealed and is no longer valid + appeal_rejected: The appeal has been rejected + appeal_submitted_at: Appeal submitted + appealed_msg: Your appeal has been submitted. If it is approved, you will be notified. + appeals: + submit: Submit appeal + approve_appeal: Approve appeal + associated_report: Associated report + created_at: Dated + description_html: These are actions taken against your account and warnings that have been sent to you by the staff of %{instance}. + recipient: Addressed to + reject_appeal: Reject appeal + status: 'Post #%{id}' + status_removed: Post already removed from system + title: "%{action} from %{date}" + title_actions: + delete_statuses: Post removal + disable: Freezing of account + mark_statuses_as_sensitive: Marking of posts as sensitive + none: Warning + sensitive: Marking of account as sensitive + silence: Limitation of account + suspend: Suspension of account + your_appeal_approved: Your appeal has been approved + your_appeal_pending: You have submitted an appeal + your_appeal_rejected: Your appeal has been rejected + domain_validator: + invalid_domain: is not a valid domain name errors: '400': The request you submitted was invalid or malformed. '403': You don't have permission to view this page. '404': The page you are looking for isn't here. '406': This page is not available in the requested format. '410': The page you were looking for doesn't exist here anymore. + '422': + content: Security verification failed. Are you blocking cookies? + title: Security verification failed '429': Too many requests + '500': + content: We're sorry, but something went wrong on our end. + title: This page is not correct '503': The page could not be served due to a temporary server failure. + noscript_html: To use the Mastodon web application, please enable JavaScript. Alternatively, try one of the native apps for Mastodon for your platform. + existing_username_validator: + not_found: could not find a local user with that username + not_found_multiple: could not find %{usernames} + exports: + archive_takeout: + date: Date + download: Download your archive + hint_html: You can request an archive of your posts and uploaded media. The exported data will be in the ActivityPub format, readable by any compliant software. You can request an archive every 7 days. + in_progress: Compiling your archive... + request: Request your archive + size: Size + blocks: You block + bookmarks: Bookmarks + csv: CSV + domain_blocks: Domain blocks + lists: Lists + mutes: You mute + storage: Media storage + featured_tags: + add_new: Add new + errors: + limit: You have already featured the maximum number of hashtags + hint_html: "What are featured hashtags? They are displayed prominently on your public profile and allow people to browse your public posts specifically under those hashtags. They are a great tool for keeping track of creative works or long-term projects." + filters: + contexts: + account: Profiles + home: Home and lists + notifications: Notifications + public: Public timelines + thread: Conversations + edit: + add_keyword: Add keyword + keywords: Keywords + statuses: Individual posts + statuses_hint_html: This filter applies to select individual posts regardless of whether they match the keywords below. Review or remove posts from the filter. + title: Edit filter + errors: + deprecated_api_multiple_keywords: These parameters cannot be changed from this application because they apply to more than one filter keyword. Use a more recent application or the web interface. + invalid_context: None or invalid context supplied + index: + contexts: Filters in %{contexts} + delete: Delete + empty: You have no filters. + expires_in: Expires in %{distance} + expires_on: Expires on %{date} + keywords: + one: "%{count} keyword" + other: "%{count} keywords" + statuses: + one: "%{count} post" + other: "%{count} posts" + statuses_long: + one: "%{count} individual post hidden" + other: "%{count} individual posts hidden" + title: Filters + new: + save: Save new filter + title: Add new filter + statuses: + back_to_filter: Back to filter + batch: + remove: Remove from filter + index: + hint: This filter applies to select individual posts regardless of other criteria. You can add more posts to this filter from the web interface. + title: Filtered posts + generic: + all: All + all_items_on_page_selected_html: + one: "%{count} item on this page is selected." + other: All %{count} items on this page are selected. + all_matching_items_selected_html: + one: "%{count} item matching your search is selected." + other: All %{count} items matching your search are selected. + changes_saved_msg: Changes successfully saved! + copy: Copy + delete: Delete + deselect: Deselect all + none: None + order_by: Order by + save_changes: Save changes + select_all_matching_items: + one: Select %{count} item matching your search. + other: Select all %{count} items matching your search. + today: today + validation_errors: + one: Something isn't quite right yet! Please review the error below + other: Something isn't quite right yet! Please review %{count} errors below + imports: + errors: + invalid_csv_file: 'Invalid CSV file. Error: %{error}' + over_rows_processing_limit: contains more than %{count} rows + modes: + merge: Merge + merge_long: Keep existing records and add new ones + overwrite: Overwrite + overwrite_long: Replace current records with the new ones + preface: You can import data that you have exported from another server, such as a list of the people you are following or blocking. + success: Your data was successfully uploaded and will be processed in due time + types: + blocking: Blocking list + bookmarks: Bookmarks + domain_blocking: Domain blocking list + following: Following list + muting: Muting list + upload: Upload + invites: + delete: Deactivate + expired: Expired + expires_in: + '1800': 30 minutes + '21600': 6 hours + '3600': 1 hour + '43200': 12 hours + '604800': 1 week + '86400': 1 day + expires_in_prompt: Never + generate: Generate invite link + invited_by: 'You were invited by:' + max_uses: + one: 1 use + other: "%{count} uses" + max_uses_prompt: No limit + prompt: Generate and share links with others to grant access to this server + table: + expires_at: Expires + uses: Uses + title: Invite people + lists: + errors: + limit: You have reached the maximum number of lists + login_activities: + authentication_methods: + otp: two-factor authentication app + password: password + sign_in_token: e-mail security code + webauthn: security keys + description_html: If you see activity that you don't recognise, consider changing your password and enabling two-factor authentication. + empty: No authentication history available + failed_sign_in_html: Failed sign-in attempt with %{method} from %{ip} (%{browser}) + successful_sign_in_html: Successful sign-in with %{method} from %{ip} (%{browser}) + title: Authentication history + media_attachments: + validations: + images_and_video: Cannot attach a video to a post that already contains images + not_ready: Cannot attach files that have not finished processing. Try again in a moment! + too_many: Cannot attach more than 4 files + migrations: + acct: Moved to + cancel: Cancel redirect + cancel_explanation: Cancelling the redirect will re-activate your current account, but will not bring back followers that have been moved to that account. + cancelled_msg: Successfully cancelled the redirect. + errors: + already_moved: is the same account you have already moved to + missing_also_known_as: is not an alias of this account + move_to_self: cannot be current account + not_found: could not be found + on_cooldown: You are on cooldown + followers_count: Followers at time of move + incoming_migrations: Moving from a different account + incoming_migrations_html: To move from another account to this one, first you need to create an account alias. + moved_msg: Your account is now redirecting to %{acct} and your followers are being moved over. + not_redirecting: Your account is not redirecting to any other account currently. + on_cooldown: You have recently migrated your account. This function will become available again in %{count} days. + past_migrations: Past migrations + proceed_with_move: Move followers + redirected_msg: Your account is now redirecting to %{acct}. + redirecting_to: Your account is redirecting to %{acct}. + set_redirect: Set redirect + warning: + backreference_required: The new account must first be configured to back-reference this one + before: 'Before proceeding, please read these notes carefully:' + cooldown: After moving there is a waiting period during which you will not be able to move again + disabled_account: Your current account will not be fully usable afterwards. However, you will have access to data export as well as re-activation. + followers: This action will move all followers from the current account to the new account + only_redirect_html: Alternatively, you can only put up a redirect on your profile. + other_data: No other data will be moved automatically + redirect: Your current account's profile will be updated with a redirect notice and be excluded from searches + moderation: + title: Moderation + move_handler: + carry_blocks_over_text: This user moved from %{acct}, which you had blocked. + carry_mutes_over_text: This user moved from %{acct}, which you had muted. + copy_account_note_text: 'This user moved from %{acct}, here were your previous notes about them:' + navigation: + toggle_menu: Toggle menu + notification_mailer: + admin: + report: + subject: "%{name} submitted a report" + sign_up: + subject: "%{name} signed up" + favourite: + body: 'Your post was favourited by %{name}:' + subject: "%{name} favourited your post" + title: New favourite + follow: + body: "%{name} is now following you!" + subject: "%{name} is now following you" + title: New follower + follow_request: + action: Manage follow requests + body: "%{name} has requested to follow you" + subject: 'Pending follower: %{name}' + title: New follow request + mention: + action: Reply + body: 'You were mentioned by %{name} in:' + subject: You were mentioned by %{name} + title: New mention + poll: + subject: A poll by %{name} has ended + reblog: + body: 'Your post was boosted by %{name}:' + subject: "%{name} boosted your post" + title: New boost + status: + subject: "%{name} just posted" + update: + subject: "%{name} edited a post" + notifications: + email_events: Events for e-mail notifications + email_events_hint: 'Select events that you want to receive notifications for:' + other_settings: Other notifications settings + number: + human: + decimal_units: + format: "%n%u" + units: + billion: B + million: M + quadrillion: Q + thousand: K + trillion: T + otp_authentication: + code_hint: Enter the code generated by your authenticator app to confirm + description_html: If you enable two-factor authentication using an authenticator app, logging in will require you to be in possession of your phone, which will generate tokens for you to enter. + enable: Enable + instructions_html: "Scan this QR code into Google Authenticator or a similar TOTP app on your phone. From now on, that app will generate tokens that you will have to enter when logging in." + manual_instructions: 'If you can''t scan the QR code and need to enter it manually, here is the plain-text secret:' + setup: Set up + wrong_code: The entered code was invalid! Are server time and device time correct? + pagination: + newer: Newer + next: Next + older: Older + prev: Prev + truncate: "…" + polls: + errors: + already_voted: You have already voted on this poll + duplicate_options: contain duplicate items + duration_too_long: is too far into the future + duration_too_short: is too soon + expired: The poll has already ended + invalid_choice: The chosen vote option does not exist + over_character_limit: cannot be longer than %{max} characters each + too_few_options: must have more than one item + too_many_options: can't contain more than %{max} items + preferences: + other: Other + posting_defaults: Posting defaults + public_timelines: Public timelines + privacy_policy: + title: Privacy Policy + reactions: + errors: + limit_reached: Limit of different reactions reached + unrecognized_emoji: is not a recognised emoji + relationships: + activity: Account activity + confirm_follow_selected_followers: Are you sure you want to follow selected followers? + confirm_remove_selected_followers: Are you sure you want to remove selected followers? + confirm_remove_selected_follows: Are you sure you want to remove selected follows? + dormant: Dormant + follow_failure: Could not follow some of the selected accounts. + follow_selected_followers: Follow selected followers + followers: Followers + following: Following + invited: Invited + last_active: Last active + most_recent: Most recent + moved: Moved + mutual: Mutual + primary: Primary + relationship: Relationship + remove_selected_domains: Remove all followers from the selected domains + remove_selected_followers: Remove selected followers + remove_selected_follows: Unfollow selected users + status: Account status + remote_follow: + missing_resource: Could not find the required redirect URL for your account + reports: + errors: + invalid_rules: does not reference valid rules + rss: + content_warning: 'Content warning:' + descriptions: + account: Public posts from @%{acct} + tag: 'Public posts tagged #%{hashtag}' + scheduled_statuses: + over_daily_limit: You have exceeded the limit of %{limit} scheduled posts for today + over_total_limit: You have exceeded the limit of %{limit} scheduled posts + too_soon: The scheduled date must be in the future sessions: + activity: Last activity + browser: Browser browsers: + alipay: Alipay blackberry: BlackBerry + chrome: Chrome + edge: Microsoft Edge + electron: Electron + firefox: Firefox + generic: Unknown browser + huawei_browser: Huawei Browser + ie: Internet Explorer + micro_messenger: MicroMessenger + nokia: Nokia S40 Ovi Browser + opera: Opera + otter: Otter + phantom_js: PhantomJS + qq: QQ Browser + safari: Safari uc_browser: UC Browser + unknown_browser: Unknown Browser + weibo: Weibo + current_session: Current session + description: "%{browser} on %{platform}" + explanation: These are the web browsers currently logged in to your Mastodon account. + ip: IP platforms: + adobe_air: Adobe Air + android: Android blackberry: BlackBerry chrome_os: ChromeOS + firefox_os: Firefox OS + ios: iOS + kai_os: KaiOS + linux: Linux + mac: macOS + unknown_platform: Unknown Platform + windows: Windows + windows_mobile: Windows Mobile + windows_phone: Windows Phone + revoke: Revoke + revoke_success: Session successfully revoked + title: Sessions + view_authentication_history: View authentication history of your account + settings: + account: Account + account_settings: Account settings + aliases: Account aliases + appearance: Appearance + authorized_apps: Authorised apps + back: Back to Mastodon + delete: Account deletion + development: Development + edit_profile: Edit profile + export: Data export + featured_tags: Featured hashtags + import: Import + import_and_export: Import and export + migrate: Account migration + notifications: Notifications + preferences: Preferences + profile: Profile + relationships: Follows and followers + statuses_cleanup: Automated post deletion + strikes: Moderation strikes + two_factor_authentication: Two-factor Auth + webauthn_authentication: Security keys + statuses: + attached: + audio: + one: "%{count} audio" + other: "%{count} audio" + description: 'Attached: %{attached}' + image: + one: "%{count} image" + other: "%{count} images" + video: + one: "%{count} video" + other: "%{count} videos" + boosted_from_html: Boosted from %{acct_link} + content_warning: 'Content warning: %{warning}' + default_language: Same as interface language + disallowed_hashtags: + one: 'contained a disallowed hashtag: %{tags}' + other: 'contained the disallowed hashtags: %{tags}' + edited_at_html: Edited %{date} + errors: + in_reply_not_found: The post you are trying to reply to does not appear to exist. + open_in_web: Open in web + over_character_limit: character limit of %{max} exceeded + pin_errors: + direct: Posts that are only visible to mentioned users cannot be pinned + limit: You have already pinned the maximum number of posts + ownership: Someone else's post cannot be pinned + reblog: A boost cannot be pinned + poll: + total_people: + one: "%{count} person" + other: "%{count} people" + total_votes: + one: "%{count} vote" + other: "%{count} votes" + vote: Vote + show_more: Show more + show_newer: Show newer + show_older: Show older + show_thread: Show thread + sign_in_to_participate: Sign in to participate in the conversation + title: '%{name}: "%{quote}"' + visibilities: + direct: Direct + private: Followers-only + private_long: Only show to followers + public: Public + public_long: Everyone can see + unlisted: Unlisted + unlisted_long: Everyone can see, but not listed on public timelines statuses_cleanup: + enabled: Automatically delete old posts + enabled_hint: Automatically deletes your posts once they reach a specified age threshold, unless they match one of the exceptions below + exceptions: Exceptions + explanation: Because deleting posts is an expensive operation, this is done slowly over time when the server is not otherwise busy. For this reason, your posts may be deleted a while after they reach the age threshold. + ignore_favs: Ignore favourites + ignore_reblogs: Ignore boosts + interaction_exceptions: Exceptions based on interactions + interaction_exceptions_explanation: Note that there is no guarantee for posts to be deleted if they go below the favourite or boost threshold after having once gone over them. + keep_direct: Keep direct messages + keep_direct_hint: Doesn't delete any of your direct messages + keep_media: Keep posts with media attachments + keep_media_hint: Doesn't delete any of your posts that have media attachments + keep_pinned: Keep pinned posts + keep_pinned_hint: Doesn't delete any of your pinned posts + keep_polls: Keep polls + keep_polls_hint: Doesn't delete any of your polls + keep_self_bookmark: Keep posts you bookmarked + keep_self_bookmark_hint: Doesn't delete your own posts if you have bookmarked them + keep_self_fav: Keep posts you favourited + keep_self_fav_hint: Doesn't delete your own posts if you have favourited them + min_age: + '1209600': 2 weeks + '15778476': 6 months + '2629746': 1 month + '31556952': 1 year + '5259492': 2 months + '604800': 1 week + '63113904': 2 years + '7889238': 3 months min_age_label: Age threshold min_favs: Keep posts favourited at least min_favs_hint: Doesn't delete any of your posts that has received at least this number of favourites. Leave blank to delete posts regardless of their number of favourites @@ -399,7 +1477,11 @@ en-GB: strikes: errors: too_late: It is too late to appeal this strike + tags: + does_not_match_previous_name: does not match the previous name themes: + contrast: Mastodon (High contrast) + default: Mastodon (Dark) mastodon-light: Mastodon (Light) time: formats: @@ -433,7 +1515,14 @@ en-GB: title: Appeal rejected backup_ready: explanation: You requested a full backup of your Mastodon account. It's now ready for download! + subject: Your archive is ready for download + title: Archive takeout suspicious_sign_in: + change_password: change your password + details: 'Here are details of the sign-in:' + explanation: We've detected a sign-in to your account from a new IP address. + further_actions_html: If this wasn't you, we recommend that you %{action} immediately and enable two-factor authentication to keep your account secure. + subject: Your account has been accessed from a new IP address title: A new sign-in warning: appeal: Submit an appeal @@ -478,12 +1567,13 @@ en-GB: title: Welcome aboard, %{name}! users: follow_limit_reached: You cannot follow more than %{limit} people + go_to_sso_account_settings: Go to your identity provider's account settings invalid_otp_token: Invalid two-factor code otp_lost_help_html: If you lost access to both, you may get in touch with %{email} seamless_external_login: You are logged in via an external service, so password and e-mail settings are not available. signed_in_as: 'Signed in as:' verification: - explanation_html: 'You can verify yourself as the owner of the links in your profile metadata. For that, the linked website must contain a link back to your Mastodon profile. The link back must have a rel="me" attribute. The text content of the link does not matter. Here is an example:' + explanation_html: 'You can verify yourself as the owner of the links in your profile metadata. For that, the linked website must contain a link back to your Mastodon profile. After adding the link you may need to come back here and re-save your profile for the verification to take effect. The link back must have a rel="me" attribute. The text content of the link does not matter. Here is an example:' verification: Verification webauthn_credentials: add: Add new security key diff --git a/config/locales/en.yml b/config/locales/en.yml index 9f8ba7ce78..fa7fb6be08 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -812,6 +812,12 @@ en: message_html: You haven't defined any server rules. sidekiq_process_check: message_html: No Sidekiq process running for the %{value} queue(s). Please review your Sidekiq configuration + upload_check_privacy_error: + action: Check here for more information + message_html: "Your web server is misconfigured. The privacy of your users is at risk." + upload_check_privacy_error_object_storage: + action: Check here for more information + message_html: "Your object storage is misconfigured. The privacy of your users is at risk." tags: review: Review status updated_msg: Hashtag settings updated successfully @@ -1196,8 +1202,6 @@ en: index: hint: This filter applies to select individual posts regardless of other criteria. You can add more posts to this filter from the web interface. title: Filtered posts - footer: - trending_now: Trending now generic: all: All all_items_on_page_selected_html: @@ -1408,6 +1412,7 @@ en: confirm_remove_selected_followers: Are you sure you want to remove selected followers? confirm_remove_selected_follows: Are you sure you want to remove selected follows? dormant: Dormant + follow_failure: Could not follow some of the selected accounts. follow_selected_followers: Follow selected followers followers: Followers following: Following @@ -1447,6 +1452,7 @@ en: electron: Electron firefox: Firefox generic: Unknown browser + huawei_browser: Huawei Browser ie: Internet Explorer micro_messenger: MicroMessenger nokia: Nokia S40 Ovi Browser @@ -1456,6 +1462,7 @@ en: qq: QQ Browser safari: Safari uc_browser: UC Browser + unknown_browser: Unknown Browser weibo: Weibo current_session: Current session description: "%{browser} on %{platform}" @@ -1468,9 +1475,10 @@ en: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: macOS - other: unknown platform + unknown_platform: Unknown Platform windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1683,12 +1691,13 @@ en: title: Welcome aboard, %{name}! users: follow_limit_reached: You cannot follow more than %{limit} people + go_to_sso_account_settings: Go to your identity provider's account settings invalid_otp_token: Invalid two-factor code otp_lost_help_html: If you lost access to both, you may get in touch with %{email} seamless_external_login: You are logged in via an external service, so password and e-mail settings are not available. signed_in_as: 'Signed in as:' verification: - explanation_html: 'You can verify yourself as the owner of the links in your profile metadata. For that, the linked website must contain a link back to your Mastodon profile. The link back must have a rel="me" attribute. The text content of the link does not matter. Here is an example:' + explanation_html: 'You can verify yourself as the owner of the links in your profile metadata. For that, the linked website must contain a link back to your Mastodon profile. After adding the link you may need to come back here and re-save your profile for the verification to take effect. The link back must have a rel="me" attribute. The text content of the link does not matter. Here is an example:' verification: Verification webauthn_credentials: add: Add new security key diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 151ca2429f..b381805a10 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -834,6 +834,7 @@ eo: other: Diskonita de %{count} personoj ekde lasta semajno title: Tendencantaj ligiloj usage_comparison: Diskonita %{today}-foje hodiau, sed estas %{yesterday} hierau + not_allowed_to_trend: Ne rajtas fariĝi furoraĵo only_allowed: Nur permesitas pending_review: Atendante revizion preview_card_providers: @@ -1197,8 +1198,6 @@ eo: index: hint: Ĉi tiu filtrilo kongruas kelkaj mesaĝoj sendepende de aliaj kriterioj. title: Filtritaj mesaĝoj - footer: - trending_now: Nunaj furoraĵoj generic: all: Ĉio all_items_on_page_selected_html: @@ -1326,8 +1325,8 @@ eo: sign_up: subject: "%{name} registriĝis" favourite: - body: "%{name} stelumis vian mesaĝon:" - subject: "%{name} stelumis vian mesaĝon" + body: "%{name} stelumis vian afiŝon:" + subject: "%{name} stelumis vian afiŝon" title: Nova stelumo follow: body: "%{name} nun sekvas vin!" @@ -1347,7 +1346,7 @@ eo: subject: Enketo de %{name} finitas reblog: body: 'Via mesaĝo estis diskonigita de %{name}:' - subject: "%{name} diskonigis vian mesaĝon" + subject: "%{name} diskonigis vian afiŝon" title: Nova diskonigo status: subject: "%{name} ĵus afiŝis" @@ -1408,6 +1407,7 @@ eo: confirm_remove_selected_followers: Ĉu vi certas, ke vi volas forigi la elektitajn sekvantojn? confirm_remove_selected_follows: Ĉu vi certas, ke vi volas forigi la elektitajn sekvatojn? dormant: Dormanta + follow_failure: Ne eblis sekvi iom da la elektitaj kontoj. follow_selected_followers: Sekvi selektitajn sekvantojn followers: Sekvantoj following: Sekvatoj @@ -1447,6 +1447,7 @@ eo: electron: Electron firefox: Firefox generic: Nekonata retumilo + huawei_browser: Retumilo Huawei ie: Internet Explorer micro_messenger: MicroMessenger nokia: Nokia S40 Ovi Browser @@ -1456,6 +1457,7 @@ eo: qq: QQ Browser safari: Safari uc_browser: UC Browser + unknown_browser: Nekonata retumilo weibo: Weibo current_session: Nuna seanco description: "%{browser} en %{platform}" @@ -1468,9 +1470,10 @@ eo: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: Mac - other: nekonata substrato + unknown_platform: Nekonata platformo windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 8d934011cd..fce42cf96c 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -812,6 +812,12 @@ es-AR: message_html: No definiste ninguna regla del servidor. sidekiq_process_check: message_html: No hay ningún proceso Sidekiq en ejecución para la/s cola/s %{value}. Por favor, revisá tu configuración de Sidekiq + upload_check_privacy_error: + action: Revisá acá para más información + message_html: "Tu servidor web está mal configurado. La privacidad de tus usuarios está en riesgo." + upload_check_privacy_error_object_storage: + action: Revisá acá para más información + message_html: "El almacenamiento de tu objeto está mal configurado. La privacidad de tus usuarios está en riesgo." tags: review: Estado de revisión updated_msg: La configuración de la etiqueta se actualizó exitosamente @@ -1196,8 +1202,6 @@ es-AR: index: hint: Este filtro se aplica a la selección de mensajes individuales, independientemente de otros criterios. Podés agregar más mensajes a este filtro desde la interface web. title: Mensajes filtrados - footer: - trending_now: Tendencia ahora generic: all: Todas all_items_on_page_selected_html: @@ -1407,6 +1411,7 @@ es-AR: confirm_remove_selected_followers: "¿Estás seguro que querés quitar a los seguidores seleccionados?" confirm_remove_selected_follows: "¿Estás seguro que querés quitar a las cuentas seguidas seleccionadas?" dormant: Inactivas + follow_failure: No se pudieron seguir algunas de las cuentas seleccionadas. follow_selected_followers: Seguir a los seguidores seleccionados followers: Seguidores following: Siguiendo @@ -1446,6 +1451,7 @@ es-AR: electron: Electron firefox: Mozilla Firefox generic: "[Navegador web desconocido]" + huawei_browser: Navegador Huawei ie: Internet Explorer micro_messenger: MicroMessenger nokia: Navegador web de Nokia S40 Ovi @@ -1455,6 +1461,7 @@ es-AR: qq: QQ Browser safari: Safari uc_browser: UC Browser + unknown_browser: "[Navegador web desconocido]" weibo: Weibo current_session: Sesión actual description: "%{browser} en %{platform}" @@ -1467,9 +1474,10 @@ es-AR: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: GNU/Linux mac: macOS - other: "[Plataforma desconocida]" + unknown_platform: "[Plataforma desconocida]" windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1682,12 +1690,13 @@ es-AR: title: "¡Bienvenido a bordo, %{name}!" users: follow_limit_reached: No podés seguir a más de %{limit} cuentas + go_to_sso_account_settings: Andá a la configuración de cuenta de tu proveedor de identidad invalid_otp_token: Código de dos factores no válido otp_lost_help_html: Si perdiste al acceso a ambos, podés ponerte en contacto con %{email} seamless_external_login: Iniciaste sesión desde un servicio externo, así que la configuración de contraseña y correo electrónico no están disponibles. signed_in_as: 'Iniciaste sesión como:' verification: - explanation_html: 'Podés verificarte a vos mismo como el propietario de los enlaces en los metadatos de tu perfil. Para eso, el sitio web del enlace debe contener un enlace de vuelta a tu perfil de Mastodon. El enlace en tu sitio debe tener un atributo rel="me". El contenido del texto del enlace no importa. Acá tenés un ejemplo:' + explanation_html: 'Podés verificarte a vos mismo como el propietario de los enlaces en los metadatos de tu perfil. Para eso, el sitio web del enlace debe contener un enlace de vuelta a tu perfil de Mastodon. Después de agregar el enlace, puede que tengás que volver acá y volver a guardar los cambios en tu perfil para que la verificación surta efecto. El enlace en tu sitio debe tener un atributo rel="me". El contenido del texto del enlace no importa. Acá tenés un ejemplo:' verification: Verificación webauthn_credentials: add: Agregar nueva llave de seguridad diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 1267c49172..077a0192d3 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -812,6 +812,12 @@ es-MX: message_html: No ha definido ninguna regla del servidor. sidekiq_process_check: message_html: No hay ningún proceso Sidekiq en ejecución para la(s) cola(s) %{value}. Por favor, revise su configuración de Sidekiq + upload_check_privacy_error: + action: Para más información aquí + message_html: "Su servidor web no está configurado. Está en riesgo la privacidad de sus usuarios." + upload_check_privacy_error_object_storage: + action: Para más información aquí + message_html: "Su almacenamiento no está configurado. Está en riesgo la privacidad de sus usuarios." tags: review: Estado de revisión updated_msg: Hashtags actualizados exitosamente @@ -1196,8 +1202,6 @@ es-MX: index: hint: Este filtro se aplica a la selección de publicaciones individuales independientemente de otros criterios. Puede añadir más publicaciones a este filtro desde la interfaz web. title: Publicaciones filtradas - footer: - trending_now: Tendencia ahora generic: all: Todos all_items_on_page_selected_html: @@ -1407,6 +1411,7 @@ es-MX: confirm_remove_selected_followers: "¿Estás seguro de que quieres eliminar a los seguidores seleccionados?" confirm_remove_selected_follows: "¿Estás seguro de que quieres eliminar los seguidos seleccionados?" dormant: Inactivo + follow_failure: No se pudo seguir algunas de las cuentas seleccionadas. follow_selected_followers: Seguir a los seguidores seleccionados followers: Seguidores following: Siguiendo @@ -1446,6 +1451,7 @@ es-MX: electron: Electron firefox: Firefox generic: Desconocido + huawei_browser: Navegador Huawei ie: Internet Explorer micro_messenger: MicroMessenger nokia: Navegador de Nokia S40 Ovi @@ -1455,6 +1461,7 @@ es-MX: qq: Navegador QQ safari: Safari uc_browser: Navegador UC + unknown_browser: Navegador desconocido weibo: Weibo current_session: Sesión actual description: "%{browser} en %{platform}" @@ -1467,9 +1474,10 @@ es-MX: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: GNU Linux mac: Mac - other: Desconocido + unknown_platform: Plataforma desconocida windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1682,12 +1690,13 @@ es-MX: title: Te damos la bienvenida a bordo, %{name}! users: follow_limit_reached: No puedes seguir a más de %{limit} personas + go_to_sso_account_settings: Diríjete a la configuración de la cuenta de su proveedor de identidad invalid_otp_token: Código de dos factores incorrecto otp_lost_help_html: Si perdiste al acceso a ambos, puedes ponerte en contancto con %{email} seamless_external_login: Has iniciado sesión desde un servicio externo, así que los ajustes de contraseña y correo no están disponibles. signed_in_as: 'Sesión iniciada como:' verification: - explanation_html: 'Puedes verificarte a ti mismo como el dueño de los links en los metadatos de tu perfil . Para eso, el sitio vinculado debe contener un vínculo a tu perfil de Mastodon. El vínculo en tu sitio debe tener un atributo rel="me". El texto del vínculo no importa. Aquí un ejemplo:' + explanation_html: 'Puedes verificarte a ti mismo como el dueño de los links en los metadatos de tu perfil. Para eso, el sitio enlazado debe contener un enlace a tu perfil de Mastodon. Después de añadir el enlace, necesitarás regresar aquí y volver a guardar tu perfil para que la verificación tenga efecto. El enlace en tu sitio debe tener un atributo rel="me". El texto del contenido del enlace no importa. Aquí un ejemplo:' verification: Verificación webauthn_credentials: add: Agregar nueva clave de seguridad diff --git a/config/locales/es.yml b/config/locales/es.yml index f87042792f..22b760fec3 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -812,6 +812,12 @@ es: message_html: No ha definido ninguna regla del servidor. sidekiq_process_check: message_html: No hay ningún proceso Sidekiq en ejecución para la(s) cola(s) %{value}. Por favor, revise su configuración de Sidekiq + upload_check_privacy_error: + action: Haga clic aquí para obtener más información + message_html: "Su servidor web está mal configurado. La privacidad de sus usuarios está en riesgo." + upload_check_privacy_error_object_storage: + action: Haga clic aquí para obtener más información + message_html: "El almacenamiento de su objeto está mal configurado. La privacidad de sus usuarios está en riesgo." tags: review: Estado de revisión updated_msg: Hashtags actualizados exitosamente @@ -1196,8 +1202,6 @@ es: index: hint: Este filtro se aplica a la selección de publicaciones individuales independientemente de otros criterios. Puede añadir más publicaciones a este filtro desde la interfaz web. title: Publicaciones filtradas - footer: - trending_now: Tendencia ahora generic: all: Todos all_items_on_page_selected_html: @@ -1407,6 +1411,7 @@ es: confirm_remove_selected_followers: "¿Estás seguro de que quieres eliminar los seguidores seleccionados?" confirm_remove_selected_follows: "¿Estás seguro de que quieres eliminar los seguidos seleccionados?" dormant: Inactivo + follow_failure: No se pudieron seguir algunas de las cuentas seleccionadas. follow_selected_followers: Seguir a los seguidores seleccionados followers: Seguidores following: Siguiendo @@ -1446,6 +1451,7 @@ es: electron: Electron firefox: Firefox generic: Desconocido + huawei_browser: Navegador Huawei ie: Internet Explorer micro_messenger: MicroMessenger nokia: Navegador de Nokia S40 Ovi @@ -1455,6 +1461,7 @@ es: qq: Navegador QQ safari: Safari uc_browser: Navegador UC + unknown_browser: Navegador Desconocido weibo: Weibo current_session: Sesión actual description: "%{browser} en %{platform}" @@ -1467,9 +1474,10 @@ es: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: GNU Linux mac: Mac - other: Desconocido + unknown_platform: Plataforma Desconocida windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1682,12 +1690,13 @@ es: title: Te damos la bienvenida a bordo, %{name}! users: follow_limit_reached: No puedes seguir a más de %{limit} personas + go_to_sso_account_settings: Diríjase a la configuración de la cuenta de su proveedor de identidad invalid_otp_token: Código de dos factores incorrecto otp_lost_help_html: Si perdiste al acceso a ambos, puedes ponerte en contancto con %{email} seamless_external_login: Has iniciado sesión desde un servicio externo, así que los ajustes de contraseña y correo no están disponibles. signed_in_as: 'Sesión iniciada como:' verification: - explanation_html: 'Puedes verificarte a ti mismo como el dueño de los links en los metadatos de tu perfil . Para eso, el sitio vinculado debe contener un vínculo a tu perfil de Mastodon. El vínculo en tu sitio debe tener un atributo rel="me". El texto del vínculo no importa. Aquí un ejemplo:' + explanation_html: 'Puedes verificarte a ti mismo como propietario de los enlaces en los metadatos de tu perfil. Para ello, el sitio web vinculado debe contener un enlace a tu perfil de Mastodon. Después de añadir el enlace, es posible que debas volver aquí y volver a guardar tu perfil para que la verificación surta efecto. El enlace de tu sitio debe tener un atributo rel="me". El contenido textual del enlace no tiene relevancia. Aquí un ejemplo:' verification: Verificación webauthn_credentials: add: Agregar nueva clave de seguridad diff --git a/config/locales/et.yml b/config/locales/et.yml index 1b5910154e..ad3af525b4 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -600,7 +600,7 @@ et: created_at: Teavitatud delete_and_resolve: Kustuta postitused forwarded: Edastatud - forwarded_to: Edastatud domeenile %{domain} + forwarded_to: Edastatud %{domain} domeeni mark_as_resolved: Märgi lahendatuks mark_as_sensitive: Märgi kui tundlik sisu mark_as_unresolved: Märgi lahendamata @@ -812,6 +812,12 @@ et: message_html: Serverireegleid pole defineeritud. sidekiq_process_check: message_html: Ühtegi Sidekiq protsessi pole %{value} järjekorra jaoks. Sidekiq seadistus vajab üle vaatamist + upload_check_privacy_error: + action: Klõpsa lisainfo saamiseks siia + message_html: "Veebiserver on valesti seadistatud. Kasutajate privaatsus on ohustatud." + upload_check_privacy_error_object_storage: + action: Klõpsa lisainfo saamiseks siia + message_html: "Objektihoidla on valesti seadistatud. Kasutajate privaatsus on ohustatud." tags: review: Vaata olek üle updated_msg: Sildi sätted edukalt uuendatud @@ -979,7 +985,7 @@ et: delete_account: Konto kustutamine delete_account_html: Kui soovid oma konto kustutada, siis jätka siit. Pead kustutamise eraldi kinnitama. description: - prefix_invited_by_user: "@%{name} kutsub Teid liituma selle Mastodoni serveriga!" + prefix_invited_by_user: "@%{name} kutsub sind liituma selle Mastodoni serveriga!" prefix_sign_up: Loo Mastodoni konto juba täna! suffix: Kasutajakontoga saad jälgida inimesi, postitada uudiseid ning pidada kirjavahetust ükskõik millise Mastodoni serveri kasutajatega ja muudki! didnt_get_confirmation: Ei saanud kinnituse juhendeid? @@ -1196,8 +1202,6 @@ et: index: hint: See filter kehtib üksikute postituste valimisel, sõltumata muudest kriteeriumidest. Sellesse filtrisse saab veebiliidese kaudu rohkem postitusi lisada. title: Filtreeritud postitused - footer: - trending_now: Praegu trendikad generic: all: Kõik all_items_on_page_selected_html: @@ -1250,7 +1254,7 @@ et: '86400': 1 päev expires_in_prompt: Mitte kunagi generate: Loo - invited_by: 'Teid kutsus:' + invited_by: 'Sind kutsus:' max_uses: one: 1 kasutus other: "%{count} kasutust" @@ -1334,13 +1338,13 @@ et: title: Uus jälgija follow_request: action: Halda jälgimistaotlusi - body: "%{name} soovib Teid jälgida" + body: "%{name} soovib sind jälgida" subject: 'Ootav jälgija: %{name}' title: Uus jälgimistaotlus mention: action: Vasta - body: "%{name} mainis Teid:" - subject: "%{name} mainis Teid" + body: "%{name} mainis sind:" + subject: "%{name} mainis sind" title: Uus mainimine poll: subject: "%{name} küsitlus lõppes" @@ -1407,6 +1411,7 @@ et: confirm_remove_selected_followers: Oled kindel, et soovid eemaldada valitud jälgijad? confirm_remove_selected_follows: Oled kindel, et soovid eemaldada valitud jälgitavad? dormant: Seisev + follow_failure: Mõne valitud konto jälgimine polnud võimalik. follow_selected_followers: Valitud jälgijate jälgimine followers: Jälgijad following: Jälgib @@ -1446,6 +1451,7 @@ et: electron: Electron firefox: Firefox generic: Tundmatu veebilehitseja + huawei_browser: Huawei veebilehitseja ie: Internet Explorer micro_messenger: MicroMessenger nokia: Nokia S40 Ovi Browser @@ -1455,6 +1461,7 @@ et: qq: QQ Browser safari: Safari uc_browser: UC Browser + unknown_browser: Tundmatu veebilehitseja weibo: Weibo current_session: Praegune seanss description: "%{browser} platvormil %{platform}" @@ -1467,9 +1474,10 @@ et: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: Mac - other: tundmatu platvorm + unknown_platform: Tundmatu platvorm windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1687,12 +1695,13 @@ et: title: Tere tulemast, %{name}! users: follow_limit_reached: Ei saa jälgida rohkem kui %{limit} inimest + go_to_sso_account_settings: Mine oma idenditeedipakkuja kontosätetesse invalid_otp_token: Vale kaheastmeline võti otp_lost_help_html: Kui kaotasid ligipääsu mõlemale, saad võtta ühendust %{email}-iga seamless_external_login: Välise teenuse kaudu sisse logides pole salasõna ja e-posti sätted saadaval. signed_in_as: 'Sisse logitud kasutajana:' verification: - explanation_html: 'Saad kinnitada ennast oma profiili veebiviidete omanikuna. Selleks peab viidatud veebilehel olema link tagasi su Mastodoni profiilile. Tagasi saatval lingil peab olema rel="me" atribuut. Lingi tekstiline sisu ei ole oluline. Siin on üks näide:' + explanation_html: 'Saad kinnitada ennast oma profiili metaandmete veebiviidete omanikuna. Selleks peab lingitud veebilehel olema viide tagasi sinu Mastodoni profiilile. Pärast lingi lisamist pead võib-olla siia tagasi tulema ja oma profiili uuesti salvestama, et kinnitus jõustuks. Tagasiviide peab sisaldama rel="me" atribuuti. Lingi tekstiline sisu ei ole oluline. Siin on näide:' verification: Kinnitamine webauthn_credentials: add: Uue turvavõtme lisamine diff --git a/config/locales/eu.yml b/config/locales/eu.yml index b9a9482bf5..b2e87cc8ad 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -814,6 +814,12 @@ eu: message_html: Ez duzu zerbitzariaren araurik definitu. sidekiq_process_check: message_html: Ez da ari Sidekiq prozesurik exekutatzen %{value} ilad(et)an. Egiaztatu Sidekiq konfigurazioa + upload_check_privacy_error: + action: Ikus hemen informazio gehiagorako + message_html: "Zure zerbitzaria ez dago ongi konfiguratua. Zure erabiltzaileen pribatutasuna arriskuan dago." + upload_check_privacy_error_object_storage: + action: Ikus hemen informazio gehiagorako + message_html: "Zure objektuen biltegiratzea ez dago ongi konfiguratua. Zure erabiltzaileen pribatutasuna arriskuan dago." tags: review: Berrikusketaren egoera updated_msg: Traola-ezarpenak ongi eguneratu dira @@ -1198,8 +1204,6 @@ eu: index: hint: Iragazki honek banako bidalketei eragiten die, beste kriterioak badaude ere. Bidalketa gehiago gehitu ditzakezu iragazkira web interfazetik. title: Iragazitako bidalketak - footer: - trending_now: Joera orain generic: all: Denak all_items_on_page_selected_html: @@ -1409,6 +1413,7 @@ eu: confirm_remove_selected_followers: Ziur al zaude hautatutako jarraitzaileak ezabatu nahi dituzula? confirm_remove_selected_follows: Ziur al zaude hautatutako jarraipenak ezabatu nahi dituzula? dormant: Ez aktiboa + follow_failure: Ezin izan dira aukeratutako kontu batzuk jarraitu. follow_selected_followers: Jarraitu hautatutako jarraitzaileak followers: Jarraitzaileak following: Jarraitzen @@ -1448,6 +1453,7 @@ eu: electron: Electron firefox: Firefox generic: Nabigatzaile ezezaguna + huawei_browser: Huawei nabigatzailea ie: Internet Explorer micro_messenger: MicroMessenger nokia: Nokia S40 Ovi nabigatzailea @@ -1457,6 +1463,7 @@ eu: qq: QQ nabigatzailea safari: Safari uc_browser: UC nabigatzailea + unknown_browser: Nabigatzaile ezezaguna weibo: Weibo current_session: Uneko saioa description: "%{browser} - %{platform}" @@ -1469,9 +1476,10 @@ eu: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: Mac - other: plataforma ezezaguna + unknown_platform: Plataforma ezezaguna windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1684,12 +1692,13 @@ eu: title: Ongi etorri, %{name}! users: follow_limit_reached: Ezin dituzu %{limit} pertsona baino gehiago jarraitu + go_to_sso_account_settings: Jo zure identitate-hornitzaileko kontuaren ezarpenetara invalid_otp_token: Bi faktoreetako kode baliogabea otp_lost_help_html: 'Bietara sarbidea galdu baduzu, jarri kontaktuan hemen: %{email}' seamless_external_login: Kanpo zerbitzu baten bidez hasi duzu saioa, beraz pasahitza eta e-mail ezarpenak ez daude eskuragarri. signed_in_as: 'Saioa honela hasita:' verification: - explanation_html: 'Ezin duzu zure burua zure profileko metadatuen esteken jabe gisa egiaztatu. Horretarako, estekatutako webgunean zure Mastodon profilera daraman esteka bat egon behar du. Mastodonera daraman esteka horrekderrigorrez rel="me" artibutua izan behar du . Estekaren testuak ez du axola. Hona adibide bat:' + explanation_html: 'Zure profileko metadatuetako esteken jabe zarela egiazta dezakezu. Horretarako, webguneak zure Mastodoneko profilaren esteka eduki behar du. Esteka webgunean erantsi ondoren, aldaketak berriro gorde beharko dituzu egiaztapena burutu ahal izateko. Estekak rel="me" atributua eduki behar du. Estekaren testu-edukia ez da aintzat hartzen. Hemen duzu adibide bat:' verification: Egiaztaketa webauthn_credentials: add: Gehitu segurtasun gako berria diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 88366c7b95..4fc9ef5ab2 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -1,7 +1,7 @@ --- fa: about: - about_mastodon_html: 'شبکهٔ اجتماعی آینده: بدون تبلیغات، بدون شنود از طرف شرکت‌ها، طراحی اخلاق‌مدار، و معماری غیرمتمرکز! با ماستودون صاحب داده‌های خودتان باشید!' + about_mastodon_html: 'شبکه‌ی اجتماعی آینده: بدون تبلیغات، بدون شنود از طرف شرکت‌ها، طراحی اخلاق‌مدار، و معماری غیرمتمرکز! با ماستودون صاحب داده‌های خودتان باشید!' contact_missing: تنظیم نشده contact_unavailable: موجود نیست hosted_on: ماستودون، میزبانی‌شده روی %{domain} @@ -91,6 +91,7 @@ fa: moderation: active: فعّال all: همه + disabled: غیرفعال pending: منتظر silenced: محدود suspended: تعلیق شده @@ -128,6 +129,7 @@ fa: search: جستجو search_same_email_domain: دیگر کاربران با دامنهٔ رایانامهٔ یکسان search_same_ip: دیگر کاربران با IP یکسان + security: امنیت security_measures: only_password: فقط گذرواژه password_and_2fa: گذرواژه و ۲عاملی @@ -201,6 +203,7 @@ fa: reject_user: رد کاربر remove_avatar_user: برداشتن تصویر نمایه reopen_report: بازگشایی گزارش + resend_user: ارسال مجدد رایانامه تایید reset_password_user: بازنشانی گذرواژه resolve_report: رفع گزارش sensitive_account: علامت‌گذاری رسانه در حسابتان به عنوان حساس @@ -215,6 +218,7 @@ fa: update_custom_emoji: به‌روز رسانی اموجی سفارشی update_domain_block: به‌روزرسانی مسدودسازی دامنه update_status: به‌روز رسانی وضعیت + update_user_role: به روزرسانی نقش actions: approve_appeal_html: "%{name} درخواست تجدیدنظر تصمیم مدیر را از %{target} پذیرفت" approve_user_html: "%{name} ثبت نام %{target} را تایید کرد" @@ -425,6 +429,7 @@ fa: title: سیاست‌های محتوا dashboard: instance_accounts_dimension: حساب‌های پیش‌تر پی‌گیری شده + instance_accounts_measure: حساب‌های ذخیره شده instance_followers_measure: پی‌گیرندگانمان در آن‌جا instance_follows_measure: پی‌گیرندگانشان در این‌جا instance_languages_dimension: زبان‌های برتر @@ -511,9 +516,11 @@ fa: assign_to_self: به عهدهٔ من بگذار assigned: مدیر عهده‌دار by_target_domain: دامنهٔ حساب گزارش‌شده + cancel: لغو category: دسته comment: none: هیچ + confirm: تأیید created_at: گزارش‌شده delete_and_resolve: حذف فرسته‌ها forwarded: هدایت شده @@ -549,6 +556,7 @@ fa: add_new: افزودن نقش categories: administration: مدیریت + devops: DevOps invites: دعوت‌ها moderation: نظارت special: ویژه @@ -890,8 +898,6 @@ fa: title: پالایه‌ها new: title: افزودن پالایهٔ جدید - footer: - trending_now: پرطرفدار generic: all: همه changes_saved_msg: تغییرات با موفقیت ذخیره شدند! @@ -1126,7 +1132,6 @@ fa: ios: آی‌اواس linux: لینوکس mac: مک - other: سیستم ناشناخته windows: ویندوز windows_mobile: ویندوز همراه windows_phone: تلفن ویندوزی @@ -1314,7 +1319,6 @@ fa: seamless_external_login: شما با یک سرویس خارج از مجموعه وارد شده‌اید، به همین دلیل تنظیمات ایمیل و رمز برای شما در دسترس نیست. signed_in_as: 'واردشده به نام:' verification: - explanation_html: 'شما می‌توانید خود را به عنوان مالک صفحه‌ای که در نمایه‌تان به آن پیوند داده‌اید تأیید کنید. برای این کار، صفحه‌ای که به آن پیوند داده‌اید، خودش باید پیوندی به نمایهٔ ماستودون شما داشته باشد. پیوند در آن صفحه باید عبارت rel="me"‎ را به عنوان مشخّصهٔ (attribute) در خود داشته باشد. محتوای متن پیوند اهمتی ندارد. یک نمونه از چنین پیوندی:' verification: تأیید webauthn_credentials: add: افزودن کلید امنیتی diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 8a77fa8a57..7cfac413e8 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -134,7 +134,7 @@ fi: search: Hae search_same_email_domain: Muut käyttäjät, joilla on sama sähköpostin verkkotunnus search_same_ip: Muut käyttäjät, joilla on sama IP-osoite - security: Suojaus + security: Turvallisuus security_measures: only_password: Vain salasana password_and_2fa: Salasana ja kaksivaiheinen tunnistautuminen @@ -316,9 +316,9 @@ fi: copy: Kopioi copy_failed_msg: Emojista ei voitu tehdä paikallista kopiota create_new_category: Luo uusi kategoria - created_msg: Emojin luonti onnistui! + created_msg: Emojin luotu! delete: Poista - destroyed_msg: Emojon poisto onnistui! + destroyed_msg: Emojo poistettu! disable: Poista käytöstä disabled: Ei käytössä disabled_msg: Emojin poisto käytöstä onnistui @@ -333,7 +333,7 @@ fi: title: Lisää uusi mukautettu emoji no_emoji_selected: Emojeita ei muutettu, koska yhtään ei valittu not_permitted: Sinulla ei ole oikeutta suorittaa tätä toimintoa - overwrite: Kirjoita yli + overwrite: Korvaa shortcode: Lyhennekoodi shortcode_hint: Vähintään kaksi merkkiä, vain kirjaimia, numeroita ja alaviivoja title: Mukautetut emojit @@ -812,6 +812,12 @@ fi: message_html: Et ole määrittänyt mitään palvelimen sääntöä. sidekiq_process_check: message_html: Ei ole Sidekiq-prosessia käynnissä jonossa %{value}. Tarkista Sidekiq-asetukset + upload_check_privacy_error: + action: Katso täältä lisätietoja + message_html: "Verkkopalvelimesi on määritetty virheellisesti, ja käyttäjiesi yksityisyys on vaarassa." + upload_check_privacy_error_object_storage: + action: Katso täältä lisätietoja + message_html: "Objektivarastosi on määritetty virheellisesti, ja käyttäjiesi yksityisyys on vaarassa." tags: review: Tarkista tila updated_msg: Aihetunnisteen asetukset päivitetty onnistuneesti @@ -954,7 +960,7 @@ fi: body: Mastodonin ovat kääntäneet vapaaehtoiset. guide_link: https://crowdin.com/project/mastodon guide_link_text: Kaikki voivat osallistua. - sensitive_content: Arkaluontoista sisältöä + sensitive_content: Arkaluonteinen sisältö toot_layout: Viestin asettelu application_mailer: notification_preferences: Muuta sähköpostiasetuksia @@ -966,7 +972,7 @@ fi: applications: created: Sovelluksen luonti onnistui destroyed: Sovelluksen poisto onnistui - logout: Uloskirjautuminen + logout: Kirjaudu ulos regenerate_token: Luo pääsytunnus uudelleen token_regenerated: Pääsytunnuksen uudelleenluonti onnistui warning: Säilytä tietoa hyvin. Älä milloinkaan jaa sitä muille! @@ -1022,7 +1028,7 @@ fi: status: account_status: Tilin tila confirming: Odotetaan sähköpostivahvistuksen valmistumista. - functional: Tilisi on täysin toimiva. + functional: Tilisi on täysin toiminnassa. pending: Hakemuksesi odottaa henkilökuntamme tarkastusta. Tämä voi kestää jonkin aikaa. Saat sähköpostiviestin, jos hakemuksesi on hyväksytty. redirecting_to: Tilisi ei ole aktiivinen, koska se ohjaa tällä hetkellä kohteeseen %{acct}. view_strikes: Näytä tiliäsi koskevia aiempia varoituksia @@ -1152,7 +1158,7 @@ fi: featured_tags: add_new: Lisää uusi errors: - limit: Olet jo lisännyt enimmäismäärän aihetunnisteita + limit: Olet jo nostanut esille enimmäismäärän aihetunnisteita hint_html: "Mitä ovat näkyvillä olevat hashtagit eli aihetunnisteet? Ne ovat näkyvissä julkisessa profiilissasi ja niiden avulla ihmiset voivat selata julkisia viestejäsi nimenomaan näiden aihetunnisteiden alla. Ne auttavat esimerkiksi luovan työn tai pitkäaikaisten projektien seurannassa." filters: contexts: @@ -1196,8 +1202,6 @@ fi: index: hint: Tämä suodatin koskee yksittäisten viestien valintaa muista kriteereistä riippumatta. Voit lisätä lisää viestejä tähän suodattimeen web-käyttöliittymästä. title: Suodatetut viestit - footer: - trending_now: Suosittua nyt generic: all: Kaikki all_items_on_page_selected_html: @@ -1262,7 +1266,7 @@ fi: title: Kutsu ihmisiä lists: errors: - limit: Olet saavuttanut listojen enimmäismäärän + limit: Sinulla on enimmäismäärä listoja login_activities: authentication_methods: otp: kaksivaiheinen todennussovellus @@ -1407,6 +1411,7 @@ fi: confirm_remove_selected_followers: Haluatko varmasti poistaa valitut seuraajat? confirm_remove_selected_follows: Haluatko varmasti poistaa valitut seuraamiset? dormant: Horroksessa + follow_failure: Joitain valittuja tilejä ei voitu seurata. follow_selected_followers: Seuraa valittuja seuraajia followers: Seuraajat following: Seuratut @@ -1446,6 +1451,7 @@ fi: electron: Electron firefox: Firefox generic: Tuntematon selain + huawei_browser: Huawei-selain ie: Internet Explorer micro_messenger: MicroMessenger nokia: Nokia S40 Ovi -selain @@ -1455,6 +1461,7 @@ fi: qq: QQ Browser safari: Safari uc_browser: UC Browser + unknown_browser: Tuntematon selain weibo: Weibo current_session: Nykyinen istunto description: "%{browser} alustalla %{platform}" @@ -1467,9 +1474,10 @@ fi: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: macOS - other: tuntematon alusta + unknown_platform: Tuntematon alusta windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1582,7 +1590,7 @@ fi: '7889238': 3 kuukautta min_age_label: Ikäraja min_favs: Pidä viestit suosikeissa vähintään - min_favs_hint: Ei poista julkaisujasi, joita on tykätty vähintään näin monta kertaa. Jätä tyhjäksi poistaaksesi julkaisut tykkäyskertojen määrästä riippumatta + min_favs_hint: Toiminto ei poista julkaisujasi, joista on tykätty vähintään tässä kohtaa määritellyn monesti. Jätä kenttä tyhjäksi, jos haluat poistaa julkaisut tykkäyksistä huolimatta min_reblogs: Pidä viestit tehostettuna vähintään min_reblogs_hint: Ei poista yhtään viestiäsi, jota on tehostettu vähintään näin monta kertaa. Jätä tyhjäksi poistaaksesi viestejä riippumatta niiden tehosteiden määrästä stream_entries: @@ -1602,7 +1610,7 @@ fi: formats: default: "%d.%m.%Y klo %H.%M" month: "%b %Y" - time: "%H:%M" + time: "%H.%M" two_factor_authentication: add: Lisää disable: Poista käytöstä @@ -1682,12 +1690,13 @@ fi: title: Tervetuloa mukaan, %{name}! users: follow_limit_reached: Et voi seurata yli %{limit} henkilöä + go_to_sso_account_settings: Avaa identiteettitarjoajasi tiliasetukset invalid_otp_token: Virheellinen kaksivaiheisen todentamisen koodi otp_lost_help_html: Jos sinulla ei ole pääsyä kumpaankaan, voit ottaa yhteyttä osoitteeseen %{email} seamless_external_login: Olet kirjautunut ulkoisen palvelun kautta, joten salasana- ja sähköpostiasetukset eivät ole käytettävissä. signed_in_as: 'Kirjautunut tilillä:' verification: - explanation_html: 'Voit vahvistaa olevasi profiilisi metatiedoissa olevien linkkien omistaja.. Tätä varten linkitetyn verkkosivuston täytyy sisältää linkki takaisin Mastodon-profiiliisi. Palauttavalla linkillä täytyy olla rel="me"-arvo. Linkin tekstisisällöllä ei ole merkitystä. Tässä on esimerkki:' + explanation_html: 'Voit vahvistaa olevasi profiilisi metatietojen sisältämien linkkien omistaja. Tätä varten linkitetyn verkkosivuston täytyy sisältää paluulinkki Mastodon-profiiliisi. Paluulinkillä täytyy olla määre rel="me". Linkin tekstisisällöllä ei ole merkitystä. Tässä esimerkki:' verification: Vahvistus webauthn_credentials: add: Lisää uusi suojausavain diff --git a/config/locales/fo.yml b/config/locales/fo.yml index db3aca3693..f969ac69ef 100644 --- a/config/locales/fo.yml +++ b/config/locales/fo.yml @@ -812,6 +812,12 @@ fo: message_html: Tú hevur ikki ásett nakrar ambætarareglur. sidekiq_process_check: message_html: Eingin Sidekiq gongd koyrir fyri %{value} bíðirøðina(r). Vinarliga eftirkanna Sidekiq uppsetingina + upload_check_privacy_error: + action: Kekka her fyri at fáa fleiri upplýsingar + message_html: "Vevambætarin hjá tær er skeivt uppsettur. Privatlívið hjá brúkarunum hjá tær er í vanda." + upload_check_privacy_error_object_storage: + action: Kekka her fyri at fáa fleiri upplýsingar + message_html: "Objekt-goymslan hjá tær er skeivt uppsett. Privatlívið hjá brúkarunum hjá tær er í vanda." tags: review: Eftirkanna støðu updated_msg: Frámerkjastillingar dagførdar @@ -1196,8 +1202,6 @@ fo: index: hint: Hetta filtrið er galdandi fyri útvaldar stakar postar óansæð aðrar treytir. Tú kanst leggja fleiri postar afturat hesum filtrinum frá vevmarkamótinum. title: Filtreraðir postar - footer: - trending_now: Rák beint nú generic: all: Alt all_items_on_page_selected_html: @@ -1407,6 +1411,7 @@ fo: confirm_remove_selected_followers: Vil tú veruliga strika valdu fylgjararnar? confirm_remove_selected_follows: Vil tú veruliga strika valdu fylgingarnar? dormant: Í dvala + follow_failure: Tað bar ikki til at fylgja øllum valdu kontunum. follow_selected_followers: Fylg valdu fylgjarum followers: Fylgjarar following: Fylgi @@ -1446,6 +1451,7 @@ fo: electron: Electron firefox: Firefox generic: Ókendur kagi + huawei_browser: Huawei kagi ie: Internet Explorer micro_messenger: MicroMessenger nokia: Nokia S40 Ovi Browser @@ -1455,6 +1461,7 @@ fo: qq: QQ Browser safari: Safari uc_browser: UC Browser + unknown_browser: Ókendur kagi weibo: Weibo current_session: Verandi seta description: "%{browser} á %{platform}" @@ -1467,9 +1474,10 @@ fo: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: macOS - other: ókendur pallur + unknown_platform: Ókendur pallur windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1493,7 +1501,7 @@ fo: import_and_export: Innflyt og útflyt migrate: Flyting av kontu notifications: Fráboðanir - preferences: Sertokki + preferences: Stillingar profile: Vangi relationships: Fylging og fylgjarar statuses_cleanup: Sjálvvirkandi striking av postum @@ -1682,12 +1690,13 @@ fo: title: Vælkomin umborð, %{name}! users: follow_limit_reached: Tú kanst ikki fylgja fleiri enn %{limit} fólk + go_to_sso_account_settings: Far til kontustillingarnar hjá samleikaveitaranum hjá tær invalid_otp_token: Ógyldug tvey-stigs koda otp_lost_help_html: Hevur tú mist atgongd til bæði, so kanst tú koma í samband við %{email} seamless_external_login: Tú er ritað/ur inn umvegis eina uttanhýsis tænastu, so loyniorð og teldupoststillingar eru ikki tøkar. signed_in_as: 'Ritað/ur inn sum:' verification: - explanation_html: 'Tú kanst vátta teg sjálva/n sum eigara av leinkjunum í metadátunum á vanganum hjá tær. Til tess má leinkjaða vevstaðið innihalda eitt leinki aftur til Mastodon vangan hjá tær. Leinkið hava eina rel="me" viðseting. Tekstinnihaldið í leikinum er óviðkomandi. Her er eitt dømi:' + explanation_html: 'Tú kanst vátta teg sjálva/n sum eigara av leinkjunum í metadátunum á vanganum hjá tær. Til tess má leinkjaða vevstaðið innihalda eitt leinki aftur til Mastodon vangan hjá tær. Eftir at tú hevur lagt leinkið afturat, so er møguliga neyðugt at koma aftur her og goyma vangan hjá tær av nýggjum fyri at fáa góðkenningina at rigga. Leinkið hava eina rel="me" viðseting. Tekstinnihaldið í leikinum er óviðkomandi. Her er eitt dømi:' verification: Váttan webauthn_credentials: add: Legg nýggjan trygdarlykil afturat diff --git a/config/locales/fr-QC.yml b/config/locales/fr-QC.yml index 76788b995d..27d400b9f5 100644 --- a/config/locales/fr-QC.yml +++ b/config/locales/fr-QC.yml @@ -812,6 +812,12 @@ fr-QC: message_html: Vous n'avez pas défini de règles pour le serveur. sidekiq_process_check: message_html: Aucun processus Sidekiq en cours d'exécution pour la/les file(s) d'attente %{value}. Veuillez vérifier votre configuration de Sidekiq + upload_check_privacy_error: + action: Pour plus d'informations, cliquez ici + message_html: "Votre serveur web est mal configuré. La confidentialité de vos utilisateurs est en péril." + upload_check_privacy_error_object_storage: + action: Pour plus d'informations, cliquez ici + message_html: "Votre serveur web est mal configuré. La confidentialité de vos utilisateurs est en péril." tags: review: État du traitement updated_msg: Paramètres du hashtag mis à jour avec succès @@ -1196,8 +1202,6 @@ fr-QC: index: hint: Ce filtre s'applique à la sélection de messages individuels, indépendamment d'autres critères. Vous pouvez ajouter plus de messages à ce filtre à partir de l'interface Web. title: Messages filtrés - footer: - trending_now: Tendance en ce moment generic: all: Tous all_items_on_page_selected_html: @@ -1407,6 +1411,7 @@ fr-QC: confirm_remove_selected_followers: Voulez-vous vraiment supprimer les abonné⋅e⋅s sélectionné⋅e⋅s ? confirm_remove_selected_follows: Voulez-vous vraiment supprimer les abonnements sélectionnés ? dormant: Dormant + follow_failure: Impossibilité de suivre certains des comptes sélectionnés. follow_selected_followers: Suivre les abonné·e·s sélectionné·e·s followers: Abonné·e following: Abonnement @@ -1446,6 +1451,7 @@ fr-QC: electron: Electron firefox: Firefox generic: Navigateur inconnu + huawei_browser: Navigateur Huawei ie: Internet Explorer micro_messenger: MicroMessenger nokia: Nokia S40 Ovi Browser @@ -1455,6 +1461,7 @@ fr-QC: qq: QQ Browser safari: Safari uc_browser: UC Browser + unknown_browser: Navigateur inconnu weibo: Weibo current_session: Session courante description: "%{browser} sur %{platform}" @@ -1467,9 +1474,10 @@ fr-QC: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: Mac - other: système inconnu + unknown_platform: Plateforme inconnue windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1682,6 +1690,7 @@ fr-QC: title: Bienvenue à bord, %{name} ! users: follow_limit_reached: Vous ne pouvez pas suivre plus de %{limit} personnes + go_to_sso_account_settings: Accédez aux paramètres du compte de votre fournisseur d'identité invalid_otp_token: Le code d’authentification à deux facteurs est invalide otp_lost_help_html: Si vous perdez accès aux deux, vous pouvez contacter %{email} seamless_external_login: Vous êtes connecté via un service externe, donc les paramètres concernant le mot de passe et le courriel ne sont pas disponibles. diff --git a/config/locales/fr.yml b/config/locales/fr.yml index c3ec4bdc7a..667cd9b97b 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -812,6 +812,12 @@ fr: message_html: Vous n'avez pas défini de règles pour le serveur. sidekiq_process_check: message_html: Aucun processus Sidekiq en cours d'exécution pour la/les file(s) d'attente %{value}. Veuillez vérifier votre configuration de Sidekiq + upload_check_privacy_error: + action: Pour plus d'informations, cliquez ici + message_html: "Votre serveur web est mal configuré. La confidentialité de vos utilisateurs est en péril." + upload_check_privacy_error_object_storage: + action: Pour plus d'informations, cliquez ici + message_html: "Votre serveur web est mal configuré. La confidentialité de vos utilisateurs est en péril." tags: review: État du traitement updated_msg: Paramètres du hashtag mis à jour avec succès @@ -1196,8 +1202,6 @@ fr: index: hint: Ce filtre s'applique à la sélection de messages individuels, indépendamment d'autres critères. Vous pouvez ajouter plus de messages à ce filtre à partir de l'interface Web. title: Messages filtrés - footer: - trending_now: Tendance en ce moment generic: all: Tous all_items_on_page_selected_html: @@ -1407,6 +1411,7 @@ fr: confirm_remove_selected_followers: Voulez-vous vraiment supprimer les abonné⋅e⋅s sélectionné⋅e⋅s ? confirm_remove_selected_follows: Voulez-vous vraiment supprimer les abonnements sélectionnés ? dormant: Dormant + follow_failure: Impossibilité de suivre certains des comptes sélectionnés. follow_selected_followers: Suivre les abonné·e·s sélectionné·e·s followers: Abonné·e following: Abonnement @@ -1446,6 +1451,7 @@ fr: electron: Electron firefox: Firefox generic: Navigateur inconnu + huawei_browser: Navigateur Huawei ie: Internet Explorer micro_messenger: MicroMessenger nokia: Nokia S40 Ovi Browser @@ -1455,6 +1461,7 @@ fr: qq: QQ Browser safari: Safari uc_browser: UC Browser + unknown_browser: Navigateur inconnu weibo: Weibo current_session: Session courante description: "%{browser} sur %{platform}" @@ -1467,9 +1474,10 @@ fr: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: Mac - other: système inconnu + unknown_platform: Plateforme inconnue windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1682,6 +1690,7 @@ fr: title: Bienvenue à bord, %{name} ! users: follow_limit_reached: Vous ne pouvez pas suivre plus de %{limit} personnes + go_to_sso_account_settings: Accédez aux paramètres du compte de votre fournisseur d'identité invalid_otp_token: Le code d’authentification à deux facteurs est invalide otp_lost_help_html: Si vous perdez accès aux deux, vous pouvez contacter %{email} seamless_external_login: Vous êtes connecté via un service externe, donc les paramètres concernant le mot de passe et le courriel ne sont pas disponibles. diff --git a/config/locales/fy.yml b/config/locales/fy.yml index 45e15a4d2f..669da37aa2 100644 --- a/config/locales/fy.yml +++ b/config/locales/fy.yml @@ -812,6 +812,12 @@ fy: message_html: Jo hawwe foar dizze server gjin regels opsteld. sidekiq_process_check: message_html: Der draait gjin Sidekiq-proses foar de wachtrige(n) %{value}. Kontrolearje jo Sidekiq-konfiguraasje + upload_check_privacy_error: + action: Klik hjir foar mear ynformaasje + message_html: "Jo webserver is ferkeard konfigurearre. De privacy fan jo brûkers is yn gefaar." + upload_check_privacy_error_object_storage: + action: Klik hjir foar mear ynformaasje + message_html: "Jo objektûnthâld is ferkeard konfigurearre. De privacy fan jo brûkers is yn gefaar." tags: review: Steat beoardiele updated_msg: Hashtagynstellingen mei sukses bywurke @@ -1196,8 +1202,6 @@ fy: index: hint: Dit filter is fan tapassing om yndividuele berjochten te selektearjen, ûnôfhinklik fan oare kritearia. Jo kinne yn de webomjouwing mear berjochten oan dit filter tafoegje. title: Filtere berjochten - footer: - trending_now: Trends generic: all: Alle all_items_on_page_selected_html: @@ -1407,6 +1411,7 @@ fy: confirm_remove_selected_followers: Binne jo wis dat jo de selektearre folgers net mear folgje wolle? confirm_remove_selected_follows: Binne jo wis dat jo de selektearre folge accounts net mear folgje wolle? dormant: Slommerjend + follow_failure: Kin guon fan de selektearre accounts net folgje. follow_selected_followers: Selektearre folgers folgje followers: Folgers following: Folgjend @@ -1446,6 +1451,7 @@ fy: electron: Electron firefox: Firefox generic: Unbekende browser + huawei_browser: Huawei-browser ie: Internet Explorer micro_messenger: MicroMessenger nokia: Nokia S40 Ovi Browser @@ -1455,6 +1461,7 @@ fy: qq: QQ Browser safari: Safari uc_browser: UC Browser + unknown_browser: Unbekende browser weibo: Weibo current_session: Aktuele sesje description: "%{browser} op %{platform}" @@ -1467,9 +1474,10 @@ fy: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: macOS - other: ûnbekend platfoarm + unknown_platform: Unbekend platfoarm windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1682,12 +1690,13 @@ fy: title: Wolkom oan board %{name}! users: follow_limit_reached: Jo kinne net mear as %{limit} accounts folgje + go_to_sso_account_settings: Gean nei de accountynstellingen fan jo identiteitsprovider invalid_otp_token: Unjildige twa-stapstagongskoade otp_lost_help_html: As jo tagong ta beide kwytrekke binne, nim dan kontakt op fia %{email} seamless_external_login: Jo binne oanmeld fia in eksterne tsjinst, dêrom binne wachtwurden en e-mailynstellingen net beskikber. signed_in_as: 'Oanmeld as:' verification: - explanation_html: 'Jo kinne josels ferifiearje as de eigener fan de keppelingen yn de metadata fan jo profyl. Hjirfoar moat op de keppele website in keppeling werom nei jo Mastodon-profyl stean. Dizze keppeling moat it rel="me"-attribút befetsje. De omskriuwing fan de keppeling makket net út. Hjir is in foarbyld:' + explanation_html: 'Jo kinne josels ferifiearje as de eigener fan de keppelingen yn de metadata fan jo profyl. Hjirfoar moat op de keppele website in keppeling werom nei jo Mastodon-profyl stean. Nei it tafoegjen fan de keppeling moatte jo miskien hjir werom komme en jo profyl opnij bewarje om de ferifikaasje te befêstigjen. Dizze keppeling moat it rel="me"-attribút befetsje. De omskriuwing fan de keppeling makket net út. Hjir is in foarbyld:' verification: Ferifikaasje webauthn_credentials: add: Nije befeiligingskaai tafoegje diff --git a/config/locales/ga.yml b/config/locales/ga.yml index 4aa2ae98b9..f430379871 100644 --- a/config/locales/ga.yml +++ b/config/locales/ga.yml @@ -461,7 +461,6 @@ ga: ios: iOS linux: Linux mac: macOS - other: ardán anaithnid windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone diff --git a/config/locales/gd.yml b/config/locales/gd.yml index f47c99073d..2c07fa0679 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -95,6 +95,7 @@ gd: moderation: active: Gnìomhach all: Na h-uile + disabled: À comas pending: Ri dhèiligeadh silenced: Cuingichte suspended: À rèim @@ -139,6 +140,7 @@ gd: search: Lorg search_same_email_domain: Cleachdaichean eile aig a bheil an aon àrainn puist-d search_same_ip: Cleachdaichean eile aig a bheil an t-aon IP + security: Tèarainteachd security_measures: only_password: Facal-faire a-mhàin password_and_2fa: Facal-faire ’s dà-cheumnach @@ -168,7 +170,7 @@ gd: unsubscribe: Cuir crìoch air an fho-sgrìobhadh unsuspended_msg: Chaidh an cunntas aig %{username} a chur ann an rèim a-rithist username: Ainm-cleachdaiche - view_domain: Sealladh geàrr-chunntas na h-àrainn + view_domain: Seall geàrr-chunntas na h-àrainn warn: Thoir rabhadh web: Lìon whitelisted: Ceadaichte a chùm co-nasgaidh @@ -443,6 +445,7 @@ gd: resolve: Fuasgail an àrainn title: Bac àrainn puist-d ùr no_email_domain_block_selected: Cha deach bacadh àrainn puist-d sam bith atharrachadh o nach deach gin dhiubh a thaghadh + not_permitted: Chan eil seo ceadaichte resolved_dns_records_hint_html: Thèid ainm na h-àrainne fhuasgladh nan àrainnean MX a leanas agus an urra riutha-san gun gabh iad ri post-d. Ma bhacas tu àrainn MX, bacaidh seo an clàradh o sheòladh puist-d sam bith a chleachdas an aon àrainn MX fiù ’s ma bhios ainm àrainne eadar-dhealaichte ’ga sealltainn. Thoir an aire nach bac thu solaraichean puist-d mòra. resolved_through_html: Chaidh fuasgladh slighe %{domain} title: Àrainnean puist-d ’gam bacadh @@ -493,6 +496,7 @@ gd: content_policies: comment: Nòta taobh a-staigh description_html: "’S urrainn dhut poileasaidhean susbainte a mhìneachadh a thèid a chur an sàs air a h-uile cunntas on àrainn seo ’s a fo-àrainnean-se." + limited_federation_mode_description_html: "’S urrainn dhut taghadh an ceadaich thu co-nasgadh leis an àrainn seo gus nach ceadaich." policies: reject_media: Diùlt meadhanan reject_reports: Diùlt gearanan @@ -609,11 +613,13 @@ gd: assign_to_self: Iomruin dhomh-sa assigned: Maor iomruinte by_target_domain: Àrainn cunntas a’ ghearain + cancel: Sguir dheth category: Roinn-seòrsa category_description_html: Thèid iomradh a thoirt air adhbhar a’ ghearain mun chunntas/susbaint seo sa chonaltradh leis a’ chunntas mun a chaidh an gearan a thogail comment: none: Chan eil gin comment_description_html: 'Airson barrachd fiosrachaidh a sholar, sgrìobh %{name}:' + confirm: Dearbh confirm_action: Dearbh gnìomh na maorsainneachd an aghaidh @%{acct} created_at: Chaidh an gearan a dhèanamh delete_and_resolve: Sguab às na postaichean @@ -653,7 +659,7 @@ gd: actions: delete_html: Thoir air falbh na postaichean oilbheumach mark_as_sensitive_html: Cuir comharra gu bheil meadhanan nam postaichean oilbheumach frionasach - silence_html: Thèid cò ruigeas @%{acct} a chuingeachadh gu mòr air sgàth ’s nach fhaic ach an fheadhainn a bheil ’ga leantainn mu thràth no a tha a’ lorg na pròifil aca a làimh a’ phròifil is an t-susbaint aca. + silence_html: Thèid cò ruigeas @%{acct} a chuingeachadh gu mòr air sgàth ’s nach fhaic ach an fheadhainn a bheil ’ga leantainn mu thràth no a tha a’ lorg na pròifil aca a làimh a’ phròifil is an t-susbaint aca suspend_html: Thèid @%{acct} a chur à rèim agus cha ghabh a’ phròifil is an t-susbaint aca a ruigsinn no eadar-ghabhail close_report: 'Cuir comharra gun deach gearan #%{id} fhuasgladh' close_reports_html: Cuir comharra gun deach gach gearan an aghaidh @%{acct} fhuasgladh @@ -661,7 +667,7 @@ gd: preview_preamble_html: 'Gheibh @%{acct} rabhadh leis an t-susbaint seo:' record_strike_html: Clàraich rabhadh an aghaidh @%{acct} airson do chuideachadh ach am bi thu nas teinne le droch-ghiùlan on chunntas seo san àm ri teachd send_email_html: Cuir post-d rabhaidh gu @%{acct} - warning_placeholder: Adhbharan roghainneil eile air gnìomh na maorsainneachd + warning_placeholder: Adhbharan roghainneil eile air gnìomh na maorsainneachd. target_origin: Tùs cunntas a’ ghearain title: Gearanan unassign: Dì-iomruin @@ -820,6 +826,7 @@ gd: suspend: Chuir %{name} an cunntas aig %{target} à rèim appeal_approved: Air ath-thagradh appeal_pending: "’Ga ath-thagradh" + appeal_rejected: Chaidh ath-thagradh a dhiùltadh system_checks: database_schema_check: message_html: Tha imrichean stòir-dhàta ri dhèiligeadh ann. Ruith iad a dhèanamh cinnteach gum bi giùlan na h-aplacaid mar a bhiodhte ’n dùil @@ -833,6 +840,12 @@ gd: message_html: Cha do mhìnich thu riaghailtean an fhrithealaiche fhathast. sidekiq_process_check: message_html: Chan eil pròiseas Sidekiq sam bith a ruith dhan chiutha/dha na ciuthan %{value}. Thoir sùil air an rèiteachadh Sidekiq agad + upload_check_privacy_error: + action: Thoir sùil an-seo airson barrachd fiosrachaidh + message_html: "Chaidh am frithealaiche agad a dhroch-rèiteachadh. Tha prìobhaideachd an luchd-cleachdaidh agad fo chunnart." + upload_check_privacy_error_object_storage: + action: Thoir sùil an-seo airson barrachd fiosrachaidh + message_html: "Chaidh stòras nan oibseactan agad a dhroch-rèiteachadh. Tha prìobhaideachd an luchd-cleachdaidh agad fo chunnart." tags: review: Dèan lèirmheas air an staid updated_msg: Chaidh roghainnean nan tagaichean hais ùrachadh @@ -857,6 +870,7 @@ gd: two: Chaidh a cho-roinneadh le %{count} rè na seachdain seo chaidh title: Ceanglaichean a’ treandadh usage_comparison: Chaidh a cho-roinneadh %{today} tura(i)s an-diugh an coimeas ri %{yesterday} an-dè + not_allowed_to_trend: Chan fhaod seo treandadh only_allowed: An fheadhainn cheadaichte a-mhàin pending_review: A’ feitheamh air lèirmheas preview_card_providers: @@ -994,6 +1008,7 @@ gd: applications: created: Chaidh an t-iarrtas a chruthachadh destroyed: Chaidh an t-iarrtas a sguabadh às + logout: Clàraich a-mach regenerate_token: Ath-ghin an tòcan inntrigidh token_regenerated: Chaidh an tòcan inntrigidh ath-ghintinn warning: Bi glè chùramach leis an dàta seo. Na co-roinn le duine sam bith e! @@ -1030,6 +1045,8 @@ gd: resend_confirmation: Cuir an stiùireadh mun dearbhadh a-rithist reset_password: Ath-shuidhich am facal-faire rules: + accept: Gabh ris + back: Air ais preamble: Tha iad ’gan stèidheachadh is a chur an gnìomh leis na maoir aig %{domain}. title: Riaghailtean bunasach. security: Tèarainteachd @@ -1176,6 +1193,8 @@ gd: storage: Stòras mheadhanan featured_tags: add_new: Cuir fear ùr ris + errors: + limit: Bhrosnaich thu an uiread as motha de thagaichean hais mu thràth hint_html: "Dè th’ anns na tagaichean hais brosnaichte? Thèid an sealltainn gu follaiseach air a’ phròifil phoblach agad agus ’s urrainnear na postaichean poblach agad sa bheil na tagaichean hais sònraichte sin a bhrabhsadh leotha. ’S e deagh-acainn a th’ annta airson sùil a chumail air obair chruthachail no pròiseactan fada." filters: contexts: @@ -1225,8 +1244,6 @@ gd: index: hint: Bidh a’ chriathrag seo an sàs air postaichean fa leth ge b’ e dè na roghainnean eile. ’S urrainn dhut barrachd phostaichean a chur ris a’ chriathrag seo leis an eadar-aghaidh-lìn. title: Postaichean criathraichte - footer: - trending_now: A’ treandadh an-dràsta generic: all: Na h-uile all_items_on_page_selected_html: @@ -1299,6 +1316,9 @@ gd: expires_at: Falbhaidh an ùine air uses: Cleachdadh title: Thoir cuireadh do dhaoine + lists: + errors: + limit: Ràinig thu na tha ceadaichte dhut de liostaichean login_activities: authentication_methods: otp: aplacaid dearbhaidh dhà-cheumnaich @@ -1443,6 +1463,7 @@ gd: confirm_remove_selected_followers: A bheil thu cinnteach gu bheil thu airson an luchd-leantainn a thagh thu a thoirt air falbh? confirm_remove_selected_follows: A bheil thu cinnteach nach eil thu airson an fheadhainn a thagh thu a leantainn tuilleadh? dormant: Na thàmh + follow_failure: Cha deach le leantainn cuid dhe na cunntasan a thagh thu. follow_selected_followers: Lean an luchd-leantainn a thagh thu followers: Luchd-leantainn following: A’ leantainn @@ -1482,6 +1503,7 @@ gd: electron: Electron firefox: Firefox generic: Brabhsair nach aithne dhuinn + huawei_browser: Brabhsair Huawei ie: Internet Explorer micro_messenger: MicroMessenger nokia: Nokia S40 Ovi Browser @@ -1491,6 +1513,7 @@ gd: qq: QQ Browser safari: Safari uc_browser: UC Browser + unknown_browser: Brabhsair nach aithne dhuinn weibo: Weibo current_session: An seisean làithreach description: "%{browser} air %{platform}" @@ -1503,9 +1526,10 @@ gd: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: macOS - other: ùrlar nach aithne dhuinn + unknown_platform: Ùrlar nach aithne dhuinn windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1630,6 +1654,7 @@ gd: '7889238': 3 mìosan min_age_label: Stairsneach aoise min_favs: Cùm na tha ’na annsachd aig co-dhiù + min_favs_hint: Cha dèid gin dhe na postaichean agad a sguabadh às a tha ’nan annsachd an àireamh de thursan seo air a char as lugha. Fàg seo bàn airson postaichean a sguabadh às ge b’ e co mheud turas a tha iad ’nan annsachd min_reblogs: Cùm na tha ’ga bhrosnachadh le co-dhiù min_reblogs_hint: Cha dèid gin dhe na postaichean agad a sguabadh às a tha ’gam brosnachadh an àireamh de thursan seo air a char as lugha. Fàg seo bàn airson postaichean a sguabadh às ge b’ e co mheud turas a tha iad ’gam brosnachadh stream_entries: @@ -1729,12 +1754,13 @@ gd: title: Fàilte air bòrd, %{name}! users: follow_limit_reached: Chan urrainn dhut còrr is %{limit} daoine a leantainn + go_to_sso_account_settings: Tadhail air roghainnean cunntas solaraiche na dearbh-aithne agad invalid_otp_token: Còd dà-cheumnach mì-dhligheach otp_lost_help_html: Ma chaill thu an t-inntrigeadh dhan dà chuid diubh, ’s urrainn dhut fios a chur gu %{email} seamless_external_login: Rinn thu clàradh a-steach le seirbheis on taobh a-muigh, mar sin chan eil roghainnean an fhacail-fhaire ’s a’ phuist-d ri làimh dhut. signed_in_as: 'Chlàraich thu a-steach mar:' verification: - explanation_html: '’S urrainn dhut dearbhadh gur e seilbheadair nan ceanglaichean ann am meata-dàta na pròifil agad a th’ annad. Airson sin a dhèanamh, feumaidh ceangal air ais dhan phròifil Mastodon a bhith aig an làrach-lìn cheangailte. Feumaidh buadh rel="me" a bhith aig a’ cheangal air ais. Chan eil e gu diofar dè an t-susbaint a tha ann an teacsa a’ cheangail. Seo ball-eisimpleir dhut:' + explanation_html: '’S urrainn dhut dearbhadh gur e seilbheadair nan ceanglaichean ann am meata-dàta na pròifil agad a th’ annad. Airson sin a dhèanamh, feumaidh ceangal air ais dhan phròifil Mastodon a bhith aig an làrach-lìn cheangailte. Nuair a bhios tu air a’ cheangal a chur ris, dh’fhaoidte gum bi agad ri tilleadh an-seo agus a’ phròifil agad a shàbhaladh a-rithist mus obraich an dearbhadh. Feumaidh buadh rel="me" a bhith aig a’ cheangal air ais. Chan eil e gu diofar dè an t-susbaint a tha ann an teacsa a’ cheangail. Seo ball-eisimpleir dhut:' verification: Dearbhadh webauthn_credentials: add: Cuir iuchair tèarainteachd ùr ris diff --git a/config/locales/gl.yml b/config/locales/gl.yml index cdb128f927..aa451a6993 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -444,7 +444,7 @@ gl: private_comment_description_html: 'Para axudarche a lembrar de onde veñen os bloqueos importados, imos crealos engadindo o seguinte comentario privado: %{comment}' private_comment_template: Importada desde %{source} o %{date} title: Importar bloqueos de dominio - invalid_domain_block: 'Un ou varios dominios non se bloquearon debido ao seguintes erros: %{error}' + invalid_domain_block: 'Un ou varios dominios non se bloquearon debido ao seguinte erro(s): %{error}' new: title: Importar bloqueos de dominio no_file: Ningún ficheiro seleccionado @@ -476,7 +476,7 @@ gl: content_policies: comment: Nota interna description_html: Podes definir políticas acerca do contido que serán aplicadas a tódalas contas deste dominio e tódolos seus subdominios. - limited_federation_mode_description_html: Podes elexir se permites a federación con este dominio. + limited_federation_mode_description_html: Podes elexir se permites ou non a federación con este dominio. policies: reject_media: Rexeitar multimedia reject_reports: Rexeitar denuncias @@ -812,6 +812,12 @@ gl: message_html: Non tes definidas regras para o servidor. sidekiq_process_check: message_html: Non hai procesos Sidekiq a funcionar para a cola(s) %{value}. Revisa a túa configuración para Sidekiq + upload_check_privacy_error: + action: Mira aquí para máis información + message_html: "O teu servidor non está ben configurado. A privacidade das usuarias está en risco." + upload_check_privacy_error_object_storage: + action: Mira aquí para máis información + message_html: "A almacenaxe de obxectos está mal configurada. A privacidade das usuarias está en risco." tags: review: Estado de revisión updated_msg: Actualizaronse os axustes dos cancelos @@ -1196,8 +1202,6 @@ gl: index: hint: Este filtro aplícase para seleccionar publicacións individuais independentemente doutros criterios. Podes engadir máis publicacións a este filtro desde a interface web. title: Publicacións filtradas - footer: - trending_now: Tendencia agora generic: all: Todo all_items_on_page_selected_html: @@ -1407,6 +1411,7 @@ gl: confirm_remove_selected_followers: Tes a certeza de querer deixar de seguir as seguidoras seleccionadas? confirm_remove_selected_follows: Tes a certeza de querer eliminar os seguimentos seleccionados? dormant: En repouso + follow_failure: Non puido seguir algunha das contas seleccionadas. follow_selected_followers: Seguir seguidoras seleccionadas followers: Seguidoras following: A Seguir @@ -1446,6 +1451,7 @@ gl: electron: Electron firefox: Firefox generic: Navegador descoñecido + huawei_browser: Navegador Huawei ie: Internet Explorer micro_messenger: MicroMessenger nokia: Navegador Nokia S40 Ovi @@ -1455,6 +1461,7 @@ gl: qq: Navegador QQ safari: Safari uc_browser: Navegador QQ + unknown_browser: Navegador descoñecido weibo: Weibo current_session: Sesión actual description: "%{browser} en %{platform}" @@ -1467,9 +1474,10 @@ gl: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: Mac - other: plataforma descoñecida + unknown_platform: Plataforma descoñecida windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1682,12 +1690,13 @@ gl: title: Benvida, %{name}! users: follow_limit_reached: Non pode seguir a máis de %{limit} persoas + go_to_sso_account_settings: Ir aos axustes da conta no teu provedor de identidade invalid_otp_token: O código do segundo factor non é válido otp_lost_help_html: Se perdes o acceso a ambos, podes contactar con %{email} seamless_external_login: Accedeches a través dun servizo externo, polo que os axustes de contrasinal e email non están dispoñibles. signed_in_as: 'Rexistrada como:' verification: - explanation_html: 'Podes validarte a ti mesma como a dona das ligazóns nos metadatos do teu perfil. Para esto, o sitio web ligado debe conter unha ligazón de retorno ao perfil de Mastodon. Esta ligazón de retorno ten que ter un atributo rel="me". O texto da ligazón non importa. Aquí tes un exemplo:' + explanation_html: 'Podes validarte a ti mesma como a dona das ligazóns nos metadatos do perfil. Para isto, o sitio web ligado debe conter unha ligazón de retorno ao perfil de Mastodon. Despois de engadir a ligazón tes que volver aquí e volver a gardar o teu perfil para que a verificación tome efecto. A ligazón de retorno ten que ter un atributo rel="me". O texto da ligazón non ten importancia. Aquí tes un exemplo:' verification: Validación webauthn_credentials: add: Engadir nova chave de seguridade diff --git a/config/locales/he.yml b/config/locales/he.yml index 064e127a0d..ab53dc581f 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -840,6 +840,12 @@ he: message_html: לא הוגדרו שום כללי שרת. sidekiq_process_check: message_html: שום הליכי Sidekiq לא רצים עבור %{value} תור(ות). בחנו בבקשה את הגדרות Sidekiq + upload_check_privacy_error: + action: למידע נוסף + message_html: "שרת הווב שלך אינו מכוון כראוי. פרטיות המשתמשות והמשתמשים שלך בסכנה." + upload_check_privacy_error_object_storage: + action: למידע נוסף + message_html: "שרות אחסון הענן שלך אינו מוגדר כראוי. פרטיות המשתמשות והמשתמשים שלך בסכנה." tags: review: סקירת מצב updated_msg: הגדרות תגיות עודכנו בהצלחה @@ -1238,8 +1244,6 @@ he: index: hint: סנן זה חל באופן של בחירת הודעות בודדות ללא תלות בקריטריונים אחרים. תוכלו להוסיף עוד הודעות לסנן זה ממנשק הווב. title: הודעות שסוננו - footer: - trending_now: נושאים חמים generic: all: הכל all_items_on_page_selected_html: @@ -1459,6 +1463,7 @@ he: confirm_remove_selected_followers: האם את/ה בטוח/ה שברצונך להסיר את העוקבים שסומנו? confirm_remove_selected_follows: האם את/ה בטוח/ה שברצונך להסיר את הנעקבים שסומנו? dormant: רדומים + follow_failure: נכשלה העקיבה אחרי חלק מהחשבונות שבחרת. follow_selected_followers: עקוב אחר הנעקבים שנבחרו followers: עוקבים following: נעקבים @@ -1498,6 +1503,7 @@ he: electron: אלקטרון firefox: פיירפוקס generic: דפדפן לא ידוע + huawei_browser: דפדפן וואווי ie: אינטרנט אקספלורר micro_messenger: MicroMessenger nokia: Nokia S40 Ovi Browser @@ -1507,6 +1513,7 @@ he: qq: דפדפן QQ safari: ספארי uc_browser: דפדפן UC + unknown_browser: דפדפן לא מזוהה weibo: Weibo current_session: חיבור נוכחי description: "%{browser} על %{platform}" @@ -1519,9 +1526,10 @@ he: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: מערכת הפעלה KaiOS linux: לינוקס mac: macOS - other: סביבה לא ידועה + unknown_platform: פלטפורמה לא מזוהה windows: חלונות windows_mobile: חלונות מובייל windows_phone: טלפון חלונות @@ -1746,12 +1754,13 @@ he: title: ברוך/ה הבא/ה, %{name} ! users: follow_limit_reached: לא תוכל לעקוב אחר יותר מ %{limit} אנשים + go_to_sso_account_settings: מעבר לאפיוני החשבון שלך בשרת הזהות invalid_otp_token: קוד דו-שלבי שגוי otp_lost_help_html: אם איבדת גישה לשניהם, ניתן ליצור קשר ב-%{email} seamless_external_login: את.ה מחובר דרך שירות חיצוני, לכן אפשרויות הסיסמא והדוא"ל לא מאופשרות. signed_in_as: 'מחובר בתור:' verification: - explanation_html: 'ניתן לאמת את עצמך כבעלים של הקישורית במטא-נתונים של פרופילך. כדי לעשות זאת, האתר המקושר חייב להכיל קישורית חוזרת לפרופיל המסטודון שלך. הקישורית החוזרת חייבת להכיל תכונת rel="me". התוכן הטקסטואלי של הקישורית לא משנה. הנה דוגמא:' + explanation_html: 'תוכל/י לאמת את עצמך כבעל/ת הקישורים שבפרופיל שלך. לשם כך, על האתר המקושר להכיל קישור חוזר לפרופיל המסטודון שלך. אחרי הוספת הקישור ניתן לשוב לפה ולשמור מחדש את הפרופיל כדי להפעיל את אימות הקישור. הקישור החוזר חייב להכיל בקוד ה-HTML שלו את התכונה rel="me". התוכן הטקסטואלי של הקישור לא משנה. הנה דוגמא:' verification: אימות webauthn_credentials: add: הוספת מפתח אבטחה חדש diff --git a/config/locales/hi.yml b/config/locales/hi.yml index 50fae82bd8..809e425d83 100644 --- a/config/locales/hi.yml +++ b/config/locales/hi.yml @@ -1,5 +1,12 @@ --- hi: + admin: + system_checks: + upload_check_privacy_error: + message_html: " आपके वेब सर्वर का कन्फिगरेशन सही नहीं है। उपयोगकर्ताओं की निजता खतरे में है। " + upload_check_privacy_error_object_storage: + action: अधिक जानकारी हेतु यहां क्लिक करें। + message_html: " आपके वेब सर्वर का कन्फिगरेशन सही नहीं है। उपयोगकर्ताओं की निजता खतरे में है। " errors: '400': The request you submitted was invalid or malformed. '403': You don't have permission to view this page. @@ -8,3 +15,14 @@ hi: '410': The page you were looking for doesn't exist here anymore. '429': Too many requests '503': The page could not be served due to a temporary server failure. + relationships: + follow_failure: चुने हुए अकाउंट्स में से कुछ को फ़ॉलो नहीं किया जा सकता + sessions: + browsers: + huawei_browser: हुआवे ब्राउज़र + unknown_browser: अनजान ब्राउज़र + platforms: + kai_os: काइ ओएस + unknown_platform: अनजान प्लेटफॉर्म + verification: + explanation_html: 'आप अपने प्रोफाइल में इस्तेमाल किए गए लिंक वेरिफाई कर सकते हैं। इसके लिए आपके वेबसाइट पर आपके मॅस्टोडॉन प्रोफाइल का लिंक होना चाहिए। वेरिफिकेशन पूरा करने के लिए लिंक जोड़ने के बाद यहाँ वापस आकर अपना प्रोफाइल पुनः सेव करें। लिंक बैक में rel="me" अट्रीब्यूट ज़रूर होना चाहिए। लिंक पर लिखे टेक्स्ट से कोई मतलब नहीं। ये रहा उदाहरण:' diff --git a/config/locales/hr.yml b/config/locales/hr.yml index 0563712266..94cfb82aec 100644 --- a/config/locales/hr.yml +++ b/config/locales/hr.yml @@ -99,8 +99,6 @@ hr: title: Filteri new: title: Dodaj novi filter - footer: - trending_now: Popularno generic: all: Sve changes_saved_msg: Izmjene su uspješno sačuvane! @@ -167,8 +165,6 @@ hr: remote_follow: missing_resource: Nije moguće pronaći traženi URL preusmjeravanja za Vaš račun sessions: - platforms: - other: nepoznata platforma revoke: Opozovi revoke_success: Sesija je uspješno opozvana title: Sesije diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 620e8d6799..0ab763ce47 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -812,6 +812,12 @@ hu: message_html: Még nem definiáltál egy szerver szabályt sem. sidekiq_process_check: message_html: Nincs Sidekiq folyamat, mely a %{value} sorhoz van rendelve. Kérlek, nézd át a Sidekiq beállításait + upload_check_privacy_error: + action: Itt találsz több információt + message_html: "A webkiszolgálód félre van konfigurálva. Kockázat merül fel a felhasználóid adatainak biztonságával kapcsolatban." + upload_check_privacy_error_object_storage: + action: Itt találsz több információt + message_html: "Az objektumtárolód félre van konfigurálva. Kockázat merül fel a felhasználóid adatainak biztonságával kapcsolatban." tags: review: Engedélyezés állapota updated_msg: A hashtag beállításokat sikeresen frissítettük @@ -1196,8 +1202,6 @@ hu: index: hint: Ez a szűrő egyedi bejegyzések kiválasztására vonatkozik a megadott kritériumoktól függetlenül. Újabb bejegyzéseket adhatsz hozzá ehhez a szűrőhöz a webes felületen keresztül. title: Megszűrt bejegyzések - footer: - trending_now: Most felkapott generic: all: Mind all_items_on_page_selected_html: @@ -1407,6 +1411,7 @@ hu: confirm_remove_selected_followers: Biztos, hogy el szeretnéd távolítani a kiválasztott követőket? confirm_remove_selected_follows: Biztos, hogy el szeretnéd távolítani a kiválasztott követéseket? dormant: Elhagyott + follow_failure: Nem sikerült bekövetni néhányat a kiválasztott fiókok közül. follow_selected_followers: Kiválasztott követők bekövetése followers: Követők following: Követve @@ -1446,6 +1451,7 @@ hu: electron: Electron firefox: Firefox generic: Ismeretlen böngésző + huawei_browser: Huawei Böngésző ie: Internet Explorer micro_messenger: MicroMessenger nokia: Nokia S40 Ovi Böngésző @@ -1455,6 +1461,7 @@ hu: qq: QQ Browser safari: Safari uc_browser: UC Browser + unknown_browser: Ismeretlen böngésző weibo: Weibo current_session: Jelenlegi munkamenet description: "%{browser} az alábbi platformon: %{platform}" @@ -1467,9 +1474,10 @@ hu: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: Mac - other: ismeretlen platform + unknown_platform: Ismeretlen platform windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1682,12 +1690,13 @@ hu: title: Üdv a fedélzeten, %{name}! users: follow_limit_reached: Nem követhetsz több, mint %{limit} embert + go_to_sso_account_settings: Ugrás az azonosítási szolgáltatód fiókbeállításaihoz invalid_otp_token: Érvénytelen ellenőrző kód otp_lost_help_html: Ha mindkettőt elvesztetted, kérhetsz segítséget itt %{email} seamless_external_login: Külső szolgáltatáson keresztül jelentkeztél be, így a jelszó és e-mail beállítások nem elérhetőek. signed_in_as: Bejelentkezve mint verification: - explanation_html: 'A profilodon hitelesítheted magad, mint az itt található linkek tulajdonosa. Ehhez a linkelt weboldalnak tartalmaznia kell egy linket vissza a Mastodon profilodra. Ennek tartalmaznia kell a rel="me" attribútumot. A link szövege bármi lehet. Itt egy példa:' + explanation_html: 'A profilodon hitelesítheted magad, mint az itt található hivatkozások tulajdonosa. Ehhez a hivatkozott weboldalnak tartalmaznia kell egy visszahivatkozást a Mastodon-profilodra. A hivatkozás hozzáadása után lehet, hogy vissza kell ide térned, és újra mentened kell a profilodat, hogy az ellenőrzés életbe lépjen. A visszahivatkozásnak tartalmaznia kell a rel="me" attribútumot. A hivatkozás szövege bármi lehet. Itt egy példa:' verification: Hitelesítés webauthn_credentials: add: Biztonsági kulcs hozzáadása diff --git a/config/locales/hy.yml b/config/locales/hy.yml index de995c5b5e..a3658eae97 100644 --- a/config/locales/hy.yml +++ b/config/locales/hy.yml @@ -575,8 +575,6 @@ hy: title: Ֆիլտրեր new: title: Ավելացնել ֆիլտր - footer: - trending_now: Այժմ արդիական generic: all: Բոլորը changes_saved_msg: Փոփոխութիւնները յաջող պահուած են @@ -758,7 +756,6 @@ hy: ios: iOS linux: Լինուքս mac: macOS - other: անհայտ հարթակ windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -884,7 +881,6 @@ hy: invalid_otp_token: Անվաւեր 2F կոդ signed_in_as: Մոտք գործել որպէս․ verification: - explanation_html: Պիտակների յղումների հեղինակութիւնը կարելի է վաւերացնել։ Անհրաժեշտ է որ յղուած կայքը պարունակի յետադարձ յղում ձեր մաստադոնի էջին, որը պէտք է ունենայ rel="me" նիշքը։ Յղման բովանդակութիւնը կարևոր չէ։ Օրինակ՝ verification: Ստուգում webauthn_credentials: delete: Ջնջել diff --git a/config/locales/id.yml b/config/locales/id.yml index 2363cc66ac..7902966545 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -1133,8 +1133,6 @@ id: index: hint: Saringan ini diterapkan ke beberapa kiriman individu tanpa memengaruhi oleh kriteria lain. Anda dapat menambahkan lebih banyak kiriman ke saringan ini dari antarmuka web. title: Kiriman yang disaring - footer: - trending_now: Sedang tren generic: all: Semua all_items_on_page_selected_html: @@ -1395,7 +1393,6 @@ id: ios: iOS linux: Linux mac: Mac - other: platform yang tidak diketahui windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1606,7 +1603,6 @@ id: seamless_external_login: Anda masuk via layanan eksternal, sehingga pengaturan kata sandi dan email tidak tersedia. signed_in_as: 'Masuk sebagai:' verification: - explanation_html: 'Anda dapat memverifikasi diri Anda sebagai pemiliki tautan pada metadata profil. Situsweb yang ditautkan haruslah berisi tautan ke profil Mastodon Anda. Tautan tersebut harus memiliki atribut rel="me". Isi teks tautan tidaklah penting. Ini contohnya:' verification: Verifikasi webauthn_credentials: add: Tambahkan kunci keamanan baru diff --git a/config/locales/io.yml b/config/locales/io.yml index 9ef6c03128..849b80cb9e 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -1112,8 +1112,6 @@ io: index: hint: Ca filtrilo aplikesas a selektita posti ne segun altra kriterio. Vu povas pozar plu multa posti a ca filtrilo de retintervizajo. title: Filtrita posti - footer: - trending_now: Nuna tendenco generic: all: Omna all_items_on_page_selected_html: @@ -1378,7 +1376,6 @@ io: ios: iOS linux: Linux mac: macOS - other: nesavata platformo windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1595,7 +1592,6 @@ io: seamless_external_login: Vu enirar tra externa serveso, do pasvorto e retpostoopcioni ne esas disponebla. signed_in_as: 'Eniris quale:' verification: - explanation_html: 'Vu povas verifikar su kom proprietero di ligili en vua profilmetainformi. En ta kazo, ligita retsito mustas havar rel="me" atributo. Textokontenajo di ligilo ne esas importanta. Co esas exemplo:' verification: Verifikeso webauthn_credentials: add: Insertez nova sekuresklefo diff --git a/config/locales/is.yml b/config/locales/is.yml index 5f63482522..4020e7ba33 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -812,6 +812,12 @@ is: message_html: Þú hefur ekki skilgreint neinar reglur fyrir netþjón. sidekiq_process_check: message_html: Ekkert Sidekiq-ferli er í gangi fyrir %{value} biðröð/biðraðir. Endilega athugaðu Sidekiq-uppsetninguna þína + upload_check_privacy_error: + action: Skoðaðu hér til að fá frekari upplýsingar + message_html: "Vefþjónninn þinn er ekki rétt stilltur. Friðhelgi notendanna þinna gæti verið í hættu." + upload_check_privacy_error_object_storage: + action: Skoðaðu hér til að fá frekari upplýsingar + message_html: "Gagnageymslan þín er ekki rétt stillt. Friðhelgi notendanna þinna gæti verið í hættu." tags: review: Yfirfara stöðufærslu updated_msg: Það tókst að uppfæra stillingar myllumerkja @@ -1196,8 +1202,6 @@ is: index: hint: Þessi sía virkar til að velja stakar færslur án tillits til annarra skilyrða. Þú getur bætt fleiri færslum í þessa síu í vefviðmótinu. title: Síaðar færslur - footer: - trending_now: Í umræðunni núna generic: all: Allt all_items_on_page_selected_html: @@ -1407,6 +1411,7 @@ is: confirm_remove_selected_followers: Ertu viss um að þú viljir fjarlægja valda fylgjendur? confirm_remove_selected_follows: Ertu viss um að þú viljir fjarlægja valið sem fylgst er með? dormant: Sofandi + follow_failure: Gat ekki fylgst með sumum af völdu aðgöngunum. follow_selected_followers: Fylgjast með völdum fylgjendum followers: Fylgjendur following: Fylgist með @@ -1446,6 +1451,7 @@ is: electron: Electron firefox: Firefox generic: Óþekktur vafri + huawei_browser: Huawei-vafri ie: Internet Explorer micro_messenger: MicroMessenger nokia: Nokia S40 Ovi vafri @@ -1455,6 +1461,7 @@ is: qq: QQ vafri safari: Safari uc_browser: UC-vafrinn + unknown_browser: Óþekktur vafri weibo: Weibo current_session: Núverandi seta description: "%{browser} á %{platform}" @@ -1467,9 +1474,10 @@ is: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: Mac - other: óþekktu stýrikerfi + unknown_platform: Óþekkt stýrikerfi windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1682,12 +1690,13 @@ is: title: Velkomin/n um borð, %{name}! users: follow_limit_reached: Þú getur ekki fylgst með fleiri en %{limit} aðilum + go_to_sso_account_settings: Fara í stillingar aðgangsins hjá auðkennisveitunni þinni invalid_otp_token: Ógildur tveggja-þátta kóði otp_lost_help_html: Ef þú hefur misst aðganginn að hvoru tveggja, geturðu sett þig í samband við %{email} seamless_external_login: Innskráning þín er í gegnum utanaðkomandi þjónustu, þannig að stillingar fyrir lykilorð og tölvupóst eru ekki aðgengilegar. signed_in_as: 'Skráð inn sem:' verification: - explanation_html: 'Þú getur vottað að þú sért eigandi og ábyrgur fyrir tenglunum í lýsigögnum notandasniðsins þíns. Til að það virki, þurfa vefsvæðin sem vísað er í að innihalda tengil til baka í Mastodon-notandasniðið. Tengillinn sem vísar til baka verður að vera með rel="me" eigindi. Textinn í tenglinum skiptir ekki máli. Hérna er dæmi:' + explanation_html: 'Þú getur sannvottað sjálfa/n þig sem eiganda tenglanna í notandasniðinu þinu. Til að það virki, þarf tilvísaða vefsvæðið að innihalda tengil til baka á notandasnið þitt á Mastodon. Eftir að tenglinum hefur verið bætt inn, gætirðu þurft að koma aftur hingað og vista aftur notandasniðið þitt áður en sannvottunin fer að virka. Tengillinn til baka verður að innihalda rel="me" eigindi. Efni textans í tenglinum skiptir ekki máli. Hér er dæmi:' verification: Sannprófun webauthn_credentials: add: Bæta við nýjum öryggislykli diff --git a/config/locales/it.yml b/config/locales/it.yml index 9256ed49d9..98c1689c96 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -812,6 +812,12 @@ it: message_html: Non hai definito alcuna regola del server. sidekiq_process_check: message_html: Nessun processo di Sidekiq in esecuzione per le code di %{value}. Sei pregato di revisionare la tua configurazione di Sidekiq + upload_check_privacy_error: + action: Controlla qui per maggiori informazioni + message_html: "Il tuo server web è mal configurato. La privacy dei tuoi utenti è a rischio." + upload_check_privacy_error_object_storage: + action: Controlla qui per maggiori informazioni + message_html: "La tua archiviazione oggetti è mal configurata. La privacy dei tuoi utenti è a rischio." tags: review: Esamina status updated_msg: Impostazioni hashtag aggiornate con successo @@ -1198,8 +1204,6 @@ it: index: hint: Questo filtro si applica a singoli post indipendentemente da altri criteri. Puoi aggiungere più post a questo filtro dall'interfaccia Web. title: Post filtrati - footer: - trending_now: Di tendenza ora generic: all: Tutto all_items_on_page_selected_html: @@ -1409,6 +1413,7 @@ it: confirm_remove_selected_followers: Sei sicuro di voler rimuovere i follower selezionati? confirm_remove_selected_follows: Sei sicuro di voler rimuovere i follow selezionati? dormant: Dormiente + follow_failure: Impossibile seguire alcuni degli account selezionati. follow_selected_followers: Segui i seguaci selezionati followers: Seguaci following: Seguiti @@ -1448,6 +1453,7 @@ it: electron: Electron firefox: Firefox generic: Browser sconosciuto + huawei_browser: Huawei Browser ie: Internet Explorer micro_messenger: MicroMessenger nokia: Nokia S40 Ovi Browser @@ -1457,6 +1463,7 @@ it: qq: QQ Browser safari: Safari uc_browser: UC Browser + unknown_browser: Browser sconosciuto weibo: Weibo current_session: Sessione corrente description: "%{browser} su %{platform}" @@ -1469,9 +1476,10 @@ it: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: Mac - other: piattaforma sconosciuta + unknown_platform: Piattaforma sconosciuta windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1684,12 +1692,13 @@ it: title: Benvenuto a bordo, %{name}! users: follow_limit_reached: Non puoi seguire più di %{limit} persone + go_to_sso_account_settings: Vai alle impostazioni dell'account del tuo provider di identità invalid_otp_token: Codice d'accesso non valido otp_lost_help_html: Se perdessi l'accesso ad entrambi, puoi entrare in contatto con %{email} seamless_external_login: Hai effettuato l'accesso tramite un servizio esterno, quindi le impostazioni di password e e-mail non sono disponibili. signed_in_as: 'Hai effettuato l''accesso come:' verification: - explanation_html: 'Puoi certificare te stesso come proprietario dei link nei metadati del tuo profilo. Per farlo, il sito a cui punta il link deve contenere un link che punta al tuo profilo Mastodon. Il link di ritorno deve avere l''attributo rel="me". Il testo del link non ha importanza. Ecco un esempio:' + explanation_html: 'Puoi verificarti come proprietario dei link nei metadati del tuo profilo. Per questo, il sito web collegato deve contenere un collegamento al tuo profilo Mastodon. Dopo aver aggiunto il collegamento, potrebbe essere necessario tornare qui e salvare nuovamente il profilo affinché la verifica abbia effetto. Il link di ritorno deve avere un attributo rel="me". Il contenuto del testo del collegamento non ha importanza. Ecco un esempio:' verification: Verifica webauthn_credentials: add: Aggiungi una nuova chiave di sicurezza diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 374fdaf84a..c2faed6a2b 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -569,7 +569,7 @@ ja: other_description_html: アカウントの動作を制御するためのオプションや、報告されたアカウントへの通信をカスタマイズするためのオプションを確認してください。 resolve_description_html: 報告されたアカウントに対していかなる措置も取られず、ストライクも記録されず、報告は終了します。 silence_description_html: このアカウントは、すでにフォローしている人、または手動で検索した人にしか見えないため、リーチが極端に制限されます。いつでも元に戻すことができます。このアカウントに対するすべての通報をクローズします。 - suspend_description_html: アカウントとそのすべての内容にアクセスできなくなり、最終的に削除され、それとやり取りは不可能になります。 30日以内にリバーシブル。このアカウントに対するすべての通報をクローズします。 + suspend_description_html: アカウントとそのすべての内容にアクセスできなくなり、最終的に削除され、やり取りは不可能になります。 30日以内であれば元に戻すことができます。このアカウントに対するすべての通報をクローズします。 actions_description_html: このレポートを解決するために取るアクションを決定します。 報告されたアカウントに対して懲罰的な措置を取った場合、メール通知が送信されますがスパムカテゴリが選択されている場合を除きます。 actions_description_remote_html: この通報を解決するためのアクションを選択してください。これはあなたのサーバーがこのリモートアカウントと通信し、そのコンテンツを処理する時のみ影響します。 add_to_report: 通報にさらに追加 @@ -798,6 +798,12 @@ ja: message_html: サーバーのルールを定義していません。 sidekiq_process_check: message_html: "%{value}キューに対応するSidekiqプロセスがありません。Sidekiqの設定を確認してください。" + upload_check_privacy_error: + action: ここを開いて詳細を確認してください + message_html: "Web サーバーが正しく設定されていません。ユーザーのプライバシーが危険な状態になっています。" + upload_check_privacy_error_object_storage: + action: ここを開いて詳細を確認してください + message_html: "オブジェクトストレージが正しく設定されていません。ユーザーのプライバシーが危険な状態になっています。" tags: review: 審査状況 updated_msg: ハッシュタグ設定が更新されました @@ -1139,7 +1145,7 @@ ja: filters: contexts: account: プロフィール - home: ホームタイムライン + home: ホームおよびリスト notifications: 通知 public: 公開タイムライン thread: 会話 @@ -1175,8 +1181,6 @@ ja: index: hint: このフィルターは、他の条件に関係なく個々の投稿を選択する場合に適用されます。Webインターフェースからこのフィルターにさらに投稿を追加できます。 title: フィルターされた投稿 - footer: - trending_now: トレンドタグ generic: all: すべて all_items_on_page_selected_html: @@ -1381,6 +1385,7 @@ ja: confirm_remove_selected_followers: 選択したフォロワーを削除してもよろしいですか? confirm_remove_selected_follows: 選択したフォローを削除してもよろしいですか? dormant: 非アクティブ + follow_failure: 選択したアカウントの一部をフォローできませんでした。 follow_selected_followers: 選択したフォロワーをフォロー followers: フォロワー following: フォロー中 @@ -1420,6 +1425,7 @@ ja: electron: Electron firefox: Firefox generic: 不明なブラウザ + huawei_browser: Huaweiブラウザ ie: Internet Explorer micro_messenger: MicroMessenger nokia: Nokia S40 Ovi Browser @@ -1429,6 +1435,7 @@ ja: qq: QQ Browser safari: Safari uc_browser: UC Browser + unknown_browser: 不明なブラウザ weibo: Weibo current_session: 現在のセッション description: "%{platform}上の%{browser}" @@ -1441,9 +1448,10 @@ ja: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: macOS - other: 不明なプラットフォーム + unknown_platform: 不明なプラットフォーム windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1652,12 +1660,13 @@ ja: title: ようこそ、%{name}さん! users: follow_limit_reached: あなたは現在 %{limit}人以上フォローできません + go_to_sso_account_settings: 外部サービスアカウントの設定はこちらで行ってください invalid_otp_token: 二要素認証コードが間違っています otp_lost_help_html: どちらも使用できない場合、%{email}に連絡を取ると解決できるかもしれません seamless_external_login: あなたは外部サービスを介してログインしているため、パスワードとメールアドレスの設定は利用できません。 signed_in_as: '下記でログイン中:' verification: - explanation_html: プロフィール内のリンクの所有者であることを認証することができます。そのためにはリンクされたウェブサイトにMastodonプロフィールへのリンクが含まれている必要があります。リンクにはrel="me"属性を必ず与えなければなりません。リンクのテキストについては重要ではありません。以下は例です: + explanation_html: プロフィール補足情報のリンクの所有者であることを認証できます。認証するには、リンク先のウェブサイトにMastodonプロフィールへのリンクを追加してください。リンクを追加後、このページで変更の保存を再実行すると認証が反映されます。プロフィールへのリンクにはrel="me"属性がかならず付与してください。リンク内のテキストは自由に記述できます。以下は一例です: verification: 認証 webauthn_credentials: add: セキュリティキーを追加 diff --git a/config/locales/ka.yml b/config/locales/ka.yml index dcc7e6580e..80dc2b9f57 100644 --- a/config/locales/ka.yml +++ b/config/locales/ka.yml @@ -421,7 +421,6 @@ ka: ios: აი-ოსი linux: ლინუქსი mac: მაკი - other: ამოუცნობი პლატფორმა windows: ვინდოუსი windows_mobile: ვინდოუს მობაილი windows_phone: ვინდოუს ფოუნი diff --git a/config/locales/kab.yml b/config/locales/kab.yml index ead31b695f..ffd79e76f8 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -543,8 +543,6 @@ kab: back_to_filter: Tuɣalin ɣer umsizdeg batch: remove: Kkes seg umsizdeg - footer: - trending_now: Ayen mucaɛen tura generic: all: Akk changes_saved_msg: Ttwaskelsen ibelliden-ik·im akken ilaq! @@ -669,7 +667,6 @@ kab: ios: iOS linux: Linux mac: macOS - other: anagraw arussin windows: Windows windows_mobile: Windows Mobile windows_phone: Tiliγri Windows Phone diff --git a/config/locales/kk.yml b/config/locales/kk.yml index 959f7b0f01..1812f89835 100644 --- a/config/locales/kk.yml +++ b/config/locales/kk.yml @@ -470,8 +470,6 @@ kk: title: Фильтрлер new: title: Жаңа фильтр қосу - footer: - trending_now: Бүгінгі трендтер generic: all: Барлығы changes_saved_msg: Өзгерістер сәтті сақталды! @@ -646,7 +644,6 @@ kk: ios: iОS linux: Lіnux mac: Mаc - other: белгісіз платформа windows: Windоws windows_mobile: Windows Mоbile windows_phone: Windоws Phone @@ -761,5 +758,4 @@ kk: seamless_external_login: Сыртқы сервис арқылы кіріпсіз, сондықтан құпиясөз және электрондық пошта параметрлері қол жетімді емес. signed_in_as: 'Былай кірдіңіз:' verification: - explanation_html: 'Өзіңіздің профиль метадеректеріңіздегі сілтемелердің иесі ретінде өзіңізді тексере аласыз. Ол үшін байланыстырылған веб-сайтта Mastodon профиліне сілтеме болуы керек. Сілтемеде rel = «me» атрибуты болуы керек. Сілтеме мәтінінің мазмұны маңызды емес. Міне мысал:' verification: Растау diff --git a/config/locales/ko.yml b/config/locales/ko.yml index fb778f803f..bbfc6f311e 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -344,7 +344,7 @@ ko: active_users: 활성 사용자 interactions: 상호 작용 media_storage: 미디어 저장소 - new_users: 새로운 사용자 + new_users: 새 사용자 opened_reports: 신고 열림 pending_appeals_html: other: "%{count}개의 대기 중인 이의 제기" @@ -800,6 +800,12 @@ ko: message_html: 아직 서버규칙을 정하지 않았습니다. sidekiq_process_check: message_html: "%{value} 큐에 대한 사이드킥 프로세스가 발견되지 않았습니다. 사이드킥 설정을 검토해주세요" + upload_check_privacy_error: + action: 더 많은 정보를 보려면 여기를 확인하세요. + message_html: "웹 서버가 잘못 구성되었습니다. 사용자의 프라이버시에 위협이 됩니다." + upload_check_privacy_error_object_storage: + action: 더 많은 정보를 보려면 여기를 확인하세요 + message_html: "오브젝트 스토리지가 잘못 구성되었습니다. 사용자의 프라이버시에 위협이 됩니다." tags: review: 심사 상태 updated_msg: 해시태그 설정이 성공적으로 갱신되었습니다 @@ -992,7 +998,7 @@ ko: preamble: 다음은 %{domain}의 중재자들에 의해 설정되고 적용되는 규칙들입니다. title: 몇 개의 규칙이 있습니다. security: 보안 - set_new_password: 새 암호 + set_new_password: 새 암호 설정 setup: email_below_hint_html: 아래의 이메일 계정이 올바르지 않을 경우, 여기서 변경하고 새 확인 메일을 받을 수 있습니다. email_settings_hint_html: 확인 메일이 %{email}로 보내졌습니다. 이메일 주소가 올바르지 않은 경우, 계정 설정에서 변경하세요. @@ -1028,7 +1034,7 @@ ko: confirm: 계속 hint_html: "팁: 한 시간 동안 다시 암호를 묻지 않을 것입니다." invalid_password: 잘못된 암호 - prompt: 계속하려면 암호 확인 + prompt: 계속하려면 암호를 확인하세요. crypto: errors: invalid_key: 유효하지 않은 Ed25519 또는 Curve25519 키 @@ -1065,7 +1071,7 @@ ko: email_contact_html: 아직 도착하지 않았다면, %{email}에 메일을 보내 도움을 요청할 수 있습니다 email_reconfirmation_html: 아직 확인 메일이 도착하지 않은 경우, 다시 요청할 수 있습니다 irreversible: 계정을 복구하거나 다시 사용할 수 없게 됩니다 - more_details_html: 더 자세한 정보는, 개인정보 정책을 참고하세요. + more_details_html: 더 자세한 정보는, 개인정보처리방침을 참고하세요. username_available: 이 사용자명을 다시 쓸 수 있게 됩니다. username_unavailable: 이 사용자명은 앞으로도 쓸 수 없는 채로 남게 됩니다. disputes: @@ -1105,7 +1111,7 @@ ko: '403': 이 페이지를 표시할 권한이 없습니다. '404': 찾으려는 페이지가 존재하지 않습니다. '406': 이 페이지는 요청한 자료형으로 제공되지 않습니다. - '410': 보려는 페이지는 더 이상 여기에 존재하지 않습니다. + '410': 찾는 페이지가 더 이상 존재하지 않습니다. '422': content: 보안 인증에 실패했습니다. 쿠키를 차단하고 있진 않습니까? title: 보안 인증 실패 @@ -1137,7 +1143,7 @@ ko: add_new: 추가 errors: limit: 추천 해시태그 최대 개수를 초과합니다 - hint_html: "추천 해시태그가 무엇이죠? 당신의 공개 프로필 페이지에 눈에 띄게 표현 되며 사람들이 그 해시태그를 포함한 당신의 글을 찾아 볼 수 있도록 합니다. 창작활동이나 긴 기간을 가지는 프로젝트를 쭉 따라가기에 좋은 도구입니다." + hint_html: "추천 해시태그가 무엇일까요? 해시태그는 공개 프로필에 눈에 잘 띄게 표시되며, 사람들은 해당 해시태그로 내 공개 글을 검색할 수 있습니다. 창작물이나 장기 프로젝트를 추적하는 데 유용한 도구입니다." filters: contexts: account: 프로필 @@ -1177,8 +1183,6 @@ ko: index: hint: 이 필터는 다른 기준에 관계 없이 선택된 개별적인 게시물들에 적용됩니다. 웹 인터페이스에서 더 많은 게시물들을 이 필터에 추가할 수 있습니다. title: 필터링된 게시물 - footer: - trending_now: 지금 유행 중 generic: all: 모두 all_items_on_page_selected_html: @@ -1372,7 +1376,7 @@ ko: posting_defaults: 게시물 기본설정 public_timelines: 공개 타임라인 privacy_policy: - title: 개인정보 정책 + title: 개인정보처리방침 reactions: errors: limit_reached: 리액션 갯수 제한에 도달했습니다 @@ -1383,10 +1387,11 @@ ko: confirm_remove_selected_followers: 정말로 선택된 팔로워들을 삭제하시겠습니까? confirm_remove_selected_follows: 정말로 선택된 팔로우를 끊으시겠습니까? dormant: 휴면 + follow_failure: 선택한 계정 중 몇몇은 팔로우 할 수 없었습니다. follow_selected_followers: 선택한 팔로워들을 팔로우 followers: 팔로워 following: 팔로잉 - invited: 초대됨 + invited: 초대함 last_active: 마지막 활동 most_recent: 가장 최근 moved: 이동함 @@ -1422,6 +1427,7 @@ ko: electron: 일렉트론 firefox: 파이어폭스 generic: 알 수 없는 브라우저 + huawei_browser: 화웨이 브라우저 ie: 인터넷 익스플로러 micro_messenger: 마이크로메신저 nokia: Nokia S40 Ovi 브라우저 @@ -1431,6 +1437,7 @@ ko: qq: QQ 브라우저 safari: 사파리 uc_browser: UC 브라우저 + unknown_browser: 알 수 없는 브라우저 weibo: 웨이보 current_session: 현재 세션 description: "%{platform}의 %{browser}" @@ -1443,14 +1450,15 @@ ko: chrome_os: 크롬OS firefox_os: 파이어폭스OS ios: iOS + kai_os: KaiOS linux: 리눅스 mac: macOS - other: 알 수 없는 플랫폼 + unknown_platform: 알 수 없는 플랫폼 windows: 윈도우 windows_mobile: 윈도우 모바일 windows_phone: 윈도우 폰 - revoke: 삭제 - revoke_success: 세션이 성공적으로 삭제되었습니다 + revoke: 취소 + revoke_success: 세션을 성공적으로 취소하였습니다. title: 세션 view_authentication_history: 내 계정에 대한 인증 이력 보기 settings: @@ -1458,7 +1466,7 @@ ko: account_settings: 계정 설정 aliases: 계정 별명 appearance: 외관 - authorized_apps: 인증된 애플리케이션 + authorized_apps: 승인된 애플리케이션 back: 마스토돈으로 돌아가기 delete: 계정 삭제 development: 개발 @@ -1558,7 +1566,7 @@ ko: stream_entries: pinned: 고정된 게시물 reblogged: 님이 부스트 했습니다 - sensitive_content: 민감한 콘텐츠 + sensitive_content: 민감한 내용 strikes: errors: too_late: 이의를 제기하기에 너무 늦었습니다 @@ -1652,12 +1660,13 @@ ko: title: 환영합니다 %{name} 님! users: follow_limit_reached: 당신은 %{limit}명의 사람을 넘어서 팔로우 할 수 없습니다 + go_to_sso_account_settings: ID 공급자의 계정 설정으로 이동 invalid_otp_token: 2단계 인증 코드가 올바르지 않습니다 otp_lost_help_html: 만약 양쪽 모두를 잃어버렸다면 %{email}을 통해 복구할 수 있습니다 seamless_external_login: 외부 서비스를 이용해 로그인했으므로 이메일과 암호는 설정할 수 없습니다. signed_in_as: '다음과 같이 로그인 중:' verification: - explanation_html: '당신은 프로필 메타데이터의 링크 소유자임을 검증할 수 있습니다. 이것을 하기 위해서는, 링크 된 웹사이트에서 당신의 마스토돈 프로필을 역으로 링크해야 합니다. 역링크는 반드시 rel="me" 속성을 가지고 있어야 합니다. 링크의 텍스트는 상관이 없습니다. 여기 예시가 있습니다:' + explanation_html: '내 프로필 메타데이터에 담긴 링크의 소유 여부를 검증할 수 있습니다. 이를 위해서 반드시 링크한 웹사이트에 Mastodon 프로필에 대한 역링크가 포함되어야 합니다. 링크를 추가한 후 이곳으로 돌아와서 프로필을 다시 저장해야 인증을 적용할 수 있습니다. 돌아오는 링크에는 반드시 rel="me" 속성이 있어야 합니다. 링크의 텍스트 콘텐트는 중요하지 않습니다. 다음 예제를 참고하세요:' verification: 검증 webauthn_credentials: add: 보안 키 추가 diff --git a/config/locales/ku.yml b/config/locales/ku.yml index 899cd936a0..a1fce2c365 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -1156,8 +1156,6 @@ ku: index: hint: Ev parzûn bêyî pîvanên din ji bo hilbijartina şandiyên kesane tê sepandin. Tu dikarî ji navrûya tevnê bêtir şandiyan tevlî vê parzûnê bikî. title: Şandiyên parzûnkirî - footer: - trending_now: Niha rojevê de generic: all: Hemû all_items_on_page_selected_html: @@ -1423,7 +1421,6 @@ ku: ios: iOS linux: Linux mac: macOS - other: platforma nenas windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1640,7 +1637,6 @@ ku: seamless_external_login: Te bi rajekarke biyanî re têketina xwe kir, ji ber vê yekê borînpeyv û e-name nayê bikaranîn. signed_in_as: 'Têketin wekî:' verification: - explanation_html: 'Tu dikarî xwe wekî xwediyê girêdanên li daneyê meta profîla xwe piştrast bikî. Ji bo vê, hewceye girêda malperê di nav profîla te ya mastodonê de girêdanekî paş hebe. Girêdana paşhewceye taybetîyek rel="me"hebe. Naveroka nivîsa girêdanê ne girîng e. Ev jî mînakek e:' verification: Piştrastkirin webauthn_credentials: add: Kilîteke ewlehiyê nû tevlî bike diff --git a/config/locales/lt.yml b/config/locales/lt.yml index b6dd360dbe..06eeff6ab4 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -433,8 +433,6 @@ lt: current_session: Dabartinė sesija description: "%{browser} ant %{platform}" explanation: Čia rodomos web naršyklės prijungtos prie Jūsų Mastodon paskyros. - platforms: - other: nežinoma platforma revoke: Atšaukti revoke_success: Sesija sėkmingai atšaukta title: Sesijos @@ -519,5 +517,4 @@ lt: seamless_external_login: Jūs esate prisijungę per išorini įrenginį, todėl slaptąžodis ir el pašto nustatymai neprieinami. signed_in_as: 'Prisijungta kaip:' verification: - explanation_html: 'Jūs galite patvirtinti savę kaip savininką nuorodų savo profilio meta duomenyse. Kad tai padarytumėte, susieta svetainė privalo turėti nuorodą atgal į Jūsų Mastodon profilį. Nuoroda atgal privalo turėti rel="me" savybę. Teksto turinys nuorodoje nesvarbus. Štai pavyzdys:' verification: Patvirtinimas diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 8bcb23c602..e7b8372caa 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -826,6 +826,12 @@ lv: message_html: Tu neesi definējis nevienu servera nosacījumu. sidekiq_process_check: message_html: Rindā(s) %{value} nedarbojas neviens Sidekiq process. Lūdzu, pārskati savu Sidekiq konfigurāciju + upload_check_privacy_error: + action: Pārbaudi šeit, lai iegūtu plašāku informāciju + message_html: "Tavs tīmekļa serveris ir nepareizi konfigurēts. Tavu lietotāju privātums ir apdraudēts." + upload_check_privacy_error_object_storage: + action: Pārbaudi šeit, lai iegūtu plašāku informāciju + message_html: "Tava objektu krātuve ir nepareizi konfigurēta. Tavu lietotāju privātums ir apdraudēts." tags: review: Pārskatīt statusu updated_msg: Tēmtura iestatījumi ir veiksmīgi atjaunināti @@ -1217,8 +1223,6 @@ lv: index: hint: Šis filtrs attiecas uz atsevišķu ziņu atlasi neatkarīgi no citiem kritērijiem. Šim filtram tu vari pievienot vairāk ziņu, izmantojot tīmekļa saskarni. title: Filtrētās ziņas - footer: - trending_now: Šobrīd populārākie generic: all: Visi all_items_on_page_selected_html: @@ -1353,7 +1357,7 @@ lv: favourite: body: 'Tavu ziņu izlasei pievienoja %{name}:' subject: "%{name} pievienoja tavu ziņu izlasei" - title: Jauns izcēlums + title: Jauna izlase follow: body: "%{name} tagad tev seko!" subject: "%{name} tagad tev seko" @@ -1433,6 +1437,7 @@ lv: confirm_remove_selected_followers: Vai tiešām vēlies noņemt atlasītos sekotājus? confirm_remove_selected_follows: Vai tiešām vēlies noņemt atlasītos sekojumus? dormant: Snaudošie + follow_failure: Nevarēja sekot dažiem atlasītajiem kontiem. follow_selected_followers: Sekot atlasītajiem sekotājiem followers: Sekotāji following: Seko @@ -1472,6 +1477,7 @@ lv: electron: Electron firefox: Firefox generic: Nezināms pārlūks + huawei_browser: Huawei Browser ie: Internet Explorer micro_messenger: MicroMessenger nokia: Nokia S40 Ovi Browser @@ -1481,6 +1487,7 @@ lv: qq: QQ Browser safari: Safari uc_browser: UC Browser + unknown_browser: Nezināms Pārlūks weibo: Weibo current_session: Pašreizējā sesija description: "%{browser} uz %{platform}" @@ -1493,9 +1500,10 @@ lv: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: macOS - other: nezināma platforma + unknown_platform: Nezināma Platforma windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1714,12 +1722,13 @@ lv: title: Laipni lūgts uz borta, %{name}! users: follow_limit_reached: Tu nevari sekot vairāk par %{limit} cilvēkiem + go_to_sso_account_settings: Dodies uz sava identitātes nodrošinātāja konta iestatījumiem invalid_otp_token: Nederīgs divfaktora kods otp_lost_help_html: Ja esi zaudējis piekļuvi abiem, tu vari sazināties ar %{email} seamless_external_login: Tu esi pieteicies, izmantojot ārēju pakalpojumu, tāpēc paroles un e-pasta iestatījumi nav pieejami. signed_in_as: 'Pierakstījies kā:' verification: - explanation_html: 'Tu vari apstiprināt sevi kā sava profila metadatos esošo saišu īpašnieku. Lai to izdarītu, saistītajā vietnē ir jābūt saitei uz tavu Mastodon profilu. Atpakaļsaitē jābūt atribūtam rel="me". Saites teksta saturam nav nozīmes. Šeit ir piemērs:' + explanation_html: 'Tu vari apstiprināt sevi kā sava profila metadatos esošo saišu īpašnieku. Lai to izdarītu, saistītajā vietnē ir jābūt saitei uz tavu Mastodon profilu. Pēc saites pievienošanas tev, iespējams, vajadzēs atgriezties šeit un atkārtoti saglabāt savu profilu, lai pārbaude stātos spēkā. Atpakaļsaitē jābūt atribūtam rel="me". Saites teksta saturam nav nozīmes. Šeit ir piemērs:' verification: Pārbaude webauthn_credentials: add: Pievienot jaunu drošības atslēgu diff --git a/config/locales/ms.yml b/config/locales/ms.yml index 2bee9fee14..60db149e06 100644 --- a/config/locales/ms.yml +++ b/config/locales/ms.yml @@ -921,7 +921,6 @@ ms: android: Android ios: iOS linux: Linux - other: platform tidak dikenali title: Sesi settings: account: Akaun diff --git a/config/locales/my.yml b/config/locales/my.yml index a2aaeece03..816c5c401b 100644 --- a/config/locales/my.yml +++ b/config/locales/my.yml @@ -2,6 +2,8 @@ my: about: about_mastodon_html: အနာဂတ်အတွက်လူမှုကွန်ရက် - ကြော်ငြာများမရှိခြင်း၊ အဖွဲ့သားများအား စောင့်ကြည့်မှုမရှိခြင်း၊ ကျင့်ဝတ်ပိုင်းဆိုင်ရာစိတ်ချရခြင်းနှင့် ဗဟိုချုပ်ကိုင်မှုမရှိခြင်း၊ သင့်အချက်အလက်များကို Mastodon နှင့်သာ မျှဝေအသုံးပြုလိုက်ပါ။ + contact_missing: မသတ်မှတ်ထား + contact_unavailable: မရှိ hosted_on: "%{domain} မှ လက်ခံဆောင်ရွက်ထားသော Mastodon" title: အကြောင်း accounts: @@ -9,7 +11,9 @@ my: followers: other: စောင့်ကြည့်သူ following: စောင့်ကြည့်နေသည် + instance_actor_flash: ဤအကောင့်သည် ဆာဗာကိုယ်တိုင်ကို ကိုယ်စားပြုပြီး မည်သည့်အသုံးပြုသူမျှမဟုတ်ဘဲ အတုအယောင်သရုပ်ဆောင်တစ်ခုဖြစ်သည်။ ၎င်းကို Federation ရည်ရွယ်ချက်များအတွက် အသုံးပြုပြီး ဆိုင်းငံ့မထားသင့်ပါ။ last_active: နောက်ဆုံးအသုံးပြုခဲ့သည့်အချိန် + link_verified_on: ဤလင့်ခ်၏ ပိုင်ဆိုင်မှုကို %{date} တွင် စစ်ဆေးခဲ့သည် nothing_here: ဤနေရာတွင် မည်သည့်အရာမျှမရှိပါ။ pin_errors: following: သင်ထောက်ခံလိုသောလူနောက်သို့ စောင့်ကြည့်ပြီးသားဖြစ်နေပါမည် @@ -17,8 +21,13 @@ my: other: ပို့စ်တင်မယ် posts_tab_heading: ပို့စ်များ admin: + account_actions: + action: ဆောင်ရွက်ရန် + title: "%{acct} စိစစ်မှုလုပ်ဆောင်ရန်" account_moderation_notes: create: မှတ်စုမှထွက်ရန် + created_msg: စိစစ်ခြင်းမှတ်စုကို ဖန်တီးပြီးပါပြီ။ + destroyed_msg: စိစစ်ခြင်းမှတ်စုကို ဖျက်ပစ်လိုက်ပါပြီ။ accounts: add_email_domain_block: ဒိုမိန်းကိုပိတ်မည် approve: အတည်ပြုပါ @@ -44,17 +53,26 @@ my: custom: စိတ်ကြိုက် delete: အချက်အလက်များဖျက်ပါ deleted: ဖျက်ပြီးပါပြီ + demote: အဆင့်လျော့မည် + destroyed_msg: "%{username} ၏ အချက်အလက်ကို မကြာမီ ဖျက်ပါမည်" + disable: ရပ်တန့် + disable_sign_in_token_auth: အီးမေးတိုကင် အထောက်အထားပြခြင်းကို ပိတ်ပါ disable_two_factor_authentication: 2FA ကို ပိတ်ပါ + disabled: အကောင့်ပိတ်သိမ်းထားသည် display_name: ဖော်ပြမည့်အမည် domain: ဒိုမိန်း edit: ပြင်ဆင်ရန် email: အီးမေးလ် email_status: အီးမေးလ်အခြေအနေ + enable: မပိတ်သိမ်းထားသော enable_sign_in_token_auth: အီးမေးတိုကင် စစ်မှန်ကြောင်းအတည်ပြုချက်ကို ဖွင့်ပါ enabled: ဖွင့်ထားသည် + enabled_msg: "%{username} ၏ အကောင့်ကို ပိတ်သိမ်းထားသည်" followers: စောင့်ကြည့်သူများ follows: စောင့်ကြည့်မယ် header: မျက်နှာဖုံးပုံ + inbox_url: Inbox URL + invite_request_text: ပါဝင်ရခြင်း အကြောင်းအရင်း invited_by: ဖိတ်ခေါ်ထားသည် ip: IP joined: စတင်ဝင်ရောက်သည့်နေ့ @@ -66,6 +84,8 @@ my: login_status: အကောင့်ဝင်ရောက်မှုအခြေအနေ media_attachments: မီဒီယာ ပူးတွဲချက်များ memorialize: အမှတ်တရအဖြစ် ပြောင်းပါ + memorialized: အမှတ်တရ + memorialized_msg: "%{username} ကို အမှတ်တရအကောင့်အဖြစ် ပြောင်းလဲခဲ့သည်" moderation: active: လက်ရှိအသုံးပြုလျက်ရှိခြင်း all: အားလုံး @@ -78,14 +98,24 @@ my: most_recent_activity: နောက်ဆုံးအသုံးပြုခဲ့သည့်အချိန် most_recent_ip: အသုံးပြုလေ့ရှိသည့် IP လိပ်စာ no_account_selected: မည်သည့်အကောင့်ကိုမျှ ရွေးချယ်ထားခြင်းမရှိသောကြောင့် ပြောင်းလဲခြင်းမရှိပါ + no_limits_imposed: ကန့်သတ်ချက် မရှိပါ။ + no_role_assigned: တာဝန်ပေးအပ်ထားခြင်း မရှိပါ not_subscribed: စာရင်းသွင်းထားခြင်းမရှိပါ + pending: ဆိုင်းငံ့ထားသော သုံးသပ်ချက် perform_full_suspension: ရပ်ဆိုင်းရန် + previous_strikes: ယခင်လုပ်ဆောင်ချက်များ + previous_strikes_description_html: + other: ဤအကောင့်တွင် လုပ်ဆောင်ချက်%{count} ရှိသည်။ promote: အထောက်အကူ protocol: လုပ်ထုံးလုပ်နည်း public: အများမြင် + push_subscription_expires: PuSH စာရင်းသွင်းမှုမှာ သက်တမ်းကုန်ဆုံးသွားပါပြီ redownload: ပရိုဖိုင်ကို ပြန်လည်စတင်ရန် redownloaded_msg: မူလမှစ၍ %{username} ၏ ပရိုဖိုင်ကို ပြန်လည်စတင်ပြီးပါပြီ reject: ဖယ်ရှားပါ + rejected_msg: "%{username} ၏ အကောင့်ဖွင့်အက်ပလီကေးရှင်းကို ဖယ်ရှားလိုက်ပါပြီ" + remote_suspension_irreversible: ဤအကောင့်၏အချက်အလက်ကို လုံးဝ ဖျက်လိုက်ပါပြီ။ + remote_suspension_reversible_hint_html: အကောင့်ကို ၎င်းတို့၏ဆာဗာတွင် ဆိုင်းငံ့ထားပြီး အချက်အလက်ကို %{date} နေ့တွင် လုံးဝဖယ်ရှားလိုက်ပါမည်။ ထိုအချိန်အထိ အဝေးမှထိန်းချုပ်နိုင်သောဆာဗာက ဤအကောင့်ကို ပြန်လည်ရယူနိုင်သည်။ အကောင့်အချက်အလက်အားလုံးကို ချက်ချင်းဖယ်ရှားလိုပါက အောက်ပါအတိုင်း ပြုလုပ်နိုင်ပါသည်။ remove_avatar: ကိုယ်စားပြုရုပ်ပုံကို ဖယ်ရှားပါ remove_header: မျက်နှာဖုံးပုံ ဖယ်ရှားရန် removed_avatar_msg: "%{username} ၏ ကိုယ်စားပြုရုပ်ပုံအား ဖယ်ရှားပြီးပါပြီ" @@ -95,36 +125,53 @@ my: send: အတည်ပြုထားသောအီးမေးလ် ပြန်ပို့ပေးရန် success: အတည်ပြုထားသောအီးမေးလ် ပို့ပြီးပါပြီ။ reset: ပြန်သတ်မှတ်မည် + reset_password: 'လျှို့ဝှတ်နံပါတ်အားပြန်သတ်မှတ်မည် + + ' resubscribe: ပြန်လည်စာရင်းသွင်းပါ role: အခန်းကဏ္ဍ search: ရှာရန် + search_same_email_domain: အီးမေးလ်ဒိုမိန်းတူညီသည့် အခြားအသုံးပြုသူများ search_same_ip: IP တူတူ အသုံးပြုသော အခြားသူများ security: လုံခြုံရေး security_measures: only_password: စကားဝှက်ဖြင့်သာ password_and_2fa: စကားဝှက်နှင့် 2FA + sensitive: သတိပြုရန် + sensitized: သတိထားရသည်ဟု အမှတ်အသားပြုထားပါ + shared_inbox_url: inbox URL ကို မျှဝေခဲ့သည် show: created_reports: ဆောင်ရွက်ခဲ့ပြီးသောအစီရင်ခံစာများ targeted_reports: အခြားသူများမှဆောင်ရွက်ခဲ့သော အစီရင်ခံစာများ silence: ကန့်သတ် silenced: ကန့်သတ်ထားသည် statuses: ပို့စ်များ + strikes: ယခင်လုပ်ဆောင်ချက်များ subscribe: စာရင်းသွင်းပါ suspend: ရပ်ဆိုင်းပါ suspended: ရပ်ဆိုင်းထားသည် + suspension_irreversible: ဤအကောင့်၏ဒေတာကို နောက်ပြန်မဆုတ်ဘဲ ဖျက်လိုက်ပါပြီ။ ၎င်းကိုအသုံးပြုနိုင်စေရန် အကောင့်အား ဆိုင်းငံ့ထားနိုင်သော်လည်း ၎င်းတွင် ယခင်ကရှိထားသည့် မည်သည့်ဒေတာကိုမှ ပြန်လည်ရယူမည်မဟုတ်ပါ။ + suspension_reversible_hint_html: အကောင့်ကို ဆိုင်းငံ့ထားပြီး၊ ဒေတာကို %{date} တွင် အပြည့်အဝ ဖယ်ရှားပါမည်။ ထိုအချိန်အထိ မည်သည့်ဆိုးကျိုးများမရှိဘဲ အကောင့်ကို ပြန်လည်ရယူနိုင်သည်။ အကောင့်၏ဒေတာအားလုံးကို ချက်ချင်းဖယ်ရှားလိုပါက အောက်ပါအတိုင်း ပြုလုပ်နိုင်ပါသည်။ title: အကောင့်များ unblock_email: အီးမေးလ်ကိုပြန်ဖွင့်မည် unblocked_email_msg: " %{username} အီးမေးလ်ကိုပြန်ဖွင့်လိုက်ပါပြီ" + unconfirmed_email: အတည်မပြုရသေးသော အီးမေးလ် + undo_sensitized: သတိပြုရန်အား ပြန်ဖြုတ်ရန် + undo_silenced: ကန့်သတ်ချက်မလုပ်တော့ပါ + undo_suspension: ပိတ်ခြင်းကိုပြန်ဖွင့်မည် + unsilenced_msg: "%{username} ၏ အကောင့်၏ ကန့်သတ်ချက်ကို အောင်မြင်စွာ ပယ်ဖျက်ခဲ့သည်။" unsubscribe: စာရင်းမှထွက်ရန် unsuspended_msg: "%{username} ၏ အကောင့်ကို ရပ်ဆိုင်းလိုက်ပါပြီ" username: အသုံးပြုသူအမည် view_domain: ဒိုမိန်းအတွက် အကျဉ်းချုပ်ကို ကြည့်ပါ + warn: သတိပေးရန် web: ဝဘ် whitelisted: ဖက်ဒီကို ခွင့်ပြုခဲ့သည် action_logs: action_types: approve_appeal: အယူခံကို အတည်ပြုပါ approve_user: အသုံးပြုသူကို အတည်ပြုရန် + assigned_to_self_report: မှတ်တမ်းကိုတစ်ယောက်ယောက်အားလုပ်ခိုင်းမည် change_email_user: အသုံးပြုသူအတွက် အီးမေးလ်ပြောင်းရန် change_role_user: အသုံးပြုသူ၏ အခန်းကဏ္ဍကို ပြောင်းလဲရန် confirm_user: အသုံးပြုသူကို လက်ခံရန် @@ -138,15 +185,18 @@ my: create_ip_block: IP စည်းမျဉ်း ဖန်တီးရန် create_unavailable_domain: အသုံးမပြုနိုင်သောဒိုမိန်းကို ဖန်တီးပါ create_user_role: အခန်းကဏ္ဍဖန်တီးပါ + demote_user: အသုံးပြုသူကိုအဆင့်လျော့ချမည် destroy_announcement: ကြေညာချက်ကို ဖျက်ပါ destroy_canonical_email_block: အီးမေးလ်ပိတ်ပင်ခြင်းအား ဖျက်ရန် destroy_custom_emoji: စိတ်ကြိုက်အီမိုဂျီကို ဖျက်ရန် destroy_domain_allow: ဒိုမိန်းခွင့်ပြုခြင်းကို ဖျက်ရန် destroy_domain_block: ဒိုမိန်းပိတ်ပင်ခြင်းအား ဖျက်ရန် destroy_email_domain_block: အီးမေးလ်ဒိုမိန်းပိတ်ပင်ခြင်းအား ဖျက်ရန် + destroy_instance: ဒိုမိန်းကို ဖယ်ရှားပါ destroy_ip_block: IP စည်းမျဉ်းကို ဖျက်ပါ destroy_status: Post ကို ဖျက်ပါ destroy_unavailable_domain: အသုံးမပြုနိုင်သောဒိုမိန်းကို ဖျက်ပါ + destroy_user_role: အခန်းကဏ္ဍကို ဖျက်ပါ disable_2fa_user: 2FA ကို ပိတ်ပါ disable_custom_emoji: စိတ်ကြိုက်အီမိုဂျီကို ပိတ်ပါ disable_sign_in_token_auth_user: အသုံးပြုသူအတွက် အီးမေးလ်တိုကင် အထောက်အထားပြခြင်းကို ပိတ်ထားသည် @@ -163,10 +213,13 @@ my: resend_user: အတည်ပြုရန် မေးလ်ကို ပြန်ပို့ပေးရန် reset_password_user: စကားဝှက်ကို ပြန်လည်ရယူမည် resolve_report: အစီရင်ခံစာကို ဖြေရှင်းရန် + sensitive_account: Force-Sensitive အကောင့် silence_account: အကောင့် ကန့်သတ်ပါ suspend_account: အကောင့် ရပ်ဆိုင်းပါ unassigned_report: အစီရင်ခံစာ ဖြုတ်ရန် unblock_email_account: အီးမေးလ်လိပ်စာ ပြန်ဖွင့်ရန် + unsilence_account: ကန့်သတ်အကောင့်ကို မလုပ်တော့ပါ + unsuspend_account: အကောင့်ကို ရပ်ဆိုင်းပါ။ update_announcement: ကြေညာချက်ပြင်ဆင်ရန် update_custom_emoji: စိတ်ကြိုက်အီမိုဂျီကို ပြင်ဆင်ရန် update_domain_block: ဒိုမိန်းပိတ်ပင်ခြင်းအား ပြင်ဆင်ရန် @@ -174,6 +227,7 @@ my: update_status: ပို့စ်ပြင်ဆင်ရန် update_user_role: အခန်းကဏ္ဍပြင်ဆင်ရန် actions: + approve_appeal_html: "%{name} က %{target} မှ စိစစ်ဆုံးဖြတ်ချက်အယူခံဝင်ခြင်းကို အတည်ပြုခဲ့သည်" approve_user_html: " %{name} က %{target} မှ အကောင့်ဖွင့်ခြင်းကို အတည်ပြုထားသည်" assigned_to_self_report_html: "%{name} က အစီရင်ခံစာ %{target} များကို ၎င်းတို့ထံ ပေးအပ်ခဲ့သည်" change_email_user_html: "%{name} က အသုံးပြုသူ %{target} ၏ အီးမေးလ်လိပ်စာကို ပြောင်းခဲ့သည်" @@ -187,6 +241,7 @@ my: create_domain_block_html: "%{name} က ဒိုမိန်း %{target} ကို ပိတ်ပင်ထားသည်" create_email_domain_block_html: "%{name} က အီးမေးလ်ဒိုမိန်း %{target} ကို ပိတ်ပင်ထားသည်" create_ip_block_html: "%{name} က IP %{target} အတွက် စည်းမျဉ်းကို ဖန်တီးထားသည်" + create_unavailable_domain_html: "%{name} က ဒိုမိန်း %{target} သို့ ပေးပို့မှုကို ရပ်လိုက်သည်" create_user_role_html: "%{name} က %{target} အခန်းကဏ္ဍကို ဖန်တီးပြီးပါပြီ" demote_user_html: "%{name} က အသုံးပြုသူ %{target} ကို ဖြုတ်ပြီးပါပြီ" destroy_announcement_html: "%{name} က ကြေညာချက် %{target} ကို ဖျက်လိုက်သည်" @@ -198,6 +253,7 @@ my: destroy_instance_html: "%{name} က ဒိုမိန်း %{target} ကို ဖယ်ရှားခဲ့သည်" destroy_ip_block_html: "%{name} က IP %{target} အတွက် စည်းမျဉ်းကို ဖျက်ထားသည်" destroy_status_html: "%{name} က %{target} မှ တင်ထားသောပို့စ်ကို ဖယ်ရှားခဲ့သည်" + destroy_unavailable_domain_html: "%{name} က ဒိုမိန်း %{target} သို့ ပေးပို့မှုကို ပြန်လည်စတင်ခဲ့သည်" destroy_user_role_html: "%{name} ဖျက်ထားသော အခန်းကဏ္ဍ %{target} " disable_2fa_user_html: "%{name} က အသုံးပြုသူ %{target} အတွက် နှစ်ဆင့်ခံလုံခြုံရေးလိုအပ်ချက်ကို ပိတ်ထားသည်" disable_custom_emoji_html: "%{name} ပိတ်ထားသောအီမိုဂျီ %{target}" @@ -221,6 +277,7 @@ my: unassigned_report_html: "%{name} က အစီရင်ခံစာ %{target} ကို ဖြုတ်ထားသည်" unblock_email_account_html: "%{name} က %{target} ၏ အီးမေးလ်လိပ်စာကို ပြန်ဖွင့်ခဲ့သည်" unsensitive_account_html: "%{name} က %{target} ၏ မီဒီယာကို သတိထားရသောမီဒီယာအဖြစ် အမှတ်အသားပြုထားခြင်းမရှိပါ" + unsilence_account_html: "%{target} ၏ အကောင့်၏ %{name} ကန့်သတ်ချက် မရှိပါ။" unsuspend_account_html: "%{name} က %{target} ၏ အကောင့်ကို ဆိုင်းငံ့ထားသည်" update_announcement_html: "%{name} က ကြေညာချက် %{target} ကို ပြင်ဆင်ခဲ့သည်" update_custom_emoji_html: "%{name} က အီမိုဂျီ %{target} ကို ပြင်ဆင်ခဲ့သည်" @@ -238,10 +295,14 @@ my: edit: title: ကြေညာချက် ပြင်ဆင်ရန် empty: ကြေညာချက်များမတွေ့ပါ + live: လက်ရှိ new: create: ကြေညာချက်ဖန်တီးပါ title: ကြေညာချက်အသစ် publish: ပို့စ်တင်မည် + published_msg: ကြေညာချက်တင်ပြီးပါပြီ။ + scheduled_for: "%{time} အတွက် စီစဉ်ထားသည်" + scheduled_msg: ကြေညာချက်ထုတ်ပြန်ရန် စီစဉ်ထားသည်။ title: ကြေညာချက်များ unpublish: ပြန်ဖြုတ်ပါ unpublished_msg: ကြေညာချက်ကို ဖြုတ်ပြီးပါပြီ @@ -249,7 +310,9 @@ my: custom_emojis: assign_category: အမျိုးအစားသတ်မှတ်ရန် by_domain: ဒိုမိန်း + copied_msg: အီမိုဂျီ၏စက်အတွင်းကူးထားသည်များကို အောင်မြင်စွာ ဖန်တီးခဲ့သည်။ copy: ကူးယူပါ + copy_failed_msg: အီမိုဂျီ၏စက်အတွင်းမကူးနိုင်ပါ create_new_category: အမျိုးအစားအသစ်ဖန်တီးရန် created_msg: အီမိုဂျီ ဖန်တီးပြီးပါပြီ။ delete: ဖျက်ပါ @@ -268,6 +331,11 @@ my: title: စိတ်ကြိုက်အီမိုဂျီအသစ် ထည့်ပါ no_emoji_selected: မည်သည့်အီမိုဂျီကိုမျှ ရွေးချယ်ထားခြင်းမရှိသောကြောင့် ပြောင်းလဲခြင်းမရှိပါ not_permitted: ဤလုပ်ဆောင်ချက်ကို ဆောင်ရွက်ရန် သင့်ကို ခွင့်မပြုပါ။ + overwrite: ထပ်ရေးရန် + shortcode: 'တိုတိုကုတ် + + ' + shortcode_hint: အက္ခရာဂဏန်းများနှင့် underscore များဖြင့် အနည်းဆုံး စာလုံး ၂ လုံးရှိရပါမည် title: စိတ်ကြိုက်အီမိုဂျီများ uncategorized: အမျိုးအစားခွဲခြားထားခြင်းမရှိပါ unlist: စာရင်းမသွင်းထားပါ @@ -280,10 +348,16 @@ my: interactions: အပြန်အလှန်ဆက်သွယ်မှုများ media_storage: မီဒီယာသိုလှောင်မှု new_users: အသုံးပြုသူအသစ်များ + opened_reports: မှတ်တမ်းများကိုဖွင့်လှစ်ခဲ့သည် pending_appeals_html: other: "%{count} အယူခံဝင်မှုကို ဆိုင်းငံ့ထားခြင်း" + pending_reports_html: + other: "%{count} မှတ်တမ်းဆောင်ရွက်ဆဲ" + pending_tags_html: + other: "%{count} hashtag ဆောင်ရွက်ဆဲ" pending_users_html: other: "%{count} ဆိုင်းငံ့အသုံးပြုသူ" + resolved_reports: မှတ်တမ်းများဖြေရှင်းခဲ့သည် software: ဆော့ဖ်ဝဲလ် sources: အကောင့်ဖွင့်ခြင်းဆိုင်ရာ သတင်းရင်းမြစ်များ space: နေရာလွတ်အသုံးပြုမှု @@ -298,32 +372,47 @@ my: domain_allows: add_new: ဒိုမိန်းဖြင့် ဖက်ဒီကို ခွင့်ပြုရန် created_msg: ဒိုမိန်းကို ဖက်ဒီအတွက် ခွင့်ပြုပြီးပါပြီ + destroyed_msg: ဒိုမိန်းအား ဖက်ဒီမှ ခွင့်မပြုပါ export: ထုတ်ယူခြင်း import: ထည့်သွင်းခြင်း undo: ဒိုမိန်းဖြင့် ဖက်ဒီကို ခွင့်မပြုပါ domain_blocks: add_new: ဒိုမိန်းပိတ်ပင်ခြင်းအသစ် ထည့်ပါ created_msg: ဒိုမိန်းပိတ်ပင်ခြင်းကို ယခုလုပ်ဆောင်နေပါသည် + destroyed_msg: ဒိုမိန်းပိတ်ဆို့ခြင်းကို ပြန်ပြင်လိုက်ပါပြီ။ domain: ဒိုမိန်း edit: ဒိုမိန်းပိတ်ပင်ခြင်းကို ပြင်ဆင်ရန် + existing_domain_block: "%{name} အပေါ် ပိုမိုတင်းကျပ်သောကန့်သတ်ချက်များကို ချမှတ်ထားပြီးဖြစ်သည်။" + existing_domain_block_html: '%{name} အပေါ် ပိုမိုတင်းကျပ်သော ကန့်သတ်ချက်များကို ချမှတ်ထားပြီး ၎င်းကို ပြန်ဖွင့်ရန် လိုအပ်ပါသည်။' export: ထုတ်ယူခြင်း import: ထည့်သွင်းခြင်း new: create: ပိတ်ပင်ခြင်း ဖန်တီးရန် + hint: ဒိုမိန်းပိတ်ဆို့ခြင်းသည် ဒေတာဘေ့စ်အတွင်း အကောင့်ထည့်သွင်းမှုများကို မတားဆီးသော်လည်း ထိုအကောင့်များအတွက် တိကျစွာစိစစ်ခြင်းနည်းလမ်းများကို အလိုအလျောက်ပြန်လည်အသုံးချမည်ဖြစ်သည်။ severity: + desc_html: "ကန့်သတ်ချက် သည် ဤဒိုမိန်းရှိ အကောင့်များမှ ပို့စ်များကို ၎င်းတို့ကို မလိုက်ကြည့်သူတိုင်းကို မမြင်နိုင်စေမည်ဖြစ်သည်။ ဆိုင်းငံ့ထားရန် သည် ဤဒိုမိန်းအကောင့်များအတွက် အကြောင်းအရာ၊ မီဒီယာနှင့် ပရိုဖိုင်ဒေတာအားလုံးကို သင့်ဆာဗာမှ ဖယ်ရှားပါမည်။ မီဒီယာဖိုင်များကို ငြင်းပယ်လိုပါက None ကို အသုံးပြုပါ။" + noop: တစ်ခုမျှမရှိ silence: ကန့်သတ် suspend: ရပ်ဆိုင်းပါ title: ဒိုမိန်းပိတ်ပင်ထားခြင်းအသစ် no_domain_block_selected: မည်သည့်ဒိုမိန်းပိတ်ပင်ထားခြင်းကိုမျှ ရွေးချယ်ထားခြင်းမရှိသောကြောင့် ပြောင်းလဲခြင်းမရှိပါ not_permitted: ဤလုပ်ဆောင်ချက်ကို ဆောင်ရွက်ရန် သင့်ကို ခွင့်မပြုပါ။ + obfuscate: မှတ်ရခက်သောဒိုမိန်းအမည် + obfuscate_hint: ဒိုမိန်းကန့်သတ်ချက်များစာရင်းကို ဖွင့်ထားပါက စာရင်းရှိ ဒိုမိန်းအမည်များမှာ ရှုပ်ထွေးစေနိုင်ပါသည်။ private_comment: သီးသန့်မှတ်ချက် private_comment_hint: စိစစ်သူများ၏အတွင်းပိုင်းအသုံးပြုမှုအတွက် ဤဒိုမိန်းကန့်သတ်ချက်ဆိုင်ရာမှတ်ချက်။ public_comment: အများမြင်မှတ်ချက် + public_comment_hint: ဒိုမိန်းကန့်သတ်ချက်များစာရင်းကို ကြော်ငြာထားပါက အများသူငှာအတွက် ဤဒိုမိန်းကန့်သတ်ချက်နှင့်ပတ်သက်၍ ရေးသားပေးထားရန်။ reject_media: မီဒီယာဖိုင်များကို ဖယ်ရှားပါ + reject_media_hint: စက်တွင်းသိမ်းဆည်းထားသည့် မီဒီယာဖိုင်များကို ဖယ်ရှားပြီး ဒေါင်းလုဒ်လုပ်ခွင့် မရှိပါ။ ဆိုင်းငံ့ခြင်းများအတွက် မသက်ဆိုင်ပါ။ + reject_reports: မှတ်တမ်းများ ဖယ်ရှားရန် + reject_reports_hint: ဤဒိုမိန်းမှလာသော မှတ်တမ်းအားလုံးကို လျစ်လျူရှုပါ။ ဆိုင်းငံ့ခြင်းများအတွက် မသက်ဆိုင်ပါ။ undo: ဒိုမိန်းပိတ်ပင်ခြင်းကို ပြန်ဖျက်ရန် view: ဒိုမိန်းပိတ်ပင်ခြင်းကို ကြည့်ရန် email_domain_blocks: add_new: အသစ် ထည့်ပါ + attempts_over_week: + other: ပြီးခဲ့သည့် ရက်သတ္တပတ်အတွင်း %{count} ကြိုးပမ်းမှု created_msg: အီးမေးလ်ဒိုမိန်းကို ပိတ်ပင်နိုင်ခဲ့ပါသည် delete: ဖျက်ပါ dns: @@ -336,12 +425,18 @@ my: title: အီးမေးလ်ဒိုမိန်းအသစ်ကို ပိတ်ရန် no_email_domain_block_selected: မည်သည့်အီးမေးလ်ဒိုမိန်းပိတ်ပင်ခြင်းကိုမျှ ရွေးချယ်ထားခြင်းမရှိသောကြောင့် ပြောင်းလဲခြင်းမရှိပါ not_permitted: ခွင့်ပြုထားခြင်းမရှိပါ + resolved_dns_records_hint_html: ဒိုမိန်းအမည်သည် အီးမေးလ်လက်ခံခြင်းအတွက် နောက်ဆုံးတွင် တာဝန်ရှိသည့် အောက်ပါ MX ဒိုမိန်းများသို့ ဖြေရှင်းပေးသည်။ MX ဒိုမိန်းကို ပိတ်ဆို့ခြင်းသည် တူညီသော MX ဒိုမိန်းကို အသုံးပြုသည့် မည်သည့်အီးမေးလ်လိပ်စာမှ အကောင့်ဖွင့်ခြင်းများကို ပိတ်ဆို့စေမည်၊ မြင်နိုင်သောဒိုမိန်းအမည်သည် ကွဲပြားသော်လည်း၊ အဓိက အီးမေးလ်ဝန်ဆောင်မှုပေးသူများကို မပိတ်ဆို့ရန် သတိထားပါ။ resolved_through_html: "%{domain} မှတစ်ဆင့် ဖြေရှင်းခဲ့သည်" title: ပိတ်ပင်ထားသော အီးမေးလ်ဒိုမိန်းများ export_domain_allows: + new: + title: ဒိုမိန်းတင်သွင်းခွင့်ပြုသည် no_file: ဖိုင်ရွေးထားခြင်းမရှိပါ။ export_domain_blocks: import: + description_html: ဒိုမိန်းပိတ်ဆို့စာရင်း ထည့်သွင်းပါမည်။ ဤစာရင်းကို သင်ကိုယ်တိုင် မရေးသားထားပါက ပြန်လည်သုံးသပ်ရန်လိုပါသည်။ + existing_relationships_warning: လက်ရှိစောင့်ကြည့်သူများနှင့် ဆက်ဆံရေး + private_comment_description_html: ထည့်သွင်းထားသော ဒိုမိန်းပိတ်ဆို့စာရင်းများအား ကြည့်ရှုရန်အတွက် ပိတ်ဆို့စာရင်းများကို အောက်ပါသီးသန့်မှတ်ချက်ဖြင့် ဖန်တီးပါမည် - %{comment} private_comment_template: "%{date} တွင် %{source} မှ ထည့်သွင်းခဲ့သည်" title: ဒိုမိန်းပိတ်ပင်ထားမှုများကို ထည့်သွင်းရန် invalid_domain_block: အောက်ပါအမှား(များ)ကြောင့် တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော ဒိုမိန်းပိတ်ပင်ထားမှုများကို ကျော်သွားခဲ့သည် - %{error} @@ -349,15 +444,29 @@ my: title: ဒိုမိန်းပိတ်ပင်ထားမှုများကို ထည့်သွင်းရန် no_file: ဖိုင်ရွေးထားခြင်းမရှိပါ follow_recommendations: + description_html: "အကြံပြုချက်များကို အသုံးပြုသူအသစ်များက လိုက်နာခြင်းဖြင့် စိတ်ဝင်စားစရာအကြောင်းအရာများကို လျင်မြန်စွာရှာဖွေနိုင်စေပါမည်။ အသုံးပြုသူတစ်ဦးက စိတ်ကြိုက်ပြင်ဆင်ထားသည့် အကြံပြုချက်များလိုက်နာရန်အတွက် အခြားသူများနှင့် လုံလောက်သောအပြန်အလှန်တုံ့ပြန်ခြင်းမရှိပါက ယင်းအစား ဤအကောင့်များကို အကြံပြုလိုပါသည်။ ၎င်းအကောင့်များကို မကြာသေးမီက ထိတွေ့ဆက်ဆံမှုအများဆုံးနှင့် အသုံးပြုထားသည့်ဘာသာစကားမှတစ်ဆင့် ဒေသတွင်းစောင့်ကြည့်သူဦးရေ အများဆုံးရှိသော အကောင့်များကိုအခြေခံ၍ နေ့စဉ် တွက်ချက်ထားခြင်းဖြစ်ပါသည်။" language: ဘာသာစကားအတွက် status: အခြေအနေ + title: အကြံပြုချက်များကို စောင့်ကြည့်ပါ + unsuppress: အကြံပြုချက်စောင့်ကြည့်ခြင်းအား ပြန်လည်ရယူပါ instances: + availability: + description_html: + other: ဒိုမိန်းသို့ ပေးပို့ခြင်း မအောင်မြင်ဘဲ %{count} ရက် မအောင်မြင်ပါက၊ ဒိုမိန်းထံပေးပို့ခြင်း မှ မရရှိပါက နောက်ထပ်ပေးပို့ရန် ကြိုးပမ်းမှုများ ပြုလုပ်မည်မဟုတ်ပါ။ + failure_threshold_reached: "%{date} နေ့ တွင် မအောင်မြင်ခဲ့ပါ။" + failures_recorded: + other: "%{count} ရက်နေ့တွင် ကြိုးစားမှု မအောင်မြင်ပါ။" + no_failures_recorded: မှတ်တမ်းမရှိပါ။ + title: ရရှိနိုင်မှု + warning: ဤဆာဗာအသုံးပြုနိုင်ရန် နောက်ဆုံးကြိုးပမ်းမှုမှာ မအောင်မြင်ခဲ့ပါ back_to_all: အားလုံး back_to_limited: ကန့်သတ်ထားသည် back_to_warning: သတိပေးချက် by_domain: ဒိုမိန်း confirm_purge: ဤဒိုမိန်းမှ အချက်အလက်များကို အပြီးတိုင်ဖျက်လိုသည်မှာ သေချာပါသလား။ content_policies: + comment: အတွင်းပိုင်းမှတ်ချက် + description_html: ဤဒိုမိန်းနှင့် ဒိုမိန်းခွဲများမှ အကောင့်အားလုံးအတွက် အသုံးချမည့် အကြောင်းအရာမူဝါဒများကို သတ်မှတ်နိုင်သည်။ limited_federation_mode_description_html: ဤဒိုမိန်းဖြင့် ဖက်ဒီကို ခွင့်ပြုမလား။ policies: reject_media: မီဒီယာဖယ်ရှားရန် @@ -365,6 +474,8 @@ my: silence: ကန့်သတ် suspend: ရပ်ဆိုင်းပါ policy: မူဝါဒ + reason: မူဝါဒဆိုင်ရာအကြောင်းအရာများ + title: အကြောင်းအရာမူဝါဒများ dashboard: instance_accounts_dimension: အများဆုံးစောင့်ကြည့်ထားသည့်အကောင့်များ instance_accounts_measure: သိမ်းဆည်းထားသော အကောင့်များ @@ -372,27 +483,45 @@ my: instance_follows_measure: သူတို့၏စောင့်ကြည့်သူများ ဒီနေရာမှာပါ instance_languages_dimension: အသုံးများသည့်ဘာသာစကားများ instance_media_attachments_measure: သိမ်းဆည်းထားသော မီဒီယာပူးတွဲဖိုင်များ + instance_reports_measure: "၎င်းတို့နှင့်ဆိုင်သော အစီရင်ခံစာများ" instance_statuses_measure: သိမ်းဆည်းထားသောပို့စ်များ delivery: all: အားလုံး + clear: ပေးပို့မှု အမှားအယွင်းများကို ရှင်းလင်းပါ + failing: မအောင်မြင်ခြင်း + restart: ပေးပို့မှုကို ပြန်လည်စတင်ရန် + stop: ပေးပို့မှုကို ရပ်ရန် unavailable: မရရှိနိုင်ပါ + delivery_available: ပေးပို့နိုင်ပါပြီ + delivery_error_days: ပေးပို့မှု မှားယွင်းသည့်ရက်များ + delivery_error_hint: "%{count} ရက်အတွင်း မပေးပို့နိုင်ပါက ၎င်းကို ပေးပို့မရနိုင်ဟု အလိုအလျောက် အမှတ်အသားပြုပါမည်။" + destroyed_msg: "%{domain} မှ အချက်အလက်များကို မကြာမီ ဖျက်ပါမည်။" + empty: ဒိုမိန်းများ မတွေ့ပါ။ + known_accounts: + other: လူသိများသော အကောင့် %{count} ခု moderation: all: အားလုံး limited: ကန့်သတ်ထားသော title: စိစစ်ခြင်း private_comment: သီးသန့်မှတ်ချက် public_comment: အများမြင်မှတ်ချက် + purge: ဖျက် + purge_description_html: ဤဒိုမိန်းသည် အော့ဖ်လိုင်းဖြစ်နေပါက သင့်သိုလှောင်မှုမှ အကောင့်မှတ်တမ်းများနှင့် ဆက်စပ်အချက်အလက်အားလုံးကို ဖျက်နိုင်သည်။ အချိန်အနည်းငယ် ကြာနိုင်ပါသည်။ title: ဖက်ဒီ total_blocked_by_us: ကျွန်ုပ်တို့မှ ပိတ်ပင်ထားခြင်း total_followed_by_them: "၎င်းတို့မှ စောင့်ကြည့်ခဲ့သည်" total_followed_by_us: ကျွန်ုပ်တို့မှ စောင့်ကြည့်ခဲ့သည် total_reported: "၎င်းတို့နှင့်ဆိုင်သော အစီရင်ခံစာများ" total_storage: မီဒီယာ ပူးတွဲချက်များ + totals_time_period_hint_html: အောက်တွင်ဖော်ပြထားသော စုစုပေါင်းမှာ အချိန်တိုင်းအတွက် အချက်အလက်များဖြစ်သည်။ invites: + deactivate_all: အားလုံးပယ်ဖျက်ရန် filter: all: အားလုံး available: ရရှိနိုင်သော + expired: သက်တမ်းကုန်သွားပါပြီ title: စစ်ထုတ်ခြင်း + title: ဖိတ်ခေါ်ခြင်း ip_blocks: add_new: စည်းမျဉ်းဖန်တီးပါ created_msg: IP စည်းမျဉ်းအသစ် ထည့်သွင်းပြီးပါပြီ @@ -411,30 +540,58 @@ my: relationships: title: "%{acct} နှင့် ပတ်သက်မှု" relays: + add_new: relay အသစ်ထည့်ပါ delete: ဖျက်ပါ + description_html: စာရင်းသွင်းပြီး ထုတ်ဝေသည့် ဆာဗာများအကြား အများသူငှာ ပို့စ်များ အများအပြားကို ဖလှယ်ပေးသည့် ကြားခံဆာဗာတစ်ခုဖြစ်သည်။ ၎င်းသည် အသေးစားနှင့် အလတ်စား ဆာဗာများမှ အကြောင်းအရာများကို ရှာဖွေတွေ့ရှိရန် ကူညီပေးနိုင်သည်၊ ၎င်းသည် ဒေသဆိုင်ရာအသုံးပြုသူများသည် အဝေးထိန်းဆာဗာများပေါ်တွင် အခြားလူများကို ကိုယ်တိုင်လိုက်လျှောက်ရန် လိုအပ်မည်ဖြစ်သည်။ disable: ပိတ်ပါ disabled: ပိတ်ထားသည် enable: ဖွင့်ပါ + enable_hint: တစ်ကြိမ်ဖွင့်ပြီးသည်နှင့် သင့်ဆာဗာသည် ဤထပ်ဆင့်လွှင့်မှုမှ အများမြင်ပို့စ်များအားလုံးကို စာရင်းသွင်းလိုက်မည်ဖြစ်ပြီး ဤဆာဗာ၏ အများမြင်ပို့စ်များကို ၎င်းထံ စတင်ပေးပို့မည်ဖြစ်သည်။ enabled: ဖွင့်ထားသည် + inbox_url: ထပ်ဆင့်ပေးပို့မည့် URL + pending: ထပ်ဆင့်အတည်ပြုချက်ကို စောင့်ဆိုင်းနေခြင်း save_and_enable: သိမ်းပြီး ဖွင့်ရန် + setup: ထပ်ဆင့်ချိတ်ဆက်မှုစနစ် ထည့်သွင်းပါ + signatures_not_enabled: လုံခြုံရေးမုဒ် သို့မဟုတ် ကန့်သတ်ဖက်ဒီမုဒ်ကို ဖွင့်ထားစဉ် ထပ်ဆင့်ပို့ထားမှုများမှာ မှန်ကန်စွာ အလုပ်မလုပ်နိုင်တော့ပါ status: အခြေအနေ + title: ထပ်ဆင့်ပေးပို့ခြင်းများ + report_notes: + created_msg: မှတ်တမ်းမှတ်စုကို ဖန်တီးပြီးပါပြီ။ + destroyed_msg: မှတ်တမ်းမှတ်စုကို ဖျက်ပြီးပါပြီ။ reports: account: notes: other: "%{count} မှတ်စု" action_log: မှတ်တမ်းများစစ်ဆေးခြင်း + action_taken_by: ဆောင်ရွက်ခဲ့ပါသည် + actions: + delete_description_html: အစီရင်ခံထားသော ပို့စ်များကို ဖျက်လိုက်မည်ဖြစ်ပြီး အကောင့်တစ်ခုတည်းမှ နောင်လာမည့် ချိုးဖောက်မှုများအပေါ် အရှိန်မြှင့်ကူညီရန် သတိပေးချက်တစ်ခု မှတ်တမ်းတင်ပါမည်။ + mark_as_sensitive_description_html: တိုင်ကြားထားသည့်ပို့စ်များရှိ မီဒီယာအား သတိထားရသောမီဒီယာအဖြစ် သတ်မှတ်ပြီး အကောင့်တူဖြင့် နောင် ချိုးဖောက်မှုများရှိပါက သတိပေးချက်တစ်ခုဖြင့် သင့်အတွက် မှတ်တမ်းပြုလုပ်ပေးထားပါမည်။ + other_description_html: အကောင့်ထိန်းချုပ်ရန်နှင့် တိုင်ကြားထားသည့်သို့ ဆက်သွယ်မှုကို စိတ်ကြိုက်ပြင်ဆင်ရန်တို့အတွက် နောက်ထပ်ရွေးချယ်စရာများကို ကြည့်ပါ။ + resolve_description_html: တိုင်ကြားထားသည့်အကောင့်ကို အရေးယူမည်မဟုတ်ပါ၊ လုပ်ဆောင်ချက်ကို မှတ်တမ်းတင်ထားခြင်းမရှိသည့်အပြင် တိုင်ကြားထားမှုကိုလည်း ရုပ်သိမ်းပါမည်။ + silence_description_html: အကောင့်ကို စောင့်ကြည့်ထားသူများ သို့မဟုတ် ရှာဖွေသူများသာ မြင်နိုင်မည်ဖြစ်ပါသည်။ အကောင့်တွေ့ရှိမှုအား ကန့်သတ်ထားသော်လည်း ပြန်ပြောင်းဆောင်ရွက်နိုင်ပါသည်။ ဤအကောင့်နှင့်ပတ်သက်သည့် မှတ်တမ်းအားလုံးကို ပိတ်ပါမည်။ + suspend_description_html: အကောင့်နှင့် ၎င်း၏အကြောင်းအရာအားလုံးမှာ သုံးခွင့်မရတော့သဖြင့် နောက်ဆုံးတွင် ဖျက်ပစ်မည်ဖြစ်ပါသည်။ ၎င်းနှင့် အပြန်အလှန်မတုံ့ပြန်နိုင်တော့သော်လည်း ရက် ၃၀ အတွင်း ပြန်ယူ၍ရနိုင်ပါသည်။ ဤအကောင့်နှင့်ပတ်သက်သည့် မှတ်တမ်းအားလုံးကို ပိတ်ပါမည်။ + actions_description_html: ဤမှတ်တမ်းဖြေရှင်းရန်အတွက် မည်သည့်လုပ်ဆောင်ချက် ဆောင်ရွက်မည်ကို ဆုံးဖြတ်ပါ။ တိုင်ကြားထားသောအကောင့်ကို ဆောင်ရွက်လိုပါက Spam မရွေးချယ်ဘဲ အီးမေးလ်အကြောင်းကြားစာ ပေးပို့ရပါမည်။ + actions_description_remote_html: ဤမှတ်တမ်းဖြေရှင်းရန်အတွက် မည်သည့်လုပ်ဆောင်ချက် ဆောင်ရွက်မည်ကို ဆုံးဖြတ်ပါ။ သင်၏ ဆာဗာသည် အဝေးမှထိန်းချုပ်ထားသောအကောင့်နှင့် ဆက်သွယ်ပြီး အကြောင်းအရာကိုင်တွယ်ပုံပေါ်မှာသာ သက်ရောက်မှုရှိမည်ဖြစ်သည်။ + add_to_report: အစီရင်ခံစာထပ်ထည့်ရန် are_you_sure: သေချာပါသလား။ assign_to_self: ကျွန်ုပ်ကို တာဝန်ပေးရန် assigned: စိစစ်သူကို တာဝန်ပေးရန် + by_target_domain: တိုင်ကြားထားသော အကောင့်၏ ဒိုမိန်း cancel: ပယ်ဖျက်မည် category: အမျိုးအစား + category_description_html: ဤအကောင့်နှင့်/သို့မဟုတ် အကြောင်းအရာကို အစီရင်ခံထားသည့် အကြောင်းရင်းကို အစီရင်ခံထားသည့်အကောင့်နှင့် ဆက်သွယ်မှုတွင် ကိုးကားပါမည်။ + comment: + none: တစ်ခုမျှမရှိ comment_description_html: "%{name} က နောက်ထပ်အချက်အလက်များ ပံ့ပိုးပေးနိုင်ရန်အတွက် ရေးသားခဲ့သည် -" confirm: အတည်ပြုမည် confirm_action: "@%{acct} ကို စိစစ်အကဲဖြတ်ခြင်းအား အတည်ပြုပါ" + created_at: အကြောင်းကြားပြီးပါပြီ delete_and_resolve: ပို့စ်များကို ဖျက်ပါ forwarded: ထပ်ဆင့်ပို့ပြီးပါပြီ forwarded_to: "%{domain} သို့ ထပ်ဆင့်ပို့ထားသည်" mark_as_resolved: ဖြေရှင်းပြီးကြောင်း အမှတ်အသားပြုပါ + mark_as_sensitive: သတိထားရသည်ဟု အမှတ်အသားပြုပါ mark_as_unresolved: မဖြေရှင်းရသေးကြောင်း အမှတ်အသားပြုပါ no_one_assigned: တစ်ယောက်မျှမရှိပါ notes: @@ -442,13 +599,22 @@ my: create_and_resolve: မှတ်စုဖြင့် ဖြေရှင်းပါ create_and_unresolve: မှတ်စုဖြင့် ပြန်ဖွင့်ရန် delete: ဖျက်ပါ + placeholder: မည်သည့်လုပ်ဆောင်ချက်များ ဆောင်ရွက်ခဲ့သည်ကို ဖော်ပြပါ သို့မဟုတ် အခြားဆက်စပ် အပ်ဒိတ်များကို ဖော်ပြပါ ... title: မှတ်စုများ + notes_description_html: အခြားစိစစ်သူများနှင့် ကိုယ်တိုင်အတွက် မှတ်စုများ ထားခဲ့ပါ + processed_msg: 'အကြောင်းကြားမှု #%{id} ကို ဆောင်ရွက်ပြီးပါပြီ' + quick_actions_description_html: တိုင်ကြားထားသောအကြောင်းအရာများကြည့်ရှုရန်အတွက် လုပ်ဆောင်ချက်တစ်ခု ဆောင်ရွက်ပါ သို့မဟုတ် Scroll ဆွဲ၍ ကြည့်ပါ - remote_user_placeholder: "%{instance} မှ အဝေးကနေအသုံးပြုသူ" reopen: အစီရင်ခံစာပြန်ဖွင့်ရန် report: "#%{id} အစီရင်ခံရန်" + reported_account: တိုင်ကြားထားသောအကောင့် + reported_by: မှ တိုင်ကြားထားသည် resolved: ဖြေရှင်းပြီးပါပြီ + resolved_msg: မှတ်တမ်းကို ဖြေရှင်းပြီးပါပြီ။ skip_to_actions: လုပ်ဆောင်ချက်များသို့ ကျော်သွားရန် status: အခြေအနေ + statuses: တိုင်ကြားထားသောအကြောင်းအရာ + statuses_description_html: စိတ်အ​နှောင့်အယှက်ဖြစ်​စေ​သောအကြောင်းအရာများကို အစီရင်ခံထားသောအကောင့်နှင့် ဆက်သွယ်ပြီး အ​ရေးယူ​ဆောင်ရွက်ပါမည် summary: action_preambles: delete_html: သင်သည် @%{acct} ၏ ပို့စ်အချို့ကို ဖယ်ရှား တော့မည်ဖြစ်သည်။ ၎င်းတို့မှာ - @@ -456,8 +622,16 @@ my: silence_html: သင်သည် @%{acct} ၏ အကောင့်ကို ကန့်သတ် တော့မည်ဖြစ်သည်။ ၎င်းမှာ - suspend_html: သင်သည် @%{acct} ၏ အကောင့်ကို ဆိုင်းငံ့ တော့မည်ဖြစ်သည်။ ၎င်းမှာ - actions: + delete_html: စိတ်အနှောင့်အယှက်ဖြစ်စေသောပို့စ်များကို ဖယ်ရှားပါ + mark_as_sensitive_html: စိတ်အနှောင့်အယှက်ဖြစ်စေသောပို့စ်များ၏ မီဒီယာကို သတိထားရသောမီဒီယာအဖြစ် အမှတ်အသားပြုပါ suspend_html: "@%{acct} ကို ဆိုင်းငံ့ထားသောကြောင့် ပရိုဖိုင်နှင့် အကြောင်းအရာများအား ဝင်ရောက်ခွင့်မရှိတော့သဖြင့် အပြန်အလှန် တုံ့ပြန်၍ မရတော့ခြင်း" + close_report: 'တိုင်ကြားစာ #%{id} ကို ဖြေရှင်းပြီးကြောင်း အမှတ်အသားပြုပါ' + close_reports_html: "@%{acct} နှင့်ပတ်သက်သည့် အစီရင်ခံစာအားလုံး ကို ဖြေရှင်းပြီးကြောင်း အမှတ်အသားပြုပါ" delete_data_html: "@%{acct} ၏ ပရိုဖိုင်နှင့် အကြောင်းအရာများကို ဆိုင်းငံ့ထားခြင်းမရှိပါက ယခုမှ ရက်ပေါင်း ၃၀ အတွင်း ဖျက်ရန်" + preview_preamble_html: "@%{acct} သည် အောက်ပါအကြောင်းအရာများကြောင့် သတိပေးချက်ကို လက်ခံရရှိပါမည် -" + send_email_html: သတိပေးချက် အီးမေးလ်တစ်စောင် @%{acct} ပေးပို့ပါ + target_origin: တိုင်ကြားထားသောအကောင့်၏ မူလအစ + title: မှတ်တမ်းများ unassign: တာဝန်မှဖြုတ်ရန် unknown_action_msg: အမည်မသိလုပ်ဆောင်ချက်- %{action} unresolved: မဖြေရှင်းရသေးပါ @@ -474,13 +648,16 @@ my: moderation: စိစစ်ခြင်း special: အထူး delete: ဖျက်ပါ + description_html: "အသုံးပြုသူအခန်းကဏ္ဍများဖြင့် Mastodon အသုံးပြုသူများ၏ မည်သည့်လုပ်ဆောင်ချက်များနှင့် နေရာများကိုမဆို သင် စိတ်ကြိုက်ပြင်ဆင်နိုင်ပါသည်။" edit: "'%{name} ၏ အခန်းကဏ္ဍကို ပြင်ဆင်ရန်" everyone: မူလသတ်မှတ်ထားသည့် ခွင့်ပြုချက်များ permissions_count: other: "%{count} ခွင့်ပြုချက်" privileges: administrator: စီမံသူ + administrator_description: ဤခွင့်ပြုချက် အသုံးပြုသူများအနေဖြင့် ခွင့်ပြုချက်တိုင်းကို ကျော်သွားနိုင်ပါမည် delete_user_data: အသုံးပြုသူ၏အချက်အလက်ကို ဖျက်ပါ + delete_user_data_description: အခြားအသုံးပြုသူများ၏ အချက်အလက်များကို နှောင့်နှေးခြင်းမရှိဘဲ အသုံးပြုသူများအား ဖျက်ခွင့်ပြုသည် invite_users: အသုံးပြုသူများကို ဖိတ်ခေါ်ရန် invite_users_description: ဆာဗာသို့ လူသစ်များဖိတ်ခေါ်ရန်အတွက် အသုံးပြုသူအား ခွင့်ပြုရန် manage_announcements: ကြေညာချက်များကို စီမံပါ @@ -488,135 +665,344 @@ my: manage_appeals: အယူခံဝင်ထားခြင်းများကို စီမံပါ manage_appeals_description: စိစစ်အရေးယူမှုများအပေါ် အယူခံဝင်မှုများ ပြန်လည်သုံးသပ်ရန်အတွက် အသုံးပြုသူများအား ခွင့်ပြုရန် manage_blocks: ပိတ်ပင်ထားမှုများကို စီမံပါ + manage_blocks_description: အသုံးပြုသူများအား အီးမေးလ်ဝန်ဆောင်မှုပေးသူများနှင့် IP လိပ်စာများကို ပိတ်ဆို့ရန် ခွင့်ပြုသည် manage_custom_emojis: စိတ်ကြိုက်အီမိုဂျီများကို ပြင်ဆင်ရန် manage_custom_emojis_description: အသုံးပြုသူများအား ဆာဗာပေါ်တွင် စိတ်ကြိုက်အီမိုဂျီများကို စီမံခန့်ခွဲရန် ခွင့်ပြုသည်။ manage_federation: ဖက်ဒီကို စီမံပါ manage_federation_description: အသုံးပြုသူများအား အခြားဒိုမိန်းများနှင့် ပိတ်ပင်ခြင်း၊ ဖက်ဒီခွင့်ပြုခြင်းနှင့် ပေးပို့နိုင်မှုကို ထိန်းချုပ်ခြင်းတို့ကို ခွင့်ပြုသည်။ manage_invites: ဖိတ်ခေါ်ခြင်းကို စီမံရန် + manage_invites_description: အသုံးပြုသူများအား ဖိတ်ခေါ်ထားသည့်လင့်များကို ရှာဖွေကြည့်ရှုပြီး ပိတ်ရန် ခွင့်ပြုသည် manage_reports: အစီရင်ခံစာများကို စီမံပါ + manage_reports_description: အသုံးပြုသူများအား အစီရင်ခံစာများကို ပြန်လည်သုံးသပ်ရန်နှင့် ၎င်းတို့နှင့် ဆန့်ကျင်သည့် စိစစ်အရေးယူမှုများကို လုပ်ဆောင်ရန် ခွင့်ပြုသည် manage_roles: အခန်းကဏ္ဍများကို စီမံပါ + manage_roles_description: အသုံးပြုသူများအား ၎င်းတို့၏အောက်တွင်ရှိသော အခန်းကဏ္ဍများကို စီမံခန့်ခွဲရန်နှင့် သတ်မှတ်ရန် ခွင့်ပြုထားသည် manage_rules: စည်းမျဉ်းများကို စီမံပါ + manage_rules_description: အသုံးပြုသူများအား ဆာဗာစည်းမျဉ်းများကို ပြောင်းလဲခွင့် ပြုထားသည် manage_settings: သတ်မှတ်ချက်များကို စီမံပါ manage_settings_description: အသုံးပြုသူများကို ဆိုက်သတ်မှတ်ချက်များ ပြောင်းလဲခွင့် ပြုရန် + manage_taxonomies: အမျိုးအစားခွဲခြားပါ + manage_taxonomies_description: ခေတ်စားနေသော အကြောင်းအရာများကို ပြန်လည်သုံးသပ်ရန်နှင့် hashtag သတ်မှတ်ချက်များကို ပြင်ဆင်ရန်အတွက် အသုံးပြုသူများကို ခွင့်ပြုသည် manage_user_access: အသုံးပြုသူဝင်ရောက်မှုကို စီမံပါ + manage_user_access_description: အသုံးပြုသူများကို အခြားအသုံးပြုသူများ၏ နှစ်ဆင့်ခံလုံခြုံရေးစနစ်ကို ပိတ်ရန်၊ ၎င်းတို့၏ အီးမေးလ်လိပ်စာကို ပြောင်းလဲရန်နှင့် စကားဝှက်ကို ပြန်လည်သတ်မှတ်ရန် ခွင့်ပြုသည် manage_users: အသုံးပြုသူများကို စီမံပါ + manage_users_description: အသုံးပြုသူများအား အခြားအသုံးပြုသူများ၏ အသေးစိတ်အချက်အလက်များကို ကြည့်ရှုနိုင်ပြီး ၎င်းတို့နှင့် ဆန့်ကျင်သည့် စိစစ်အရေးယူမှုများကို လုပ်ဆောင်ခွင့်ပြုသည် + manage_webhooks: Webhooks ကို စီမံပါ + manage_webhooks_description: စီမံခန့်ခွဲရေးဆိုင်ရာ ဖြစ်ရပ်များအတွက် အသုံးပြုသူများအား webhook စနစ်ထည့်သွင်းရန် ခွင့်ပြုထားသည် + view_audit_log: စာရင်းမှတ်တမ်းကို ကြည့်ရန် + view_audit_log_description: အသုံးပြုသူများကို ဆာဗာပေါ်တွင် စီမံခန့်ခွဲရေးဆိုင်ရာ လုပ်ဆောင်ချက်မှတ်တမ်းကို ကြည့်ရှုခွင့်ပြုသည်။ view_dashboard: ဒက်ရှ်ဘုတ်မြင်ကွင်းကို ကြည့်ရန် view_dashboard_description: အသုံးပြုသူများကို ဒက်ရှ်ဘုတ်မြင်ကွင်းနှင့် အမျိုးမျိုးသော ဆိုဒ်နှင့်ဆိုင်သောဂဏန်းများအား ဝင်ရောက်ကြည့်ရှုခွင့်ပြုသည် view_devops: DevOps + view_devops_description: အသုံးပြုသူများကို Sidekiq နှင့် pgHero ဒက်ရှ်ဘုတ်မြင်ကွင်းများသို့ ဝင်ရောက်ခွင့်ပြုသည် title: အခန်းကဏ္ဍများ rules: + add_new: စည်းမျဉ်းထည့်ပါ delete: ဖျက်ပါ + edit: စည်းမျဉ်းကို ပြင်ဆင်မည် + empty: ဆာဗာစည်းမျဉ်းများကို မသတ်မှတ်ရသေးပါ။ title: ဆာဗာစည်းမျဉ်းများ settings: about: manage_rules: ဆာဗာစည်းမျဉ်းများကို စီမံရန် title: အကြောင်း appearance: + preamble: Mastodon ၏ ဝဘ်ပုံစံကို စိတ်ကြိုက်ပြင်ဆင်ပါ။ title: ပုံပန်းသဏ္ဌာန် + branding: + title: ခေါင်းစဉ်တပ်ခြင်း + content_retention: + preamble: Mastodon တွင် အသုံးပြုသူဖန်တီးထားသော အကြောင်းအရာများ မည်သို့သိမ်းဆည်းမည်ကို ထိန်းချုပ်ပါ။ + title: အကြောင်းအရာ ဆက်လက်ရှိနေခြင်း + default_noindex: + desc_html: ဤသတ်မှတ်ချက်ကို ကိုယ်တိုင်မပြောင်းရသေးသော အသုံးပြုသူအားလုံးအပေါ် သက်ရောက်မှုရှိသည် + title: ပုံမှန်အားဖြင့် ရှာဖွေမှုအညွှန်းကိန်းမှ သုံးစွဲသူများကို ဖယ်ထုတ်ပါ discovery: + follow_recommendations: အကြံပြုချက်များကို စောင့်ကြည့်ပါ profile_directory: ပရိုဖိုင်လမ်းညွှန် + public_timelines: အများမြင်စာမျက်နှာ + publish_discovered_servers: ရှာဖွေတွေ့ရှိထားသော ဆာဗာများကို ထုတ်ပြန်ပါ + publish_statistics: စာရင်းဇယားထုတ်ပြန်မည် + title: ရှာဖွေတွေ့ရှိမှု + trends: လက်ရှိခေတ်စားမှုများ domain_blocks: all: လူတိုင်း disabled: မည်သူ့ကိုမျှ users: အကောင့်ဝင်ထားသော ပြည်တွင်းအသုံးပြုသူများအတွက် + registrations: + preamble: သင့်ဆာဗာတွင် အကောင့်တစ်ခုမည်သူဖန်တီးနိုင်သည်ကို ထိန်းချုပ်ပါ။ + title: စာရင်းသွင်းထားခြင်းများ registrations_mode: modes: + approved: အကောင့်ဖွင့်ရန်အတွက် အတည်ပြုချက် လိုအပ်ပါသည် + none: မည်သူမျှ အကောင့်ဖွင့်၍မရပါ open: မည်သူမဆို အကောင့်ဖွင့်နိုင်ပါသည် title: ဆာဗာသတ်မှတ်ချက်များ site_uploads: delete: တင်ထားသောဖိုင်ဖျက်ရန် + destroyed_msg: ဆိုက်အပ်လုဒ်ကို အောင်မြင်စွာ ဖျက်လိုက်ပါပြီ။ statuses: account: ရေးသားသူ application: အက်ပလီကေးရှင်း back_to_account: အကောင့်စာမျက်နှာသို့ ပြန်သွားရန် + back_to_report: အစီရင်ခံစာ စာမျက်နှာသို့ ပြန်သွားရန် + batch: + remove_from_report: တိုင်ကြားစာမှ ဖယ်ရှားပါ + report: တိုင်ကြားစာ deleted: ဖျက်ပြီးပါပြီ favourites: အကြိုက်ဆုံးများ + history: ဗားရှင်းမှတ်တမ်း + in_reply_to: ထံ အကြောင်းပြန်ကြားခြင်း language: ဘာသာစကား media: title: မီဒီယာ + metadata: Metadata + no_status_selected: မည်သည့်ပို့စ်ကိုမျှ ရွေးချယ်ထားခြင်းမရှိသောကြောင့် ပြောင်းလဲခြင်းမရှိပါ open: ပို့စ်ဖွင့်ရန် original_status: မူရင်းပို့စ် + reblogs: Reblog များ + status_changed: ပို့စ်ပြောင်းပြီးပါပြီ title: အကောင့်ပို့စ်များ + trending: လက်ရှိခေတ်စားနေခြင်း + visibility: မြင်နိုင်မှု with_media: မီဒီယာနှင့်အတူ strikes: actions: delete_statuses: "%{name} မှ %{target} ၏ ပို့စ်များကို ဖျက်ခဲ့သည်" + disable: "%{name} က %{target} ၏ အကောင့်ကို ရပ်ထားသည်" + mark_statuses_as_sensitive: "%{name} က %{target} ၏ ပို့စ်များကို သတိထားရသောပို့စ်များအဖြစ် အမှတ်အသားပြုထားသည်" none: "%{name} မှ %{target} သို့ သတိပေးချက်တစ်ခု ပေးပို့ခဲ့သည်" + sensitive: "%{name} က %{target} ၏ အကောင့်ကို သတိထားရသောအကောင့်အဖြစ် အမှတ်အသားပြုထားသည်" + silence: "%{name} က %{target} ၏ အကောင့်ကို ကန့်သတ်ထားသည်" + suspend: "%{name} က %{target} ၏ အကောင့်ကို ဆိုင်းငံ့ထားသည်" + appeal_approved: အတည်ပြုခဲ့ပြီး + appeal_pending: အတည်ပြုမှုဆိုင်းငံ့ထားခြင်း + appeal_rejected: တင်ပြခြင်းကို ပယ်ချခဲ့သည် system_checks: + database_schema_check: + message_html: ဆိုင်းငံ့ထားသော ဒေတာဘေ့စ် ပြောင်းရွှေ့မှုများ ရှိပါသည်။ အပလီကေးရှင်းသည် မျှော်လင့်ထားသည့်အတိုင်း လုပ်ဆောင်ကြောင်း သေချာစေရန် ၎င်းတို့ကို လုပ်ဆောင်ပါ။ + elasticsearch_running_check: + message_html: Elasticsearch သို့ ချိတ်ဆက်၍မရပါ။ ၎င်းသည် အလုပ်လုပ်နေသလား၊ သို့မဟုတ် စာသားအပြည့်အစုံရှာဖွေမှုကို ပိတ်ပါ။ + elasticsearch_version_check: + message_html: သဟဇာတမဖြစ်သော Elasticsearch ဗားရှင်း- %{value} + version_comparison: Elasticsearch %{running_version} သည် %{required_version} လိုအပ်နေချိန်တွင် လုပ်ဆောင်နေသည် rules_check: action: ဆာဗာစည်းမျဉ်းများကို စီမံရန် + message_html: သင်သည် မည်သည့်ဆာဗာစည်းမျဉ်းများကိုမျှ မသတ်မှတ်ထားပါ။ + sidekiq_process_check: + message_html: "%{value} တန်းစီ(s) အတွက် Sidekiq လုပ်ငန်းစဉ် မရှိပါ။ သင်၏ Sidekiq ဖွဲ့စည်းမှုကို ပြန်လည်သုံးသပ်ပါ။" + upload_check_privacy_error: + action: နောက်ထပ်အချက်အလက်များအတွက် ဤနေရာတွင် ကြည့်ပါ + message_html: "သင်၏ဝဘ်ဆာဗာကို မှားယွင်းစွာပြုလုပ်ထားသည်။ သင့်အသုံးပြုသူများ၏ လျှို့ဝှက်ချက်များသည် အန္တရာယ်ရှိသည်။" + upload_check_privacy_error_object_storage: + action: နောက်ထပ်အချက်အလက်များအတွက် ဤနေရာတွင် ကြည့်ပါ + message_html: "သင်၏ Object သိုလှောင်မှုအား မှားယွင်းစွာ စီစဉ်သတ်မှတ်ထားပါသည်။ သင့်အသုံးပြုသူများ၏ လျှို့ဝှက်ချက်များသည် အန္တရာယ်ရှိသည်။" + tags: + review: အခြေအနေသုံးသပ်ရန် + updated_msg: ဟက်ရှ်တဂျ်သတ်မှတ်ချက်များကို အပ်ဒိတ်လုပ်ပြီးပါပြီ + title: စီမံခန့်ခွဲခြင်း trends: allow: ခွင့်ပြု approved: အတည်ပြုပြီးပါပြီ disallow: ခွင့်မပြု links: allow: လင့်ခ်ကို ခွင့်ပြုရန် + allow_provider: ပို့စ်တင်သူကိုခွင့်ပြုရန် + description_html: "၎င်းတို့သည် သင့်ဆာဗာမှ ပို့စ်များကို မြင်သည့် အကောင့်များမှ လောလောဆယ်တွင် အများအပြားမျှဝေနေသည့် လင့်ခ်များဖြစ်သည်။ ၎င်းသည် သင့်အသုံးပြုသူများအား ကမ္ဘာပေါ်တွင် ဖြစ်ပျက်နေသည့်အရာများကို ရှာဖွေရန် ကူညီပေးနိုင်ပါသည်။ ထုတ်ဝေသူအား သင်အတည်မပြုမချင်း လင့်ခ်များကို လူသိရှင်ကြားပြသခြင်းမရှိပါ။ တစ်ဦးချင်း လင့်ခ်များကို သင် ခွင့်ပြုနိုင်သည် သို့မဟုတ် ငြင်းပယ်နိုင်သည်။" disallow: လင့်ခ်ကို ခွင့်မပြုရန် + disallow_provider: ပို့စ်တင်သူကို ခွင့်မပြုရန် + no_link_selected: မည်သည့်လင့်ခ်ကိုမျှ ရွေးချယ်ထားခြင်းမရှိသောကြောင့် ပြောင်းလဲခြင်းမရှိပါ + publishers: + no_publisher_selected: မည်သည့်ပို့စ်တင်သူကိုမျှ ရွေးချယ်ထားခြင်းမရှိသောကြောင့် ပြောင်းလဲခြင်းမရှိပါ + shared_by_over_week: + other: ပြီးခဲ့သည့်အပတ်တွင် လူ %{count} ဦး မှ မျှဝေခဲ့သည် + title: လက်ရှိခေတ်စားနေသော လင့်များ + usage_comparison: မနေ့က %{yesterday} နှင့် နှိုင်းယှဉ်၍ ယနေ့ %{today} ကြိမ် မျှဝေခဲ့သည် + not_allowed_to_trend: ခေတ်စားနေသည့်အကြောင်းအရာပြုလုပ်ရန် ခွင့်မပြုပါ + only_allowed: သာခွင့်ပြုသည် + pending_review: ဆိုင်းငံ့ထားသော သုံးသပ်ချက် + preview_card_providers: + allowed: ဤပို့စ်တင်သူထံမှ လင့်ခ်များ ခေတ်စားနိုင်သည် + description_html: "၎င်းတို့သည် သင့်ဆာဗာပေါ်တွင် မကြာခဏ လင့်ခ်များကို မျှဝေလေ့ရှိသည့် ဒိုမိန်းများဖြစ်သည်။ လင့်ခ်၏ဒိုမိန်းကို အတည်ပြုမထားပါက လင့်ခ်များသည် လူသိရှင်ကြား လမ်းကြောင်းပေါ်ရှိလိမ့်မည်မဟုတ်ပါ။ သင့်ခွင့်ပြုချက် (သို့မဟုတ် ငြင်းပယ်ခြင်း) သည် ဒိုမိန်းခွဲများသို့ အကျုံးဝင်ပါသည်။" + rejected: ဤထုတ်ဝေသူထံမှ လင့်ခ်များ ခေတ်စားလာမည်မဟုတ်ပါ။ + title: ပို့စ်တင်သူများ rejected: ဖယ်ရှားပြီးပါပြီ statuses: allow: ပို့စ်တင်ခွင့်ပြုရန် + allow_account: ပို့စ်တင်သူကို ခွင့်ပြုပါ + description_html: ဤအရာများသည် သင့်ဆာဗာမှ သိရှိထားသည့် ပို့စ်များဖြစ်ပြီး လက်ရှိတွင် မျှဝေလျက်ရှိပြီး ယခုအချိန်တွင် လူကြိုက်များသော ပို့စ်များဖြစ်သည်။ ၎င်းသည် သင်၏အသစ်နှင့် ပြန်လာသောအသုံးပြုသူများကို လိုက်ကြည့်ရန် နောက်ထပ်လူများကို ရှာဖွေရန် ကူညီပေးနိုင်သည်။ စာရေးဆရာကို သင်အတည်ပြုသည့်တိုင်အောင် မည်သည့်ပို့စ်ကိုမျှ လူသိရှင်ကြားမပြသဘဲ၊ စာရေးသူက ၎င်းတို့၏အကောင့်ကို အခြားသူများထံ အကြံပြုခွင့်ပြုသည်။ တစ်ဦးချင်း ပို့စ်များကို ခွင့်ပြုနိုင်သည် သို့မဟုတ် ငြင်းပယ်နိုင်သည်။ disallow: ပို့စ်ကို တင်ခွင့်မပြုရန် + disallow_account: ပို့စ်တင်သူကို ခွင့်မပြုပါနဲ့ + no_status_selected: မည်သည့်ခေတ်စားနေသောပို့စ်ကိုမျှ ရွေးချယ်ထားခြင်းမရှိသောကြောင့် ပြောင်းလဲခြင်းမရှိပါ + not_discoverable: စာရေးသူသည် ရှာဖွေတွေ့ရှိနိုင်မှုကို ရွေးချယ်မထားပါ။ + shared_by: + other: မျှဝေမှုနှင့် နှစ်သက်မှု %{friendly_count} ကြိမ် title: လက်ရှိခေတ်စားနေသော ပို့စ်များ tags: + current_score: "%{score} လက်ရှိရမှတ်" dashboard: + tag_accounts_measure: အများဆုံးအသုံပြုမှုများ tag_languages_dimension: အသုံးများသည့်ဘာသာစကားများ tag_servers_dimension: အသုံးများသည့်ဆာဗာများ tag_servers_measure: မတူညီသောဆာဗာများ tag_uses_measure: စုစုပေါင်းအသုံးပြုမှု + description_html: "၎င်းတို့သည် သင့်ဆာဗာမြင်နေရသည့် ပို့စ်အများအပြားတွင် လက်ရှိမြင်နေရသည့် hashtag များဖြစ်သည်။ ၎င်းသည် သင့်အသုံးပြုသူများအား ယခုအချိန်တွင် လူအများပြောနေသည့်အရာများကို သိရှိနိုင်ရန် ကူညီပေးနိုင်ပါသည်။ ၎င်းတို့ကို သင်အတည်မပြုမချင်း hashtags များကို လူသိရှင်ကြား ပြသမည်မဟုတ်ပါ။" listable: အကြံပြုနိုင်ပါသည် + no_tag_selected: မည်သည့်တဂျ်ကိုမျှ ရွေးချယ်ထားခြင်းမရှိသောကြောင့် ပြောင်းလဲခြင်းမရှိပါ + not_listable: အကြံပြုမည်မဟုတ်ပါ + not_trendable: လက်ရှိခေတ်စားနေသာပို့စ်များအောက်တွင် ပေါ်လာမည်မဟုတ်ပါ not_usable: အသုံးမပြုနိုင်ပါ + title: လက်ရှိခေတ်စားနေသော hashtag များ + trendable: လက်ရှိခေတ်စားနေသာပို့စ်များအောက်တွင် ပေါ်လာမည် + trending_rank: "#%{rank} ခေတ်စားနေခြင်း" usable: အသုံးပြုနိုင်သည် + usage_comparison: မနေ့က %{yesterday} နှင့် နှိုင်းယှဉ်လျှင် ယနေ့ %{today} ကြိမ် အသုံးပြုခဲ့သည် + used_by_over_week: + other: ပြီးခဲ့သည့် ရက်သတ္တပတ်အတွင်း လူ %{count} ဦး အသုံးပြုခဲ့သည်။ title: လက်ရှိခေတ်စားမှုများ trending: လက်ရှိခေတ်စားနေခြင်း warning_presets: add_new: အသစ်ထည့်ပါ delete: ဖျက်ပါ + edit_preset: ကြိုသတိပေးချက်ကို ပြင်ဆင်ပါ + empty: ကြိုသတိပေးချက်များကို မသတ်မှတ်ရသေးပါ။ + title: ကြိုသတိပေးချက်များကို စီမံပါ webhooks: + add_new: ဆုံးမှတ် ထည့်ပါ delete: ဖျက်ပါ + description_html: "webhook သည် Mastodon အား ရွေးချယ်ထားသော အစီအစဉ်များအကြောင်း သင့်ကိုယ်ပိုင်အက်ပ်လီကေးရှင်းသို့ အချိန်နှင့်တစ်ပြေးညီ အသိပေးချက်များကို တွန်းပို့နိုင်သည်၊ ထို့ကြောင့် သင့်အပလီကေးရှင်းသည် တုံ့ပြန်မှုများကို အလိုအလျောက်စတင်နိုင်သည်။" disable: ပိတ်ပါ disabled: ပိတ်ထားသည် + edit: ဆုံးမှတ် ပြင်ဆင်ပါ + empty: မည်သည့် webhook endpoints မှ မစီစဉ်ရသေးပါ။ enable: ဖွင့်ပါ enabled: လက်ရှိ + enabled_events: + other: ဖွင့်ထားသောအစီအစဉ်များ %{count} ခု events: ပွဲအစီအစဉ်များ + new: webhook အသစ် + secret: လျှို့ဝှက်လက်မှတ်ထိုးခြင်း status: အခြေအနေ + title: Webhook များ + webhook: Webhook admin_mailer: new_appeal: actions: + delete_statuses: "၎င်းတို့၏ ပို့စ်များကို ဖျက်ရန်" + disable: "၎င်းတို့အကောင့်များအား ရပ်ထားရန်" + mark_statuses_as_sensitive: "၎င်းတို့၏ ပို့စ်များကို သတိထားရသော ပို့စ်များအဖြစ် အမှတ်အသားပြုရန်" none: သတိပေးချက် + sensitive: "၎င်းတို့၏ အကောင့်များကို သတိထားရသော အကောင့်များအဖြစ် အမှတ်အသားပြုရန်" + silence: "၎င်းတို့၏ ပို့စ်များကို ကန့်သတ်ရန်" + suspend: "၎င်းတို့၏ အကောင့်ကို ရပ်ဆိုင်းရန်" + next_steps: စိစစ်ဆုံးဖြတ်ချက်ပြန်ဖျက်ရန်အတွက် တင်ပြနိုင်သည် သို့မဟုတ် ၎င်းကို လျစ်လျူရှုနိုင်သည်။ + subject: "%{username} က %{instance} တွင် စိစစ်ဆုံးဖြတ်ချက်ကို တင်ပြနေသည်" + new_pending_account: + body: အကောင့်သစ်၏အသေးစိတ်ကို အောက်တွင်ဖော်ပြထားသည်။ ၎င်းကို အတည်ပြုနိုင်သည် သို့မဟုတ် ငြင်းပယ်နိုင်သည်။ + subject: " (%{username}) %{instance} ပေါ်ရှိ ပြန်လည်သုံးသပ်ရမည့် အကောင့်သစ်" + new_report: + body: "%{reporter} က %{target} ကို တိုင်ကြားခဲ့သည်" + body_remote: "%{domain} မှ တစ်စုံတစ်ယောက်က %{target} ကို တိုင်ကြားခဲ့သည်" + subject: "%{instance} (#%{id}) အတွက် တိုင်ကြားစာအသစ်" + new_trends: + body: အောက်ပါအရာများကို အများကိုမပြမီ ပြန်လည်သုံးသပ်ရန် လိုအပ်သည် - + new_trending_links: + title: လက်ရှိခေတ်စားနေသော လင့်များ + new_trending_statuses: + title: လက်ရှိခေတ်စားနေသော ပို့စ်များ + new_trending_tags: + no_approved_tags: လက်ရှိတွင် အတည်ပြုထားသော ခေတ်စားနေသည့် hashtag များမရှိပါ။ + title: လက်ရှိခေတ်စားနေသော hashtag များ + subject: "%{instance} တွင် ပြန်လည်သုံးသပ်ရမည့် ခေတ်စားနေသောပို့စ်အသစ်များ" + aliases: + add_new: နာမည်တူတစ်ခု ဖန်တီးမည် + created_msg: နာမည်တူတစ်ခုကို ဖန်တီးပြီးပါပြီ။ အကောင့်ဟောင်းမှ စတင်ရွှေ့နိုင်ပါပြီ။ + deleted_msg: နာမည်တူကို ဖယ်ရှားထားပြီးပါပြီ။ ထိုအကောင့်မှ ဤအကောင့်သို့ပြောင်းရန် မဖြစ်နိုင်တော့ပါ။ + empty: သင့်တွင် နာမည်တူများ မရှိပါ။ + remove: နာမည်တူများကို လင့်ခ်ဖြုတ်ပါ appearance: + advanced_web_interface: အဆင့်မြင့်ဝဘ်ပုံစံ + animations_and_accessibility: လှုပ်ရှားမှုဆိုင်ရာများ + confirmation_dialogs: အတည်ပြုချက် ဒိုင်ယာလော့ခ်များ + discovery: ရှာဖွေတွေ့ရှိမှု localization: + body: Mastodon ကို စေတနာ့ဝန်ထမ်းများမှ ဘာသာပြန်ထားပါသည်။ + guide_link: https://crowdin.com/project/mastodon guide_link_text: လူတိုင်းပါဝင်ကူညီနိုင်ပါတယ်။ + sensitive_content: သတိထားရသော အကြောင်းအရာ + toot_layout: ပို့စ်အပြင်အဆင် application_mailer: + notification_preferences: အီးမေးလ် သတ်မှတ်ချက်များကို ပြောင်းပါ salutation: "%{name}" + settings: အီးမေးလ် သတ်မှတ်ချက်များကို ပြောင်းပါ - %{link} view: ကြည့်ရှုရန် - view_profile: ပရိုဖိုင်ကိုကြည့်ရန် view_status: ပို့စ်ကိုကြည့်ရန် applications: created: အက်ပလီကေးရှင်းကို ဖန်တီးပြီးပါပြီ + destroyed: အက်ပလီကေးရှင်းကို ဖျက်ပြီးပါပြီ + logout: ထွက်မယ် + regenerate_token: ဝင်ရောက်ခွင့် တိုကင်ကို ပြန်ထုတ်ပါ + token_regenerated: အသုံးပြုခွင့်တိုကင်ကို ပြန်လည်ထုတ်ပေးသည် + warning: ဤအချက်အလက်ကို သတိထားပါ။ မည်သူ့ကိုမျှ မမျှဝေပါနှင့်။ + your_token: သင့် အသုံးပြုခွင့်တိုကင် auth: + apply_for_account: အကောင့်တစ်ခုတောင်းဆိုပါ change_password: စကားဝှက် + confirmations: + wrong_email_hint: ထိုအီးမေးလ်လိပ်စာ မမှန်ပါက အကောင့်သတ်မှတ်ချက်များတွင် ပြောင်းလဲနိုင်သည်။ delete_account: အကောင့်ဖျက်ပါ + delete_account_html: သင့်အကောင့်ဖျက်လိုပါကဤနေရာတွင် ဆက်လက်လုပ်ဆောင်နိုင်သည်။ အတည်ပြုချက်တောင်းပါမည်။ description: + prefix_invited_by_user: "@%{name} က Mastodon ၏ ဆာဗာတွင် ပါဝင်ရန် သင့်ကို ဖိတ်ခေါ်ထားသည်။" prefix_sign_up: ယနေ့တွင် Mastodon ၌ စာရင်းသွင်းလိုက်ပါ။ + suffix: အကောင့်တစ်ခုဖြင့် မည်သည့် Mastodon ဆာဗာများမှ အသုံးပြုသူများနှင့်မဆို စောင့်ကြည့်နိုင်၊ ပို့စ်အသစ်များ တင်နိုင်ပြီး မက်ဆေ့ချ်များ ပေးပို့နိုင်ပါသည်။ + didnt_get_confirmation: အတည်ပြုချက်ညွှန်ကြားချက်များကို မရရှိခဲ့ဘူးလား။ + dont_have_your_security_key: သင့်တွင် လုံခြုံရေးကီး မရှိဘူးလား။ forgot_password: သင့်စကားဝှက် မေ့နေပါသလား။ + link_to_otp: သင့်ဖုန်းမှ နှစ်ဆင့်ခံလုံခြုံရေးကုဒ် သို့မဟုတ် ပြန်လည်ရယူရေးကုဒ် ထည့်ပါ + link_to_webauth: လုံခြုံရေးကီး အသုံးပြုပါ log_in_with: ဖြင့် ဝင်ရောက်ပါ login: အကောင့်ဝင်ရန် logout: ထွက်မယ် migrate_account: အခြားအကောင့်တစ်ခုသို့ ရွှေ့ရန် + migrate_account_html: ဤအကောင့်ကို အခြားအကောင့်သို့ ပြန်ညွှန်းလိုပါက ဤနေရာတွင် စီစဉ်သတ်မှတ်နိုင်သည်။ + or_log_in_with: သို့မဟုတ် အကောင့်ဖြင့် ဝင်ရောက်ပါ + privacy_policy_agreement_html: ကိုယ်ရေးအချက်အလက်မူဝါဒ ကို ဖတ်ပြီး သဘောတူလိုက်ပါပြီ providers: cas: CAS saml: SAML register: အကောင့်ဖွင့်ရန် registration_closed: "%{instance} သည် အဖွဲ့ဝင်အသစ်များကို လက်ခံထားခြင်းမရှိပါ" + resend_confirmation: အတည်ပြုချက်ညွှန်ကြားမှုများကို ပြန်ပို့ရန် + rules: + accept: လက်ခံပါ + back: နောက်သို့ + title: အခြေခံစည်းမျဉ်းအချို့ security: လုံခြုံရေး set_new_password: စကားဝှက်အသစ် သတ်မှတ်ပါ။ + setup: + email_below_hint_html: အောက်ဖော်ပြပါ အီးမေးလ်လိပ်စာ မှားယွင်းနေပါက ဤနေရာတွင် ပြောင်းလဲနိုင်ပြီး အတည်ပြုအီးမေးလ်အသစ် လက်ခံရရှိမည်ဖြစ်ပါသည်။ + email_settings_hint_html: အတည်ပြုအီးမေးလ်ကို %{email} သို့ ပေးပို့ခဲ့သည်။ ထိုအီးမေးလ်လိပ်စာ မှားယွင်းနေပါက ၎င်းကို အကောင့်သတ်မှတ်ချက်များတွင် ပြောင်းလဲနိုင်သည်။ + title: သတ်မှတ် sign_in: + preamble_html: သင်၏ %{domain} အထောက်အထားများဖြင့် ဝင်ရောက်ပါ။ သင့်အကောင့်ကို အခြားဆာဗာတစ်ခုတွင် ဖွင့်ထားပါက ဤနေရာ၌ အကောင့်ဝင်ရောက်နိုင်မည်မဟုတ်ပါ။ title: "%{domain} သို့ အကောင့်ဝင်ရန်" + sign_up: + title: "%{domain} တွင် ထည့်သွင်းရန်။" status: account_status: အကောင့်အခြေအနေ + confirming: အီးမေးလ်အတည်ပြုချက် အပြီးသတ်ရန် စောင့်ဆိုင်းခြင်း + functional: သင့်အကောင့်မှာ အပြည့်အဝလုပ်ဆောင်နေပါပြီ။ + redirecting_to: သင့်အကောင့်မှာ လက်ရှိတွင် %{acct} သို့ ပြန်ညွှန်းနေသောကြောင့် သုံးစွဲ၍မရပါ။ + view_strikes: သင့်အကောင့်ကို ဆန့်ကျင်သည့် ယခင်ကလုပ်ဆောင်ချက်များကို ကြည့်ပါ + use_security_key: လုံခြုံရေးကီးကို သုံးပါ authorize_follow: + already_following: သင်သည် ဤအကောင့်ကို စောင့်ကြည့်နေပြီဖြစ်ပါသည် + already_requested: သင်သည် ထိုအကောင့်စောင့်ကြည့်ရန် တောင်းဆိုမှုတစ်ခု ပေးပို့ခဲ့ပြီးပါပြီ + error: ကံမကောင်းစွာဖြင့် အဝေးမှထိန်းချုပ်သောအကောင့်ရှာဖွေရာတွင် အမှားအယွင်းတစ်ခုရှိခဲ့သည် follow: စောင့်ကြည့်မယ် follow_request: သင်သည် စောင့်ကြည့်မည် တောင်းဆိုချက်တစ်ခု ပေးပို့ထားသည်- + following: သင် ယခု အောက်ပါအတိုင်း လုပ်ဆောင်နေပါသည် - post_follow: close: သို့မဟုတ် သင်သည် ဤဝင်းဒိုးကို ပိတ်နိုင်သည် return: အသုံးပြုသူ၏ ပရိုဖိုင်ကိုပြရန် @@ -624,8 +1010,13 @@ my: title: "%{acct} ကို စောင့်ကြည့်မယ်" challenge: confirm: ဆက်လုပ်မည် + hint_html: "အကြံပြုချက် - နောက်နာရီများတွင် သင့်စကားဝှက်ကို ထပ်မံတောင်းဆိုမည်မဟုတ်ပါ။" invalid_password: စကားဝှက် မမှန်ပါ prompt: ဆက်လက်လုပ်ဆောင်ရန်အတွက် စကားဝှက်အတည်ပြုပါ + crypto: + errors: + invalid_key: မှန်ကန်သော Ed25519 သို့မဟုတ် Curve25519 ကီး မဟုတ်ပါ။ + invalid_signature: မှန်ကန်သော Ed25519 လက်မှတ်မဟုတ်ပါ date: formats: default: "%b %d, %Y" @@ -645,74 +1036,164 @@ my: x_months: "%{count}mo" x_seconds: "%{count}s" deletes: + challenge_not_passed: သင်ထည့်လိုက်သော အချက်အလက်မှာ မမှန်ပါ + confirm_password: အထောက်အထားကိုအတည်ပြုရန်အတွက် သင့်လက်ရှိစကားဝှက်ကို ထည့်ပါ + confirm_username: လုပ်ငန်းစဉ်ကို အတည်ပြုရန်အတွက် သင့်အသုံးပြုသူအမည်ကို ထည့်သွင်းပါ proceed: အကောင့်ဖျက်ပါ success_msg: သင့်အကောင့်ကို အောင်မြင်စွာ ဖျက်လိုက်ပါပြီ + warning: + before: ရှေ့မဆက်မီ ဤမှတ်စုများကို သေချာဖတ်ပါ - + caches: အခြားဆာဗာများမှ ကက်ရှ်လုပ်ထားသော အကြောင်းအရာမှာ ဆက်ရှိနေနိုင်သည် + data_removal: သင့်ပို့စ်များနှင့် အခြားအချက်အလက်များကို အပြီးတိုင် ဖယ်ရှားပါမည် + email_change_html: သင့်အကောင့်မဖျက်ဘဲ သင့်အီးမေးလ်လိပ်စာကို ပြောင်းလဲနိုင်သည် + email_contact_html: မရောက်သေးပါက အကူအညီအတွက် %{email} သို့ အီးမေးလ်ပို့နိုင်ပါသည် + email_reconfirmation_html: အတည်ပြုချက်အီးမေးလ် လက်ခံမရရှိပါက ထပ်မံတောင်းဆိုနိုင်သည် + irreversible: အကောင့်ကို ပြန်လည်ရယူရန် သို့မဟုတ် ပြန်လည်အသုံးပြုရန် မဖြစ်နိုင်တော့ပါ + more_details_html: အသေးစိတ်အချက်အလက်များအတွက်၊ ကိုယ်ရေးကိုယ်တာမူဝါဒ ကို ကြည့်ပါ။ + username_available: သင့်အသုံးပြုသူအမည်ကို ပြန်လည်ရရှိနိုင်ပါမည် + username_unavailable: သင့်အသုံးပြုသူအမည်မှာ မရရှိနိုင်တော့ပါ disputes: strikes: + action_taken: ဆောင်ရွက်ခဲ့သည် + appeal: အယူခံဝင်ခြင်း + appeal_rejected: တင်သွင်းခြင်းကို ပယ်ချလိုက်သည် + appeal_submitted_at: အယူခံဝင်မှုကို တင်သွင်းပြီးချိန် + appealed_msg: အယူခံဝင်မှုကို တင်သွင်းပြီးဖြစ်သည်။ အတည်ပြုပြီးပါက အကြောင်းကြားပါမည်။ appeals: submit: အယူခံဝင်ခွင့်ပြုရန် + approve_appeal: တင်သွင်းခြင်းကို အတည်ပြုပါ + associated_report: ဆက်စပ်အစီရင်ခံစာ + created_at: ရက်စွဲ + description_html: ဤအရာများမှာ သင့်အကောင့်နှင့် %{instance} မှ သင့်ထံပေးပို့ထားသော သတိပေးချက်များကို ဆန့်ကျင်သည့် လုပ်ဆောင်ချက်များဖြစ်သည်။ + recipient: လိပ်မူထားသည် + reject_appeal: တင်သွင်းခြင်းကို ပယ်ချပါ status: "#%{id} ပို့စ်" + status_removed: ပို့စ်ကို စနစ်မှ ဖယ်ရှားပြီးဖြစ်သည် title: "%{date} မှ %{action}" title_actions: + delete_statuses: ပို့စ်ဖယ်ရှားခြင်း + disable: အကောင့်ပိတ်သိမ်းခြင်း + mark_statuses_as_sensitive: သတိထားရသောပို့စ်များအဖြစ် အမှတ်အသားပြုခြင်း none: သတိပေးချက် + sensitive: သတိထားရသောအကောင့်အဖြစ် အမှတ်အသားပြုခြင်း + silence: အကောင့်ကန့်သတ်ချက် + suspend: အကောင့်ပိတ်ခြင်း + your_appeal_approved: သင့်တင်သွင်းခြင်းကို အတည်ပြုပြီးပါပြီ + your_appeal_pending: အယူခံဝင်ရန် တင်သွင်းထားသည် + your_appeal_rejected: အယူခံဝင်မှုကို ပယ်ချလိုက်သည် + domain_validator: + invalid_domain: တရားဝင်ဒိုမိန်းအမည်မဟုတ်ပါ errors: - '400': The request you submitted was invalid or malformed. - '403': You don't have permission to view this page. - '404': The page you are looking for isn't here. - '406': This page is not available in the requested format. - '410': The page you were looking for doesn't exist here anymore. + '400': သင်တင်ပြသော တောင်းဆိုချက်မှာ မမှန်ကန်ပါ သို့မဟုတ် ပုံစံမမှန်ပါ။ + '403': ဤစာမျက်နှာကြည့်ရှုရန် သင့်တွင် ခွင့်ပြုချက်မရှိပါ။ + '404': သင်ရှာဖွေနေသော စာမျက်နှာသည် ဤနေရာတွင် မရှိပါ။ + '406': ဤစာမျက်နှာကို တောင်းဆိုထားသော ပုံစံဖြင့် မရရှိနိုင်ပါ။ + '410': သင်ရှာဖွေနေသည့် စာမျက်နှာသည် ဤနေရာတွင် မရှိတော့ပါ။ '422': content: လုံခြုံရေး အတည်ပြုခြင်း မအောင်မြင်ပါ။ သင်သည် ကွတ်ကီးများကို ပိတ်ပင်ထားပါသလား။ + title: လုံခြုံရေး အတည်ပြုခြင်း မအောင်မြင်ပါ '429': တောင်းဆိုမှု များနေပါသည် '500': + content: စိတ်မကောင်းပါ။ အဆုံးတွင် တစ်ခုမှားယွင်းသွားပါသည်။ title: ဤစာမျက်နှာမှာ မမှန်ကန်ပါ - '503': The page could not be served due to a temporary server failure. + '503': ယာယီဆာဗာချို့ယွင်းမှုကြောင့် စာမျက်နှာကို ကြည့်ရှု၍မရပါ။ + noscript_html: Mastodon ဝဘ်အက်ပလီကေးရှင်းအသုံးပြုရန်အတွက် JavaScript ကို ဖွင့်ပါ။ တစ်နည်းအားဖြင့် သင့် Mastodon ပလက်ဖောင်းအတွက် မူရင်းအက်ပ်များ ထဲမှ တစ်ခုကို စမ်းကြည့်ပါ။ + existing_username_validator: + not_found: ထိုအသုံးပြုသူအမည်ဖြင့် ပြည်တွင်းအသုံးပြုသူကို ရှာမတွေ့ပါ + not_found_multiple: "%{usernames} ကို ရှာမတွေ့ပါ" exports: archive_takeout: date: ရက်စွဲ download: သင်၏မှတ်တမ်းကို ဒေါင်းလုဒ်လုပ်ပါ + in_progress: သင့်မှတ်တမ်းကို ပြုစုနေသည်... + request: မှတ်တမ်း တောင်းဆိုရန် size: အရွယ်အစား blocks: သင်ပိတ်ပင်ထားသည့်လူများစာရင်း + bookmarks: မှတ်ထားသည်များ csv: CSV domain_blocks: ဒိုမိန်းပိတ်ပင်ထားမှုများ lists: စာရင်းများ + mutes: အသံပိတ် storage: မီဒီယာသိုလှောင်မှု featured_tags: add_new: အသစ် ထည့်ပါ + errors: + limit: ဟက်ရှ်တဂ်အရေအတွက် အများဆုံးကို ဖော်ပြပြီးဖြစ်သည် filters: contexts: account: ပရိုဖိုင်များ home: ပင်မနှင့် စာရင်းများ notifications: အကြောင်းကြားချက်များ + public: အများမြင်စာမျက်နှာ thread: စကားဝိုင်းများ edit: + add_keyword: အဓိကစကားလုံး ထည့်ပါ + keywords: အဓိကစကားလုံးများ statuses: တစ်ဦးချင်းတင်ထားသောပို့စ်များ title: စစ်ထုတ်ခြင်းကို ပြင်ဆင်ရန် + errors: + invalid_context: ပံ့ပိုးထား​သော အ​​ကြောင်းအရာ မရှိခြင်း သို့မဟုတ် မမှန်ကန်ခြင်း index: contexts: "%{contexts} ရှိ စစ်ထုတ်ထားမှုများ" delete: ဖျက်ပါ empty: သင့်တွင် စစ်ထုတ်ထားခြင်းများ မရှိပါ။ + expires_in: "%{distance} တွင် သက်တမ်းကုန်မည်" + expires_on: "%{date} ရက်နေ့တွင် သက်တမ်းကုန်မည်" + keywords: + other: "%{count} အဓိကစကားလုံး" statuses: other: "%{count} ပို့စ်" + statuses_long: + other: တစ်ဦးချင်းပို့စ် %{count} များ ကို ဖျောက်ထားသည် title: စစ်ထုတ်ခြင်းများ new: save: စစ်ထုတ်မှုအသစ် သိမ်းပါ title: စစ်ထုတ်မှုအသစ် ထည့်ပါ statuses: + back_to_filter: စစ်ထုတ်ခြင်းသို့ ပြန်သွားရန် + batch: + remove: စစ်ထုတ်ခြင်းမှ ဖယ်ရှားရန် index: title: စစ်ထုတ်ထားသော ပို့စ်များ generic: all: အားလုံး + all_items_on_page_selected_html: + other: ဤစာမျက်နှာရှိ %{count} အိုက်တမ်များအားလုံးကို ရွေးချယ်ထားသည်။ + all_matching_items_selected_html: + other: သင့်ရှာဖွေမှုနှင့် ကိုက်ညီသည့် %{count} အိုက်တမ်အားလုံးကို ရွေးချယ်ထားသည်။ + changes_saved_msg: အပြောင်းအလဲများကို သိမ်းဆည်းပြီးပါပြီ။ copy: ကူးယူပါ delete: ဖျက်ပါ + deselect: အားလုံး ရွေးထားခြင်းကို ဖျက်မည် + none: တစ်ခုမျှ + order_by: စီထားသည် + save_changes: ပြောင်းလဲမှုများကို သိမ်းဆည်းပါ + select_all_matching_items: + other: သင့်ရှာဖွေမှုနှင့် ကိုက်ညီသည့် %{count} ခု အားလုံးကို ရွေးပါ။ today: ယနေ့ + validation_errors: + other: မမှန်သေးပါ။ ကျေးဇူးပြု၍ အောက်ပါ %{count} အမှားများကို ပြန်လည်သုံးသပ်ပါ imports: + errors: + invalid_csv_file: မမှန်ကန်သော CSV ဖိုင်။ အမှား - %{error} + over_rows_processing_limit: "%{count} တန်းထက် ပိုနေပါသည်" + modes: + merge: ပေါင်း + merge_long: ရှိပြီးသားမှတ်တမ်းများ သိမ်းဆည်းပြီး အသစ်များ ထပ်ထည့်ပါ + overwrite: ထပ်ရေးရန် + overwrite_long: လက်ရှိမှတ်တမ်းများကို အသစ်များဖြင့် အစားထိုးပါ preface: သင်စောင့်ကြည့်နေသည့်လူများစာရင်း သို့မဟုတ် ပိတ်ပင်ထားသည့်စာရင်းကဲ့သို့သော အခြားဆာဗာတစ်ခုမှ သင်ထုတ်ယူထားသည့်အချက်အလက်များကို ပြန်လည်ထည့်သွင်းနိုင်သည်။ + success: သင့်အချက်အလက်ကို အပ်လုဒ်လုပ်ပြီး သတ်မှတ်ချိန်အတွင်း ဆောင်ရွက်ပါမည် types: blocking: ပိတ်ပင်ထားသည့်စာရင်း + bookmarks: Bookmarks domain_blocking: ဒိုမိန်းပိတ်ပင်ထားသည့်စာရင်း + following: စောင့်ကြည့်စာရင်း + muting: ပိတ်ထားသောစာရင်း upload: တင္ရန် invites: + delete: အကောင့်ပိတ်ရန် + expired: သက်တမ်းကုန်သွားပါပြီ expires_in: '1800': ၃၀ မိနစ် '21600': ၆ နာရီ @@ -720,36 +1201,114 @@ my: '43200': ၁၂ နာရီ '604800': ၁ ပတ် '86400': ၁ ရက် + expires_in_prompt: ဘယ်တော့မှ + generate: ဖိတ်ကြားချက်လင့်ခ် ဖန်တီးပါ + invited_by: သင့်ကို ဖိတ်ခေါ်ထားသည် - + max_uses: + other: "%{count} အသုံးပြုမှုများ" max_uses_prompt: အကန့်အသတ်မဲ့ + prompt: ဤဆာဗာသို့ ဝင်ရောက်ရန်အတွက် လင့်ခ်များဖန်တီးပြီး အခြားသူများကို မျှဝေပါ + table: + expires_at: သက်တမ်းကုန်သည် + uses: အသုံးပြုမှုများ + title: ဖိတ်ခေါ်ရန် + lists: + errors: + limit: သင်သည် အများဆုံးစာရင်း အရေအတွက်သို့ ရောက်ရှိသွားပါပြီ login_activities: authentication_methods: otp: နှစ်ဆင့်ခံလုံခြုံရေးစနစ်အက်ပ် password: စကားဝှက် + sign_in_token: အီးမေးလ်လုံခြုံရေးကုဒ် + webauthn: လုံခြုံရေးကီးများ + description_html: သင်မပြုလုပ်သည့် လုပ်ဆောင်ချက်တွေ့ရှိပါက သင့်စကားဝှက်ကို ပြောင်းလဲပြီး နှစ်ဆင့်ခံလုံခြုံရေးစနစ်ကို အသုံးပြုသင့်ပါသည်။ + empty: စစ်မှန်ကြောင်းအထောက်အထားမရရှိနိုင်ပါ + failed_sign_in_html: "%{ip} (%{browser}) မှ %{method} ဖြင့် အကောင့်ဝင်ရောက်ခြင်း မအောင်မြင်ပါ" + successful_sign_in_html: "%{ip} (%{browser}) မှ %{method} ဖြင့် အကောင့်ဝင်၍ရပါပြီ" + title: အထောက်အထားမှတ်တမ်း media_attachments: validations: images_and_video: ရုပ်ပုံပါရှိပြီးသားပို့စ်တွင် ဗီဒီယို ပူးတွဲ၍မရပါ + not_ready: မပြီးသေးသောဖိုင်များကို ပူးတွဲ၍မရပါ။ ခဏအကြာတွင် ထပ်စမ်းကြည့်ပါ။ + too_many: ဖိုင် ၄ ဖိုင်ထက် ပို၍တွဲမရပါ migrations: acct: သို့ ပြောင်းရွှေ့ရန် + cancel: ပြန်ညွှန်းခြင်းကို ပယ်ဖျက်ရန် + cancel_explanation: ပြန်ညွှန်းခြင်းပယ်ဖျက်ခြင်းဖြင့် သင့်လက်ရှိအကောင့်မှာ ပြန်လည်အသုံးပြု၍ရမည်ဖြစ်သော်လည်း ထိုအကောင့်သို့ ပြောင်းရွှေ့ထားသော စောင့်ကြည့်သူများကို ပြန်လည်ရရှိတော့မည်မဟုတ်ပါ။ + cancelled_msg: ပြန်ညွှန်းခြင်းကို ပယ်ဖျက်ပြီးပါပြီ။ errors: + already_moved: သင်ပြောင်းရွှေ့ပြီးသော အကောင့်နှင့် တူညီပါသည် + missing_also_known_as: ဤအကောင့်၏ အမည်တူမဟုတ်ပါ + move_to_self: လက်ရှိအကောင့်မဖြစ်နိုင်ပါ not_found: ရှာမတွေ့ပါ + followers_count: ပြောင်းရွှေ့ချိန်၌ စောင့်ကြည့်သူများအရေအတွက် + incoming_migrations: အခြားအကောင့်တစ်ခုမှ ပြောင်းရွှေ့ခြင်း + incoming_migrations_html: အခြားအကောင့်မှ ဤအကောင့်သို့ ရွှေ့ရန် ဦးစွာ သင်သည် အကောင့်အမည်တူတစ်ခု ဖန်တီးရန် လိုအပ်ပါသည်။ + moved_msg: သင့်အကောင့်မှာ ယခု %{acct} သို့ ပြန်ညွှန်းနေပြီး စောင့်ကြည့်သူများကို ရွှေ့ပြောင်းနေလျက်ရှိပါသည်။ + not_redirecting: သင့်အကောင့်သည် လက်ရှိတွင် အခြားအကောင့်တစ်ခုသို့ ပြန်ညွှန်းနေခြင်းမဟုတ်ပါ။ + on_cooldown: မကြာသေးမီက သင့်အကောင့်ကို ပြောင်းရွှေ့ခဲ့သည်။ ဤလုပ်ဆောင်ချက်ကို %{count} ရက်များတွင် ထပ်မံရရှိနိုင်ပါမည်။ + past_migrations: ယခင်ရွှေ့ပြောင်းမှုများ proceed_with_move: စောင့်ကြည့်သူများကို ရွှေ့ရန် + redirected_msg: သင့်အကောင့်သည် %{acct} သို့ ယခုပြန်ညွှန်းနေပါသည်။ + redirecting_to: သင့်အကောင့်က %{acct} သို့ ပြန်ညွှန်းနေသည်။ + set_redirect: ပြန်ညွှန်းသတ်မှတ်ပါ warning: + backreference_required: အကောင့်အသစ်က ဤအကောင့်ကို ပြန်ကိုးကားရန်အတွက် ဦးစွာ ပြင်ဆင်သတ်မှတ်ရပါမည် + before: ဆက်လက်မလုပ်ဆောင်မီ ဤမှတ်စုများကို သေချာဖတ်ပါ - + cooldown: ရွှေ့ပြီးပါက နောက်တစ်ကြိမ် ထပ်ရွှေ့ရန် အချိန်စောင့်ရပါမည် + disabled_account: နောက်ပိုင်းတွင် သင့်လက်ရှိအကောင့်အား အပြည့်အဝအသုံးပြုနိုင်တော့မည်မဟုတ်သော်လည်း အချက်အလက်ထုတ်ယူခြင်းနှင့် ပြန်လည်အတည်ပြုခြင်းတို့ကို ဆောင်ရွက်နိုင်မည်ဖြစ်သည်။ + followers: ဤလုပ်ဆောင်ချက်မှာ စောင့်ကြည့်သူအားလုံးကို လက်ရှိအကောင့်မှ အကောင့်အသစ်သို့ ရွှေ့ပြောင်းခြင်းဖြစ်သည် only_redirect_html: တနည်းအားဖြင့် သင်သည် သင့်ပရိုဖိုင်ပေါ်တွင် ပြန်ညွှန်းခြင်းကိုသာ ပြုလုပ်နိုင်သည်။ + other_data: အခြားအချက်အလက်များကို အလိုအလျောက်ရွှေ့မည်မဟုတ်ပါ redirect: သင့်လက်ရှိအကောင့်၏ပရိုဖိုင်ကို ပြန်လည်ညွှန်းပေးသည့်အသိပေးချက်ဖြင့် ပြင်ဆင်ပေးမည်ဖြစ်ပြီး ရှာဖွေမှုများမှ ဖယ်ထုတ်ပေးမည်ဖြစ်သည် + moderation: + title: စိစစ်ခြင်း + move_handler: + carry_blocks_over_text: ဤအသုံးပြုသူသည် သင်ပိတ်ဆို့ထားသော %{acct} မှ ပြောင်းရွှေ့ခဲ့သည်။ + carry_mutes_over_text: ဤအသုံးပြုသူသည် သင်အသံပိတ်ထားသော %{acct} မှ ပြောင်းရွှေ့ခဲ့သည်။ + copy_account_note_text: ဤအသုံးပြုသူသည် %{acct} မှ ပြောင်းရွှေ့ခဲ့သည်။ ဤသည်မှာ ၎င်းတို့နှင့်ပတ်သက်သော ယခင်မှတ်စုများဖြစ်သည် - + navigation: + toggle_menu: 'မီနူးပြောင်းရန် + + ' notification_mailer: + admin: + report: + subject: "%{name} က တိုင်ကြားစာတစ်စောင် ပို့ခဲ့သည်" + sign_up: + subject: "%{name} က အကောင့်ဖွင့်ထားသည်" + favourite: + body: "%{name} က နှစ်သက်ခဲ့သော သင့်ပို့စ် -" + subject: "%{name} က သင့်ပို့စ်ကို နှစ်သက်ခဲ့သည်" + title: နှစ်သက်မှုအသစ်တစ်ခု follow: body: "%{name} မှ ယခု သင့်နောက်သို့ စောင့်ကည့်နေပါသည်။" subject: "%{name} မှ ယခု သင့်နောက်သို့ စောင့်ကည့်နေပါသည်။" title: စောင့်ကြည့်သူအသစ် follow_request: action: စောင့်ကြည့်ရန်တောင်းဆိုမှုများကို ပြင်ဆင်ရန် + body: "%{name} က သင့်ကို စောင့်ကြည့်ရန် တောင်းဆိုထားသည်" + subject: ဆိုင်းငံ့ထားသော စောင့်ကြည့်သူ - %{name} title: စောင့်ကြည့်ခွင့်ပြုရန် တောင်းဆိုမှုအသစ် mention: action: စာပြန်ရန် body: သင့်ကို %{name} မှ ဖော်ပြခဲ့သည်- subject: သင့်ကို %{name} မှ ဖော်ပြခဲ့သည် + title: ဖော်ပြမှုအသစ် + poll: + subject: "%{name} ၏ စစ်တမ်းတစ်ခု ပြီးသွားပါပြီ" + reblog: + body: "%{name} က သင့်ပို့စ်ကို Boost လုပ်ခဲ့သည် -" + subject: "%{name} က သင့်ပို့စ်ကို Boost လုပ်ခဲ့သည်" + title: Boost အသစ် status: subject: "%{name} က အခုလေးတင် ပို့စ်တင်လိုက်ပါပြီ" + update: + subject: "%{name} က ပို့စ်တစ်ခုကို ပြင်ဆင်ခဲ့သည်" + notifications: + email_events: အီးမေးလ်သတိပေးချက်များအတွက်အကြောင်းအရာများ + email_events_hint: အသိပေးချက်များရယူမည့် အစီအစဉ်များကို ရွေးပါ - + other_settings: အခြားအသိပေးချက်များ၏ သတ်မှတ်ချက်များ number: human: decimal_units: @@ -761,8 +1320,16 @@ my: thousand: K trillion: T otp_authentication: + code_hint: အတည်ပြုရန်အတွက် အထောက်အထားစိစစ်အက်ပ်မှ ထုတ်ပေးသည့်ကုဒ်ကို ထည့်သွင်းပါ enable: ဖွင့်ပါ + manual_instructions: QR ကုဒ်စကင်န်ဖတ်၍မရပါက ကိုယ်တိုင်ရိုက်ထည့်ရန်လိုအပ်ပြီး ဤနေရာသည် စာရွက်အလွတ်နေရာဖြစ်သည်။ + setup: သတ်မှတ်ရန် + wrong_code: ထည့်သွင်းထားသောကုဒ်သည် မမှန်ကန်ပါ။ ဆာဗာအချိန်နှင့် စက်အချိန်မှာ မှန်ကန်ပါသလား။ pagination: + newer: ပိုသစ်သော + next: ရှေ့သို့ + older: ပိုဟောင်းသော + prev: ရှေ့သို့ truncate: "…" polls: errors: @@ -775,41 +1342,143 @@ my: over_character_limit: သတ်မှတ်ထားသောစာလုံးအရေအတွက် %{max} ထက်ပိုနေသည် too_few_options: တစ်ခုထက်ပိုနေသည် too_many_options: သတ်မှတ်ထားသောအရေအတွက် %{max} ကိုကျော်လွန်နေသည် + preferences: + other: အခြား + posting_defaults: ပို့စ်တင်ရာတွင် သတ်မှတ်ချက်များ + public_timelines: အများမြင်စာမျက်နှာ privacy_policy: title: ကိုယ်ရေးအချက်အလက်မူဝါဒ + reactions: + errors: + limit_reached: မတူညီသော တုံ့ပြန်မှုများ၏ ကန့်သတ်ချက်သို့ ရောက်ရှိခဲ့သည်။ + unrecognized_emoji: အသိအမှတ်ပြုထားသော အီမိုဂျီမဟုတ်ပါ relationships: + activity: အကောင့်လုပ်ဆောင်ချက် + confirm_follow_selected_followers: ရွေးချယ်စောင့်ကြည့်သူများကို စောင့်ကြည့်လိုသည်မှာ သေချာပါသလား။ + confirm_remove_selected_followers: ရွေးချယ်စောင့်ကြည့်သူများကို ဖယ်ရှားလိုသည်မှာ သေချာပါသလား။ + confirm_remove_selected_follows: ရွေးချယ်စောင့်ကြည့်သူများကို ဖယ်ရှားလိုသည်မှာ သေချာပါသလား။ + dormant: Dormant + follow_failure: ရွေးချယ်ထားသော အကောင့်အချို့ကို စောင့်ကြည့်၍ရမည်မဟုတ်ပါ။ + follow_selected_followers: ရွေးချယ်စောင့်ကြည့်သူများကို စောင့်ကြည့်ပါ followers: စောင့်ကြည့်သူများ following: စောင့်ကြည့်နေသည် + invited: ဖိတ်ခေါ်ထားပြီး + last_active: နောက်ဆုံးအသုံးပြုခဲ့သည့်အချိန် + most_recent: မကြာသေးမီက moved: ရွှေ့ပြီးပါပြီ mutual: အပြန်အလှန်စောင့်ကြည့်ထားခြင်း + primary: ဦးစားပေး + relationship: တော်စပ်ပုံ + remove_selected_domains: ရွေးချယ်ထားသော ဒိုမိန်းများမှ စောင့်ကြည့်သူအားလုံးကို ဖယ်ရှားပါ + remove_selected_followers: ရွေးချယ်ထားသော စောင့်ကြည့်သူများကို ဖယ်ရှားပါ + remove_selected_follows: ရွေးချယ်ထားသော အသုံးပြုသူများကို စောင့်ကြည့်ခြင်းမှ ဖြုတ်ပါ status: အကောင့်အခြေအနေ + remote_follow: + missing_resource: သင့်အကောင့်အတွက် လိုအပ်သော ပြန်ညွှန်းမည့် URL ကို ရှာမတွေ့ပါ + reports: + errors: + invalid_rules: မှန်ကန်သောစည်းမျဉ်းများကို ကိုးကားထားခြင်း မရှိပါ + rss: + content_warning: 'အကြောင်းအရာသတိပေးချက် - ' + descriptions: + account: "@%{acct} မှ အများမြင်ပို့စ်များ" + tag: "#%{hashtag} ကို တဂ်ထားသော အများမြင်ပို့စ်များ" + scheduled_statuses: + over_daily_limit: ယနေ့အတွက် စီစဉ်ထားသည့် ပို့စ်များ၏ ကန့်သတ်ချက် %{limit} ကို ကျော်လွန်သွားပါပြီ + over_total_limit: စီစဉ်ထားသည့် ပို့စ်များ၏ ကန့်သတ်ချက် %{limit} ကို ကျော်လွန်သွားပါပြီ + too_soon: စီစဉ်ထားသောရက်စွဲမှာ အနာဂတ်အတွက်ဖြစ်သည် sessions: + activity: နောက်ဆုံးလုပ်ဆောင်ချက် + browser: ဘရောက်ဇာ + browsers: + alipay: Alipay + blackberry: BlackBerry + chrome: Chrome + edge: Microsoft Edge + electron: အီလက်ထရွန် + firefox: Firefox + generic: အမည်မသိဘရောက်ဆာ + huawei_browser: Huawei Browser + ie: Internet Explorer + micro_messenger: MicroMessenger + nokia: Nokia S40 Ovi Browser + opera: Opera + otter: Otter + phantom_js: PhantomJS + qq: QQ Browser + safari: Safari + uc_browser: UC Browser + unknown_browser: အမည်မသိဘရောက်ဆာ + weibo: Weibo + current_session: လက်ရှိဆက်ရှင် description: "%{platform} ပေါ်ရှိ %{browser}" + explanation: ဤသည်မှာ သင်၏ Mastodon အကောင့်သို့ လက်ရှိဝင်ရောက်ထားသည့် ဝဘ်ဘရောက်ဆာများဖြစ်သည်။ + ip: IP platforms: + adobe_air: Adobe Air + android: Android + blackberry: BlackBerry + chrome_os: ChromeOS + firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: macOS + unknown_platform: အမည်မသိ Platform + windows: Windows + windows_mobile: Windows Mobile + windows_phone: Windows Phone revoke: ပြန်ရုပ်သိမ်းရန် + revoke_success: ဆက်ရှင်ကို ရုပ်သိမ်းလိုက်ပါပြီ + title: ဆက်ရှင်များ + view_authentication_history: သင့်အကောင့်၏ စစ်မှန်ကြောင်းအထောက်အထားပြမှုကို ကြည့်ပါ settings: account: အကောင့် account_settings: အကောင့်သတ်မှတ်ချက်များ + aliases: အကောင့်အမည်တူများ appearance: ပုံပန်းသဏ္ဌာန် + authorized_apps: ခွင့်ပြုထားသောအက်ပ်များ + back: Mastodon သို့ ပြန်သွားရန် delete: အကောင့်ဖျက်သိမ်းခြင်း + development: Development edit_profile: ပရိုဖိုင်ပြင်ဆင်ရန် + export: အချက်အလက်ထုတ်ယူခြင်း + featured_tags: အသားပေးဖော်ပြထားသည့် ဟက်ရှ်တဂျ်များ + import: ထည့်သွင်းခြင်း + import_and_export: ထည့်သွင်းခြင်းနှင့် ထုတ်ယူခြင်း + migrate: အကောင့်ပြောင်းရွှေ့ခြင်း notifications: အသိပေးချက်များ + preferences: သတ်မှတ်ချက်များ profile: ပရိုဖိုင် relationships: စောင့်ကြည့်သူများနှင့် စောင့်ကြည့်စာရင်း statuses_cleanup: အလိုအလျောက်ပို့စ်ဖျက်ခြင်း + strikes: စိစစ်လုပ်ဆောင်ချက်များ two_factor_authentication: နှစ်ဆင့်ခံလုံခြုံရေးစနစ် + webauthn_authentication: လုံခြုံရေးကီးများ statuses: attached: + audio: + other: "%{count} အသံ" description: ပူးတွဲပါ- %{attached} image: other: "%{count} ပုံ" video: other: "%{count} ဗီဒီယို" + boosted_from_html: "%{acct_link} မှ Boost လုပ်ခဲ့သည်" + content_warning: အကြောင်းအရာသတိပေးချက် - %{warning} + default_language: လက်ရှိသုံးနေသောဘာသာစကားအတိုင်း ပြပေးပါမည် + disallowed_hashtags: + other: ခွင့်မပြုထားသော hashtags များပါရှိသည် - %{tags} edited_at_html: "%{date} ကို ပြင်ဆင်ပြီးပါပြီ" + errors: + in_reply_not_found: သင် စာပြန်နေသည့်ပို့စ်မှာ မရှိတော့ပါ။ open_in_web: ဝဘ်တွင် ဖွင့်ပါ + over_character_limit: စာလုံးကန့်သတ်ချက် %{max} ကို ကျော်လွန်သွားပါပြီ + pin_errors: + direct: အမည်ဖော်ပြထားသည့် ပို့စ်များကို ပင်တွဲ၍မရပါ + limit: သင်သည် ပို့စ်အရေအတွက်အများဆုံးကို ပင်တွဲထားပြီးဖြစ်သည် + ownership: အခြားသူ၏ပို့စ်ကို ပင်တွဲ၍မရပါ + reblog: Boost လုပ်ထားသောပို့စ်ကို ပင်ထား၍မရပါ poll: total_people: other: "%{count} ယောက်" @@ -819,6 +1488,8 @@ my: show_more: ပိုမိုပြရန် show_newer: ပို့စ်အသစ်များပြရန် show_older: ပို့စ်အဟောင်းများပြရန် + show_thread: Thread ကို ပြပါ + sign_in_to_participate: စကားဝိုင်းတွင် ပါဝင်ရန် အကောင့်ဝင်ပါ title: '%{name}: "%{quote}"' visibilities: direct: တိုက်ရိုက် @@ -826,9 +1497,29 @@ my: private_long: စောင့်ကြည့်သူများကိုသာ ပြရန် public: အများမြင် public_long: လူတိုင်းမြင်နိုင်ပါသည် + unlisted: စာရင်းမသွင်းထားပါ + unlisted_long: လူတိုင်းမြင်နိုင်သော်လည်း အများမြင်မည့်စာမျက်နှာများတွင် စာရင်းမသွင်းထားပါ။ statuses_cleanup: + enabled: ပို့စ်အဟောင်းများကို အလိုအလျောက် ဖျက်ပါ + enabled_hint: အောက်ပါခြွင်းချက်များထဲမှ တစ်ခုနှင့် မကိုက်ညီပါက သတ်မှတ်ထားသည့်ကာလအပိုင်းအခြားသို့ ရောက်သည်နှင့် သင့်ပို့စ်များကို အလိုအလျောက် ဖျက်ပါမည် + exceptions: ခြွင်းချက်များ + explanation: ပို့စ်များကို ဖျက်ခြင်းသည် စျေးကြီးသော လုပ်ဆောင်မှုတစ်ခုဖြစ်သောကြောင့်၊ ဆာဗာမှမဟုတ်ရင် အလုပ်ရှုပ်နေချိန်တွင် အချိန်ကြာလာသည်နှင့်အမျှ ၎င်းကို ဖြည်းဖြည်းချင်း လုပ်ဆောင်ပါသည်။ ထို့ကြောင့်၊ သင့်ပို့စ်များသည် အချိန်သတ်မှတ်ချက်သို့ရောက်ရှိပြီးနောက် ခဏအကြာတွင် ဖျက်လိုက်နိုင်ပါသည်။ + ignore_favs: နှစ်သက်မှုများကို လျစ်လျူရှုပါ + ignore_reblogs: Boost များကို လျစ်လျူရှုပါ + interaction_exceptions: အပြန်အလှန်တုံ့ပြန်မှုများအပေါ်အခြေခံသည့် ခြွင်းချက်များ + interaction_exceptions_explanation: ပို့စ်များသည် အကြိုက်ဆုံးအဆင့်အောက်သို့ရောက်သွားပါက သို့မဟုတ် ၎င်းတို့ကို တစ်ကြိမ်ကျော်ပြီးပါက ဖျက်ပစ်ရန် အာမခံချက်မရှိကြောင်း သတိပြုပါ။ + keep_direct: တိုက်ရိုက်မက်ဆေ့ချ်များကို သိမ်းထားပါ + keep_direct_hint: တိုက်ရိုက်စကားပြောထားသည်များကို မဖျက်ပါနှင့် + keep_media: မီဒီယာဖိုင်များပါသောပို့စ်များကို သိမ်းဆည်းပါ + keep_media_hint: မီဒီယာဖိုင်များပါသောပို့စ်များကို မဖျက်ပါနှင့် + keep_pinned: ပင်ထိုးထားသော ပို့စ်များကို သိမ်းထားပါ + keep_pinned_hint: ပင်ထိုးထားသော ပို့စ်များကို မဖျက်ပါ keep_polls: စစ်တမ်းကိုဆက်လက်ထားမည် keep_polls_hint: သင့်မှတ်တမ်းတစ်ခုမှ မပျက်ပါ + keep_self_bookmark: မှတ်ထားသောပို့စ်များကို သိမ်းဆည်းပါ + keep_self_bookmark_hint: မှတ်ထားပြီးသော ပို့စ်များကို မဖျက်ပါနှင့် + keep_self_fav: သင်နှစ်သက်ခဲ့သောပို့စ်များကို သိမ်းထားပါ + keep_self_fav_hint: နှစ်သက်ထားပြီးသော ပို့စ်များကို မဖျက်ပါနှင့် min_age: '1209600': ၂ ပတ် '15778476': ၆ လ @@ -838,10 +1529,23 @@ my: '604800': ၁ ပတ် '63113904': ၂ နှစ် '7889238': ၃ လ + min_age_label: ကာလအပိုင်းအခြား + min_favs: အနည်းဆုံးအားဖြင့် နှစ်သက်သည့်ပို့စ်များကို သိမ်းဆည်းပါ + min_favs_hint: အနည်းဆုံး ဤအကြိုက်ဆုံးအရေအတွက်ကို လက်ခံရရှိထားသည့် သင့်ပို့စ်များကို မဖျက်ပါ။ ပို့စ်များကို ၎င်းတို့၏ စိတ်ကြိုက်အရေအတွက်မခွဲခြားဘဲ ဖျက်ရန် ချန်ထားပါ။ + min_reblogs: အနည်းဆုံးအားဖြင့် Boost လုပ်ထားသည့်ပို့စ်များကို သိမ်းဆည်းပါ + min_reblogs_hint: အနည်းဆုံး ဤအကြိမ်အရေအတွက်ကို မြှင့်တင်ထားသည့် သင့်ပို့စ်များကို မဖျက်ပါ။ ၎င်းတို့၏ မြှင့်တင်မှုအရေအတွက်ကို မခွဲခြားဘဲ ပို့စ်များကို ဖျက်ရန် ချန်ထားပါ stream_entries: pinned: ပင်တွဲထားသောပို့စ် + reblogged: Boost လုပ်ခဲ့သည် + sensitive_content: သတိထားရသော အကြောင်းအရာ + strikes: + errors: + too_late: ဤလုပ်ဆောင်ချက်တင်ပြရန် နောက်ကျသွားပါပြီ + tags: + does_not_match_previous_name: ယခင်အမည်နှင့် မကိုက်ညီပါ themes: default: Mastodon (အနက်) + mastodon-light: Mastodon (အလင်းနောက်ခံ) time: formats: default: "%b %d, %Y, %H:%M" @@ -854,37 +1558,97 @@ my: edit: ပြင်ဆင်ရန် enabled: နှစ်ဆင့်ခံလုံခြုံရေးစနစ်ကို ဖွင့်ထားသည် enabled_success: နှစ်ဆင့်ခံလုံခြုံရေးစနစ်ကို ဖွင့်ပြီးပါပြီ + generate_recovery_codes: ပြန်လည်ရယူရေးကုဒ်များ ဖန်တီးပါ + lost_recovery_codes: သင့်ဖုန်းပျောက်ဆုံးသွားပါက ပြန်လည်ရယူခြင်းကုဒ်များသည် သင့်အကောင့်သို့ ပြန်လည်ဝင်ရောက်ခွင့်ရရှိစေမည်ဖြစ်သည်။ သင်၏ ပြန်လည်ရယူရေးကုဒ်များ ပျောက်ဆုံးသွားပါက ၎င်းတို့ကို ဤနေရာတွင် ပြန်လည်ထုတ်ပေးနိုင်ပါသည်။ သင်၏ ပြန်လည်ရယူရေး ကုဒ်ဟောင်းများ ပျက်သွားပါမည်။ methods: နှစ်ဆင့်ခံလုံခြုံရေးနည်းလမ်းများ + otp: Authenticator အက်ပ် + recovery_codes: အရန်ပြန်လည်ရယူရေးကုဒ်များ + recovery_codes_regenerated: ပြန်လည်ရယူရေးကုဒ်များကို ပြန်ထုတ်ပေးပြီးပါပြီ + recovery_instructions_html: သင့်ဖုန်းသို့ ဝင်ရောက်သုံးစွဲခွင့် ဆုံးရှုံးခဲ့ဖူးပါက၊ သင့်အကောင့်သို့ ပြန်လည်ဝင်ရောက်ခွင့်ရရန် အောက်ပါ ပြန်လည်ရယူရေးကုဒ်များထဲမှ တစ်ခုကို အသုံးပြုနိုင်ပါသည်။ ပြန်လည်ရယူရေးကုဒ်များကို လုံခြုံအောင်ထားပါ။ ဥပမာအားဖြင့်၊ သင်သည် ၎င်းတို့ကို ပရင့်ထုတ်ပြီး အခြားအရေးကြီးစာရွက်စာတမ်းများဖြင့် သိမ်းဆည်းနိုင်သည်။ + webauthn: လုံခြုံရေးကီးများ user_mailer: appeal_approved: action: သင့်အကောင့်သို့ သွားပါ + explanation: "%{appeal_date} တွင် သင်တင်သွင်းခဲ့သည့် %{strike_date} တွင် သင့်အကောင့်ကို ဆန့်ကျင်သည့် တိုင်ချက်၏ အယူခံဝင်မှုကို အတည်ပြုပြီးဖြစ်သည်။ သင့်အကောင့်သည် ကောင်းမွန်သောအနေအထားတွင် ရှိနေပြန်သည်။" + subject: "%{date} တွင် သင့်အယူခံဝင်ချက်ကို အတည်ပြုပြီးပါပြီ" + title: အယူခံဝင်သည် appeal_rejected: + explanation: "%{appeal_date} တွင် သင်တင်သွင်းခဲ့သည့် %{strike_date} တွင် သင့်အကောင့်ကို ဆန့်ကျင်သည့် တိုင်ချက်၏ အယူခံဝင်မှုကို ပယ်ချခဲ့သည်။" + subject: "%{date} တွင် သင့်တင်ပြချက်ကို ပယ်ချခဲ့သည်" title: အယူခံကို ပယ်ချခဲ့သည် + backup_ready: + explanation: သင့် Mastodon အကောင့် အရန်ကူးယူရန် တောင်းဆိုပြီးဖြစ်သည်။ ယခု ဒေါင်းလုဒ်လုပ်နိုင်ပါပြီ။ + subject: သင့်မှတ်တမ်း ဒေါင်းလုဒ်ဆွဲရန် အသင့်ဖြစ်ပါပြီ + title: မှတ်တမ်းသိမ်းရန် suspicious_sign_in: change_password: သင်၏ စကားဝှက်ပြောင်းလဲပါ + details: ဤသည်မှာ အကောင့်ဝင်ရောက်ခြင်းအတွက် အသေးစိတ်အချက်များဖြစ်သည် - + explanation: IP လိပ်စာအသစ်တစ်ခုမှနေ၍ သင့်အကောင့်ဝင်ရောက်သည်ကို တွေ့ရှိခဲ့ပါသည်။ + further_actions_html: သင် မဟုတ်ပါက သင့်အကောင့်လုံခြုံစေရန်အတွက် %{action} ကို ချက်ချင်းဆောင်ရွက်ပြီး နှစ်ဆင့်ခံလုံခြုံရေးစနစ်ဖွင့်ထားရန် အကြံပြုပါသည်။ + subject: သင့်အကောင့်ကို IP လိပ်စာအသစ်တစ်ခုမှ ဝင်ရောက်အသုံးပြုလျက်ရှိသည် + title: အကောင့်ဝင်ရောက်မှုအသစ် warning: appeal: အယူခံတင်သွင်းပါ + appeal_description: အမှားအယွင်းတစ်ခုဟု သင်ယုံကြည်ပါက %{instance} ဝန်ထမ်းများထံ တင်ပြနိုင်သည်။ + categories: + spam: Spam + violation: အကြောင်းအရာသည် အောက်ပါကွန်မြူနတီလမ်းညွှန်ချက်များကို ချိုးဖောက်သည်။ explanation: + delete_statuses: သင့်ပို့စ်အချို့သည် တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော ကွန်မြူနတီလမ်းညွှန်ချက်များကို ချိုးဖောက်ကြောင်း တွေ့ရှိပြီး %{instance} ၏ ကြီးကြပ်သူများမှ ဖယ်ရှားလိုက်ပါသည်။ disable: သင့်အကောင့်ကို အသုံးမပြုနိုင်တော့သော်လည်း သင့်ပရိုဖိုင်နှင့် အခြားအချက်အလက်များမှာ ကျန်ရှိနေမည်ဖြစ်သည်။ သင့်အချက်အလက်ကို မိတ္တူကူးရန်၊ အကောင့်သတ်မှတ်ချက်များကို ပြောင်းလဲရန် သို့မဟုတ် သင့်အကောင့်ဖျက်သိမ်းရန်တို့အတွက် အရန်သိမ်းဆည်းမှုအား သင် တောင်းဆိုနိုင်သည်။ + silence: သင့်အကောင့်ကို ဆက်လက်အသုံးပြုနိုင်သော်လည်း သင့်စောင့်ကြည့်သူများသာ ဤဆာဗာတွင် သင့်ပို့စ်များကို မြင်နိုင်မည်ဖြစ်ပြီး အကြောင်းအရာခေါင်းစဉ်အမျိုးမျိုးမှ သင့်ကို ဖယ်ထုတ်ထားနိုင်သည်။ သို့သော် အခြားသူများက သင့်ကို စောင့်ကြည့်နေနိုင်ပါသေးသည်။ suspend: သင့်အကောင့်ကို အသုံးမပြုနိုင်တော့သည့်အပြင် ပရိုဖိုင်နှင့် အခြားအချက်အလက်များကိုလည်း အသုံးပြု၍မရတော့ပါ။ သင့်အချက်အလက်ကို ရက်ပေါင်း ၃၀ ခန့်အတွင်း အပြည့်အဝ မဖယ်ရှားမချင်း အချက်အလက်များ အရန်ကူးယူရန်အတွက် အကောင့်သို့ ဝင်ရောက်နိုင်ပါသေးသည်။ သို့သော် အကောင့်ရပ်ဆိုင်းထားမှုရှောင်လွှဲခြင်းမှ ကာကွယ်ရန်အတွက် အခြေခံအချက်အလက်အချို့ကို ကျွန်ုပ်တို့ ထိန်းသိမ်းထားရပါမည်။ reason: အကြောင်းပြချက် - + statuses: ကိုးကားထားသောပို့စ်များ - subject: delete_statuses: "%{acct} ရှိ သင့်ပို့စ်များကို ဖယ်ရှားလိုက်ပါပြီ" + disable: သင့်အကောင့် %{acct} ကို ပိတ်သိမ်းထားသည် + mark_statuses_as_sensitive: "%{acct} ရှိ သင့်ပို့စ်များကို သတိထားရသောပို့စ်များအဖြစ် အမှတ်အသားပြုထားသည်" none: "%{acct} အတွက် သတိပေးချက်" + sensitive: "%{acct} ရှိ သင့်ပို့စ်များကို ယခုမှစပြီး သတိထားရသောပို့စ်များအဖြစ် အမှတ်အသားပြုပါမည်" silence: သင့်အကောင့် %{acct} ကို ကန့်သတ်ထားသည် + suspend: သင့်အကောင့် %{acct} ကို ဆိုင်းငံ့ထားသည် title: delete_statuses: ပို့စ်များကို ဖယ်ရှားခဲ့သည် + disable: အကောင့်ပိတ်သွားပါပြီ။ + mark_statuses_as_sensitive: သတိထားရသောပို့စ်များအဖြစ် အမှတ်အသားပြုပါ none: သတိပေးချက် + sensitive: သတိထားရသောအကောင့်အဖြစ် အမှတ်အသားပြုပါ + silence: အကောင့်ကန့်သတ်ထားသည် suspend: အကောင့်ရပ်ဆိုင်းထားသည် welcome: edit_profile_action: ပရိုဖိုင်ထည့်သွင်းရန် edit_profile_step: ပရိုဖိုင်ဓာတ်ပုံတစ်ပုံ တင်ခြင်း၊ ဖော်ပြမည့်အမည် ပြောင်းလဲခြင်းနှင့် အခြားအရာများပြုလုပ်ခြင်းတို့ဖြင့် သင့်ပရိုဖိုင်ကို စိတ်ကြိုက်ပြင်ဆင်နိုင်ပါသည်။ စောင့်ကြည့်သူအသစ်များ သင့်ကိုစောင့်ကြည့်ခွင့်မပြုမီ ပြန်လည်သုံးသပ်ရန်အတွက် ဆုံးဖြတ်နိုင်ပါသည်။ explanation: ဤသည်မှာ သင် စတင်အသုံးပြုနိုင်ရန်အတွက် အကြံပြုချက်အချို့ဖြစ်ပါသည် final_action: ပို့စ် တင်ရန် + final_step: 'ပို့စ်စပြီး တင်နိုင်ပါပြီ။ စောင့်ကြည့်သူများမရှိသေးသော်လည်း သင့်အများမြင်ပို့စ်များကို ဒေသတွင်းစာမျက်နှာ သို့မဟုတ် ဟက်ရှ်တက်စာမျက်နှာတို့တွင် အခြားသူများက မြင်နိုင်ပါသည်။ #introductions ဟက်ရှ်တက်ဖြင့် သင့်ကိုယ်သင် မိတ်ဆက်နိုင်ပါသည်။' + full_handle: ကိုယ်တိုင်ထိန်းချုပ်နိုင်သည် + full_handle_hint: ဤသည်မှာ သင့်သူငယ်ချင်းများကို အခြားဆာဗာတစ်ခုမှ မက်ဆေ့ချ်ပို့နိုင်ကြောင်း သို့မဟုတ် စောင့်ကြည့်နိုင်ကြောင်း အသိပေးပါမည်။ subject: Mastodon မှ လှိုက်လှဲစွာကြိုဆိုပါသည်။ + title: "%{name} က ကြိုဆိုပါတယ်။" users: follow_limit_reached: လူ %{limit} ထက် ပိုပြီး စောင့်ကြည့်၍မရပါ + go_to_sso_account_settings: အထောက်အထားပေးသူ၏အကောင့်သတ်မှတ်ချက်များသို့ သွားပါ invalid_otp_token: မမှန်ကန်သော နှစ်ဆင့်ခံလုံခြုံရေးကုဒ် + otp_lost_help_html: နှစ်ခုစလုံးကို ဝင်ရောက်ခွင့် ဆုံးရှုံးသွားပါက %{email} နှင့် ဆက်သွယ်နိုင်ပါသည် + seamless_external_login: ပြင်ပဝန်ဆောင်မှုမှတစ်ဆင့် အကောင့်ဝင်ထားသောကြောင့် စကားဝှက်နှင့် အီးမေးလ်သတ်မှတ်ချက်များကို မရနိုင်ပါ။ + signed_in_as: အဖြစ် အကောင့်ဝင်ခဲ့သည် - + verification: + verification: စိစစ်ခြင်း webauthn_credentials: + add: လုံခြုံရေးကီးအသစ်ထည့်ပါ + create: + error: သင့်လုံခြုံရေးကီးထည့်ရာတွင် ပြဿနာရှိနေသည်။ ထပ်စမ်းကြည့်ပါ။ + success: လုံခြုံရေးကီး ထည့်ပြီးပါပြီ။ delete: ဖျက်ရန် + delete_confirmation: လုံခြုံရေးကီးဖျက်ရန် သေချာပါသလား။ + description_html: "လုံခြုံရေးကီးအထောက်အထားစိစစ်ခြင်းကို ဖွင့်ထားပါက လုံခြုံရေးကီးများထဲမှ တစ်ခုကို အကောင့်ဝင်ရောက်ရန်အတွက် အသုံးပြုရန်လိုအပ်ပါသည်" + destroy: + error: သင့်လုံခြုံရေးကီးကို ဖျက်ရာတွင် ပြဿနာရှိနေသည်။ ထပ်စမ်းကြည့်ပါ။ + success: လုံခြုံရေးကီး ဖျက်ပြီးပါပြီ။ + invalid_credential: လုံခြုံရေးကီးမမှန်ကန်ပါ + nickname_hint: သင့်လုံခြုံရေးကီးအသစ်၏ အမည်ပြောင်ကို ထည့်ပါ။ + not_enabled: WebAuthn ကို သင် မဖွင့်ရသေးပါ + not_supported: ဤဘရောက်ဆာသည် လုံခြုံရေးကီးများကို မပံ့ပိုးပါ + otp_required: လုံခြုံရေးကီးများကို အသုံးပြုရန်အတွက် နှစ်ဆင့်ခံလုံခြုံရေးစနစ်စိစစ်ခြင်းကို ဦးစွာဖွင့်ပါ။ registered_on: "%{date} တွင် စာရင်းသွင်းထားသည်" diff --git a/config/locales/nl.yml b/config/locales/nl.yml index e9a63e9d83..66a1b7f603 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -812,6 +812,12 @@ nl: message_html: Je hebt voor deze server geen regels opgesteld. sidekiq_process_check: message_html: Er draait geen Sidekiqproces voor de wachtrij(en) %{value}. Controleer je Sidekiqconfiguratie + upload_check_privacy_error: + action: Klik hier voor meer informatie + message_html: "Jouw webserver is verkeerd geconfigureerd. De privacy van je gebruikers is in gevaar." + upload_check_privacy_error_object_storage: + action: Klik hier voor meer informatie + message_html: "Jouw objectopslag is verkeerd geconfigureerd. De privacy van je gebruikers is in gevaar." tags: review: Status beoordelen updated_msg: Instellingen hashtag succesvol bijgewerkt @@ -1196,8 +1202,6 @@ nl: index: hint: Dit filter is van toepassing om individuele berichten te selecteren, ongeacht andere criteria. Je kunt in de webomgeving meer berichten aan dit filter toevoegen. title: Gefilterde berichten - footer: - trending_now: Trends generic: all: Alles all_items_on_page_selected_html: @@ -1407,6 +1411,7 @@ nl: confirm_remove_selected_followers: Weet je zeker dat je de geselecteerde volgers wilt verwijderen? confirm_remove_selected_follows: Weet je zeker dat je de geselecteerde gevolgde accounts wilt verwijderen? dormant: Sluimerend + follow_failure: Kan sommige van de geselecteerde accounts niet volgen. follow_selected_followers: Geselecteerde volgers volgen followers: Volgers following: Volgend @@ -1446,6 +1451,7 @@ nl: electron: Electron firefox: Firefox generic: Onbekende webbrowser + huawei_browser: Huawei Browser ie: Internet Explorer micro_messenger: MicroMessenger nokia: Nokia S40 Ovi Browser @@ -1455,6 +1461,7 @@ nl: qq: QQ Browser safari: Safari uc_browser: UC Browser + unknown_browser: Onbekende browser weibo: Weibo current_session: Huidige sessie description: "%{browser} op %{platform}" @@ -1467,9 +1474,10 @@ nl: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: macOS - other: Onbekend platform + unknown_platform: Onbekend platform windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1543,7 +1551,7 @@ nl: sign_in_to_participate: Meld je aan om aan dit gesprek mee te doen title: '%{name}: "%{quote}"' visibilities: - direct: Direct + direct: Privébericht private: Alleen volgers private_long: Alleen aan jouw volgers tonen public: Openbaar @@ -1559,8 +1567,8 @@ nl: ignore_reblogs: Boosts negeren interaction_exceptions: Uitzonderingen op basis van interacties interaction_exceptions_explanation: Merk op dat er geen garantie is dat berichten worden verwijderd, wanneer eenmaal het aantal favorieten of boosts boven de ingestelde grenswaarde zijn geweest. - keep_direct: Directe berichten behouden - keep_direct_hint: Verwijdert geen enkel directe bericht van jou + keep_direct: Privéberichten behouden + keep_direct_hint: Verwijdert geen enkel privébericht van jou keep_media: Berichten met mediabijlagen behouden keep_media_hint: Verwijdert geen enkel bericht met mediabijlagen keep_pinned: Vastgemaakte berichten behouden @@ -1682,12 +1690,13 @@ nl: title: Welkom aan boord %{name}! users: follow_limit_reached: Je kunt niet meer dan %{limit} accounts volgen + go_to_sso_account_settings: Ga naar de accountinstellingen van je identiteitsprovider invalid_otp_token: Ongeldige tweestaps-toegangscode otp_lost_help_html: Als je toegang tot beiden kwijt bent geraakt, neem dan contact op via %{email} seamless_external_login: Je bent ingelogd via een externe dienst, daarom zijn wachtwoorden en e-mailinstellingen niet beschikbaar. signed_in_as: 'Ingelogd als:' verification: - explanation_html: 'Je kunt jezelf verifiëren als de eigenaar van de links in de metadata van jouw profiel. Hiervoor moet op de gelinkte website een link terug naar jouw Mastodonprofiel staan. Deze link moet het rel="me"-attribuut bevatten. De omschrijving van de link maakt niet uit. Hier is een voorbeeld:' + explanation_html: 'Je kunt jezelf verifiëren als de eigenaar van de links in de metadata van jouw profiel. Hiervoor moet op de gelinkte website een link terug naar jouw Mastodonprofiel staan. Na het toevoegen van de link moet je hier mogelijk terugkomen en je profiel opnieuw bewaren om de verificatie te bevestigen. Deze link moet het rel="me"-attribuut bevatten. De omschrijving van de link maakt niet uit. Hier is een voorbeeld:' verification: Verificatie webauthn_credentials: add: Nieuwe beveiligingssleutel toevoegen diff --git a/config/locales/nn.yml b/config/locales/nn.yml index 49f30bab09..ea4d2e09df 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -91,7 +91,7 @@ nn: moderation: active: Aktiv all: Alle - disabled: Deaktivert + disabled: Skrudd av pending: Ventar på svar silenced: Avgrensa suspended: Utvist @@ -134,7 +134,7 @@ nn: search: Søk search_same_email_domain: Andre brukarar med same e-postdomene search_same_ip: Andre brukarar med same IP - security: Sikkerhet + security: Tryggleik security_measures: only_password: Kun passord password_and_2fa: Passord og 2FA @@ -423,7 +423,7 @@ nn: resolve: Løs domene title: Ny blokkeringsoppføring av e-postdomene no_email_domain_block_selected: Blokkering av e-post-domener vart ikkje endra sidan ingen var valde - not_permitted: Ikke tillatt + not_permitted: Ikkje tillate resolved_dns_records_hint_html: Domenenamnet gjer oppslag til desse MX-domenene som til sist er ansvarlige for å motta e-post. Blokkering av eit MX-domene vil blokkere registreringar frå alle e-postadresser som bruker same MX-domene, sjølv om det synlige domenenavnet skulle vera noko anna. Pass på så du ikkje blokkerer dei store e-postleverandørane. resolved_through_html: Løyst gjennom %{domain} title: Blokkerte e-postadresser @@ -438,7 +438,7 @@ nn: private_comment_description_html: 'For å hjelpa deg med å halda oversikt over kvar importerte blokkeringar kjem frå, vil dei bli oppretta med fylgjande private kommentar: %{comment}' private_comment_template: Importert frå %{source} den %{date} title: Importer domeneblokkeringar - invalid_domain_block: 'En eller flere domeneblokker ble hoppet over på grunn av følgende feil(er): %{error}' + invalid_domain_block: 'Hoppa over ei eller fleire domeneblokker på grunn av fylgjande feil: %{error}' new: title: Importer domeneblokkeringar no_file: Inga fil vald @@ -470,6 +470,7 @@ nn: content_policies: comment: Internt notat description_html: Du kan definere innholdsregler som vil bli brukt på alle kontoer fra dette domenet og hvilket som helst av underdomenene. + limited_federation_mode_description_html: Du kan velja om du vil tillata føderering med dette domenet. policies: reject_media: Avvis media reject_reports: Avvis rapporter @@ -573,10 +574,10 @@ nn: mark_as_sensitive_description_html: Mediene i dei rapporterte innlegga vil verte markerte som ømtolege, og ein merknad vil verte lagra for å hjelpe deg å eskalera ved framtidige regelbrot frå same konto. other_description_html: Sjå fleire alternativ når det gjeld kontroll av kontoåtferd og tilpassing av kommunikasjonen til den rapporterte kontoen. resolve_description_html: Ingen handling utføres mot den rapporterte kontoen, ingen advarsel gis, og rapporten lukkes. - silence_description_html: Profilen vil kun være synlig for dem som allerede følger den eller manuelt slår den opp, noe som sterkt begrenser dens rekkevidde. Kan alltid tilbakestilles. Lukker alle rapporter mot denne kontoen. - suspend_description_html: Kontoen og alt dens innhold vil være utilgjengelig og til slutt slettet, og det vil ikke være mulig å bruke den. Reversibel innen 30 dager. Lukker alle rapporter mot denne kontoen. + silence_description_html: Profilen vil berre vera synleg for dei som allereie fylgjer han eller søkjer han opp manuelt, noko som gjev profilen mykje mindre rekkjevidd. Du kan oppheva stenginga seinare. Dette avsluttar alle rapportar om brukarkontoen. + suspend_description_html: Brukarkontoen og alt innhaldet vil bli utilgjengeleg og til slutt sletta, og det vil vera uråd å samhandla med brukaren. Du kan angra dette innan 30 dagar. Dette avsluttar alle rapportar om kontoen. actions_description_html: Avgjer kva som skal gjerast med denne rapporteringa. Dersom du utfører straffetiltak mot den rapporterte kontoen, vil dei motta ein e-post – så sant du ikkje har valt kategorien Spam. - actions_description_remote_html: Velg hvilke tiltak som skal treffes for å løse denne rapporten. Dette påvirker bare hvordan din server kommuniserer med denne eksterne kontoen og håndterer innholdet. + actions_description_remote_html: Avgjer kva du vil gjera for å løysa denne rapporten. Dette påverkar berre korleis tenaren din kommuniserer med kontoen på ein annan tenar, og korleis tenaren din handterer innhald derifrå. add_to_report: Legg til i rapporten are_you_sure: Er du sikker? assign_to_self: Tilegn til meg @@ -588,8 +589,8 @@ nn: comment: none: Ingen comment_description_html: 'For å gje meir informasjon, skreiv %{name}:' - confirm: Bekreft - confirm_action: Bekreft moderasjonshandling mot @%{acct} + confirm: Stadfest + confirm_action: Stadfest at du vil moderera brukarkontoen @%{acct} created_at: Rapportert delete_and_resolve: Slett innlegg forwarded: Videresendt @@ -606,7 +607,7 @@ nn: placeholder: Beskriv hvilke handlinger som har blitt tatt, eller andre relaterte oppdateringer... title: Merknad notes_description_html: Sjå og skriv merknadar til andre moderatorar og ditt framtidige sjølv - processed_msg: 'Rapport #%{id} er behandlet' + processed_msg: 'Du har handsama rapport #%{id}' quick_actions_description_html: 'Utfør ei handling eller bla ned for å sjå det rapporterte innhaldet:' remote_user_placeholder: den eksterne brukaren frå %{instance} reopen: Opn rapport igjen @@ -621,13 +622,26 @@ nn: statuses_description_html: Støytande innhald vil bli inkludert i kommunikasjonen med den rapporterte kontoen summary: action_preambles: - delete_html: 'Du er i ferd med å fjerne noe av @%{acct} sine innlegg. Dette vil:' - mark_as_sensitive_html: 'Du er i ferd med å markere noen av @%{acct} sine innlegg som sensitivt. Dette vil:' - silence_html: 'Du er i ferd med å avgrense @%{acct} sin konto. Dette vil:' - suspend_html: 'Du er i ferd med å stoppe @%{acct} sin konto. Dette vil:' + delete_html: 'Du er i ferd med å fjerna nokre av innlegga til @%{acct}. Det vil:' + mark_as_sensitive_html: 'Du er i ferd med å markera nokre av innlegga til @%{acct} som sensitive. Dette vil:' + silence_html: 'Du er i ferd med å avgrensa kontoen til @%{acct}. Dette vil:' + suspend_html: 'Du er i ferd med å stenga kontoen til @%{acct}. Dette vil:' + actions: + delete_html: Fjerna dei påtala innlegga + mark_as_sensitive_html: Markera dei påtala mediefilene som sensitive + silence_html: Sterkt avgrensa korleis @%{acct} kan samhandla ved å gjera brukarprofilen og innhaldet synleg berre for folk som allereie fylgjer brukarkontoen eller søkjer han opp manuelt + suspend_html: Stengja brukarkontoen til @%{acct}, slik at brukarprofilen og innhaldet blir utilgjengeleg og umogleg å samhandla med + close_report: Marker rapport nr. %{id} som løyst + close_reports_html: Marker alle rapportane om @%{acct} som løyste + delete_data_html: Slett brukarprofilen og innhaldet til@%{acct} om 30 dagar frå no med mindre brukarkontoen blir opna att + preview_preamble_html: "@%{acct} vil få ei åtvaring med dette innhaldet:" + record_strike_html: Noter at ei handling er gjort mot @%{acct} for å hjelpa deg å handtera framtidige overtramp frå denne brukarkontoen + send_email_html: Send ein åtvaringsepost til @%{acct} + warning_placeholder: Eventuelle fleire grunnar for å modereringshandlinga. target_origin: Opprinnelse for innrapportert konto title: Rapportar unassign: Avset + unknown_action_msg: 'Ukjend handling: %{action}' unresolved: Uløyst updated_at: Oppdatert view_profile: Vis profil @@ -722,6 +736,8 @@ nn: preamble: Å framheva interessant innhald er vitalt i mottakinga av nye brukarar som ikkje nødvendigvis kjenner nokon på Mastodon. Kontroller korleis oppdagingsfunksjonane på tenaren din fungerar. profile_directory: Profilkatalog public_timelines: Offentlege tidsliner + publish_discovered_servers: Publiser oppdaga tenarar + publish_statistics: Publiser statistikk title: Oppdaging trends: Trender domain_blocks: @@ -776,6 +792,7 @@ nn: suspend: "%{name} utviste %{target} sin konto" appeal_approved: Klage tatt til følge appeal_pending: Klage behandles + appeal_rejected: Anken er avvist system_checks: database_schema_check: message_html: Det venter på databaseoverføringer. Vennligst kjør disse for å sikre at applikasjonen oppfører seg som forventet @@ -811,6 +828,7 @@ nn: other: Delt av %{count} personer i løpet av den siste uken title: Populære lenkjer usage_comparison: Delt %{today} ganger i dag, sammenlignet med %{yesterday} i går + not_allowed_to_trend: Har ikkje lov å trenda only_allowed: Kun tillatne pending_review: Avventer gjennomgang preview_card_providers: @@ -837,12 +855,13 @@ nn: tag_accounts_measure: unike bruksområder tag_languages_dimension: Mest brukte språk tag_servers_dimension: Mest brukte servere - tag_servers_measure: forskjellige servere - tag_uses_measure: samlet bruk + tag_servers_measure: ulike tenarar + tag_uses_measure: brukarar totalt description_html: Dette er emneknagger som for øyeblikket vises i mange innlegg som serveren din ser. Det kan hjelpe dine brukere med å finne ut hva folk snakker mest om i øyeblikket. Ingen emneknagger vises offentlig før du godkjenner dem. listable: Kan bli foreslått + no_tag_selected: Ingen merkelappar vart endra fordi ingen var valde not_listable: Vil ikke bli foreslått - not_trendable: Kunne ikke vises under trender + not_trendable: Kjem ikkje til å syna under trendar not_usable: Kan ikke brukes peaked_on_and_decaying: Nådde toppen %{date}, nå på vei ned title: Populære emneknagger @@ -891,6 +910,9 @@ nn: sensitive: å merke kontoen sin som følsom silence: for å begrense deres konto suspend: for å suspendere kontoen deres + body: "%{target} ankar på ei modereringsavgjerd av %{action_taken_by} den %{date}, som var %{type}. Dei skreiv:" + next_steps: Du kan godkjenna anken for å endra modereringsavgjerda, eller du kan oversjå anken. + subject: "%{username} ankar ei modereringsavgjer på %{instance}" new_pending_account: body: Detaljer om den nye kontoen er nedenfor. Du kan godkjenne eller avvise denne søknaden. subject: Ny konto opp til vurdering på %{instance} (%{username}) @@ -899,13 +921,16 @@ nn: body_remote: Nokon frå %{domain} har meldt %{target} subject: Ny rapport for %{instance} (#%{id}) new_trends: + body: 'Du må sjå gjennom desse elementa før dei kan visast offentleg:' new_trending_links: title: Populære lenker new_trending_statuses: title: Populære innlegg new_trending_tags: - title: Populære emneknagger - subject: Ny trender for gjennomsyn av %{instance} + no_approved_tags: Det er ingen godkjende populære emneknaggar no. + requirements: 'Alle desse kandidatane kan stiga høgare enn den godkjende populære emneknaggen #%{rank}, som er #%{lowest_tag_name} med ei plassering på %{lowest_tag_score}.' + title: Populære emneknaggar + subject: Nye trendar å sjå gjennom på %{instance} aliases: add_new: Lag psevdonym created_msg: Laga eit nytt kallenamn. No kan du setja i gang med flyttinga frå den gamle kontoen. @@ -927,7 +952,7 @@ nn: toot_layout: Tutoppsett application_mailer: notification_preferences: Endr e-post-innstillingane - salutation: "%{name}," + salutation: Hei %{name}, settings: 'Endr e-post-innstillingar: %{link}' view: 'Sjå:' view_profile: Sjå profil @@ -935,6 +960,7 @@ nn: applications: created: Søknad laga destroyed: Søknad sletta + logout: Logg ut regenerate_token: Lag tilgangsnykel på nytt token_regenerated: Tilgangsnykel laga på nytt warning: Ver varsam med dette datumet. Aldri del det med nokon! @@ -942,6 +968,8 @@ nn: auth: apply_for_account: Søk om ein konto change_password: Passord + confirmations: + wrong_email_hint: Viss epostadressa er feil, kan du endra ho i kontoinnstillingane. delete_account: Slett konto delete_account_html: Om du vil sletta kontoen din, kan du gå hit. Du vert spurd etter stadfesting. description: @@ -969,6 +997,8 @@ nn: resend_confirmation: Send stadfestingsinstruksjonar på nytt reset_password: Attstill passord rules: + accept: Godkjenn + back: Attende preamble: Disse angis og håndheves av %{domain}-moderatorene. title: Noen grunnregler. security: Tryggleik @@ -1115,6 +1145,8 @@ nn: storage: Medielagring featured_tags: add_new: Legg til ny + errors: + limit: Du har allereie framheva så mange emneknaggar som det går an å gjera hint_html: "Hva er utvalgte emneknagger? De vises frem tydelig på din offentlige profil, og lar folk bla i dine offentlige innlegg som spesifikt har de emneknaggene. De er et bra verktøy for å holde styr på kreative verk eller langtidsprosjekter." filters: contexts: @@ -1125,57 +1157,39 @@ nn: thread: Samtalar edit: add_keyword: Legg til stikkord - keywords: Nøkkelord + keywords: Stikkord statuses: Individuelle innlegg + statuses_hint_html: Dette filteret gjeld for utvalde, individuelle innlegg, uansett om dei passar til stikkorda under. Sjå gjennom eller fjern innlegg frå filteret. title: Endr filter errors: + deprecated_api_multiple_keywords: Du kan ikkje endra desse parametrane frå dette programmet fordi dei gjeld for meir enn eitt filterord. Bruk eit nyare program, eller nettsida. invalid_context: Ingen eller ugild kontekst gjeve index: - contexts: Filtre i %{contexts} + contexts: Filter i %{contexts} delete: Slett empty: Du har ingen filtre. - expires_in: Utløper om %{distance} - expires_on: Utløper den %{date} - keywords: - one: "%{count} nøkkelord" - other: "%{count} nøkkelorder" - statuses: - one: "%{count} innlegg" - other: "%{count} innlegger" - statuses_long: - one: "%{count} enkeltinnlegg skjult" - other: "%{count} individuelle innlegger skjult" + expires_in: Går ut om %{distance} + expires_on: Går ut %{date} title: Filter new: save: Lagre nytt filter title: Legg til nytt filter statuses: - back_to_filter: Tilbake til filter + back_to_filter: Tilbake til filteret batch: - remove: Fjern fra filter + remove: Fjern frå filteret index: - hint: Dette filteret gjelder for å velge individuelle innlegg uavhengig av andre kriterier. Du kan legge til flere innlegg til dette filteret fra webgrensesnittet. + hint: Dette filteret gjeld for utvalde, individuelle innlegg, uavhengig av andre kriterium. Du kan leggja til fleire innlegg til dette filteret frå nettsida. title: Filtrerte innlegg - footer: - trending_now: Populært no generic: all: Alle - all_items_on_page_selected_html: - one: "%{count} element på denne siden er valgt." - other: Alle %{count} elementer på denne siden er valgt. - all_matching_items_selected_html: - one: "%{count} element som matcher søket ditt er valgt." - other: Alle %{count} elementer som matcher søket velges. changes_saved_msg: Alle endringane vart lagra! copy: Kopier delete: Slett - deselect: Fjern all merking + deselect: Vel ingen none: Ingen order_by: Sorter etter save_changes: Lagr endringar - select_all_matching_items: - one: Velg %{count} element som samsvarer med søket ditt. - other: Velg alle %{count} elementer som samsvarer med søket ditt. today: i dag validation_errors: one: Noe er ikke helt riktig ennå. Vennligst se etter en gang til @@ -1188,7 +1202,7 @@ nn: merge: Set saman merge_long: Hald på eksisterande data og legg til nye overwrite: Skriv over - overwrite_long: Erstatt gjeldende med de nye + overwrite_long: Byt ut dei noverande oppføringane med dei nye preface: Du kan henta inn data som du har eksportert frå ein annan tenar, som t.d. ei liste over folka du fylgjer eller blokkerer. success: Dataa dine vart lasta opp og vert no handsama så fort som mogeleg types: @@ -1220,11 +1234,14 @@ nn: expires_at: Vert ugyldig uses: Bruk title: By folk inn + lists: + errors: + limit: Du har nådd grensa for kor mange lister du kan ha login_activities: authentication_methods: otp: to-faktor autentiseringsapp password: passord - sign_in_token: e-post sikkerhetskode + sign_in_token: tryggingskode på epost webauthn: sikkerhetsnøkler description_html: Hvis du ser aktivitet som du ikke gjenkjenner, bør du vurdere å endre passordet ditt og aktivere to-trinnsinnlogging. empty: Ingen innloggingshistorikk er tilgjengelig @@ -1274,7 +1291,7 @@ nn: carry_mutes_over_text: Denne brukeren flyttet fra %{acct}, som du hadde dempet. copy_account_note_text: 'Denne brukeren flyttet fra %{acct}, her var dine tidligere notater om dem:' navigation: - toggle_menu: Vis/Skjul meny + toggle_menu: Vis/gøym menyen notification_mailer: admin: report: @@ -1300,7 +1317,7 @@ nn: subject: Du vart nemnd av %{name} title: Ny nemning poll: - subject: En avstemming av %{name} er avsluttet + subject: Meiningsmålinga frå %{name} er avslutta reblog: body: 'Statusen din vart framheva av %{name}:' subject: "%{name} framheva statusen din" @@ -1364,6 +1381,7 @@ nn: confirm_remove_selected_followers: Er du sikker på at du ynskjer å fjerna dei valde fylgjarane? confirm_remove_selected_follows: Er du sikker på at du ynskjer å fjerna det valde følgjet? dormant: I dvale + follow_failure: Greidde ikkje fylgja alle kontoane du valde. follow_selected_followers: Følg valgte tilhengere followers: Følgere following: Følginger @@ -1384,7 +1402,7 @@ nn: errors: invalid_rules: refererer ikke til gyldige regler rss: - content_warning: 'Innholdsadvarsel:' + content_warning: 'Innhaldsvarsel:' descriptions: account: Offentlige innlegg fra @%{acct} tag: 'Offentlige innlegg merket med #%{hashtag}' @@ -1403,6 +1421,7 @@ nn: electron: Electron firefox: Firefox generic: Ukjend lesar + huawei_browser: Huawei-nettlesaren ie: Internet Explorer micro_messenger: Micromessenger nokia: Nokia S40 Ovi-lesar @@ -1412,6 +1431,7 @@ nn: qq: QQ-lesar safari: Safari uc_browser: QQ-lesar + unknown_browser: Ukjend nettlesar weibo: Weibo current_session: Noverande økt description: "%{browser} på %{platform}" @@ -1424,9 +1444,10 @@ nn: chrome_os: ChromeOS firefox_os: Firefox OS ios: IOS + kai_os: KaiOS linux: Linux mac: Mac - other: ukjend plattform + unknown_platform: Ukjend plattform windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1533,6 +1554,7 @@ nn: '7889238': 3 månader min_age_label: Aldersterskel min_favs: Behold innlegg som er favorittmarkert av minst + min_favs_hint: Slettar ingen av innlegga dine som har fått minst så mange favorittar. La det stå tomt for å sletta innlegga uansett kor mange favorittar dei har fått min_reblogs: Behold innlegg fremhevet av minst min_reblogs_hint: Sletter ikke noen av dine innlegg som har blitt fremhevet minst dette antall ganger. La stå tom for å slette innlegg uavhengig av antall fremhevinger stream_entries: @@ -1637,7 +1659,6 @@ nn: seamless_external_login: Du er logga inn gjennom eit eksternt reiskap, so passord og e-postinstillingar er ikkje tilgjengelege. signed_in_as: 'Logga inn som:' verification: - explanation_html: 'Du kan bekrefte at du selv er eieren av lenkene i din profilmetadata. For å gjøre det, må det tillenkede nettstedet inneholde en lenke som fører tilbake til Mastodon-profilen din. Lenken tilbake ha en rel="me"-attributt. Tekstinnholdet til lenken er irrelevant. Her er et eksempel:' verification: Stadfesting webauthn_credentials: add: Legg til ny sikkerhetsnøkkel diff --git a/config/locales/no.yml b/config/locales/no.yml index 3036ce050f..9f09db57e6 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -1131,8 +1131,6 @@ index: hint: Dette filteret gjelder for å velge individuelle innlegg uavhengig av andre kriterier. Du kan legge til flere innlegg til dette filteret fra webgrensesnittet. title: Filtrerte innlegg - footer: - trending_now: Trender nå generic: all: Alle all_items_on_page_selected_html: @@ -1398,7 +1396,6 @@ ios: iOS linux: Linux mac: macOS - other: ukjent plattform windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1615,7 +1612,6 @@ seamless_external_login: Du er logget inn via en ekstern tjeneste, så passord og e-post innstillinger er ikke tilgjengelige. signed_in_as: 'Innlogget som:' verification: - explanation_html: 'Du kan bekrefte at du selv er eieren av lenkene i din profilmetadata. For å gjøre det, må det tillenkede nettstedet inneholde en lenke som fører tilbake til Mastodon-profilen din. Lenken tilbake ha en rel="me"-attributt. Tekstinnholdet til lenken er irrelevant. Her er et eksempel:' verification: Bekreftelse webauthn_credentials: add: Legg til ny sikkerhetsnøkkel diff --git a/config/locales/oc.yml b/config/locales/oc.yml index 1d5ed61fe7..67005422b9 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -627,8 +627,6 @@ oc: title: Filtres new: title: Ajustar un nòu filtre - footer: - trending_now: Tendéncia del moment generic: all: Tot changes_saved_msg: Cambiaments ben realizats ! @@ -832,7 +830,6 @@ oc: ios: iOS linux: Linux mac: Mac - other: plataforma desconeguda windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1007,7 +1004,6 @@ oc: seamless_external_login: Sètz connectat via un servici extèrn, los paramètres de senhal e de corrièl son doncas pas disponibles. signed_in_as: 'Session a :' verification: - explanation_html: 'Podètz verificar vosautres meteisses coma proprietari dels ligams per las metadonadas de vòstre perfil. Per aquò far, lo site Web ligat deu conténer un ligam cap a vòstre perfil Mastodon. Lo ligam deu aver un atribut rel="me". Lo contengut tèxte del ligam impòrta pas. Vaquí un exemple :' verification: Verificacion webauthn_credentials: add: Apondre una clau de seguretat novèla diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 90a6aaf9ee..771a1623e3 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -840,6 +840,12 @@ pl: message_html: Nie zdefiniowano żadnych reguł serwera. sidekiq_process_check: message_html: Brak uruchomionego procesu Sidekiq dla kolejki(-ek) %{value}. Sprawdź konfigurację Sidekiq + upload_check_privacy_error: + action: Kliknij tutaj, aby dowiedzieć się więcej + message_html: "Twój serwer internetowy jest nieprawidłowo skonfigurowany. Prywatność twoich użytkowników jest zagrożona." + upload_check_privacy_error_object_storage: + action: Kliknij tutaj, aby dowiedzieć się więcej + message_html: "Pamięć obiektu jest nieprawidłowa. Prywatność twoich użytkowników jest zagrożona." tags: review: Stan przeglądu updated_msg: Pomyślnie uaktualniono ustawienia hashtagów @@ -1238,8 +1244,6 @@ pl: index: hint: Ten filtr ma zastosowanie do wybierania poszczególnych wpisów niezależnie od pozostałych kryteriów. Możesz dodać więcej wpisów do tego filtra z interfejsu internetowego. title: Filtrowane posty - footer: - trending_now: Obecnie na czasie generic: all: Wszystkie all_items_on_page_selected_html: @@ -1459,6 +1463,7 @@ pl: confirm_remove_selected_followers: Czy na pewno chcesz usunąć wybranych obserwujących? confirm_remove_selected_follows: Czy na pewno chcesz usunąć zaznaczone obserwacje? dormant: Uśpione + follow_failure: Nie można obserwować niektórych wybranych kont. follow_selected_followers: Zacznij obserwować wybranych obserwujących followers: Obserwujący following: Obserwowani @@ -1498,6 +1503,7 @@ pl: electron: Electron firefox: Firefox generic: nieznana przeglądarka + huawei_browser: Przeglądarka Huawei ie: Internet Explorer micro_messenger: MicroMessenger nokia: Przeglądarka Nokia S40 Ovi @@ -1507,6 +1513,7 @@ pl: qq: QQ Browser safari: Safari uc_browser: UC Browser + unknown_browser: Nieznana Przeglądarka weibo: Weibo current_session: Obecna sesja description: "%{browser} na %{platform}" @@ -1519,9 +1526,10 @@ pl: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: macOS - other: nieznana platforma + unknown_platform: Nieznana platforma windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1746,6 +1754,7 @@ pl: title: Witaj na pokładzie, %{name}! users: follow_limit_reached: Nie możesz obserwować więcej niż %{limit} osób + go_to_sso_account_settings: Przejdź do ustawień konta dostawcy tożsamości invalid_otp_token: Kod uwierzytelniający jest niepoprawny otp_lost_help_html: Jeżeli utracisz dostęp do obu, możesz skontaktować się z %{email} seamless_external_login: Zalogowano z użyciem zewnętrznej usługi, więc ustawienia hasła i adresu e-mail nie są dostępne. diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index d855721077..3669b52fc1 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -394,6 +394,7 @@ pt-BR: create: Criar bloqueio hint: O bloqueio de domínio não vai prevenir a criação de entradas de contas na base de dados, mas vai retroativamente e automaticamente aplicar métodos específicos de moderação nessas contas. severity: + desc_html: "Silenciar vai tornar as publicações da conta invisíveis para qualquer um que não estiver lhe seguindo. Suspender vai remover todo o conteúdo, mídia e dados de perfil da conta. Use Nenhum se você só quer rejeitar arquivos de mídia." noop: Nenhum silence: Limitar suspend: Banir @@ -440,8 +441,10 @@ pt-BR: import: description_html: Você está prestes a importar uma lista de boqueio de domínio. Por favor, revise esta lista com muito cuidado, especialmente se você mesmo não criou esta lista. existing_relationships_warning: Existem relações de seguimento + private_comment_description_html: 'Para ajudá-lo a rastrear de onde vêm os blocos importados, serão criados blocos importados com o seguinte comentário privado: %{comment}' private_comment_template: Importado de %{source} em %{date} title: Importar bloqueio de domínios + invalid_domain_block: 'Um ou mais blocos de domínio foram ignorados devido ao(s) seguinte(s) erro(s): %{error}' new: title: Importar bloqueio de domínios no_file: Nenhum arquivo selecionado @@ -473,6 +476,7 @@ pt-BR: content_policies: comment: Nota interna description_html: Você pode definir políticas de conteúdo que serão aplicadas a todas as contas deste domínio e a qualquer um dos seus subdomínios. + limited_federation_mode_description_html: Você pode escolher se deseja permitir a associação com este domínio. policies: reject_media: Rejeitar mídia reject_reports: Rejeitar denúncias @@ -577,7 +581,9 @@ pt-BR: other_description_html: Veja mais opções para controlar o comportamento da conta e personalizar a comunicação com a conta denunciada. resolve_description_html: Nenhuma ação será tomada contra a conta denunciada, nenhuma violação será guardada e a denúncia será encerrada. silence_description_html: A conta ficará visível apenas para aqueles que já a seguem ou que a procuram manualmente, limitando severamente seu alcance. Pode ser revertido a qualquer momento. Fecha todas as denúncias desta conta. + suspend_description_html: A conta e todo o seu conteúdo ficará inacessível e, eventualmente, excluído e interagir com ela será impossível. Reversível dentro de 30 dias. Encerra todas as denúncias contra esta conta. actions_description_html: Decida que medidas tomar para resolver esta denúncia. Se você decidir punir a conta denunciada, ela receberá uma notificação por e-mail, exceto quando for selecionada a categoria spam for selecionada. + actions_description_remote_html: Decida quais medidas tomará para resolver esta denúncia. Isso só afetará como seu servidor se comunica com esta conta remota e manipula seu conteúdo. add_to_report: Adicionar mais à denúncia are_you_sure: Você tem certeza? assign_to_self: Atribuir para si @@ -590,6 +596,7 @@ pt-BR: none: Nenhum comment_description_html: 'Para fornecer mais informações, %{name} escreveu:' confirm: Confirmar + confirm_action: Confirmar a moderação de @%{acct} created_at: Denunciado delete_and_resolve: Excluir publicações forwarded: Encaminhados @@ -627,11 +634,16 @@ pt-BR: suspend_html: 'Você está prestes a suspender a conta de @%{acct}. Isso irá:' actions: delete_html: Remover as publicações ofensivas + mark_as_sensitive_html: Marcar a mídia de posts ofensivos como sensível + silence_html: Limitar firmemente o alcance de @%{acct}, tornando seus perfis e conteúdos apenas visíveis para pessoas que já os estão seguindo ou olhando manualmente o perfil + suspend_html: Suspender @%{acct}, tornando seu perfil e conteúdo inacessíveis, impossibilitando a interação close_report: 'Marcar denúncia #%{id} como resolvida' close_reports_html: Marcar todas as denúncias contra @%{acct} como resolvidas delete_data_html: Exclua o perfil e o conteúdo de @%{acct} daqui a 30 dias, a menos que a suspensão seja desfeita nesse meio tempo preview_preamble_html: "@%{acct} receberá um aviso com o seguinte conteúdo:" + record_strike_html: Registre uma ação contra @%{acct} para te ajudar em futuras violações desta conta send_email_html: Enviar @%{acct} um e-mail de aviso + warning_placeholder: Argumentos adicionais para a ação de moderação. target_origin: Origem da conta denunciada title: Denúncias unassign: Desatribuir @@ -786,6 +798,7 @@ pt-BR: suspend: "%{name} suspendeu a conta de %{target}" appeal_approved: Revisado appeal_pending: Revisão pendente + appeal_rejected: Revisão rejeitada system_checks: database_schema_check: message_html: Existem migrações de banco de dados pendentes. Execute-as para garantir que o aplicativo se comporte como esperado @@ -799,6 +812,12 @@ pt-BR: message_html: Você não definiu nenhuma regra de servidor. sidekiq_process_check: message_html: Nenhum processo Sidekiq rodando para a(s) fila(s) %{value}. Por favor, revise a sua configuração para Sidekiq + upload_check_privacy_error: + action: Confira aqui para mais informações + message_html: "Seu servidor está mal configurado. A privacidade de seus usuários está em risco." + upload_check_privacy_error_object_storage: + action: Confira aqui para mais informações + message_html: "Seu armazenamento de objetos está mal configurado. A privacidade de seus usuários está em risco." tags: review: Status da revisão updated_msg: Configurações de hashtag atualizadas @@ -821,6 +840,7 @@ pt-BR: other: Compartilhado por %{count} pessoas na última semana title: Em alta no momento usage_comparison: Compartilhado %{today} vezes hoje, em comparação com %{yesterday} de ontem + not_allowed_to_trend: Não tem permissão para criar tendências only_allowed: Somente permitido pending_review: Revisão pendente preview_card_providers: @@ -952,6 +972,7 @@ pt-BR: applications: created: Aplicativo criado com sucesso destroyed: Aplicativo excluído com sucesso + logout: Sair regenerate_token: Gerar código de acesso token_regenerated: Código de acesso gerado warning: Tenha cuidado com estes dados. Nunca compartilhe com alguém! @@ -1136,6 +1157,8 @@ pt-BR: storage: Armazenamento de mídia featured_tags: add_new: Adicionar hashtag + errors: + limit: Você já destacou o número máximo de hashtags hint_html: "O que são hashtags em destaque? Elas são exibidas no seu perfil público e permitem que as pessoas acessem suas publicações públicos que contenham especificamente essas hashtags. São uma excelente ferramenta para acompanhar os trabalhos criativos ou os projetos de longo prazo." filters: contexts: @@ -1179,8 +1202,6 @@ pt-BR: index: hint: Este filtro se aplica a publicações individuais, independentemente de outros critérios. Você pode adicionar mais postagens a este filtro a partir da interface web. title: Publicações filtradas - footer: - trending_now: Em alta no momento generic: all: Tudo all_items_on_page_selected_html: @@ -1390,6 +1411,7 @@ pt-BR: confirm_remove_selected_followers: Tem certeza que deseja remover os seguidores selecionados? confirm_remove_selected_follows: Tem certeza que deseja remover os grupos seguidos selecionados? dormant: Inativo + follow_failure: Não foi possível seguir algumas das contas selecionadas. follow_selected_followers: Seguir os seguidores selecionados followers: Seguidores following: Seguindo @@ -1429,6 +1451,7 @@ pt-BR: electron: Electron firefox: Firefox generic: Navegador desconhecido + huawei_browser: Navegador Huawei ie: Internet Explorer micro_messenger: MicroMessenger nokia: Navegador Nokia S40 Ovi @@ -1438,6 +1461,7 @@ pt-BR: qq: QQ Browser safari: Safari uc_browser: UC Browser + unknown_browser: Navegador desconhecido weibo: Weibo current_session: Sessão atual description: "%{browser} em %{platform}" @@ -1450,9 +1474,10 @@ pt-BR: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: MacOS - other: Plataforma desconhecida + unknown_platform: Plataforma desconhecida windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1565,6 +1590,7 @@ pt-BR: '7889238': 3 meses min_age_label: Validade min_favs: Manter publicações favoritadas por ao menos + min_favs_hint: Não exclui suas publicações que receberam pelo menos esta quantidade de favoritos. Deixe em branco para excluir publicações independentemente da quantidade de favoritos min_reblogs: Manter publicações impulsionadas por ao menos min_reblogs_hint: Não exclui publicações que receberam pelo menos esta quantidade de impulsos. Deixe em branco para excluir publicações independentemente da quantidade de impulsos stream_entries: @@ -1664,12 +1690,13 @@ pt-BR: title: Boas vindas, %{name}! users: follow_limit_reached: Você não pode seguir mais de %{limit} pessoas + go_to_sso_account_settings: Vá para as configurações de conta do seu provedor de identidade invalid_otp_token: Código de dois fatores inválido otp_lost_help_html: Se você perder o acesso à ambos, você pode entrar em contato com %{email} seamless_external_login: Você entrou usando um serviço externo, então configurações de e-mail e senha não estão disponíveis. signed_in_as: 'Entrou como:' verification: - explanation_html: 'Você pode verificar os links nos metadados do seu perfil. Para isso, o site citado deve conter um link de volta para o seu perfil do Mastodon. O link de volta deve conter um atributo rel="me". O conteúdo ou texto do link não importa. Aqui está um exemplo:' + explanation_html: 'Você pode se verificar como proprietário dos links nos metadados do seu perfil. Para isso, o site vinculado deve conter um link de volta para o seu perfil de Mastodon. Depois de adicionar o link, talvez você precise voltar aqui e salvar novamente o seu perfil para que a verificação tenha efeito. O link de volta deve ter um atributo rel="me". O conteúdo do texto do link não importa. Aqui está um exemplo:' verification: Verificação webauthn_credentials: add: Adicionar nova chave de segurança diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index d3649ba40d..67c9102e22 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -812,6 +812,12 @@ pt-PT: message_html: Não definiu nenhuma regra para a instância. sidekiq_process_check: message_html: Nenhum processo Sidekiq em execução para a(s) fila(s) %{value}. Reveja a configuração do seu Sidekiq + upload_check_privacy_error: + action: Verifique aqui para mais informações + message_html: "O seu servidor web está mal configurado. A privacidade dos seus utilizadores está em risco." + upload_check_privacy_error_object_storage: + action: Verifique aqui para mais informações + message_html: "O seu armazenamento de objetos está mal configurado. A privacidade dos seus utilizadores está em risco." tags: review: Estado da revisão updated_msg: 'Definições de #etiquetas correctamente actualizadas' @@ -1196,8 +1202,6 @@ pt-PT: index: hint: Este filtro aplica-se a publicações individuais selecionadas independentemente de outros critérios. Pode adicionar mais publicações a este filtro através da interface web. title: Publicações filtradas - footer: - trending_now: Em alta neste momento generic: all: Tudo all_items_on_page_selected_html: @@ -1407,6 +1411,7 @@ pt-PT: confirm_remove_selected_followers: Tem a certeza que deseja seguir os seguidores selecionados? confirm_remove_selected_follows: Tem certeza que deseja remover os seguidores selecionados? dormant: Inativo + follow_failure: Não foi possível seguir algumas das contas selecionadas. follow_selected_followers: Seguir seguidores selecionados followers: Seguidores following: A seguir @@ -1446,6 +1451,7 @@ pt-PT: electron: Electron firefox: Firefox generic: Navegador desconhecido + huawei_browser: Navegador Huawei ie: Internet Explorer micro_messenger: MicroMessenger nokia: Navegador Nokia S40 Ovi @@ -1455,6 +1461,7 @@ pt-PT: qq: QQ Browser safari: Safari uc_browser: Navegador UC + unknown_browser: Navegador Desconhecido weibo: Weibo current_session: Sessão atual description: "%{browser} em %{platform}" @@ -1467,9 +1474,10 @@ pt-PT: chrome_os: ChromeOS firefox_os: SO Firefox ios: iOS + kai_os: KaiOS linux: Linux mac: macOS - other: plataforma desconhecida + unknown_platform: Plataforma Desconhecida windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1682,12 +1690,13 @@ pt-PT: title: Bem-vindo a bordo, %{name}! users: follow_limit_reached: Não pode seguir mais do que %{limit} pessoas + go_to_sso_account_settings: Ir para as definições de conta do seu fornecedor de identidade invalid_otp_token: Código de autenticação inválido otp_lost_help_html: Se perdeu o acesso a ambos, pode entrar em contacto com %{email} seamless_external_login: Tu estás ligado via um serviço externo. Por isso, as configurações da palavra-passe e do e-mail não estão disponíveis. signed_in_as: 'Registado como:' verification: - explanation_html: 'Pode comprovar que é o dono das hiperligações nos metadados do seu perfil. Para isso, a página para a qual a ligação aponta tem de conter uma outra para o seu perfil do Mastodon. Essa ligação tem de ter um atributo rel="me". O conteúdo do texto não é importante. Eis um exemplo:' + explanation_html: 'Pode comprovar que é o dono das hiperligações nos metadados do seu perfil. Para isso, a página para a qual a hiperligação aponta tem de conter uma outra para o seu perfil do Mastodon. Após adicionar a hiperligação, poderá ter de voltar aqui e voltar a guardar o seu perfil para que a verificação produza efeito. Essa hiperligação tem de ter um atributo rel="me". O conteúdo do texto não é importante. Eis um exemplo:' verification: Verificação webauthn_credentials: add: Adicionar nova chave de segurança diff --git a/config/locales/ro.yml b/config/locales/ro.yml index f842988a23..32b0bdd2fd 100644 --- a/config/locales/ro.yml +++ b/config/locales/ro.yml @@ -749,5 +749,4 @@ ro: seamless_external_login: Sunteți autentificat prin intermediul unui serviciu extern, astfel încât parola și setările de e-mail nu sunt disponibile. signed_in_as: 'Conectat ca:' verification: - explanation_html: 'Poți să te verifici ca proprietar al link-urilor din metadatele profilului tău. Pentru aceasta, site-ul web asociat trebuie să conțină un link înapoi la profilul tău. Link-ul înapoi trebuie să aibă un atribut rel="me". Conținut textului link-ului nu contează. Iată un exemplu:' verification: Verificare diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 9b8749b818..de248d76d4 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -620,6 +620,7 @@ ru: none: Нет comment_description_html: 'В дополнение, %{name} добавил(а) следующий комментарий:' confirm: Подтвердить + confirm_action: Произвести модерацию учётной записи %{acct} created_at: Создана delete_and_resolve: Удалить посты forwarded: Переслано @@ -636,6 +637,7 @@ ru: placeholder: Опишите, какие действия были приняты, или любые другие подробности… title: Примечания notes_description_html: Просмотрите или оставьте примечания для остальных модераторов и себя в будущем + processed_msg: 'Жалоба #%{id} успешно обработана' quick_actions_description_html: 'Выберите действие или прокрутите вниз, чтобы увидеть контент с жалобой:' remote_user_placeholder: удаленный пользователь из %{instance} reopen: Переоткрыть жалобу @@ -650,9 +652,13 @@ ru: statuses_description_html: Нарушающее правила содержимое будет процитировано при коммуникации с фигурирующим в жалобе аккаунтом summary: action_preambles: + delete_html: 'Вы собираетесь удалить некоторые посты @%{acct}. В результате этого:' + mark_as_sensitive_html: 'Вы собираетесь удалить некоторые посты @%{acct}. В результате этого:' + silence_html: 'Вы собираетесь заморозить учетную запись @%{acct}. В результате этого:' suspend_html: 'Вы собираетесь заморозить учетную запись @%{acct}. В результате этого:' actions: delete_html: Удалить оскорбительные сообщения + mark_as_sensitive_html: Пометить медиа-оскорбительные сообщения как чувствительные close_report: 'Отметить жалобу #%{id} как решённую' close_reports_html: Отметить все жалобы на @%{acct} как разрешённые delete_data_html: Удалить профиль и контент @%{acct} через 30 дней, если за это время они не будут разблокированы @@ -830,6 +836,11 @@ ru: message_html: Вы не определили правила сервера. sidekiq_process_check: message_html: Ни один Sidekiq не запущен для %{value} очереди(-ей). Пожалуйста, просмотрите настройки Sidekiq + upload_check_privacy_error: + action: Нажмите сюда, чтобы узнать подробности + upload_check_privacy_error_object_storage: + action: Нажмите сюда, чтобы узнать подробности + message_html: "Ваше хранилище объектов неправильно настроено. Безопасность ваших пользователей находится под угрозой" tags: review: Состояние проверки updated_msg: Настройки хэштега обновлены @@ -1177,6 +1188,8 @@ ru: storage: Ваши файлы featured_tags: add_new: Добавить + errors: + limit: Вы уже добавили максимальное число хэштегов hint_html: "Избранные хэштеги отображаются в вашем профиле и позволяют людям быстро найти посты, отмеченные ими. Это отличный инструмент для отслеживания долгосрочных проектов и творческих работ." filters: contexts: @@ -1226,8 +1239,6 @@ ru: index: hint: Этот фильтр применяется для выбора отдельных постов, независимо от других критериев. Вы можете добавить больше записей в этот фильтр из веб-интерфейса. title: Отфильтрованные посты - footer: - trending_now: Актуально сейчас generic: all: Любой all_items_on_page_selected_html: @@ -1300,6 +1311,9 @@ ru: expires_at: Истекает uses: Исп. title: Пригласить людей + lists: + errors: + limit: Вы достигли максимального количества пользователей login_activities: authentication_methods: otp: приложение двухфакторной аутентификации @@ -1444,6 +1458,7 @@ ru: confirm_remove_selected_followers: Вы уверены, что хотите удалить выбранных подписчиков? confirm_remove_selected_follows: Вы уверены, что хотите удалить выбранные подписки? dormant: Заброшенная + follow_failure: Не удалось подписаться за некоторыми из выбранных аккаунтов. follow_selected_followers: Подписаться на выбранных подписчиков followers: Подписчики following: Подписки @@ -1483,6 +1498,7 @@ ru: electron: Electron firefox: Firefox generic: Неизвестный браузер + huawei_browser: Huawei Browser ie: Internet Explorer micro_messenger: MicroMessenger nokia: Nokia S40 Ovi Browser @@ -1492,6 +1508,7 @@ ru: qq: QQ Browser safari: Safari uc_browser: UC Browser + unknown_browser: Неизвестный браузер weibo: Weibo current_session: Текущая сессия description: "%{browser} на %{platform}" @@ -1504,9 +1521,10 @@ ru: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: OS Кай linux: Linux mac: Mac - other: неизвестной платформе + unknown_platform: Неизвестная платформа windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1631,6 +1649,7 @@ ru: '7889238': 3 месяца min_age_label: Возрастной порог min_favs: Порог отметок «избранного» + min_favs_hint: Не удалять ваши посты, у которых количество отметок «избранного» достигло указанного выше значения. Оставьте поле пустым, чтобы удалять посты независимо от количества отметок min_reblogs: Порог продвижений min_reblogs_hint: Не удаляет ваши посты, количество продвижений которых достигло указанного выше значения. Оставьте поле пустым, чтобы удалять посты независимо от количества продвижений. stream_entries: @@ -1730,6 +1749,7 @@ ru: title: Добро пожаловать на борт, %{name}! users: follow_limit_reached: Вы не можете подписаться больше, чем на %{limit} человек + go_to_sso_account_settings: Перейти к настройкам сторонних аккаунтов учетной записи invalid_otp_token: Введен неверный код двухфакторной аутентификации otp_lost_help_html: Если Вы потеряли доступ к обоим, свяжитесь с %{email} seamless_external_login: Вы залогинены через сторонний сервис, поэтому настройки e-mail и пароля недоступны. diff --git a/config/locales/sc.yml b/config/locales/sc.yml index 3a84f81702..307a447588 100644 --- a/config/locales/sc.yml +++ b/config/locales/sc.yml @@ -658,8 +658,6 @@ sc: title: Filtros new: title: Agiunghe unu filtru nou - footer: - trending_now: Est tendèntzia immoe generic: all: Totus changes_saved_msg: Modìficas sarvadas. @@ -878,7 +876,6 @@ sc: ios: iOS linux: Linux mac: macOS - other: prataforma disconnota windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1023,7 +1020,6 @@ sc: seamless_external_login: As abertu sa sessione pro mèdiu de unu servìtziu esternu, e pro custa resone is cunfiguratziones de sa crae de intrada e de posta eletrònica non sunt a disponimentu. signed_in_as: 'Sessione aberta comente:' verification: - explanation_html: 'Ti podes verificare a sa sola comente mere de is ligòngios in is metadatos de su profilu tuo. Pro ddu fàghere su situ ligadu depet cuntènnere unu ligòngiu chi torret a su profilu de Mastodon tuo. Su ligòngiu in su situ depet tènnere un''atributu rel="me". Su testu cuntenutu in su ligòngiu no est de importu. Custu est un''esèmpiu:' verification: Verìfica webauthn_credentials: add: Agiunghe una crae de seguresa noa diff --git a/config/locales/sco.yml b/config/locales/sco.yml index 6cd4be0601..55d8e09a45 100644 --- a/config/locales/sco.yml +++ b/config/locales/sco.yml @@ -1146,8 +1146,6 @@ sco: index: hint: This filter applies tae select individual posts regairdless o ither criteria. Ye kin add mair posts tae this filter fae the wab interface. title: Filtert posts - footer: - trending_now: Trendin the noo generic: all: Aw all_items_on_page_selected_html: @@ -1413,7 +1411,6 @@ sco: ios: iOS linux: Linux mac: macOS - other: unkent platform windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1630,7 +1627,6 @@ sco: seamless_external_login: Ye'r logged in via a external service, sae passwird an email settins urnae available. signed_in_as: 'Signt in as:' verification: - explanation_html: 'Ye kin verify yersel as the ainer o the links in yer profile metadata. Fir that, the linkt wabsteid haes tae contain a link back tae yer Mastodon profile. The link back haes tae hae a rel="me" attribute. The text content o the link disnae maitter. Here a example:' verification: Verification webauthn_credentials: add: Add new security key diff --git a/config/locales/si.yml b/config/locales/si.yml index 9a639b720d..c34df29861 100644 --- a/config/locales/si.yml +++ b/config/locales/si.yml @@ -959,8 +959,6 @@ si: new: save: නව පෙරහන සුරකින්න title: නව පෙරහනක් එකතු කරන්න - footer: - trending_now: දැන් ප්‍රවණතාවය generic: all: සියල්ල changes_saved_msg: වෙනස්කම් සාර්ථකව සුරකින ලදී! @@ -1206,7 +1204,6 @@ si: ios: අයිඕඑස් linux: ලිනක්ස් mac: මැක්ඕඑස් - other: නොදන්නා වේදිකාව windows: වින්ඩෝස් windows_mobile: වින්ඩෝස් මොබයිල් windows_phone: වින්ඩෝස් පෝන් @@ -1416,7 +1413,6 @@ si: seamless_external_login: ඔබ බාහිර සේවාවක් හරහා ලොග් වී ඇත, එබැවින් මුරපදය සහ ඊමේල් සැකසුම් නොමැත. signed_in_as: 'මෙසේ පුරනය වී ඇත:' verification: - explanation_html: 'ඔබගේ පැතිකඩ පාරදත්තහි ඇති සබැඳි වල හිමිකරු ලෙස ඔබට සත්‍යාපනය කළ හැක. ඒ සඳහා, සම්බන්ධිත වෙබ් අඩවියේ ඔබේ Mastodon පැතිකඩ වෙත ආපසු සබැඳියක් තිබිය යුතුය. සබැඳිය ආපසු යුතුය. සබැඳියේ පෙළ අන්තර්ගතය වැදගත් නොවේ. මෙන්න උදාහරණයක්:' verification: සත්යාපනය webauthn_credentials: add: නව ආරක්ෂක යතුර එක් කරන්න diff --git a/config/locales/simple_form.ast.yml b/config/locales/simple_form.ast.yml index 32364cf7e4..9e97d51f24 100644 --- a/config/locales/simple_form.ast.yml +++ b/config/locales/simple_form.ast.yml @@ -59,6 +59,10 @@ ast: ip_block: comment: Opcional. Un recordatoriu de por qué amestesti esta norma. expires_in: Les direiciones IP son un recursu finitu, suelen compartise ya cambiar de manes. Por esti motivu, nun s'aconseyen los bloqueos indefiníos de direiciones IP. + severities: + no_access: Bloquia l'accesu a tolos recursos + sign_up_block: Fai que nun se puedan rexistrar cuentes nueves + sign_up_requires_approval: Fai que se tengan de revisar les cuentes rexistraes nueves user: chosen_languages: Namás los artículos de les llingües que marques son los que van apaecer nes llinies de tiempu públiques labels: @@ -161,7 +165,12 @@ ast: invite_request: text: "¿Por qué quies xunite?" ip_block: + comment: Comentariu ip: IP + severities: + no_access: Bloquiar l'accesu + sign_up_block: Bloquiar el rexistru de cuentes nueves + sign_up_requires_approval: Llendar les cuentes rexistraes nueves notification_emails: favourite: Daquién marcó como favoritu'l to artículu follow: Daquién te sigue diff --git a/config/locales/simple_form.bg.yml b/config/locales/simple_form.bg.yml index 213e519ce3..e84edc50da 100644 --- a/config/locales/simple_form.bg.yml +++ b/config/locales/simple_form.bg.yml @@ -15,8 +15,8 @@ bg: text_html: По избор. Можете да използвате синтаксисът на публикация. Можете да добавите предварително настроени предупреждения, за да спестите време type_html: Изберете какво ще правите с %{acct} types: - disable: Забранете на потребител да достъпва акаунта си, без да изтривате или скривате съдържанието на този акаунт. - none: Служи за изпращане на предупреждение до потребител, без да се активира друго действие. + disable: Предотвратяване на потребител да употребява акаунта си, но без да се изтрива или скрива съдържанието му. + none: Използвайте това за изпращане на предупреждение до потребител, без задействане на друго действие. sensitive: Принудително отбелязване на прикачената от потребителя мултимедия като чувствителна. silence: Предотвратяване на потребителя да може да публикува с обществена видимост, скриване на публикациите му и известията от хората, които не го следват. Затваря всички доклади срещу този акаунт. suspend: Предотвратяване на всякакво взаимодействие от или към този акаунт и изтриване на съдържанието му. Обратимо в рамките на 30 дни. Затваря всички доклади срещу този акаунт. @@ -28,7 +28,7 @@ bg: starts_at: По избор. В случай, че обявлението е ограничено до определен времеви диапазон text: Може да употребявате синтаксиса на публикации. Имайте предвид, че оповестяването ще заема известно място от екрана на потребителя appeal: - text: Можете да възразите срещу провинение само веднъж + text: Може да възразите срещу провинение само веднъж defaults: autofollow: Хората, които се регистрират чрез поканата, автоматично ще ви последват avatar: PNG, GIF или JPG. До най-много %{size}. Ще се смали до %{dimensions} пиксела @@ -52,17 +52,17 @@ bg: setting_always_send_emails: Обикновено известията по имейл няма да са изпратени при дейна употреба на Mastodon setting_default_sensitive: Деликатната мултимедия е скрита по подразбиране и може да се разкрие с едно щракване setting_display_media_default: Скриване на мултимедия отбелязана като деликатна - setting_display_media_hide_all: Винаги да се скрива мултимедията - setting_display_media_show_all: Винаги да се показва мултимедията + setting_display_media_hide_all: Винаги скриване на мултимедията + setting_display_media_show_all: Винаги показване на мултимедията setting_hide_network: В профила ви ще бъде скрито кой може да последвате и кой може да ви последва setting_noindex: Засяга вашите публикации и публичен профил setting_show_application: Приложението, което ползвате за публикуване, ще се показва в подробностите на публикацията ви setting_use_blurhash: Преливането е въз основа на цветовете на скритите визуализации, но се замъгляват подробностите setting_use_pending_items: Да се показват обновявания на часовата ос само след щракване вместо автоматично превъртане на инфоканала - username: Вашето потребителско име ще е неповторим в %{domain} + username: Вашето потребителско име ще е неповторимо в %{domain} whole_word: Ако ключовата дума или фраза е само буквеноцифрена, то ще се приложи само, ако съвпадне с цялата дума domain_allow: - domain: Този домейн ще може да извлече данни от този сървър и входящите данни от него ще бъдат обработени и запазени + domain: Домейнът ще може да извлича данни от този сървър и входящите данни от него ще се обработят и съхранят email_domain_block: domain: Това може да е името на домейна, който се съдържа в имейл адреса или MX записа, който той използва. Ще бъдат проверени при регистрация. with_dns_records: Ще има опит за преобразуване на DNS записите за дадения домейн и резултатите също ще бъдат блокирани @@ -74,14 +74,14 @@ bg: hide: Напълно скриване на филтрираното съдържание, сякаш не съществува warn: Скриване на филтрираното съдържание зад предупреждение, споменавайки заглавието на филтъра form_admin_settings: - activity_api_enabled: Брой публикувани постове, активни потребители и нови регистрации за седмицата + activity_api_enabled: Броят на местните публикувани публикации, дейни потребители и нови регистрации в седмични кофи backups_retention_period: Задържане на породените потребителски архиви за определения брой дни. bootstrap_timeline_accounts: Тези акаунти ще се закачат в горния край на препоръките за следване на нови потребители. closed_registrations_message: Показва се, когато е затворено за регистрации content_cache_retention_period: Публикации от други сървъри ще се изтрият след определен брой дни при положително число. Действието може да е необратимо. - custom_css: Може да прилагате собствени стилове в уеб версията на Mastodon. + custom_css: Може да прилагате собствени стилове в уебверсията на Mastodon. mascot: Замества илюстрацията в разширения уеб интерфейс. - media_cache_retention_period: Свалените мултимедийни файлове ще бъдат изтрити след посочения брой дни, когато броят е положително число, и ще бъдат свалени отново при поискване. + media_cache_retention_period: Изтеглените мултимедийни файлове ще се изтрият след посочения брой дни, задавайки положително число, и ще се изтеглят пак при поискване. peers_api_enabled: Списък от имена на домейни, с които сървърът се е свързал във федивселената. Тук не се включват данни за това дали федерирате с даден сървър, а само за това дали сървърът ви знае за него. Това се ползва от услуги, събиращи статистика за федерацията в общия смисъл. profile_directory: Указателят на профили вписва всички потребители, избрали да бъдат откриваеми. require_invite_text: Когато регистрацията изисква ръчно одобрение, текстовото поле за това "Защо желаете да се присъедините?" ще бъде задължително, вместо по желание @@ -95,7 +95,7 @@ bg: theme: Темата, която излизащи от системата посетители и нови потребители виждат. thumbnail: Образ в съотношение около 2:1, показвано до информацията за сървъра ви. timeline_preview: Излизащите от системата посетители ще може да разглеждат най-новите публични публикации, налични на сървъра. - trendable_by_default: Прескачане на ръчния преглед на нашумяло съдържание. Отделни елементи могат да бъдат премахвани от нашумели в последствие. + trendable_by_default: Прескачане на ръчния преглед на изгряващо съдържание. Отделни елементи още могат да се премахват от изгряващи постфактум. trends: В раздел „Налагащо се“ се показват публикации, хаштагове и новини, набрали популярност на сървъра ви. trends_as_landing_page: Показване на налагащото се съдържание за излизащите потребители и посетители вместо на описа на този сървър. Изисква налагащото се да бъде включено. form_challenge: @@ -142,7 +142,7 @@ bg: account_migration: acct: Потребителско име на новия акаунт account_warning_preset: - text: Предварително настроен текст + text: Зададен текст title: Заглавие admin_account_action: include_statuses: Включване на докладваните публикации в имейла @@ -155,7 +155,7 @@ bg: sensitive: Деликатно silence: Ограничение suspend: Спиране - warning_preset_id: Употреба на преднастройка за предупреждение + warning_preset_id: Употреба на зададено предупреждение announcement: all_day: Целодневно събитие ends_at: Край на събитието @@ -171,7 +171,7 @@ bg: chosen_languages: Филтриране на езиците confirm_new_password: Потвърждаване на новата парола confirm_password: Потвърдете паролата - context: Филтриране на контекста + context: Прецеждане на контекста current_password: Текуща парола data: Данни discoverable: Предложете акаунта на други @@ -185,7 +185,7 @@ bg: irreversible: Премахване, вместо скриване locale: Език на интерфейса locked: Направи акаунта поверителен - max_uses: Максимален брой използвания + max_uses: Макс брой употреби new_password: Нова парола note: Биогр. otp_attempt: Двуфакторен код @@ -207,7 +207,7 @@ bg: setting_display_media_hide_all: Скриване на всичко setting_display_media_show_all: Показване на всичко setting_expand_spoilers: Винаги разширяване на публикации, отбелязани с предупреждения за съдържание - setting_hide_network: Скриване на социалното ви графосвързване + setting_hide_network: Скриване на социалния ви свързан граф setting_noindex: Отказване от индексирането от търсачки setting_reduce_motion: Обездвижване на анимациите setting_show_application: Разкриване на приложението, изпращащо публикации @@ -236,7 +236,7 @@ bg: activity_api_enabled: Публикуване на агрегирани статиски относно потребителската дейност в API backups_retention_period: Период за съхранение на потребителския архив bootstrap_timeline_accounts: Винаги да се препоръчват следните акаунти на нови потребители - closed_registrations_message: Съобщение, показвано, когато записвания не са възможни + closed_registrations_message: Съобщение при неналична регистрация content_cache_retention_period: Период на съхранение на кеша за съдържание custom_css: Персонализиран CSS mascot: Талисман по избор (остаряла настройка) @@ -283,7 +283,7 @@ bg: follow: Някой ви последва follow_request: Някой пожела да ви последва mention: Някой ви спомена - pending_account: Новите акаунти трябва да се прегледат + pending_account: Новите акаунти се нуждаят от преглед reblog: Някой подсили ваша публикация report: Новият доклад е подаден trending_tag: Изискване на преглед за новонашумели @@ -306,11 +306,11 @@ bg: events: Включване на събития url: URL адрес на крайната точка 'no': Не - not_recommended: Не се препоръчва - recommended: Препоръчано + not_recommended: Непрепоръчително + recommended: Препоръчва се required: mark: "*" - text: задължително + text: изисквано title: sessions: webauthn: Употребете един от ключовете си за сигурност, за да влезете diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index 3116f02d81..af29427420 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -18,6 +18,8 @@ da: disable: Forhindre brugeren i at bruge sin konto, men slet eller skjul ikke vedkommendes indhold. none: Brug dette til at sende en advarsel til brugeren uden at udløse nogen anden handling. sensitive: Gennemtving sensitivmarkering af alle denne brugers medievedhæftninger. + silence: Forhindr brugeren i at udgive offentligt synlige indlæg, skjul vedkommendes indlæg samt notifikationer fra ikke-følgere. Lukker alle indrapporteringer af kontoen. + suspend: Forhindr alle interaktion fra/til kontoen og slet dens indhold. Kan omgøres inden for 30 dage. Lukker alle indrapporteringer af kontoen. warning_preset_id: Valgfri. Du kan stadig tilføje tilpasset tekst til slutningen af forvalgene announcement: all_day: Hvis markeret, vil kun datoerne for tidsintervallet blive vist @@ -80,6 +82,7 @@ da: custom_css: Man kan anvende tilpassede stilarter på Mastodon-webversionen. mascot: Tilsidesætter illustrationen i den avancerede webgrænseflade. media_cache_retention_period: Downloadede mediefiler slettes efter det angivne antal dage, når sat til en positiv værdi, og gendownloades på forlangende. + peers_api_enabled: En liste med domænenavne, som denne server har stødt på i fediverset. Ingen data inkluderes her om, hvorvidt der fødereres med en given server, blot at din server kender til det. Dette bruges af tjenester, som indsamler generelle føderationsstatistikker. profile_directory: Profilmappen oplister alle brugere, som har valgt at kunne opdages. require_invite_text: Når tilmelding kræver manuel godkendelse, så gør “Hvorfor ønsker du at deltage?” tekstinput obligatorisk i stedet for valgfrit site_contact_email: Hvordan folk kan opnå kontakt ifm. juridiske eller supportforespørgsler. @@ -238,6 +241,7 @@ da: custom_css: Tilpasset CSS mascot: Tilpasset maskot (ældre funktion) media_cache_retention_period: Media-cache opbevaringsperiode + peers_api_enabled: Udgiv liste over fundne server i API'en profile_directory: Aktivér profiloversigt registrations_mode: Hvem, der kan tilmelde sig require_invite_text: Kræv tilmeldingsbegrundelse @@ -255,6 +259,7 @@ da: timeline_preview: Tillad ikke-godkendt adgang til offentlige tidslinjer trendable_by_default: Tillad ikke-reviderede tendenser trends: Aktivér trends + trends_as_landing_page: Brug tendenser som destinationssiden interactions: must_be_follower: Blokér notifikationer fra ikke-følgere must_be_following: Blokér notifikationer fra folk, som ikke følges diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index 0090c2f96d..4a13cea7c4 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -50,7 +50,7 @@ de: scopes: Welche Schnittstellen der Applikation erlaubt sind. Wenn du einen Top-Level-Scope auswählst, dann musst du nicht jeden einzelnen darunter auswählen. setting_aggregate_reblogs: Zeige denselben Beitrag nicht nochmal an, wenn er erneut geteilt wurde (dies betrifft nur neulich erhaltene erneut geteilte Beiträge) setting_always_send_emails: Normalerweise werden Benachrichtigungen nicht per E-Mail verschickt, wenn du gerade auf Mastodon aktiv bist - setting_default_sensitive: Medien, die mit einer Inhaltswarnung versehen worden sind, werden erst nach einem zusätzlichen Klick angezeigt + setting_default_sensitive: Medien, die mit einer Inhaltswarnung versehen wurden, werden erst nach einem zusätzlichen Klick angezeigt setting_display_media_default: Medien mit Inhaltswarnung ausblenden setting_display_media_hide_all: Medien immer ausblenden setting_display_media_show_all: Medien mit Inhaltswarnung immer anzeigen @@ -74,9 +74,9 @@ de: hide: Den gefilterten Beitrag vollständig ausblenden, als hätte er nie existiert warn: Den gefilterten Beitrag hinter einer Warnung, die den Filtertitel beinhaltet, ausblenden form_admin_settings: - activity_api_enabled: Anzahl der lokal veröffentlichten Beiträge, der aktiven Benutzer*innen und neuen Registrierungen in wöchentlichen Abständen + activity_api_enabled: Anzahl der wöchentlichen Beiträge, aktiven Profile und Registrierungen auf diesem Server backups_retention_period: Behalte die Archive, die von den Benutzer*innen erstellt worden sind, für die angegebene Anzahl an Tagen. - bootstrap_timeline_accounts: Diese Profile werden bei den Follower-Empfehlungen für neu registrierte Nutzer*innen oben angeheftet. + bootstrap_timeline_accounts: Diese Konten werden bei den Follower-Empfehlungen für neu registrierte Nutzer*innen oben angeheftet. closed_registrations_message: Wird angezeigt, wenn Registrierungen deaktiviert sind content_cache_retention_period: Beiträge von anderen Servern werden nach der angegebenen Anzahl von Tagen, wenn sie auf einen positiven Wert gesetzt werden, gelöscht. Dies kann eventuell nicht rückgängig gemacht werden. custom_css: Du kannst benutzerdefinierte Stile auf die Web-Version von Mastodon anwenden. @@ -91,7 +91,7 @@ de: site_short_description: Eine kurze Beschreibung zur eindeutigen Identifizierung des Servers. Wer betreibt ihn, für wen ist er bestimmt? site_terms: Verwende eine eigene Datenschutzerklärung oder lasse das Feld leer, um die allgemeine Vorlage zu verwenden. Kann mit der Markdown-Syntax formatiert werden. site_title: Wie Personen neben dem Domainnamen auf deinen Server verweisen können. - status_page_url: URL einer Seite, auf der der Status des Servers während eines Ausfalls angezeigt werden kann + status_page_url: URL einer Seite, auf der der Serverstatus während eines Ausfalls angezeigt wird theme: Das Design, das abgemeldete Besucher und neue Benutzer sehen. thumbnail: Ein Bild ungefähr im 2:1-Format, das neben den Server-Informationen angezeigt wird. timeline_preview: Besucher*innen und ausgeloggte Benutzer*innen können die neuesten öffentlichen Beiträge dieses Servers aufrufen. @@ -116,7 +116,7 @@ de: rule: text: Führe eine Regel oder Bedingung für Benutzer*innen auf diesem Server ein. Bleib dabei kurz und knapp sessions: - otp: 'Gib den Zwei-Faktor-Code von deinem Telefon ein oder benutze einen deiner Wiederherstellungscodes:' + otp: 'Gib den Zwei-Faktor-Code von deinem Smartphone ein oder benutze einen deiner Wiederherstellungscodes:' webauthn: Wenn es sich um einen USB-Schlüssel handelt, vergewissere dich, dass du ihn einsteckst und – falls erforderlich – antippst. tag: name: Du kannst zum Beispiel nur die Groß- und Kleinschreibung der Buchstaben ändern, um es lesbarer zu machen @@ -131,21 +131,21 @@ de: position: Höhere Rollen entscheiden über Konfliktlösungen zu gewissen Situationen. Bestimmte Aktionen können nur mit geringfügigeren Rollen durchgeführt werden webhook: events: Zu sendende Ereignisse auswählen - url: Wo Ereignisse hingesendet werden + url: Wohin Ereignisse geschickt werden labels: account: fields: name: Beschriftung value: Inhalt account_alias: - acct: Adresse des alten Kontos + acct: Profilname des alten Kontos account_migration: acct: Adresse des neuen Kontos account_warning_preset: text: Vorlagentext title: Titel admin_account_action: - include_statuses: Beitragsmeldungen in die E-Mail mit anfügen + include_statuses: Gemeldete Beiträge der E-Mail beifügen send_email_notification: Benachrichtigung per E-Mail text: Benutzerdefinierte Verwarnung type: Aktion @@ -171,7 +171,7 @@ de: chosen_languages: Sprachen einschränken confirm_new_password: Neues Passwort bestätigen confirm_password: Passwort bestätigen - context: Filter nach Bereichen + context: Nach Bereichen filtern current_password: Derzeitiges Passwort data: Daten discoverable: Dieses Konto anderen empfehlen @@ -233,7 +233,7 @@ de: hide: Vollständig ausblenden warn: Mit einer Inhaltswarnung ausblenden form_admin_settings: - activity_api_enabled: Veröffentlichung von Gesamtstatistiken über Nutzeraktivitäten in der API + activity_api_enabled: Aggregierte Nutzungsdaten über die API veröffentlichen backups_retention_period: Aufbewahrungsfrist für Archive bootstrap_timeline_accounts: Neuen Nutzern immer diese Konten empfehlen closed_registrations_message: Nachricht, falls Registrierungen deaktiviert sind @@ -241,7 +241,7 @@ de: custom_css: Eigenes CSS mascot: Benutzerdefiniertes Maskottchen (Legacy) media_cache_retention_period: Aufbewahrungsfrist für den Medien-Cache - peers_api_enabled: Veröffentliche Liste bekannter Server in der API + peers_api_enabled: Über die API die bekanntgewordenen Fediverse-Server veröffentlichen profile_directory: Profilverzeichnis aktivieren registrations_mode: Wer darf ein neues Konto registrieren? require_invite_text: Begründung für Beitritt verlangen diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml index 6b4d50d8ef..2788fd9b5d 100644 --- a/config/locales/simple_form.el.yml +++ b/config/locales/simple_form.el.yml @@ -53,7 +53,7 @@ el: setting_default_sensitive: Τα ευαίσθητα πολυμέσα είναι κρυμμένα και εμφανίζονται με ένα κλικ setting_display_media_default: Απόκρυψη ευαίσθητων πολυμέσων setting_display_media_hide_all: Μόνιμη απόκρυψη όλων των πολυμέσων - setting_display_media_show_all: Μόνιμη εμφάνιση ευαίσθητων πολυμέσων + setting_display_media_show_all: Πάντα εμφάνιση πολυμέσων setting_hide_network: Δε θα εμφανίζεται στο προφίλ σου ποιους ακολουθείς και ποιοι σε ακολουθούν setting_noindex: Επηρεάζει το δημόσιο προφίλ και τις δημοσιεύσεις σου setting_show_application: Η εφαρμογή που χρησιμοποιείς για να στέλνεις τα τουτ σου θα εμφανίζεται στις αναλυτικές λεπτομέρειες τους @@ -78,6 +78,26 @@ el: backups_retention_period: Διατήρηση αρχείων χρηστών που δημιουργήθηκαν για τον καθορισμένο αριθμό ημερών. bootstrap_timeline_accounts: Αυτοί οι λογαριασμοί θα καρφιτσωθούν στην κορυφή των νέων χρηστών που ακολουθούν τις συστάσεις. closed_registrations_message: Εμφανίζεται όταν κλείνουν οι εγγραφές + content_cache_retention_period: Αναρτήσεις από άλλους διακομιστές θα διαγραφούν μετά τον καθορισμένο αριθμό ημερών όταν οριστεί μια θετική τιμή. Αυτό μπορεί να είναι μη αναστρέψιμο. + custom_css: Μπορείς να εφαρμόσεις προσαρμοσμένα στυλ στην έκδοση ιστοσελίδας του Mastodon. + mascot: Παρακάμπτει την εικονογραφία στην προηγμένη διεπαφή ιστού. + media_cache_retention_period: Τα ληφθέντα αρχεία πολυμέσων θα διαγραφούν μετά τον καθορισμένο αριθμό ημερών, όταν οριστεί σε θετική τιμή, και να γίνει εκ νέου λήψη κατά απαίτηση. + peers_api_enabled: Μια λίστα με ονόματα τομέα που συνάντησε αυτός ο διακομιστής στο fediverse. Δεν περιλαμβάνονται δεδομένα εδώ για το αν συναλλάσσετε με ένα συγκεκριμένο διακομιστή, μόνο ότι ο διακομιστής σας το ξέρει. Χρησιμοποιείται από υπηρεσίες που συλλέγουν στατιστικά στοιχεία για την συναλλαγή με γενική έννοια. + profile_directory: Ο κατάλογος προφίλ παραθέτει όλους τους χρήστες που έχουν επιλέξει να είναι ανακαλύψιμοι. + require_invite_text: 'Όταν η εγγραφή απαιτεί χειροκίνητη έγκριση, κάνε το πεδίο κειμένου: «Γιατί θέλετε να συμμετάσχετε;» υποχρεωτικό αντί για προαιρετικό' + site_contact_email: Πώς μπορούν να σε προσεγγίσουν για νομικές ή υποστηρικτικές έρευνες. + site_contact_username: Πώς μπορούν να σε προσεγγίσουν στο Mastodon. + site_extended_description: Οποιεσδήποτε πρόσθετες πληροφορίες μπορεί να είναι χρήσιμες για τους επισκέπτες και τους χρήστες σας. Μπορεί να δομηθεί με σύνταξη Markdown. + site_short_description: Μια σύντομη περιγραφή για να ξεχωρίζει ο διακομιστής σου. Ποιος τον έχει, για ποιον είναι; + site_terms: Χρησιμοποίησε τη δική σου πολιτική απορρήτου ή άσε το κενό για να χρησιμοποιήσεις την προεπιλεγμένη. Μπορεί να δομηθεί με σύνταξη Markdown. + site_title: Πώς μπορεί κάποιος να αναφέρεται στο διακομιστή σου εκτός από το όνομα τομέα του. + status_page_url: Το URL μιας σελίδας όπου κάποιος μπορεί να δει την κατάσταση αυτού του διακομιστή κατά τη διάρκεια μιας διακοπής λειτουργίας + theme: Θέμα που βλέπουν αποσυνδεδεμένοι επισκέπτες ή νέοι χρήστες. + thumbnail: Μια εικόνα περίπου 2:1 που εμφανίζεται παράλληλα με τις πληροφορίες του διακομιστή σου. + timeline_preview: Αποσυνδεδεμένοι επισκέπτες θα μπορούν να περιηγηθούν στις πιο πρόσφατες δημόσιες δημοσιεύσεις που είναι διαθέσιμες στο διακομιστή. + trendable_by_default: Παράλειψη χειροκίνητης αξιολόγησης του περιεχομένου σε τάση. Μεμονωμένα στοιχεία μπορούν ακόμα να αφαιρεθούν από τις τάσεις μετέπειτα. + trends: Τάσεις δείχνουν ποιες δημοσιεύσεις, ετικέτες και ειδήσεις προκαλούν έλξη στο διακομιστή σας. + trends_as_landing_page: Εμφάνιση περιεχομένου σε τάση σε αποσυνδεδεμένους χρήστες και επισκέπτες αντί για μια περιγραφή αυτού του διακομιστή. Απαιτεί οι τάσεις να έχουν ενεργοποιηθεί. form_challenge: current_password: Μπαίνεις σε ασφαλή περιοχή imports: @@ -102,6 +122,16 @@ el: name: Μπορείς να αλλάξεις μόνο το πλαίσιο των χαρακτήρων, για παράδειγμα για να γίνει περισσότερο ευανάγνωστο user: chosen_languages: Όταν ενεργοποιηθεί, στη δημόσια ροή θα εμφανίζονται τουτ μόνο από τις επιλεγμένες γλώσσες + role: Ο ρόλος ελέγχει ποια δικαιώματα έχει ο χρήστης + user_role: + color: Το χρώμα που θα χρησιμοποιηθεί για το ρόλο σε ολόκληρη τη διεπαφή, ως RGB σε δεκαεξαδική μορφή + highlighted: Αυτό καθιστά το ρόλο δημόσια ορατό + name: Δημόσιο όνομα του ρόλου, εάν ο ρόλος έχει οριστεί να εμφανίζεται ως σήμα + permissions_as_keys: Οι χρήστες με αυτόν τον ρόλο θα έχουν πρόσβαση σε... + position: Ανώτεροι ρόλοι αποφασίζει την επίλυση συγκρούσεων σε ορισμένες περιπτώσεις. Ορισμένες ενέργειες μπορούν να εκτελεστούν μόνο σε ρόλους με χαμηλότερη προτεραιότητα + webhook: + events: Επιλέξτε συμβάντα για αποστολή + url: Πού θα σταλούν τα γεγονότα labels: account: fields: @@ -132,6 +162,8 @@ el: scheduled_at: Προγραμματισμένη δημοσίευση starts_at: Έναρξη γεγονότος text: Ανακοίνωση + appeal: + text: Εξηγήστε γιατί αυτή η απόφαση πρέπει να αντιστραφεί defaults: autofollow: Προσκάλεσε για να ακολουθήσουν το λογαριασμό σου avatar: Αβατάρ @@ -201,11 +233,32 @@ el: hide: Πλήρης απόκρυψη warn: Απόκρυψη με προειδοποίηση form_admin_settings: + activity_api_enabled: Δημοσίευση συγκεντρωτικών στατιστικών σχετικά με τη δραστηριότητα του χρήστη στο API + backups_retention_period: Περίοδος αρχειοθέτησης του χρήστη + bootstrap_timeline_accounts: Πρότεινε πάντα αυτούς τους λογαριασμούς σε νέους χρήστες + closed_registrations_message: Προσαρμοσμένο μήνυμα όταν οι εγγραφές δεν είναι διαθέσιμες + content_cache_retention_period: Περίοδος διατήρησης προσωρινής μνήμης περιεχομένου custom_css: Προσαρμοσμένο CSS + mascot: Προσαρμοσμένη μασκότ (απαρχαιωμένο) + media_cache_retention_period: Περίοδος διατήρησης προσωρινής μνήμης πολυμέσων + peers_api_enabled: Δημοσίευση λίστας των εντοπισμένων διακομιστών στο API + profile_directory: Ενεργοποίηση καταλόγου προφίλ registrations_mode: Ποιος μπορεί να εγγραφεί + require_invite_text: Απαίτησε έναν λόγο για να γίνει κάποιος μέλος + show_domain_blocks: Εμφάνιση αποκλεισμένων τομέων + show_domain_blocks_rationale: Εμφάνιση γιατί αποκλείστηκαν οι τομείς site_contact_email: E-mail επικοινωνίας site_contact_username: Όνομα χρήστη επικοινωνίας + site_extended_description: Εκτεταμένη περιγραφή + site_short_description: Περιγραφή διακομιστή + site_terms: Πολιτική Απορρήτου + site_title: Όνομα διακομιστή status_page_url: URL σελίδας κατάστασης + theme: Προεπιλεγμένο θέμα + thumbnail: Μικρογραφία διακομιστή + timeline_preview: Να επιτρέπεται μη πιστοποιημένη πρόσβαση σε δημόσια χρονολόγια + trendable_by_default: Επίτρεψε τις τάσεις χωρίς προηγούμενη αξιολόγηση + trends: Ενεργοποίηση τάσεων trends_as_landing_page: Χρήση των τάσεων ως σελίδα προορισμού interactions: must_be_follower: Μπλόκαρε τις ειδοποιήσεις από όσους δεν σε ακολουθούν @@ -224,6 +277,7 @@ el: sign_up_requires_approval: Περιορισμός εγγραφών severity: Κανόνας notification_emails: + appeal: Κάποιος κάνει έφεση σε απόφαση συντονιστή digest: Αποστολή συνοπτικών email favourite: Αποστολή email όταν κάποιος σημειώνει ως αγαπημένη τη δημοσίευσή σου follow: Αποστολή email όταν κάποιος σε ακολουθεί @@ -231,6 +285,8 @@ el: mention: Αποστολή email όταν κάποιος σε αναφέρει pending_account: Αποστολή email όταν υπάρχει νέος λογαριασμός για επιθεώρηση reblog: Αποστολή email όταν κάποιος προωθεί τη δημοσίευση σου + report: Υποβλήθηκε νέα αναφορά + trending_tag: Νέο περιεχόμενο προς τάση απαιτεί αξιολόγηση rule: text: Κανόνας tag: @@ -240,7 +296,17 @@ el: usable: Χρήση της ετικέτας σε τουτ user: role: Ρόλος + user_role: + color: Χρώμα εμβλήματος + highlighted: Εμφάνιση ρόλου ως σήμα στα προφίλ χρηστών + name: Όνομα + permissions_as_keys: Δικαιώματα + position: Προτεραιότητα + webhook: + events: Ενεργοποιημένα συμβάντα + url: Endpoint URL 'no': Όχι + not_recommended: Δεν προτείνεται recommended: Προτείνεται required: mark: "*" diff --git a/config/locales/simple_form.et.yml b/config/locales/simple_form.et.yml index 8b7dace23c..83aa4159d8 100644 --- a/config/locales/simple_form.et.yml +++ b/config/locales/simple_form.et.yml @@ -30,7 +30,7 @@ et: appeal: text: Otsust on võimalik vaidlustada vaid 1 kord defaults: - autofollow: Inimesed, kes loovad konto selle kutse läbi, automaatselt jälgivad Teid + autofollow: Inimesed, kes loovad konto selle kutse läbi, automaatselt jälgivad sind avatar: PNG, GIF või JPG. Kõige rohkem %{size}. Vähendatakse %{dimensions} pikslini bot: Teavita teisi, et see konto teeb enamjaolt automatiseeritud tegevusi ja ei pruugi olla järelvalve all context: Üks või mitu konteksti, mille vastu see filter peaks rakenduma @@ -54,7 +54,7 @@ et: setting_display_media_default: Peida tundlikuks märgitud meedia setting_display_media_hide_all: Alati peida kõik meedia setting_display_media_show_all: Alati näita tundlikuks märgistatud meedia - setting_hide_network: Profiilil ei kuvata Keda sa jälgid ja kes jälgib sind + setting_hide_network: Profiilil ei kuvata, keda sa jälgid ja kes sind jälgib setting_noindex: Mõjutab avalikku profiili ja postituste lehekülgi setting_show_application: Postitamiseks kasutatud rakenduse infot kuvatakse postituse üksikasjavaates setting_use_blurhash: Värvid põhinevad peidetud visuaalidel, kuid hägustavad igasuguseid detaile @@ -281,8 +281,8 @@ et: digest: Saada ülevaatlike e-kirju favourite: Saada e-kiri, kui keegi lisab su postituse lemmikuks follow: Saada e-kiri, kui keegi alustab jälgimist - follow_request: Saada e-kiri, kui keegi soovib Teid jälgida - mention: Saada e-kiri, kui keegi mainib Teid + follow_request: Saada e-kiri, kui keegi soovib sind jälgida + mention: Saada e-kiri, kui keegi mainib sind pending_account: Saada e-kiri, kui uus konto vajab ülevaatlust reblog: Keegi jagas postitust report: Esitatud on uus raport diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index f22ba7a981..b96cf0cd75 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -8,7 +8,7 @@ fi: acct: Määrittele käyttäjän käyttäjänimi@verkkotunnus, johon haluat siirtyä account_warning_preset: text: Voit käyttää julkaisun syntaksia, kuten URL-osoitteita, aihetunnisteita ja mainintoja - title: Vapaaehtoinen. Ei näytetä vastaanottajalle + title: Valinnainen. Ei näy vastaanottajalle admin_account_action: include_statuses: Käyttäjä näkee mitkä viestit johtivat toimenpiteeseen tai varoitukseen send_email_notification: Käyttäjä saa selityksen mitä tapahtui hänen tililleen @@ -67,7 +67,7 @@ fi: domain: Tämä voi olla se verkkotunnus, joka näkyy sähköpostiosoitteessa tai MX tietueessa jota se käyttää. Ne tarkistetaan rekisteröitymisen yhteydessä. with_dns_records: Annetun verkkotunnuksen DNS-tietueet yritetään ratkaista ja tulokset myös estetään featured_tag: - name: 'Tässä muutamia aihetunnisteita, joita käytit viime aikoina:' + name: 'Tässä muutamia hiljattain käyttämiäsi aihetunnisteita:' filters: action: Valitse, mikä toiminto suoritetaan, kun viesti vastaa suodatinta actions: @@ -91,13 +91,13 @@ fi: site_short_description: Lyhyt kuvaus auttaa yksilöimään palvelimesi. Kuka sitä johtaa, kenelle se on tarkoitettu? site_terms: Käytä omaa tietosuojakäytäntöä tai jätä tyhjäksi, jos haluat käyttää oletusta. Voidaan jäsentää Markdown-syntaksilla. site_title: Kuinka ihmiset voivat viitata palvelimeen sen verkkotunnuksen lisäksi. - status_page_url: URL-osoite, jonka kautta palvelimen tila voidaan tarkastaa sen ollessa tavoittamattomissa + status_page_url: URL-osoite sivulle, jonka kautta tämän palvelimen tila voidaan ongelmatilanteissa tarkastaa theme: Teema, jonka uloskirjautuneet vierailijat ja uudet käyttäjät näkevät. thumbnail: Noin 2:1 kuva näytetään palvelimen tietojen rinnalla. timeline_preview: Uloskirjautuneet vierailijat voivat selata uusimpia julkisia viestejä, jotka ovat saatavilla palvelimella. trendable_by_default: Ohita suositun sisällön manuaalinen tarkistus. Yksittäisiä kohteita voidaan edelleen poistaa jälkikäteen. trends: Trendit osoittavat, mitkä julkaisut, aihetunnisteet ja uutiset ovat saamassa vetoa palvelimellasi. - trends_as_landing_page: Näytä suosittu sisältö uloskirjautuneille käyttäjille ja kävijöille palvelimen kuvauksen sijaan. Edellyttää suositun sisällön käyttöönottoa. + trends_as_landing_page: Näytä vierailijoille ja uloskirjautuneille käyttäjille suosittu sisältö palvelininstanssin kuvaustekstin sijaan. Edellytyksenä on, että suosittu sisältö -ominaisuus on käytössä. form_challenge: current_password: Olet menossa suojatulle alueelle imports: diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index 294fc548bb..1d63fb631c 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -167,7 +167,7 @@ ko: defaults: autofollow: 초대를 통한 팔로우 avatar: 아바타 - bot: 이것은 봇 계정입니다 + bot: 이것은 자동화된 계정입니다 chosen_languages: 언어 필터링 confirm_new_password: 암호 다시 입력 confirm_password: 암호 다시 입력 @@ -187,7 +187,7 @@ ko: locked: 팔로우 요청 필요 max_uses: 사용 횟수 제한 new_password: 새로운 암호 입력 - note: 자기소개 + note: 소개 otp_attempt: 이중 인증 코드 password: 암호 phrase: 키워드 또는 문장 @@ -214,7 +214,7 @@ ko: setting_system_font_ui: 시스템의 기본 글꼴을 사용 setting_theme: 사이트 테마 setting_trends: 오늘의 유행 보이기 - setting_unfollow_modal: 언팔로우 전 언팔로우 확인 표시 + setting_unfollow_modal: 누군가를 언팔로우 할 때 확인란 표시하기 setting_use_blurhash: 숨겨진 미디어에 대해 그라디언트 표시 setting_use_pending_items: 느린 모드 severity: 심각도 diff --git a/config/locales/simple_form.my.yml b/config/locales/simple_form.my.yml index 8a1cefc94b..5f1624819f 100644 --- a/config/locales/simple_form.my.yml +++ b/config/locales/simple_form.my.yml @@ -2,40 +2,162 @@ my: simple_form: hints: + account_warning_preset: + text: URLs၊ hashtags နှင့် mentions များကဲ့သို့ ပို့စ်ကို သုံးနိုင်သည် + title: လက်ခံသူမှ မြင်နိုင်၊ မမြင်နိုင် ရွေးချယ်ခွင့် + admin_account_action: + include_statuses: အသုံးပြုသူသည် မည်သည့်ပို့စ်များမှာ စိစစ်ထားခြင်း သို့မဟုတ် သတိပေးထားခြင်းဖြစ်စေသည်ကို တွေ့မြင်နိုင်ပါသည် + send_email_notification: အသုံးပြုသူသည် ၎င်းတို့၏အကောင့်နှင့် ဖြစ်ပျက်ခဲ့သော ရှင်းလင်းချက်ကို လက်ခံရရှိမည်ဖြစ်သည် + text_html: Post Syntax ကို သုံးနိုင်သည်။ အချိန်ကုန်သက်သာစေရန်အတွက် ကြိုတင်သတိပေးချက်များ ထည့်နိုင်သည် + type_html: "%{acct} နှင့် ဘာလုပ်ရမည်ကို ရွေးပါ။" + types: + disable: အသုံးပြုသူကို ၄င်း၏အကောင့်အား သုံးစွဲခြင်းမှ ဟန့်တားပါ။ သို့သော် ၄င်းဖန်တီးထားသည့် အချက်အလက်များကို မဖျက်ပါ။ မဖျောက်ပါ။ + none: အခြားလုပ်ဆောင်ချက်တစ်ခုမှ မလုပ်ဘဲ အသုံးပြုသူထံ သတိပေးချက်ပေးပို့ရန် ၎င်းကို အသုံးပြုပါ။ + sensitive: ဤအသုံးပြုသူ၏ မီဒီယာပူးတွဲပါဖိုင်များအားလုံးကို သတိထားရသောမီဒီယာအဖြစ် သတ်မှတ်ရန် တိုက်တွန်းပါ။ + silence: စောင့်ကြည့်မထားသူများ၏ ပို့စ်များနှင့် အသိပေးချက်များကို ဖျောက်ထားနိုင်ပြီး အသုံးပြုသူအား အများမြင်မည့်ပို့စ် တင်ခြင်းကို တားမြစ်နိုင်သည်။ ဤအကောင့်နှင့်ပတ်သက်သည့် အစီရင်ခံစာအားလုံးကို ပိတ်ထားနိုင်သည်။ + suspend: ဤအကောင့်မှ သို့မဟုတ် ဤအကောင့်နှင့် အပြန်အလှန်တုံ့ပြန်မှုကို တားဆီးပြီး အကြောင်းအရာများကို ဖျက်ပါ။ ရက်ပေါင်း ၃၀ အတွင်း ပြန်ပြောင်းနိုင်သည်။ ဤအကောင့်နှင့်ပတ်သက်သည့် အစီရင်ခံစာအားလုံးကို ပိတ်ရန်။ + warning_preset_id: ကြိုတင်သတ်မှတ်မှုအဆုံးတွင် စိတ်ကြိုက်စာသားကို ထည့်နိုင်သည် + announcement: + all_day: အချိန်အပိုင်းအခြား ရက်စွဲများကိုသာ ပြသပါမည် + ends_at: ကြေညာချက်ထုတ်ပြန်ခြင်းကို ဤအချိန်တွင် အလိုအလျောက် ရပ်တန့်လိုက်ပါမည် + scheduled_at: ကြေညာချက်ချက်ချင်းထုတ်ပြန်ရန်အတွက် နေရာလွတ်ချန်ထားပါ + starts_at: သင့်ကြေညာချက်သည် အချိန်အပိုင်းအခြားတစ်ခုနှင့် ဆက်စပ်နိုင်ပါသည် + text: Post Syntax ကို သုံးနိုင်သည်။ အသုံးပြုသူ၏ဖန်သားပြင်တွင် ပေါ်လာမည့် ကြေညာချက်နေရာကို သတိထားပါ + appeal: + text: လုပ်ဆောင်ချက်တစ်ကြိမ်သာ အသုံးပြုနိုင်သည် defaults: + autofollow: ဖိတ်ကြားချက်မှတစ်ဆင့် အကောင့်ဖွင့်သူများမှာ သင့်ကို အလိုအလျောက်စောင့်ကြည့်မည်ဖြစ်ပါသည် + avatar: PNG၊ GIF သို့မဟုတ် JPG။ အများဆုံး %{size}။ %{dimensions}px သို့ လျှော့ချပါမည်။ + bot: အကောင့်သည် အဓိကအားဖြင့် အလိုအလျောက် လုပ်ဆောင်ချက်များ ဆောင်ရွက်နိုင်ပြီး စောင့်ကြည့်ခြင်းမပြုနိုင်ကြောင်း အခြားသူများအား အသိပေးပါ + context: စစ်ထုတ်သင့်သည့် အကြောင်းအရာ တစ်ခု သို့မဟုတ် များစွာ + current_password: လုံခြုံရေးအတွက် ကျေးဇူးပြုပြီး လက်ရှိအကောင့်၏ စကားဝှက်ကို ထည့်ပါ + current_username: အတည်ပြုရန်အတွက် လက်ရှိအကောင့်၏ အသုံးပြုသူအမည်ကို ရိုက်ထည့်ပါ + digest: အချိန်အတော်ကြာ အသုံးမပြုသည့်သည့်နောက်တွင်သာ ပေးပို့ပြီး အသုံးမပြုသည့်ကာလအတွင်း ကိုယ်ရေးကိုယ်တာစာများသာ လက်ခံရန် + discoverable: အကြံပြုချက်များ၊ လက်ရှိခေတ်စားနေသောပို့စ်များနှင့် အခြားအကြောင်းအရာများမှတစ်ဆင့် သင့်အကောင့်ကို တခြားသူများက တွေ့ရှိနိုင်စေရန် ခွင့်ပြုပါ။ + email: သင့်ထံ အတည်ပြုချက်အီးမေးလ်တစ်စောင် ပေးပို့ပါမည် + fields: သင့်ပရိုဖိုင်တွင် ၄ ခုအထိ ပြသထားနိုင်သည် + header: PNG၊ GIF သို့မဟုတ် JPG။ အများဆုံး %{size}။ %{dimensions}px သို့ လျှော့ချပါမည် + inbox_url: သင်အသုံးပြုလိုသော relay ၏ ရှေ့စာမျက်နှာမှ URL ကို ကူးယူပါ + irreversible: စစ်ထုတ်ခြင်းကိုဖယ်ရှားလိုက်ပါက စစ်ထုတ်ထားသော ပို့စ်များမှာ ပျောက်ကွယ်သွားပါမည် + locale: အသုံးပြုသူမှ လက်ရှိသုံးနေသည့်ဘာသာစကား၊ အီးမေးလ်များနှင့် ရရှိစေရန်ပေးပို့သည့် အသိပေးချက်များ + locked: စောင့်ကြည့်ရန်အတွက် တောင်းဆိုမှုများကို အတည်ပြုခြင်းဖြင့် စောင့်ကြည့်သူများကို ထိန်းချုပ်နိုင်သည် password: အနည်းဆုံး စာလုံး ၈ လုံး အသုံးပြုပါ။ + scopes: API အက်ပလီကေးရှင်းများကို ဝင်ရောက်ကြည့်ရှုခွင့်ပြုပါမည်။ ထိပ်တန်းအဆင့်နယ်ပယ်ကို ရွေးချယ်ထားပါက တစ်ခုချင်းစီရွေးချယ်ရန် မလိုအပ်တော့ပါ။ + setting_aggregate_reblogs: မကြာသေးခင်က Boost လုပ်ထားသောပို့စ်များအတွက် Boost အသစ်များကို မပြပါနှင့် (အသစ်ရရှိထားသော Boost များကိုသာ ပြသပါရန်) + setting_always_send_emails: Mastodon ကို လက်ရှိအသုံးပြုနေချိန်တွင် ပုံမှန်အားဖြင့် အီးမေးလ်အသိပေးချက်များကို ပေးပို့မည်မဟုတ်ပါ + setting_default_sensitive: သတိထားရသောမီဒီယာကို မူလအားဖြင့် ဖျောက်ထားနိုင်ပြီး ကလစ်တစ်ချက်နှိပ်ရုံဖြင့် ပြန်လည်ဖော်ပြနိုင်သည် + setting_display_media_default: သတိထားရသောမီဒီယာအဖြစ် သတ်မှတ်ထားမှုအား ဖျောက်ပါ setting_display_media_hide_all: မီဒီယာကို အမြဲတမ်းဖျောက်ထားပါ setting_display_media_show_all: မီဒီယာကို အမြဲတမ်းပြပါ setting_hide_network: သင်စောင့်ကြည့်မည့်သူများနှင့် သင့်ကိုစောင့်ကြည့်မည့်သူများကို သင့်ပရိုဖိုင်တွင် ဖျောက်ထားနိုင်ပါသည် setting_noindex: သင်၏ အများမြင်သည့်ပရိုဖိုင်နှင့် ပို့စ်စာမျက်နှာများကို အကျိုးသက်ရောက်သည် setting_show_application: ပို့စ်တင်ရန်အတွက် သင်အသုံးပြုသည့် အက်ပလီကေးရှင်းကို သင့်ပို့စ်များ၏ အသေးစိတ်ကြည့်ရှုမှုတွင် ပြသမည်ဖြစ်သည် + username: "%{domain} ရှိ သင့်အသုံးပြုသူအမည်မှာ တူညီ၍မရပါ" + whole_word: အဓိကစကားလုံး သို့မဟုတ် စကားစုသည် အက္ခရာဂဏန်းများသာဖြစ်ပါကစကားလုံးတစ်ခုလုံးနှင့် ကိုက်ညီမှသာ အသုံးပြုနိုင်မည်ဖြစ်သည် + domain_allow: + domain: ဤဒိုမိန်းသည် ဤဆာဗာမှ အချက်အလက်များကို ရယူနိုင်မည်ဖြစ်ပြီး ဝင်လာသောအချက်အလက်များကို စီမံဆောင်ရွက်ပေးပြီး သိမ်းဆည်းသွားမည်ဖြစ်သည် + email_domain_block: + domain: "၎င်းမှာ အီးမေးလ်လိပ်စာ သို့မဟုတ် အသုံးပြုသည့် MX မှတ်တမ်းတွင် ပေါ်လာသည့် ဒိုမိန်းအမည် ဖြစ်နိုင်သည်။ အကောင့်ဖွင့်ပြီးပါက စစ်ဆေးနိုင်မည်ဖြစ်သည်။" + with_dns_records: ပေးထားသော ဒိုမိန်း၏ DNS မှတ်တမ်းများကို ဖြေရှင်းရန် ကြိုးပမ်းမှု ပြုလုပ်မည်ဖြစ်ပြီး ရလဒ်များကိုလည်း ပိတ်ဆို့သွားမည်ဖြစ်သည်။ + featured_tag: + name: ဤသည်မှာ သင်မကြာသေးမီက အသုံးပြုခဲ့သော hashtag အချို့ဖြစ်သည် - + filters: + action: ပို့စ်တစ်ခုသည် စစ်ထုတ်မှုနှင့် ကိုက်ညီချိန်တွင် မည်သည့်လုပ်ဆောင်ချက် ဆောင်ရွက်မည်ကို ရွေးချယ်ပါ + actions: + hide: စစ်ထုတ်ထားသော အကြောင်းအရာကို လုံးဝဖျောက်ထားပြီး မရှိသကဲ့သို့ ပြပါ + warn: စစ်ထုတ်မှုခေါင်းစဉ်ကိုဖော်ပြသည့်သတိပေးချက်နောက်တွင် စစ်ထုတ်ထားသောအကြောင်းအရာကို ဖျောက်ထားပါ + form_admin_settings: + activity_api_enabled: အပတ်စဉ် စာရင်းများတွင် ဒေသတွင်းတင်ထားသောပို့စ်များ၊ လက်ရှိအသုံးပြုသူများနှင့် စာရင်းသွင်းမှုအသစ်များ + backups_retention_period: သတ်မှတ်ထားသော ရက်အရေအတွက်အလိုက် အသုံးပြုသူမှတ်တမ်းများကို သိမ်းဆည်းပါ။ + bootstrap_timeline_accounts: ဤအကောင့်များကို အသုံးပြုသူအသစ်များ၏ စောင့်ကြည့်မှု အကြံပြုချက်များ၏ထိပ်ဆုံးတွင် ပင်ချိတ်ထားပါမည်။ + closed_registrations_message: အကောင့်ဖွင့်ခြင်းများကို ပိတ်ထားသည့်အခါတွင် ပြသထားသည် + content_cache_retention_period: သတ်မှတ်ထားသောရက်များပြီးနောက် အခြားဆာဗာများမှ ပို့စ်များကို ဖျက်လိုက်ပါမည်။ ပြန်လည်ပြင်ဆင်၍မရပါ။ + custom_css: Mastodon ဝဘ်ဗားရှင်းတွင် စိတ်ကြိုက်စတိုင်များကို အသုံးပြုနိုင်ပါသည်။ + mascot: အဆင့်မြင့် ဝဘ်ပုံစံတွင်တွင် ရုပ်ပုံဖြင့်ဖော်ပြထားသည်။ + media_cache_retention_period: သတ်မှတ်ထားသောရက်များပြီးနောက် ဒေါင်းလုဒ်လုပ်ထားသော မီဒီယာဖိုင်များကို ဖျက်လိုက်ပါမည်။ တောင်းဆိုပါက ပြန်လည်ဒေါင်းလုဒ် လုပ်ခွင့်ရှိသည်။ + profile_directory: ပရိုဖိုင်လမ်းညွှန်တွင် ရှာဖွေ‌နိုင်သည့်အသုံးပြုသူအားလုံးကို စာရင်းပြုစုထားသည်။ + require_invite_text: အကောင့်ဖွင့်ရာတွင် လူကိုယ်တိုင်ခွင့်ပြုချက်လိုအပ်သောအခါ “ဘာကြောင့်ပါဝင်ချင်သလဲ” ဟုလုပ်ပါ။ စိတ်ကြိုက်ရွေးချယ်မည့်အစား စာသားထည့်သွင်းရန်မဖြစ်မနေထည့်သွင်းပါ။ + site_contact_email: ဥပဒေရေးရာ သို့မဟုတ် အကူအညီ စုံစမ်းမေးမြန်းရန် လူများက သင့်ထံ မည်သို့ဆက်သွယ်နိုင်မည်နည်း။ + site_contact_username: Mastodon တွင် အခြားသူများက သင့်ကို မည်သို့သိရှိနိုင်မည်နည်း။ + site_extended_description: ဝင်ရောက်ကြည့်ရှုသူများနှင့် အသုံးပြုသူများအတွက် အသုံးဝင်မည့် နောက်ထပ်အချက်အလက်များကို Markdown စာကြောင်းများဖြင့် ရေးသားနိုင်သည်။ + site_short_description: သင်၏ဆာဗာအား သိသားထင်ရှားစွာ အမှတ်အသားပြုနိုင်မည့် အကျဉ်းရုံးဖော်ပြချက်။ မည်သူမှ ဆာဗာအား ထိန်းကြောင်းလည်ပတ်နေသည်၊ မည်သူ့အတွက် ဖြစ်သည်? + site_terms: သင့်ကိုယ်ပိုင် ကိုယ်ရေးအချက်အလက်မူဝါဒကို အသုံးပြုပါ သို့မဟုတ် မူလသတ်မှတ်ချက်ကို အသုံးပြုရန်အတွက် ကွက်လပ်ထားပါ။ Markdown စာများဖြင့် ရေးသားနိုင်သည်။ + site_title: ဒိုမိန်းအမည်မှတပါး သင့်ဆာဗာကို လူများက မည်သို့သိရှိနိုင်မည်နည်း။ + status_page_url: ပြတ်တောက်နေစဉ်အတွင်း လူများက ဤဆာဗာအခြေအနေကို မြင်နိုင်မည့် စာမျက်နှာ URL + theme: အကောင့်မှထွက်ပြီး အသုံးပြုသူအသစ်များနှင့် ဝင်ကြည့်မည့်သူများအတွက် မြင်ရမည့်ပုံစံ။ + thumbnail: သင့်ဆာဗာအချက်အလက်နှင့်အတူ အကြမ်းဖျင်းအားဖြင့် ၂:၁ ဖြင့် ပြသထားသောပုံတစ်ပုံ။ + timeline_preview: အကောင့်မှထွက်ထားသူများသည် ဆာဗာပေါ်ရှိ လတ်တလော အများမြင်ပို့စ်များကို ရှာဖွေကြည့်ရှုနိုင်မည်ဖြစ်သည်။ + trendable_by_default: ခေတ်စားနေသော အကြောင်းအရာများ၏ ကိုယ်တိုင်သုံးသပ်ချက်ကို ကျော်ပါ။ နောက်ပိုင်းတွင် အချက်အလက်တစ်ခုချင်းစီကို ခေတ်စားနေသောအကြောင်းအရာများကဏ္ဍမှ ဖယ်ရှားနိုင်ပါသေးသည်။ + trends: လက်ရှိခေတ်စားနေသာပို့စ်များ၊ hashtag များနှင့် သတင်းဇာတ်လမ်းများကို သင့်ဆာဗာပေါ်တွင် တွေ့မြင်နိုင်ပါမည်။ + trends_as_landing_page: ဤဆာဗာဖော်ပြချက်အစား အကောင့်မှ ထွက်ထားသူများနှင့် ဝင်ရောက်ကြည့်ရှုသူများအတွက် ခေတ်စားနေသော အကြောင်းအရာများကို ပြသပါ။ ခေတ်စားနေသောပို့စ်များကို ဖွင့်ထားရန် လိုအပ်သည်။ + form_challenge: + current_password: သင်သည် လုံခြုံသောနေရာသို့ ဝင်ရောက်နေပါသည် imports: data: အခြား Mastodon ဆာဗာမှ CSV ဖိုင်ကို ပို့ထားသည် invite_request: text: "၎င်းသည် သင့်အက်ပလီကေးရှင်းကို ပြန်လည်သုံးသပ်ရန်အတွက် ကူညီပေးနိုင်ပါသည်" ip_block: + comment: ဤစည်းမျဉ်း ဘာကြောင့်ထည့်ခဲ့သည်အား သတိရရန်။ + expires_in: အိုင်ပီလိပ်စာများမှာ အကန့်အသတ်ရှိသည့် အရင်းအမြစ်ဖြစ်သည်။ တခါတရံ လိပ်စာများအား မျှဝေသုံးစွဲကြသည်။ အခါအားလျှော်စွာ လက်လွှဲသုံးစွဲမှုများလည်း ရှီတတ်သည်။ ထို့အတွက်ကြောင့် အကန့်အသတ်မဲ့ အိုင်ပီကန့်သတ်ထိန်းချုပ်မှု လုပ်ဆောင်ခြင်းကို အားမပေးပါ။ + ip: IPv4 သို့မဟုတ် IPv6 လိပ်စာကို ထည့်ပါ။ CIDR syntax ကို အသုံးပြု၍ အတိုင်းအတာတစ်ခုလုံးကို ပိတ်ဆို့နိုင်သည်။ ကိုယ်တိုင် လော့ခ်မချမိစေရန် သတိထားပါ။ severities: + no_access: အရင်းအမြစ်များအားလုံးသို့ ဝင်ရောက်ခွင့်ကို ပိတ်ပါ + sign_up_block: အကောင့်အသစ်များ မဖွင့်နိုင်တော့ပါ sign_up_requires_approval: အကောင့်အသစ်များသည် သင့်ခွင့်ပြုချက်လိုအပ်ပါသည် + severity: ဤ IP မှ တောင်းဆိုမှုများဖြင့် ဖြစ်ပေါ်လာမည့်အရာ ရွေးချယ်ပါ + rule: + text: ဤဆာဗာအသုံးပြုသူများအတွက် စည်းမျဉ်း သို့မဟုတ် လိုအပ်ချက် ဖော်ပြပါ။ လိုရင်းတိုရှင်းဖြစ်ပါစေ။ sessions: otp: သင့်ဖုန်းအက်ပ်မှထုတ်ပေးသောနှစ်ဆင့်ခံလုံခြုံရေးကုဒ်ကို ထည့်ပါ သို့မဟုတ် ပြန်လည်ရယူရေးကုဒ်များထဲမှ တစ်ခုကို အသုံးပြုပါ - + webauthn: USB ကီးဖြစ်ပါက ထည့်သွင်းပါ။ လိုအပ်ပါက နှိပ်ပါ။ + tag: + name: ဥပမာအားဖြင့် စာလုံးများကို ပိုမိုဖတ်ရှုနိုင်စေရန်မှာ သင်သာ ပြောင်းလဲနိုင်သည်။ + user: + chosen_languages: အမှန်ခြစ် ရွေးချယ်ထားသော ဘာသာစကားများဖြင့်သာ ပို့စ်များကို အများမြင်စာမျက်နှာတွင် ပြသပါမည် + role: အသုံးပြုသူ၏ ခွင့်ပြုချက်ကဏ္ဍကို ထိန်းချုပ်ထားသည် + user_role: + color: hex ပုံစံ RGB အဖြစ် UI တစ်လျှောက်လုံး အခန်းကဏ္ဍအတွက် အသုံးပြုရမည့်အရောင် + highlighted: ယင်းက အခန်းကဏ္ဍကို အများမြင်အောင် ဖွင့်ပေးထားသည်။ + name: အကယ်၍ အခန်းကဏ္ဍကို သင်္ကေတတစ်ခုအဖြစ်ပြသရန် သတ်မှတ်ထားပါက အခန်းကဏ္ဍကို အများမြင်မည့်အမည် + permissions_as_keys: ဤအခန်းကဏ္ဍဖြင့် အသုံးပြုသူများသာ အသုံးပြုခွင့်ရှိပါမည်... + position: အခန်းကဏ္ဍအဆင့်မြင့်သူအနေဖြင့် အချို့သောအခြေအနေများတွင် ပဋိပက္ခများကို ဖြေရှင်းနိုင်သည်။ အချို့လုပ်ဆောင်ချက်များမှာ အဆင့်နိမ့်အခန်းကဏ္ဍများတွင်သာ လုပ်ဆောင်နိုင်သည်။ + webhook: + events: ပို့မည့်အကြောင်းအရာများကို ရွေးချယ်ပါ + url: အကြောင်းအရာများကို ဘယ်ကို ပို့မလဲ။ labels: account: fields: + name: အညွှန်း value: အကြောင်းအရာ account_alias: acct: အကောင့်ဟောင်းကို ကိုင်တွယ်ပါ။ account_migration: acct: အကောင့်သစ်ကို ကိုင်တွယ်ပါ။ account_warning_preset: + text: ကြိုရေးထားသောစာ title: ခေါင်းစဥ် admin_account_action: + include_statuses: အီးမေးလ်တွင် တိုင်ကြားထားသောပို့စ်များကို ထည့်သွင်းပါ + send_email_notification: အသုံးပြုသူတစ်ယောက်တွင် အီးမေးလ်တစ်ခုသာ အသုံးပြုရပါမည် + text: စိတ်ကြိုက်သတိပေးချက် type: လုပ်ဆောင်ချက် types: + disable: ရပ်တန့် none: သတိပေးချက်ပေးပို့ပါ + sensitive: သတိထားရသော silence: ကန့်သတ် + suspend: ရပ်ဆိုင်းရန် + warning_preset_id: ကြိုတင်သတိပေးချက်ကို အသုံးပြုပါ announcement: + all_day: တစ်နေ့တာလုပ်ငန်းစဉ် + ends_at: အကြောင်းအရာ၏အဆုံး + scheduled_at: ထုတ်ပြန်မည့်အချိန် + starts_at: အကြောင်းအရာ၏အစ text: ကြေညာချက် + appeal: + text: ဆုံးဖြတ်ချက် ပြောင်းပြန်ချသင့်သောအကြောင်းရင်းအား ရှင်းပြပါ။ defaults: + autofollow: သင့်အကောင့်စောင့်ကြည့်ရန် ဖိတ်ခေါ်ပါ avatar: ကိုယ်စားပြုရုပ်ပုံ bot: ဤသည်မှာ ဘော့တ်အကောင့်တစ်ခုဖြစ်သည်။ chosen_languages: ဘာသာစကားများကို စစ်ထုတ်ထားခြင်း @@ -44,42 +166,92 @@ my: context: အကြောင်းအရာများကို စစ်ထုတ်ပါ။ current_password: လက်ရှိစကားဝှက် data: အချက်အလက် + discoverable: အကောင့်ကို အခြားသူများအား အကြံပြုပါ display_name: ဖော်ပြမည့်အမည် email: အီးမေးလ်လိပ်စာ + expires_in: သက်တမ်းကုန်ဆုံးမည့်ရက် + fields: ပရိုဖိုင်မီတာဒေတာ header: မျက်နှာဖုံးပုံ honeypot: "%{label} (မဖြည့်ပါနှင့်)" + inbox_url: ထပ်ဆင့်ဝင်စာ၏ URL + irreversible: ဖျောက်မယ့်အစား လွှတ်လိုက်ပါ။ + locale: ဘာသာစကား + locked: စောင့်ကြည့်တောင်းဆိုမှုများ လိုအပ်သည် + max_uses: အများဆုံးအသုံးပြုမှုအရေအတွက် new_password: စကားဝှက်အသစ် note: ကိုယ်ရေးအကျဉ်း otp_attempt: နှစ်ဆင့်ခံလုံခြုံရေးကုဒ် password: စကားဝှက် phrase: အဓိကစကားလုံး သို့မဟုတ် စကားစု + setting_advanced_layout: အဆင့်မြှင့်ထားသည့်ဝဘ်ကို ဖွင့်ပါ + setting_aggregate_reblogs: စာမျက်နှာများရှိ အဖွဲ့လိုက် Boost များ setting_always_send_emails: အီးမေးလ်သတိပေးချက်များကို အမြဲပို့ပါ setting_auto_play_gif: ကာတွန်း GIF များကို အလိုအလျောက်ဖွင့်ပါ + setting_boost_modal: Boost မလုပ်မီ အတည်ပြုချက်ပြပါ + setting_crop_images: အကျယ်မချဲ့ထားသော စာစုများတွင် ပုံများကို ၁၆း၉ အရွယ် ဖြတ်တောက်ပါ။ + setting_default_language: ပို့စ်တင်မည့်ဘာသာစကား + setting_default_privacy: ပို့စ်ကို ဘယ်သူမြင်နိုင်မလဲ + setting_default_sensitive: သတိထားရသောမီဒီယာအဖြစ် အမြဲအမှတ်အသားပြုပါ + setting_delete_modal: ပို့စ်တစ်ခုမဖျက်မီ အတည်ပြုချက်ပြပါ။ + setting_disable_swiping: ပွတ်ဆွဲခြင်းများကို ပိတ်ပါ setting_display_media: မီဒီယာဖော်ပြမှု + setting_display_media_default: မူလသတ်မှတ်ချက် setting_display_media_hide_all: အားလုံးကို ဖျောက်ပါ setting_display_media_show_all: အားလုံးပြရန် + setting_expand_spoilers: အကြောင်းအရာသတိပေးချက်များဖြင့် အမှတ်အသားပြုထားသော ပို့စ်များကို အမြဲချဲ့ပါ + setting_hide_network: သင့် Social Graph ကို ဖျောက်ထားပါ + setting_noindex: ရှာဖွေရေးအညွှန်းမှ ဖယ်ထုတ်ပါ + setting_reduce_motion: ကာတွန်းများတွင် လှုပ်ရှားမှုကို လျှော့ချပါ + setting_show_application: ပို့စ်များ ပေးပို့ရာတွင် အသုံးပြုသည့် အက်ပလီကေးရှင်း setting_system_font_ui: စနစ်ရှိ နဂိုမူလ စာလုံးပုံစံကို အသုံးပြုပါ + setting_theme: ဆိုက်အပြင်အဆင် setting_trends: ယနေ့ ရေပန်းစားသည်များကို ပြပါ setting_unfollow_modal: တစ်စုံတစ်ဦးကို မစောင့်ကြည့်မီ အတည်ပြုချက် ဒိုင်ယာလော့ခ်ကို ပြပါ + setting_use_blurhash: ဖုံးကွယ်ထားသော ရုပ်ပုံ၊ဗီဒီယိုများအား အရောင်စုံ ရောင်ပြေးအနေနှင့် ပြသပါ။ + setting_use_pending_items: အနှေးပြကွက် + severity: ပြင်းထန်မှု sign_in_token_attempt: လုံခြုံရေးကုဒ် title: ခေါင်းစဥ် + type: ထည့်သွင်းမှုအမျိုးအစား username: အသုံးပြုသူအမည် username_or_email: အသုံးပြုသူအမည် သို့မဟုတ် အီးမေးလ် + whole_word: စကားလုံးဖြင့်သာ + email_domain_block: + with_dns_records: ဒိုမိန်း၏ MX မှတ်တမ်းများနှင့် IP များ ထည့်သွင်းပါ featured_tag: name: Hashtag + filters: + actions: + hide: လုံးဝဖျောက်ထားပါ + warn: သတိပေးချက်ဖြင့် ဖျောက်ပါ form_admin_settings: + activity_api_enabled: API ရှိ အသုံးပြုသူလုပ်ဆောင်ချက်စာရင်းများကို ထုတ်ပြန်ပါ + backups_retention_period: အသုံးပြုသူ၏ မှတ်တမ်းကာလ + bootstrap_timeline_accounts: ဤအကောင့်များကို အသုံးပြုသူအသစ်များအတွက် အကြံပြုပေးပါ + closed_registrations_message: အကောင့်ဖွင့်ခြင်းများ မရတော့သောအခါ စိတ်ကြိုက်မက်ဆေ့ချ်ပို့ခြင်း + content_cache_retention_period: အကြောင်းအရာ ကက်ရှ်ထိန်းသိမ်းသည့်ကာလ custom_css: စိတ်ကြိုက်ပြုလုပ်ထားသော CSS mascot: စိတ်ကြိုက်ပြုလုပ်ထားသော mascot (legacy) + media_cache_retention_period: မီဒီယာကက်ရှ် ထိန်းသိမ်းသည့်ကာလ + peers_api_enabled: API တွင် ရှာဖွေတွေ့ရှိထားသော ဆာဗာများစာရင်းကို ထုတ်ပြန်ပါ + profile_directory: ပရိုဖိုင်လမ်းညွှန်ကို ဖွင့်ပါ registrations_mode: ဘယ်သူတွေ အကောင့်ဖွင့်နိုင်မလဲ require_invite_text: ပါဝင်ရန် အကြောင်းပြချက်တစ်ခု လိုအပ်ပါသည် show_domain_blocks: ဒိုမိန်းပိတ်ပင်ထားမှုများကိုပြရန် show_domain_blocks_rationale: ဒိုမိန်းများကို ဘာကြောင့် ပိတ်ဆို့ထားရကြောင်း ပြရန် site_contact_email: ဆက်သွယ်ရမည့် အီးမေးလ် site_contact_username: ဆက်သွယ်ရမည့် အသုံးပြုသူအမည် + site_extended_description: တိုးချဲ့ဖော်ပြချက် site_short_description: ဆာဗာဖော်ပြချက် site_terms: ကိုယ်ရေးအချက်အလက်မူဝါဒ site_title: ဆာဗာအမည် + status_page_url: အခြေအနေပြစာမျက်နှာ URL + theme: မူလသတ်မှတ်ထားသည့် အပြင်အဆင် thumbnail: ဆာဗာ ပုံသေး + timeline_preview: အများမြင်စာမျက်နှာများသို့ အထောက်အထားမရှိဘဲ ဝင်ရောက်ခွင့်ပြုပါ + trendable_by_default: ကြိုမသုံးသပ်ဘဲ ခေတ်စားနေသောအကြောင်းအရာများကို ခွင့်ပြုပါ + trends: လက်ရှိခေတ်စားနေမှုများကိုပြပါ + trends_as_landing_page: ခေတ်စားနေသောပို့စ်များကို landing စာမျက်နှာအဖြစ် အသုံးပြုပါ interactions: must_be_follower: စောင့်ကြည့်မနေသူများထံမှ အသိပေးချက်များကို ပိတ်ပါ must_be_following: သင် စောင့်ကြည့်မထားသူများထံမှ အသိပေးချက်များကို ပိတ်ပါ @@ -92,26 +264,42 @@ my: comment: မှတ်ချက် ip: IP severities: + no_access: ဝင်ရောက်ခွင့်ကို ပိတ်ပါ sign_up_block: အကောင့်ဖွင့်ခြင်းများကို ပိတ်ပါ sign_up_requires_approval: အကောင့်ဖွင့်ခြင်းများကို ကန့်သတ်ပါ severity: စည်းမျဉ်း notification_emails: + appeal: တစ်စုံတစ်ယောက်က စိစစ်ဆုံးဖြတ်ခြင်းကို တောင်းခံနေသည် + digest: အီးမေးလ်အကျဉ်းချုပ်များပို့ရန် favourite: တစ်စုံတစ်ဦးက သင့်ပို့စ်ကို နှစ်သက်ခဲ့သည်။ follow: တစ်စုံတစ်ဦးက သင့်ကို စောင့်ကြည့်ခဲ့သည် follow_request: တစ်စုံတစ်ဦးက သင့်ကို စောင့်ကြည့်ရန် တောင်းဆိုခဲ့သည် mention: တစ်စုံတစ်ဦးက သင့်ကို ဖော်ပြခဲ့သည် pending_account: အကောင့်အသစ်ကို ပြန်လည်သုံးသပ်ရန် လိုအပ်သည် + reblog: တစ်ယောက်က သင့်ပို့စ်ကို Boost လုပ်ခဲ့သည် + report: အစီရင်ခံစာအသစ် တင်သွင်းထားသည် + trending_tag: လက်ရှိခေတ်စားနေသောပို့စ်များကို ပြန်လည်သုံးသပ်ရန် လိုသည် rule: text: စည်းမျဉ်း tag: + listable: ရှာဖွေမှုများနှင့် အကြံပြုချက်များတွင် ဤ hashtag ပေါ်လာစေရန် ခွင့်ပြုပါ name: Hashtag + trendable: ခေတ်စားနေသောအကြောင်းအရာများအောက်တွင် ဤ hashtag ပေါ်လာစေရန် ခွင့်ပြုပါ + usable: ပို့စ်များကို ဤ hashtag သုံးခွင့်ပြုပါ user: role: အခန်းကဏ္ဍ user_role: + color: သင်္ကေတအရောင် + highlighted: အသုံးပြုသူပရိုဖိုင်များတွင် သင်္ကေတအဖြစ် အခန်းကဏ္ဍကို ပြသပါ name: အမည် permissions_as_keys: ခွင့်ပြုချက်များ position: ဦးစားပေး + webhook: + events: အကြောင်းအရာများကဏ္ဍကို ဖွင့်ထားသည် + url: URL ဆုံးမှတ် 'no': မလုပ်ပါ + not_recommended: ထောက်ခံထားမှုမရှိ + recommended: ထောက်ခံထားပြီး required: mark: "*" text: လိုအပ်သော diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index 44e9e78197..8592857d4c 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -263,7 +263,7 @@ nl: interactions: must_be_follower: Meldingen van mensen die jou niet volgen blokkeren must_be_following: Meldingen van mensen die jij niet volgt blokkeren - must_be_following_dm: Directe berichten van mensen die jij niet volgt blokkeren + must_be_following_dm: Privéberichten van mensen die jij niet volgt blokkeren invite: comment: Opmerking invite_request: diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml index 92578cfd73..bf46305eea 100644 --- a/config/locales/simple_form.pt-BR.yml +++ b/config/locales/simple_form.pt-BR.yml @@ -91,11 +91,13 @@ pt-BR: site_short_description: Uma curta descrição para ajudar unicamente a identificar a sua instância. Quem está o administrando, e para quem é direcionado? site_terms: Use a sua própria política de privacidade ou deixe em branco para usar o padrão. Pode ser estruturado com o formato Markdown. site_title: Como as pessoas podem se referir ao seu servidor além do nome do domínio. + status_page_url: URL de uma página onde as pessoas podem ver o status deste servidor durante uma interrupção theme: Tema que visitantes e novos usuários veem. thumbnail: Uma imagem de aproximadamente 2:1 exibida ao lado da informação de sua instância. timeline_preview: Visitantes conseguirão navegar pelas postagens públicas mais recentes disponíveis na instância. trendable_by_default: Pular a revisão manual do conteúdo em tendência. Itens individuais ainda poderão ser removidos das tendências após a sua exibição. trends: Tendências mostram quais publicações, hashtags e notícias estão ganhando destaque na sua instância. + trends_as_landing_page: Mostrar conteúdo de tendências para usuários deslogados e visitantes em vez de uma descrição deste servidor. Requer que as tendências sejam ativadas. form_challenge: current_password: Você está entrando em uma área segura imports: @@ -257,6 +259,7 @@ pt-BR: timeline_preview: Permitir acesso não autenticado às linhas do tempo públicas trendable_by_default: Permitir tendências sem revisão prévia trends: Habilitar tendências + trends_as_landing_page: Usar tendências como página inicial interactions: must_be_follower: Bloquear notificações de não-seguidores must_be_following: Bloquear notificações de não-seguidos diff --git a/config/locales/simple_form.sr-Latn.yml b/config/locales/simple_form.sr-Latn.yml index 2f45b63576..e987145c13 100644 --- a/config/locales/simple_form.sr-Latn.yml +++ b/config/locales/simple_form.sr-Latn.yml @@ -3,122 +3,128 @@ sr-Latn: simple_form: hints: account_alias: - acct: Navedi korisničko_ime@domen naloga sa kojeg želiš da pređeš + acct: Navedite korisničko_ime@domen naloga sa kojeg želite da se preselite account_migration: - acct: Navedi korisničko_ime@domen naloga na koji želiš da pređeš + acct: Navedite korisničko_ime@domen naloga na koji želite da se preselite account_warning_preset: - text: Možete koristiti sintaksu truba, kao što su npr. URL-ova, tarabe i pominjanja + text: Možete koristiti sintaksu objava, kao što su URL adrese, heš oznake i pominjanja title: Opciono. Nije vidljivo primaocu admin_account_action: - include_statuses: Korisnik će videti koje su objave prouzrokovale moderiranje ili upozorenje - send_email_notification: Korisnik će dobiti objašnjenje toga šta mu se desilo sa naloga - text_html: Opcionalno. Možete koristiti sintaksu truba. Možete dodati upozoravajuća prepodešavanje da sačuvate vreme + include_statuses: Korisnik će videti koje su objave prouzrokovale moderacijsku radnju ili upozorenje + send_email_notification: Korisnik će dobiti objašnjenje toga šta mu se desilo sa nalogom + text_html: Opcionalno. Možete koristiti sintaksu objava. Možete dodati unapred određene postavke upozorenja za uštedu vremena type_html: Izaberite šta da radite sa %{acct} types: - disable: Spreči korisnika da koristi svoj nalog, ali nemoj brisati ili sakrivati njegov sadržaj. - none: Koristi ovo da pošalješ upozorenje korisniku, bez pokretanja bilo koje druge akcije. + disable: Sprečava korisnika da koristi svoj nalog, ali ne briše niti sakriva njegove sadržaje. + none: Koristite ovo da pošaljete upozorenje korisniku bez pokretanja bilo koje druge radnje. sensitive: Učini da svi medijski prilozi ovog korisnika prisilno budu označeni kao osetljivi. + silence: Sprečava korisnika da pravi javne objave, sakriva njegove objave i obaveštenja od ljudi koji ga ne prate. Zatvara sve prijave podnete protiv ovog naloga. + suspend: Sprečava svu interakciju od ovog naloga i ka ovom nalogu i briše njegov sadržaj. Opozivo u roku od 30 dana. Zatvara sve prijave podnete protiv ovog naloga. warning_preset_id: Opcionalno. Možete i dalje dodati prilagođeni tekst na kraj preseta announcement: - all_day: Biće prikazani samo datumi vremenskog opsega koji su označeni + all_day: Kada je ova opcija označena, samo datumi iz vremenskog opsega će biti prikazani ends_at: Opciono. Objava će biti automatski opozvana u ovom trenutku - scheduled_at: Ostavi prazno da bi najava bila odmah objavljena + scheduled_at: Ostavite prazno da biste odmah objavili obaveštenje starts_at: Opciono. U slučaju da je najava vezana za određeni vremenski raspon - text: Možeš koristiti post sintaksu. Vodi računa o prostoru koji će objava zauzimati na ekranu korisnika + text: Možete koristiti sintaksu objava. Molimo Vas vodite računa o prostoru koji će objava zauzimati na ekranu korisnika appeal: - text: Na brisanje se možeš žaliti samo jednom + text: Možete podneti samo jednu žalbu na upisan prestup defaults: autofollow: Osobe koje se prijave kroz pozivnice će vas automatski zapratiti - avatar: PNG, GIF ili JPG. Najviše %{size}. Biće smanjena na %{dimensions}px - bot: Ovaj nalog uglavnom vrši automatizovane radnje i možda se ne nadgleda + avatar: PNG, GIF ili JPG. Najviše %{size}. Biće smanjeno na %{dimensions}px + bot: Daje drugima do znanja da ovaj nalog uglavnom vrši automatizovane radnje i možda se ne nadgleda context: Jedan ili više konteksta u kojima treba da se primeni filter - current_password: Unesi lozinku tekućeg naloga iz bezbednosnih razloga - current_username: Unesi korisničko ime tekućeg naloga za potvrdu - digest: Poslato posle dužeg perioda neaktivnosti sa pregledom svih bitnih stvari koje ste dobili dok ste bili odsutni - discoverable: Dozvoli nepoznatim korisnicima da otkriju tvoj nalog putem preporuka, trendova i drugih funkcija - email: Biće vam poslata e-pošta sa potvrdom - fields: Možete imati do 4 stavke prikazane kao tabela na vašem nalogu - header: PNG, GIF ili JPG. Najviše %{size}. Biće smanjena na %{dimensions}px + current_password: Iz bezbednosnih razloga molimo Vas unesite lozinku trenutnog naloga + current_username: Da biste potvrdili, Molimo Vas unesite korisničko ime trenutno aktivnog naloga + digest: Šalje se samo posle dužeg perioda neaktivnosti i samo u slučaju da ste primili jednu ili više ličnih poruka tokom Vašeg odsustva + discoverable: Dozvolite nepoznatim korisnicima da otkriju Vaš nalog putem preporuka, trendova i drugih funkcija + email: Biće Vam poslat mejl sa potvrdom + fields: Možete imati do 4 stavke prikazane kao tabela na svom profilu + header: PNG, GIF ili JPG. Najviše %{size}. Biće smanjeno na %{dimensions}px inbox_url: Kopirajte URL sa naslovne strane releja koji želite koristiti - irreversible: Filtrirane trube će nestati nepovratno, čak i ako je filter kasnije uklonjen - locale: Jezik korisničkog interfejsa, e-pošte i mobilnih obaveštenja - locked: Zahteva da pojedinačno odobrite pratioce + irreversible: Filtrirane obajve će nestati nepovratno, čak i ako je filter kasnije uklonjen + locale: Jezik korisničkog okruženja, e-pošte i mobilnih obaveštenja + locked: Kontrolišite ko može da Vas prati tako što ćete pojedinačno odobravati zahteve za praćenje password: Koristite najmanje 8 znakova - phrase: Biće uparena bez obzira na veliko ili malo slovo u tekstu ili upozorenja o sadržaju trube - scopes: Kojim API-jima će aplikacija dozvoliti pristup. Ako izaberete opseg najvišeg nivoa, ne morate odabrati pojedinačne. - setting_aggregate_reblogs: Ne pokazuj nova deljenja za trube koje su nedavno podeljene (utiče samo na nedavno primljena deljenja) - setting_always_send_emails: Obaveštenja e-poštom se po pravilu neće slati kada aktivno koristiš Mastodon + phrase: Biće uparena bez obzira na veliko ili malo slovo u tekstu ili upozorenja o sadržaju objave + scopes: Kojim API-jima će aplikacija imati pristup. Ako izaberete opseg najvišeg nivoa, ne morate odabrati pojedinačne. + setting_aggregate_reblogs: Ne prikazuj nova podržavanja za objave koje su nedavno podržane (utiče samo na nedavno primljena podržavanja) + setting_always_send_emails: Obaveštenja e-poštom se po pravilu neće slati kada aktivno koristite Mastodon setting_default_sensitive: Osetljivi mediji su podrazumevano skriveni i mogu se otkriti klikom setting_display_media_default: Sakrij medije označene kao osetljive setting_display_media_hide_all: Uvek sakrij sve medije setting_display_media_show_all: Uvek prikaži medije označene kao osetljive - setting_hide_network: Koga pratite i ko vas prati neće biti prikazano na vašem nalogu - setting_noindex: Utiče na Vaš javni nalog i statusne strane - setting_show_application: Aplikacija koju koristiš za objavljivanje biće prikazana u detaljnom prikazu tvojih objava - setting_use_blurhash: Gradijent se zasniva na bojama skrivenih vizuelnih prikaza, ali prikriva sve detalje - setting_use_pending_items: Sakrij ažuriranja vremenske ose iza klika umesto automatskog pomeranja izvora objava + setting_hide_network: Koga pratite i ko Vas prati neće biti prikazano na Vašem profilu + setting_noindex: Utiče na Vaš javni profil i stranice sa objavama + setting_show_application: Aplikacija koju koristite za objavljivanje će biti prikazana u detaljnom prikazu vaših objava + setting_use_blurhash: Gradijenti se formiraju na osnovu bojâ skrivenih slika i zamućuju prikaz, prikrivajući detalje + setting_use_pending_items: Sakriva ažuriranja vremenske linije iza klika umesto automatskog ažuriranja i pomeranja vremenske linije username: Vaš nadimak će biti jedinstven na %{domain} - whole_word: Kada je ključna reč ili fraza isključivo alfanumerička, biće primenjena samo ako se podudara sa celom reči + whole_word: Kada je ključna reč ili fraza isključivo alfanumerička, biće primenjena samo ako se podudara sa celom rečju domain_allow: domain: Ovaj domen će moći da preuzima podatke sa ovog servera i dolazni podaci sa njega će se obrađivati i čuvati email_domain_block: domain: Ovo može biti ime domena koje se pojavljuje u adresi e-pošte ili MX zapisa koji koristi. Oni će biti provereni prilikom registracije. with_dns_records: Biće učinjen pokušaj da se razreše DNS zapisi datog domena i rezultati će takođe biti blokirani featured_tag: - name: 'Evo nekih od heš oznaka koje ste nedavno koristili:' + name: 'Evo nekih od heš oznaka koje ste u prethodnom periodu često koristili:' filters: - action: Izaberi koju radnju treba izvršiti kada objava odgovara filteru + action: Izaberite koju radnju izvršiti kada objava odgovara filteru actions: hide: Potpuno sakrij filtrirani sadržaj, ponašajući se kao da ne postoji warn: Sakrij filtrirani sadržaj iza upozorenja u kome se navodi naziv filtera form_admin_settings: + activity_api_enabled: Brojevi lokalno postavljenih objava, aktivnih korisnika i novih registracija na nedeljnoj bazi backups_retention_period: Čuvaj generisane korisničke arhive navedeni broj dana. bootstrap_timeline_accounts: Ovi nalozi će biti zakačeni na vrh preporuka za praćenje novih korisnika. - closed_registrations_message: Prikazuje se kada su prijave zatvorene + closed_registrations_message: Prikazuje se kada su registracije zatvorene content_cache_retention_period: Kada se postavi na pozitivnu vrednost, objave sa drugih servera će biti izbrisane nakon navedenog broja dana. Ovo može biti nepovratno. - custom_css: Možeš da primeniš prilagođene stilove na veb verziji Mastodona. - mascot: Zamenjuje ilustraciju u naprednom veb interfejsu. + custom_css: Možete da primenite prilagođene stilove na veb verziji Mastodona. + mascot: Zamenjuje ilustraciju u naprednom veb okruženju. media_cache_retention_period: Kada se postavi na pozitivnu vrednost, preuzete medijske datoteke će biti izbrisane nakon navedenog broja dana, i ponovo preuzete na zahtev. + peers_api_enabled: Lista domena sa kojima se ovaj server susreo u fediverzumu. Ovde nisu sadržani podaci o tome da li se Vaš server federiše sa drugim serverima, već samo da Vaš server zna za njih. Ove informacije koriste servisi koji prikupljaju podatke i vode statistiku o federaciji u širem smislu. profile_directory: Direktorijum profila navodi sve korisnike koji su se opredelili da budu vidljivi. - require_invite_text: Kada registracije zahtevaju ručno odobrenje, postavi da unos teksta „Zašto želiš da se pridružiš?“ bude obavezan, a ne opcioni - site_contact_email: Kako korisnici mogu da te kontaktiraju za pravna pitanja ili pitanja u vezi podrške. - site_contact_username: Kako korisnici mogu da te kontaktiraju na Mastodonu. - site_extended_description: Bilo koja dodatna informacija koja može biti korisne posetiocima i tvojim korisnicima. Može se strukturirati pomoću Markdown sintakse. - site_short_description: Kratak opis pomoću koga se na jedinstven način identifikuje tvoj server. Ko ga održava, kome je namenjen? - site_terms: Koristi sopstvenu politiku privatnosti ili ostavi prazno da bi se koristila podrazumevana. Može se strukturirati pomoću Markdown sintakse. - site_title: Način na moji može da se pozove na tvoj server osim naziva njegovog domena. + require_invite_text: Kada registracije zahtevaju ručno odobrenje, postavite da odgovor na „Zašto želite da se pridružite?“ bude obavezan, a ne opcionalan + site_contact_email: Kako korisnici mogu da kontaktiraju sa Vama za pravna pitanja ili pitanja u vezi podrške. + site_contact_username: Kako korisnici mogu da kontaktiraju sa Vama na Mastodonu. + site_extended_description: Bilo kakve dodatne informacije koje mogu biti korisne posetiocima i Vašim korisnicima. Mogu se strukturirati pomoću Markdown sintakse. + site_short_description: Kratak opis pomoću koga se na jedinstven način identifikuje Vaš server. Ko ga održava, kome je namenjen? + site_terms: Koristite sopstvenu politiku privatnosti ili ostavite prazno da bi se koristila podrazumevana. Može se strukturirati pomoću Markdown sintakse. + site_title: Način na koji ljudi mogu da referišu na Vaš server osim naziva njegovog domena. + status_page_url: URL stranice gde ljudi mogu da vide status servera dok je server oboren theme: Tema koju vide posetioci koji nisu prijavljeni i novi korisnici. - thumbnail: Slika koja se približno 2:1 prikazuje pored informacija o tvom serveru. + thumbnail: Slika u razmeri od približno 2:1 koja se prikazuje pored informacija o Vašem serveru. timeline_preview: Posetioci koji nisu prijavljeni će moći da pregledaju najnovije javne objave dostupne na serveru. trendable_by_default: Preskoči ručni pregled sadržaja koji je u trendu. Pojedinačne stavke se nakon toga i dalje mogu ukloniti iz trendova. - trends: Trendovi pokazuju koje objave, heš oznake i vesti postaju sve popularniji na tvom serveru. + trends: Trendovi pokazuju koje objave, heš oznake i vesti postaju sve popularnije na Vašem serveru. + trends_as_landing_page: Prikaži sadržaj u trendu odjavljenim korisnicima i posetiocima umesto opisa ovog servera. Zahteva da trendovi budu omogućeni. form_challenge: - current_password: Ulaziš u bezbedno područje + current_password: Ulazite u bezbedno područje imports: data: CSV fajl izvezen sa druge Mastodont instance invite_request: - text: Ovo će nam pomoći da pregledamo tvoju prijavu + text: Ovo će nam pomoći da pregledamo Vašu prijavu ip_block: - comment: Opciono. Zapamti zašto si dodao ovo pravilo. + comment: Opciono. Zapamtite zašto ste dodali ovo pravilo. expires_in: IP adrese su ograničeni resurs, ponekad se dele i često menjaju korisnika. Zbog toga se IP blokovi na neograničeno vreme ne preporučuju. - ip: Unesi IPv4 ili IPv6 adresu. Možeš blokirati čitave opsege koristeći CIDR sintaksu. Vodi računa da sebe ne zaključaš! + ip: Unesite IPv4 ili IPv6 adresu. Možete blokirati čitave opsege koristeći CIDR sintaksu. Vodite računa da se ne zaključate! severities: no_access: Blokiraj pristup svim resursima - sign_up_block: Nove prijave neće biti moguće - sign_up_requires_approval: Nove prijave će zahtevati tvoje odobrenje - severity: Izaberi šta će se desiti sa zahtevima sa ove IP adrese + sign_up_block: Nove registracije neće biti moguće + sign_up_requires_approval: Nove registracije će zahtevati Vaše odobrenje + severity: Izaberite šta će se desiti sa zahtevima sa ove IP adrese rule: - text: Opiši pravilo ili zahtev za korisnike na ovom serveru. Potrudi se da opis bude kratak i jednostavan + text: Opišite pravilo ili uslov za korisnike na ovom serveru. Potrudite se da opis bude kratak i jednostavan sessions: otp: 'Unesite dvofaktorski kod sa Vašeg telefona ili koristite jedan od kodova za oporavak:' - webauthn: Ako je to USB ključ, obavezno ga ubaci i, ako je potrebno, pritisni ga. + webauthn: Ako je u pitanju USB ključ, obavezno ga ubacite i, ako je potrebno, pritisnite ga. tag: - name: Mogu se samo promeniti mala slova u velika, na primer, da bi bilo čitljivije + name: Mogu se samo promeniti mala slova u velika ili obrnuto, na primer, da bi bilo čitljivije user: - chosen_languages: Kada označite, trube u izabranim jezicima će se prikazati na javnoj vremenskoj liniji + chosen_languages: Kada je označeno, objave u izabranim jezicima će biti prikazane na javnoj vremenskoj liniji role: Uloga kontroliše koje dozvole korisnik ima user_role: - color: Boja koja će se koristiti za ulogu u celom korisničkom interfejsu, kao RGB, u heksadecimalnom formatu + color: Boja koja će se koristiti za ulogu u celom korisničkom okruženju, kao RGB u heksadecimalnom formatu highlighted: Ovo čini ulogu javno vidljivom name: Javni naziv uloge, ako je uloga podešena da se prikazuje kao značka permissions_as_keys: Korisnici sa ovom ulogom će imati pristup... @@ -185,24 +191,24 @@ sr-Latn: otp_attempt: Dvofaktorski kod password: Lozinka phrase: Ključna reč ili fraza - setting_advanced_layout: Omogući napredni veb interfejs + setting_advanced_layout: Omogući napredno veb okruženje setting_aggregate_reblogs: Grupiši deljenja u vremenskim linijama setting_always_send_emails: Uvek šalji obaveštenja e-poštom - setting_auto_play_gif: Automatski puštaj animirane GIF-ove + setting_auto_play_gif: Automatski reprodukuj animirane GIF-ove setting_boost_modal: Prikaži dijalog za potvrdu pre davanja podrške setting_crop_images: Izreži slike u neproširenim objavama na 16x9 setting_default_language: Jezik objavljivanja setting_default_privacy: Privatnost objava setting_default_sensitive: Uvek označi multimediju kao osetljivu - setting_delete_modal: Prikaži dijalog za potvrdu pre brisanja tuta + setting_delete_modal: Prikaži dijalog za potvrdu pre brisanja objave setting_disable_swiping: Onemogući pokrete prevlačenja setting_display_media: Prikaz medija setting_display_media_default: Podrazumevano setting_display_media_hide_all: Sakrij sve setting_display_media_show_all: Prikaži sve - setting_expand_spoilers: Uvek prošiti trube koje su označene upozorenjem sadržaja + setting_expand_spoilers: Uvek proširi objave koje su označene upozorenjem sadržaja setting_hide_network: Sakrij svoju mrežu - setting_noindex: Odjavi se od indeksiranja search engine-a + setting_noindex: Onemogući indeksiranje pretraživača setting_reduce_motion: Smanji pokrete u animacijama setting_show_application: Otkrij aplikaciju koja se koristi za slanje postova setting_system_font_ui: Koristi sistemski font @@ -227,6 +233,7 @@ sr-Latn: hide: Sakrij u potpunosti warn: Sakrij uz upozorenje form_admin_settings: + activity_api_enabled: Objavi prikupljenu statistiku o korisničkoj aktivnosti u API backups_retention_period: Period čuvanja korisničke arhive bootstrap_timeline_accounts: Uvek preporuči ove naloge novim korisnicima closed_registrations_message: Prilagođena poruka kada prijave nisu moguće @@ -234,6 +241,7 @@ sr-Latn: custom_css: Prilagođeni CSS mascot: Prilagođena maskota (nasleđe) media_cache_retention_period: Period čuvanja keša medija + peers_api_enabled: Objavite listu otkrivenih servera u API profile_directory: Omogući direktorijum profila registrations_mode: Ko može da se prijavi require_invite_text: Zatraži razlog za pristupanje @@ -245,11 +253,13 @@ sr-Latn: site_short_description: Opis servera site_terms: Politika privatnosti site_title: Ime servera + status_page_url: URL statusne stranice theme: Podrazumevana tema thumbnail: Sličica servera timeline_preview: Dozvoli neautorizovan pristup javnim vremenskim osama trendable_by_default: Dozvoli trendove bez prethodnog pregleda trends: Omogući trendove + trends_as_landing_page: Koristite trendove kao stranicu dočeka interactions: must_be_follower: Blokiraj obaveštenja od korisnika koji me ne prate must_be_following: Blokiraj obaveštenja od ljudi koje ne pratim @@ -260,7 +270,7 @@ sr-Latn: text: Zašto želiš da se pridružiš? ip_block: comment: Komentar - ip: Avatar + ip: IP severities: no_access: Blokiraj pristup sign_up_block: Blokiraj prijave diff --git a/config/locales/simple_form.sr.yml b/config/locales/simple_form.sr.yml index cb11250ad1..8ee5863770 100644 --- a/config/locales/simple_form.sr.yml +++ b/config/locales/simple_form.sr.yml @@ -3,117 +3,123 @@ sr: simple_form: hints: account_alias: - acct: Наведи корисничко_име@домен налога са којег желиш да пређеш + acct: Наведите корисничко_име@домен налога са којег желите да се преселите account_migration: - acct: Наведи корисничко_име@домен налога на који желиш да пређеш + acct: Наведите корисничко_име@домен налога на који желите да се преселите account_warning_preset: text: Можете користити синтаксу објава, као што су URL адресе, хеш ознаке и помињања title: Опционо. Није видљиво примаоцу admin_account_action: - include_statuses: Корисник ће видети које су објаве проузроковале модерирање или упозорење - send_email_notification: Корисник ће добити објашњење тога шта му се десило са налога + include_statuses: Корисник ће видети које су објаве проузроковале модерацијску радњу или упозорење + send_email_notification: Корисник ће добити објашњење тога шта му се десило са налогом text_html: Опционално. Можете користити синтаксу објава. Можете додати унапред одређене поставке упозорења за уштеду времена type_html: Изаберите шта да радите са %{acct} types: - disable: Спречи корисника да користи свој налог, али немој брисати или сакривати његов садржај. - none: Користи ово да пошаљеш упозорење кориснику, без покретања било које друге акције. + disable: Спречава корисника да користи свој налог, али не брише нити сакрива његове садржаје. + none: Користите ово да пошаљете упозорење кориснику без покретања било које друге радње. sensitive: Учини да сви медијски прилози овог корисника присилно буду означени као осетљиви. + silence: Спречава корисника да прави јавне објаве, сакрива његове објаве и обавештења од људи који га не прате. Затвара све пријаве поднете против овог налога. + suspend: Спречава сву интеракцију од овог налога и ка овом налогу и брише његов садржај. Опозиво у року од 30 дана. Затвара све пријаве поднете против овог налога. warning_preset_id: Опционално. Можете и даље додати прилагођени текст на крај пресета announcement: - all_day: Биће приказани само датуми временског опсега који су означени + all_day: Када је ова опција означена, само датуми из временског опсега ће бити приказани ends_at: Опционо. Објава ће бити аутоматски опозвана у овом тренутку - scheduled_at: Остави празно да би најава била одмах објављена + scheduled_at: Оставите празно да бисте одмах објавили обавештење starts_at: Опционо. У случају да је најава везана за одређени временски распон - text: Можеш користити пост синтаксу. Води рачуна о простору који ће објава заузимати на екрану корисника + text: Можете користити синтаксу објава. Молимо Вас водите рачуна о простору који ће објава заузимати на екрану корисника appeal: - text: На брисање се можеш жалити само једном + text: Можете поднети само једну жалбу на уписан преступ defaults: autofollow: Особе које се пријаве кроз позивнице ће вас аутоматски запратити avatar: PNG, GIF или JPG. Највише %{size}. Биће смањено на %{dimensions}px - bot: Овај налог углавном врши аутоматизоване радње и можда се не надгледа + bot: Даје другима до знања да овај налог углавном врши аутоматизоване радње и можда се не надгледа context: Један или више контекста у којима треба да се примени филтер - current_password: Унеси лозинку текућег налога из безбедносних разлога - current_username: Унеси корисничко име текућег налога за потврду - digest: Послато после дужег периода неактивности са прегледом свих битних ствари које сте добили док сте били одсутни - discoverable: Дозволи непознатим корисницима да открију твој налог путем препорука, трендова и других функција - email: Биће вам послата е-пошта са потврдом - fields: Можете имати до 4 ставке приказане као табела на вашем налогу + current_password: Из безбедносних разлога молимо Вас унесите лозинку тренутног налога + current_username: Да бисте потврдили, Молимо Вас унесите корисничко име тренутно активног налога + digest: Шаље се само после дужег периода неактивности и само у случају да сте примили једну или више личних порука током Вашег одсуства + discoverable: Дозволите непознатим корисницима да открију Ваш налог путем препорука, трендова и других функција + email: Биће Вам послат мејл са потврдом + fields: Можете имати до 4 ставке приказане као табела на свом профилу header: PNG, GIF или JPG. Највише %{size}. Биће смањено на %{dimensions}px inbox_url: Копирајте URL са насловне стране релеја који желите користити irreversible: Филтриранe обајве ће нестати неповратно, чак и ако је филтер касније уклоњен locale: Језик корисничког окружења, е-поште и мобилних обавештења - locked: Захтева да појединачно одобрите пратиоце + locked: Контролишите ко може да Вас прати тако што ћете појединачно одобравати захтеве за праћење password: Користите најмање 8 знакова phrase: Биће упарена без обзира на велико или мало слово у тексту или упозорења о садржају објаве - scopes: Којим API-јима ће апликација дозволити приступ. Ако изаберете опсег највишег нивоа, не морате одабрати појединачне. + scopes: Којим API-јима ће апликација имати приступ. Ако изаберете опсег највишег нивоа, не морате одабрати појединачне. setting_aggregate_reblogs: Не приказуј нова подржавања за објаве које су недавно подржане (утиче само на недавно примљена подржавања) - setting_always_send_emails: Обавештења е-поштом се по правилу неће слати када активно користиш Мастодон + setting_always_send_emails: Обавештења е-поштом се по правилу неће слати када активно користите Мастодон setting_default_sensitive: Осетљиви медији су подразумевано скривени и могу се открити кликом setting_display_media_default: Сакриј медије означене као осетљиве setting_display_media_hide_all: Увек сакриј све медије setting_display_media_show_all: Увек прикажи медије означене као осетљиве - setting_hide_network: Кога пратите и ко вас прати неће бити приказано на вашем налогу - setting_noindex: Утиче на Ваш јавни налог и статусне стране + setting_hide_network: Кога пратите и ко Вас прати неће бити приказано на Вашем профилу + setting_noindex: Утиче на Ваш јавни профил и странице са објавама setting_show_application: Апликација коју користите за објављивање ће бити приказана у детаљном приказу ваших објава - setting_use_blurhash: Градијент се заснива на бојама скривених визуелних приказа, али прикрива све детаље - setting_use_pending_items: Сакриј ажурирања временске осе иза клика уместо аутоматског померања извора објава + setting_use_blurhash: Градијенти се формирају на основу бојâ скривених слика и замућују приказ, прикривајући детаље + setting_use_pending_items: Сакрива ажурирања временске линије иза клика уместо аутоматског ажурирања и померања временске линије username: Ваш надимак ће бити јединствен на %{domain} - whole_word: Када је кључна реч или фраза искључиво алфанумеричка, биће примењена само ако се подудара са целом речи + whole_word: Када је кључна реч или фраза искључиво алфанумеричка, биће примењена само ако се подудара са целом речjу domain_allow: domain: Овај домен ће моћи да преузима податке са овог сервера и долазни подаци са њега ће се обрађивати и чувати email_domain_block: domain: Ово може бити име домена које се појављује у адреси е-поште или MX записа који користи. Они ће бити проверени приликом регистрације. with_dns_records: Биће учињен покушај да се разреше DNS записи датог домена и резултати ће такође бити блокирани featured_tag: - name: 'Ево неких од хеш ознака које сте недавно користили:' + name: 'Ево неких од хеш ознака које сте у претходном периоду често користили:' filters: - action: Изабери коју радњу треба извршити када објава одговара филтеру + action: Изаберите коју радњу извршити када објава одговара филтеру actions: hide: Потпуно сакриј филтрирани садржај, понашајући се као да не постоји warn: Сакриј филтрирани садржај иза упозорења у коме се наводи назив филтера form_admin_settings: + activity_api_enabled: Бројеви локално постављених објава, активних корисника и нових регистрација на недељној бази backups_retention_period: Чувај генерисане корисничке архиве наведени број дана. bootstrap_timeline_accounts: Ови налози ће бити закачени на врх препорука за праћење нових корисника. - closed_registrations_message: Приказује се када су пријаве затворене + closed_registrations_message: Приказује се када су регистрације затворене content_cache_retention_period: Када се постави на позитивну вредност, објаве са других сервера ће бити избрисане након наведеног броја дана. Ово може бити неповратно. - custom_css: Можеш да примениш прилагођене стилове на веб верзији Мастодона. + custom_css: Можете да примените прилагођене стилове на веб верзији Мастодона. mascot: Замењује илустрацију у напредном веб окружењу. media_cache_retention_period: Када се постави на позитивну вредност, преузете медијске датотеке ће бити избрисане након наведеног броја дана, и поново преузете на захтев. + peers_api_enabled: Листа домена са којима се овај сервер сусрео у федиверзуму. Овде нису садржани подаци о томе да ли се Ваш сервер федерише са другим серверима, већ само да Ваш сервер зна за њих. Ове информације користе сервиси који прикупљају податке и воде статистику о федерацији у ширем смислу. profile_directory: Директоријум профила наводи све кориснике који су се определили да буду видљиви. - require_invite_text: Када регистрације захтевају ручно одобрење, постави да унос текста „Зашто желиш да се придружиш?“ буде обавезан, а не опциони - site_contact_email: Како корисници могу да те контактирају за правна питања или питања у вези подршке. - site_contact_username: Како корисници могу да те контактирају на Мастодону. - site_extended_description: Било која додатна информација која може бити корисне посетиоцима и твојим корисницима. Може се структурирати помоћу Markdown синтаксе. - site_short_description: Кратак опис помоћу кога се на јединствен начин идентификује твој сервер. Ко га одржава, коме је намењен? - site_terms: Користи сопствену политику приватности или остави празно да би се користила подразумевана. Може се структурирати помоћу Markdown синтаксе. - site_title: Начин на моји може да се позове на твој сервер осим назива његовог домена. + require_invite_text: Када регистрације захтевају ручно одобрење, поставите да одговор на „Зашто желите да се придружите?“ буде обавезан, а не опционалан + site_contact_email: Како корисници могу да контактирају са Вама за правна питања или питања у вези подршке. + site_contact_username: Како корисници могу да контактирају са Вама на Мастодону. + site_extended_description: Било какве додатне информације које могу бити корисне посетиоцима и Вашим корисницима. Могу се структурирати помоћу Markdown синтаксе. + site_short_description: Кратак опис помоћу кога се на јединствен начин идентификује Ваш сервер. Ко га одржава, коме је намењен? + site_terms: Користите сопствену политику приватности или оставите празно да би се користила подразумевана. Може се структурирати помоћу Markdown синтаксе. + site_title: Начин на који људи могу да реферишу на Ваш сервер осим назива његовог домена. + status_page_url: URL странице где људи могу да виде статус сервера док је сервер оборен theme: Тема коју виде посетиоци који нису пријављени и нови корисници. - thumbnail: Слика која се приближно 2:1 приказује поред информација о твом серверу. + thumbnail: Слика у размери од приближно 2:1 која се приказује поред информација о Вашем серверу. timeline_preview: Посетиоци који нису пријављени ће моћи да прегледају најновије јавне објаве доступне на серверу. trendable_by_default: Прескочи ручни преглед садржаја који је у тренду. Појединачне ставке се након тога и даље могу уклонити из трендова. - trends: Трендови показују које објаве, хеш ознаке и вести постају све популарнији на твом серверу. + trends: Трендови показују које објаве, хеш ознаке и вести постају све популарније на Вашем серверу. + trends_as_landing_page: Прикажи садржај у тренду одјављеним корисницима и посетиоцима уместо описа овог сервера. Захтева да трендови буду омогућени. form_challenge: - current_password: Улазиш у безбедно подручје + current_password: Улазите у безбедно подручје imports: data: CSV фајл извезен са друге Мастодонт инстанце invite_request: - text: Ово ће нам помоћи да прегледамо твоју пријаву + text: Ово ће нам помоћи да прегледамо Вашу пријаву ip_block: - comment: Опционо. Запамти зашто си додао ово правило. + comment: Опционо. Запамтите зашто сте додали ово правило. expires_in: IP адресе су ограничени ресурс, понекад се деле и често мењају корисника. Због тога се IP блокови на неограничено време не препоручују. - ip: Унеси IPv4 или IPv6 адресу. Можеш блокирати читаве опсеге користећи CIDR синтаксу. Води рачуна да себе не закључаш! + ip: Унесите IPv4 или IPv6 адресу. Можете блокирати читаве опсеге користећи CIDR синтаксу. Водите рачуна да се не закључате! severities: no_access: Блокирај приступ свим ресурсима - sign_up_block: Нове пријаве неће бити могуће - sign_up_requires_approval: Нове пријаве ће захтевати твоје одобрење - severity: Изабери шта ће се десити са захтевима са ове IP адресе + sign_up_block: Нове регистрације неће бити могуће + sign_up_requires_approval: Нове регистрације ће захтевати Ваше одобрење + severity: Изаберите шта ће се десити са захтевима са ове IP адресе rule: - text: Опиши правило или захтев за кориснике на овом серверу. Потруди се да опис буде кратак и једноставан + text: Опишите правило или услов за кориснике на овом серверу. Потрудите се да опис буде кратак и једноставан sessions: otp: 'Унесите двофакторски код са Вашег телефона или користите један од кодова за опоравак:' - webauthn: Ако је то USB кључ, обавезно га убаци и, ако је потребно, притисни га. + webauthn: Ако је у питању USB кључ, обавезно га убаците и, ако је потребно, притисните га. tag: - name: Могу се само променити мала слова у велика, на пример, да би било читљивије + name: Могу се само променити мала слова у велика или обрнуто, на пример, да би било читљивије user: chosen_languages: Када је означено, објаве у изабраним језицима ће бити приказане на јавној временској линији role: Улога контролише које дозволе корисник има @@ -227,6 +233,7 @@ sr: hide: Сакриј у потпуности warn: Сакриј уз упозорење form_admin_settings: + activity_api_enabled: Објави прикупљену статистику о корисничкој активности у API backups_retention_period: Период чувања корисничке архиве bootstrap_timeline_accounts: Увек препоручи ове налоге новим корисницима closed_registrations_message: Прилагођена порука када пријаве нису могуће @@ -234,6 +241,7 @@ sr: custom_css: Прилагођени CSS mascot: Прилагођена маскота (наслеђе) media_cache_retention_period: Период чувања кеша медија + peers_api_enabled: Објавите листу откривених сервера у API profile_directory: Омогући директоријум профила registrations_mode: Ко може да се пријави require_invite_text: Затражи разлог за приступање @@ -245,11 +253,13 @@ sr: site_short_description: Опис сервера site_terms: Политика приватности site_title: Име сервера + status_page_url: URL статусне странице theme: Подразумевана тема thumbnail: Сличица сервера timeline_preview: Дозволи неауторизован приступ јавним временским осама trendable_by_default: Дозволи трендове без претходног прегледа trends: Омогући трендове + trends_as_landing_page: Користите трендове као страницу дочека interactions: must_be_follower: Блокирај обавештења од корисника који ме не прате must_be_following: Блокирај обавештења од људи које не пратим diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index ed111ecc90..345f8c183d 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -95,7 +95,7 @@ th: theme: ชุดรูปแบบที่ผู้เยี่ยมชมที่ออกจากระบบและผู้ใช้ใหม่เห็น thumbnail: แสดงภาพ 2:1 โดยประมาณควบคู่ไปกับข้อมูลเซิร์ฟเวอร์ของคุณ timeline_preview: ผู้เยี่ยมชมที่ออกจากระบบจะสามารถเรียกดูโพสต์สาธารณะล่าสุดที่มีในเซิร์ฟเวอร์ - trendable_by_default: ข้ามการตรวจทานเนื้อหาที่กำลังนิยมด้วยตนเอง ยังคงสามารถเอารายการแต่ละรายการออกจากแนวโน้มได้หลังเกิดเหตุ + trendable_by_default: ข้ามการตรวจทานเนื้อหาที่กำลังนิยมด้วยตนเอง ยังคงสามารถเอารายการแต่ละรายการออกจากแนวโน้มได้หลังจากเกิดเหตุ trends: แนวโน้มแสดงว่าโพสต์, แฮชแท็ก และเรื่องข่าวใดกำลังได้รับความสนใจในเซิร์ฟเวอร์ของคุณ trends_as_landing_page: แสดงเนื้อหาที่กำลังนิยมแก่ผู้ใช้และผู้เยี่ยมชมที่ออกจากระบบแทนที่จะเป็นคำอธิบายของเซิร์ฟเวอร์นี้ ต้องมีการเปิดใช้งานแนวโน้ม form_challenge: @@ -174,7 +174,7 @@ th: context: บริบทตัวกรอง current_password: รหัสผ่านปัจจุบัน data: ข้อมูล - discoverable: แนะนำบัญชีให้ผู้อื่น + discoverable: เสนอแนะบัญชีให้ผู้อื่น display_name: ชื่อที่แสดง email: ที่อยู่อีเมล expires_in: หมดอายุหลังจาก @@ -263,7 +263,7 @@ th: interactions: must_be_follower: ปิดกั้นการแจ้งเตือนจากผู้ที่ไม่ใช่ผู้ติดตาม must_be_following: ปิดกั้นการแจ้งเตือนจากผู้คนที่คุณไม่ได้ติดตาม - must_be_following_dm: ปิดกั้นข้อความโดยตรงจากผู้คนที่คุณไม่ได้ติดตาม + must_be_following_dm: ปิดกั้นข้อความโดยตรงจากผู้คนที่คุณไม่ติดตาม invite: comment: ความคิดเห็น invite_request: diff --git a/config/locales/simple_form.tt.yml b/config/locales/simple_form.tt.yml index d4e44c0db2..db2bd025c2 100644 --- a/config/locales/simple_form.tt.yml +++ b/config/locales/simple_form.tt.yml @@ -5,7 +5,7 @@ tt: account_warning_preset: title: Исем admin_account_action: - type: Ğämäl + type: Гамәл types: sensitive: Sizmäle suspend: Искә алмау @@ -14,7 +14,7 @@ tt: data: Мәгълүмат email: Почта адресы header: Башлам - password: Парол + password: Серсүз setting_display_media_default: Töpcay username: Кулланучы исеме featured_tag: diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index 18ba22921c..09e051cb53 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -33,7 +33,7 @@ zh-CN: autofollow: 通过邀请链接注册的用户将会自动关注你 avatar: 文件大小限制 %{size},只支持 PNG、GIF 或 JPG 格式。图片分辨率将会压缩至 %{dimensions}px bot: 来自这个账户的绝大多数操作都是自动进行的,并且可能无人监控 - context: 过滤器的应用环境 + context: 过滤器的应用场景 current_password: 为了安全起见,请输入当前账号的密码 current_username: 请输入当前账号的用户名以确认 digest: 仅在你长时间未登录,且收到了私信时发送 @@ -171,7 +171,7 @@ zh-CN: chosen_languages: 语言过滤 confirm_new_password: 确认新密码 confirm_password: 确认密码 - context: 过滤器环境 + context: 过滤场景 current_password: 当前密码 data: 数据文件 discoverable: 在本站用户目录中收录此账号 diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml index 8a2bcc0a1f..28aacb92e1 100644 --- a/config/locales/simple_form.zh-TW.yml +++ b/config/locales/simple_form.zh-TW.yml @@ -33,7 +33,7 @@ zh-TW: autofollow: 通過邀請網址註冊的使用者將自動跟隨您 avatar: 支援 PNG、GIF 或 JPG 圖片格式,檔案最大為 %{size},會等比例縮減至 %{dimensions} 像素 bot: 此帳號主要執行自動化操作且可能未受人為監控 - context: 應該套用過濾器的一項或多項內容 + context: 此過濾器應套用於以下一項或多項情境 current_password: 因安全因素,請輸入目前帳號的密碼 current_username: 請輸入目前帳號的使用者名稱以確認 digest: 僅在您長時間未登入且在未登入期間收到私訊時傳送 @@ -53,18 +53,18 @@ zh-TW: setting_default_sensitive: 敏感內容媒體預設隱藏,且按一下即可重新顯示 setting_display_media_default: 隱藏標為敏感內容的媒體 setting_display_media_hide_all: 總是隱藏所有媒體 - setting_display_media_show_all: 總是顯示標為敏感的媒體 + setting_display_media_show_all: 總是顯示標為敏感內容的媒體 setting_hide_network: 您跟隨的人與跟隨您的人將不會在您的個人檔案頁面上顯示 setting_noindex: 會影響您的公開個人檔案與嘟文頁面 setting_show_application: 您用來發嘟文的應用程式將會在您嘟文的詳細檢視顯示 setting_use_blurhash: 彩色漸層圖樣是基於隱藏媒體內容顏色產生,所有細節會變得模糊 setting_use_pending_items: 關閉自動捲動更新,時間軸只會在點擊後更新 - username: 您的使用者名稱將在 %{domain} 是獨一無二的 + username: 您的使用者名稱將於 %{domain} 是獨一無二的 whole_word: 如果關鍵字或詞組僅有字母與數字,則其將只在符合整個單字的時候才會套用 domain_allow: domain: 此網域將能夠攫取本站資料,而自該網域發出的資料也會於本站處理和留存。 email_domain_block: - domain: 這可以是顯示在電子郵件中的網域名稱,或是其使用的 MX 紀錄。其將在註冊時檢查。 + domain: 這可以是顯示在電子郵件中的網域名稱,或是其使用的 MX 紀錄。其將於註冊時檢查。 with_dns_records: Mastodon 會嘗試解析所給網域的 DNS 記錄,解析結果一致者將一併封鎖 featured_tag: name: 這些是您最近使用的一些主題標籤: diff --git a/config/locales/sk.yml b/config/locales/sk.yml index da653857fb..494b15307b 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -229,7 +229,16 @@ sk: destroy_domain_block_html: "%{name} odblokoval/i doménu %{target}" destroy_ip_block_html: "%{name} vymazal/a pravidlo pre IP %{target}" destroy_status_html: "%{name} zmazal/a príspevok od %{target}" + memorialize_account_html: "%{name} zmenil/a účet %{target} na pamätnú stránku" reject_appeal_html: "%{name} zamietol/la námietku moderovacieho rozhodnutia od %{target}" + reopen_report_html: "%{name} znovu otvoril/a nahlásenie %{target}" + resend_user_html: "%{name} znovu odoslal/a potvrdzovací email pre %{target}" + reset_password_user_html: "%{name} resetoval/a heslo používateľa %{target}" + resolve_report_html: "%{name} vyriešil/a nahlásenie %{target}" + sensitive_account_html: "%{name} označil médium od %{target} za chúlostivé" + silence_account_html: "%{name} obmedzil/a účet %{target}" + suspend_account_html: "%{name} zablokoval/a účet používateľa %{target}" + unassigned_report_html: "%{name} odobral/a report od %{target}" deleted_account: zmazaný účet empty: Žiadne záznamy nenájdené. filter_by_action: Filtruj podľa úkonu @@ -586,6 +595,10 @@ sk: rules_check: action: Spravuj serverové pravidlá message_html: Neurčil/a si žiadne serverové pravidlá. + upload_check_privacy_error: + action: Pozri tu pre viac informácií + upload_check_privacy_error_object_storage: + action: Pozri tu pre viac informácií tags: review: Prehodnoť stav updated_msg: Nastavenia haštagov boli úspešne aktualizované @@ -814,8 +827,6 @@ sk: title: Triedenia new: title: Pridaj nové triedenie - footer: - trending_now: Teraz populárne generic: all: Všetko changes_saved_msg: Zmeny boli úspešne uložené! @@ -1014,6 +1025,7 @@ sk: otter: Prehliadač Otter qq: QQ Prehliadač safari: Apple Safari + unknown_browser: Neznámy prehliadač weibo: Sina/Tencent Weibo current_session: Aktuálna sezóna description: "%{browser} na %{platform}" @@ -1023,7 +1035,7 @@ sk: ios: Apple iOS linux: GNU/Linux mac: MacOSX - other: neznáma platforma + unknown_platform: Neznáma platforma windows: Microsoft Windows revoke: Zamietni revoke_success: Sezóna úspešne zamietnutá @@ -1153,5 +1165,4 @@ sk: seamless_external_login: Si prihlásená/ý cez externú službu, takže nastavenia hesla a emailu ti niesú prístupné. signed_in_as: 'Prihlásená/ý ako:' verification: - explanation_html: 'Môžeš sa overiť ako majiteľ odkazov v metadátach tvojho profilu. Na to ale musí odkazovaná stránka obsahovať odkaz späť na tvoj Mastodon profil. Tento spätný odkaz musí mať prívlastok rel="me". Na texte odkazu nezáleží. Tu je príklad:' verification: Overenie diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 7cabc0cd86..00bdd10a96 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -840,6 +840,12 @@ sl: message_html: Nobenih pravil strežnika niste določili. sidekiq_process_check: message_html: Noben proces Sidekiq ne poteka za %{value} vrst. Preglejte svojo prilagoditev Sidekiq + upload_check_privacy_error: + action: Preverite tukaj za več informacij + message_html: "Vaš spletni strežnik je napačno nastavljen. Zasebnost vaših uporabnikov je izpostavljena tveganjem." + upload_check_privacy_error_object_storage: + action: Preverite tukaj za več informacij + message_html: "Vaša predmetna shramba je napačno nastavljena. Zasebnost vaših uporabnikov je izpostavljena tveganjem." tags: review: Stanje pregleda updated_msg: Nastavitve ključnikov uspešno posodobljene @@ -1238,8 +1244,6 @@ sl: index: hint: Ta filter se nanaša na posamezne objave ne glede na druge pogoje. Filtru lahko dodate več objav prek spletnega vmesnika. title: Filtrirane objave - footer: - trending_now: Zdaj v trendu generic: all: Vse all_items_on_page_selected_html: @@ -1459,6 +1463,7 @@ sl: confirm_remove_selected_followers: Ali ste prepričani, da želite odstraniti izbrane sledilce? confirm_remove_selected_follows: Ali ste prepričani, da želite odstraniti izbrana sledenja? dormant: Skrit + follow_failure: Nekaterim od izbranih računov ni bilo mogoče slediti. follow_selected_followers: Sledi izbranim sledilcem followers: Sledilci following: Sledi @@ -1498,6 +1503,7 @@ sl: electron: Electron firefox: Firefox generic: Neznan brskalnik + huawei_browser: Brskalnik Huawei ie: Internet Explorer micro_messenger: MicroMessenger nokia: Brskalnik Nokia S40 Ovi @@ -1507,6 +1513,7 @@ sl: qq: QQ Browser safari: Safari uc_browser: UC Browser + unknown_browser: Neznan brskalnik weibo: Weibo current_session: Trenutna seja description: "%{browser} na %{platform}" @@ -1519,9 +1526,10 @@ sl: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: Mac - other: neznana platforma + unknown_platform: Neznana platforma windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1746,12 +1754,13 @@ sl: title: Dobrodošli, %{name}! users: follow_limit_reached: Ne morete spremljati več kot %{limit} ljudi + go_to_sso_account_settings: Pojdite na nastavitve svojega računa ponudnika identitete invalid_otp_token: Neveljavna dvofaktorska koda otp_lost_help_html: Če ste izgubili dostop do obeh, stopite v stik z %{email} seamless_external_login: Prijavljeni ste prek zunanje storitve, tako da nastavitve gesla in e-pošte niso na voljo. signed_in_as: 'Vpisani kot:' verification: - explanation_html: 'V metapodatkih svojega profila se lahko potrdite kot lastnik povezav. Za to mora povezano spletno mesto vsebovati povezavo do vašega Mastodon profila. Povezava mora imeti atribut el="me". Vsebina besedila povezave ni pomembna. Tukaj je primer:' + explanation_html: 'V metapodatkih svojega profila se lahko potrdite kot lastnik povezav. Za to mora povezano spletno mesto vsebovati povezavo do vašega profila Mastodon. Po dodajanju povezave se boste morda morali vrniti sem in ponovno shraniti svoj profil, da bo overjanje učinkovalo. Povezava mora imeti atribut el="me". Vsebina besedila povezave ni pomembna. Tukaj je primer:' verification: Potrditev webauthn_credentials: add: Dodaj nov varnostni ključ diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 467aa8967e..281ef7cb1b 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -809,6 +809,12 @@ sq: message_html: S’keni përcaktuar ndonjë rregull shërbyesi. sidekiq_process_check: message_html: S’ka proces Sidekiq në punë për %{value} radhë. Ju lutemi, shqyrtoni formësimin tuaj për Sidekiq-un + upload_check_privacy_error: + action: Për më tepër hollësi, shihni këtu + message_html: "Shërbyesi juaj është formësuar keq. Privatësia e përdoruesve tuaj është në rrezik." + upload_check_privacy_error_object_storage: + action: Për më tepër hollësi, shihni këtu + message_html: "Depozita juaj e objekteve është e formësuar keq. Privatësia e përdoruesve tuaj është në rrezik." tags: review: Gjendje rishikimi updated_msg: Rregullimet për hashtag-ët u përditësuan me sukses @@ -1190,8 +1196,6 @@ sq: index: hint: Ky filtër aplikohet për të përzgjedhur postime individuale, pavarësisht kriteresh të tjera. Që nga ndërfaqja web mund të shtoni më tepër postime te ky filtër. title: Postime të filtruar - footer: - trending_now: Prirjet e tashme generic: all: Krejt all_items_on_page_selected_html: @@ -1401,6 +1405,7 @@ sq: confirm_remove_selected_followers: Jeni i sigurt se doni të hiqen ndjekësit e përzgjedhur? confirm_remove_selected_follows: Jeni i sigurt se doni të hiqen ndjekjet e përzgjedhura? dormant: Në gjumë + follow_failure: S’u ndoqën dot disa nga llogaritë e përzgjedhura. follow_selected_followers: Ndiq ndjekësit e përzgjedhur followers: Ndjekës following: Ndjek @@ -1440,6 +1445,7 @@ sq: electron: Electron firefox: Firefox generic: Shfletues i panjohur + huawei_browser: Shfletues Huawei ie: Internet Explorer micro_messenger: MicroMessenger nokia: Shfletues Nokia S40 Ovi @@ -1449,6 +1455,7 @@ sq: qq: QQ Browser safari: Safari uc_browser: Shfletues UC + unknown_browser: Shfletues i Panjohur weibo: Weibo current_session: Sesioni i tanishëm description: "%{browser} në %{platform}" @@ -1461,9 +1468,10 @@ sq: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: macOS - other: platformë e panjohur + unknown_platform: Platformë e Panjohur windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1676,12 +1684,13 @@ sq: title: Mirë se vini, %{name}! users: follow_limit_reached: S’mund të ndiqni më tepër se %{limit} persona + go_to_sso_account_settings: Kaloni te rregullime llogarie te shërbimi juaj i identitetit invalid_otp_token: Kod dyfaktorësh i pavlefshëm otp_lost_help_html: Nëse humbët hyrjen te të dy, mund të lidheni me %{email} seamless_external_login: Jeni futur përmes një shërbimi të jashtëm, ndaj s’ka rregullime fjalëkalimi dhe email. signed_in_as: 'I futur si:' verification: - explanation_html: 'Mundeni të verifikoni veten si i zoti i lidhjeve te tejtëdhënat e profilit tuaj. Për këtë, sajti i lidhur duhet të përmbajë një lidhje për te profili juaj Mastodon. Lidhje për te ajo duhet të ketë një atribut rel="me". Lënda tekst e lidhjes nuk ngre peshë. Ja një shembull:' + explanation_html: 'Mundeni të verifikoni veten si i zoti i lidhjeve që nga tejtëdhëna të profilit tuaj. Për këtë, sajti i lidhur duhet të përmbajë një lidhje që shpie te profili juaj Mastodon. Pas shtimit të lidhjes mund t’ju duhet të ktheheni këtu dhe të riruani profilin tuaj, që verifikimi të ketë efekt. Lidhja e kthimit duhet të përmbajë një atribut rel="me". Teksi i lidhjes s’ka rëndësi. Ja një shembull:' verification: Verifikim webauthn_credentials: add: Shtoni kyç të ri sigurie diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml index fdb5d21859..a2e860ef62 100644 --- a/config/locales/sr-Latn.yml +++ b/config/locales/sr-Latn.yml @@ -1,236 +1,1269 @@ --- sr-Latn: about: - about_mastodon_html: Mastodont je društvena mreža bazirana na otvorenim protokolima i slobodnom softveru otvorenog koda. Decentralizovana je kao što je decentralizovana e-pošta. + about_mastodon_html: 'Društvena mreža budućnosti: bez reklama, bez korporativnog praćenja, etički dizajn, i decentralizacija! Posedujte svoje podatke sa Mastodonom!' contact_missing: Nije postavljeno - hosted_on: Mastodont hostovan na %{domain} + contact_unavailable: Nije dostupno + hosted_on: Mastodon hostovan na %{domain} + title: O instanci accounts: - nothing_here: Ovde nema ništa! + follow: Zaprati + followers: + few: Pratioca + one: Pratilac + other: Pratilaca + following: Pratim + instance_actor_flash: Ovaj nalog je virtuelni akter koji ne predstavlja nijednog korisnika lično, već sâm server. Koristi se u svrhu federacije i ne treba ga suspendovati. + last_active: najskorija aktivnost + link_verified_on: Vlasništvo nad ovom vezom je provereno %{date} + nothing_here: Ovde nema ničega! + pin_errors: + following: Morate pratiti osobu koju želite da preporučite + posts: + few: Objave + one: Objava + other: Objava + posts_tab_heading: Objave admin: + account_actions: + action: Izvršite radnju + title: Izvršite moderatorske radnje na %{acct} account_moderation_notes: - create: Napravi + create: Ostavite belešku created_msg: Moderatorska beleška uspešno napravljena! destroyed_msg: Moderatorska beleška uspešno obrisana! accounts: + add_email_domain_block: Blokiraj domen e-pošte + approve: Odobri + approved_msg: Zahtev za registraciju korisnika %{username} je uspešno odobren are_you_sure: Da li ste sigurni? + avatar: Avatar by_domain: Domen + change_email: + changed_msg: E-pošta naloga uspešno promenjena! + current_email: Trenutna adresa e-pošte + label: Promenite adresu e-pošte + new_email: Nova adresa e-pošte + submit: Promenite adresu e-pošte + title: Promenite adresu e-pošte za %{username} + change_role: + changed_msg: Uloga uspešno promenjena! + label: Promeni ulogu + no_role: Nema ulogu + title: Promeni ulogu za %{username} confirm: Potvrdi confirmed: Potvrđeno - confirming: Potvrđujući + confirming: Potvrđivanje + custom: Proizvoljno + delete: Obriši podatke + deleted: Izbrisano demote: Ražaluj - disable: Isključi + destroyed_msg: Podaci korisnika %{username} su nepovratno stavljeni u red za brisanje + disable: Zamrzni + disable_sign_in_token_auth: Onemogući imejl autentifikaciju disable_two_factor_authentication: Isključi 2FA - disabled: Isključena - display_name: Prikazano ime + disabled: Zamrznut + display_name: Ime za prikaz domain: Domen edit: Izmeni email: E-pošta email_status: Status e-pošte - enable: Uključi - enabled: Uključeno + enable: Omogući + enable_sign_in_token_auth: Omogući imejl autentifikaciju + enabled: Omogućen + enabled_msg: Uspešno odleđen nalog korisnika %{username} followers: Pratioci follows: Praćeni + header: Zaglavlje inbox_url: Adresa sandučeta + invite_request_text: Razlozi za pridruživanje + invited_by: Pozvan od strane + ip: IP + joined: Pridružio/-la se location: all: Sve - local: Lokalne - remote: Udaljene + local: Lokalni + remote: Udaljeni title: Lokacija login_status: Status prijave media_attachments: Multimedijalni prilozi memorialize: Prebaci u in memoriam + memorialized: Podignut spomenik + memorialized_msg: "%{username} je uspešno pretvoren u memorijalni nalog" moderation: + active: Aktivan all: Svi + disabled: Isključen + pending: Na čekanju + silenced: Ograničeno suspended: Suspendovani title: Moderacija moderation_notes: Moderatorske beleške most_recent_activity: Najskorija aktivnost most_recent_ip: Najskorija IP adresa + no_account_selected: Nijedan nalog nije promenjen jer nijedan nije izabran + no_limits_imposed: Nema ograničenja + no_role_assigned: Nijedna uloga nije dodeljena not_subscribed: Nije pretplaćen - perform_full_suspension: Izvrši kompletno isključenje + pending: Čeka na pregled + perform_full_suspension: Suspenduj + previous_strikes: Prethodni prekršaji + previous_strikes_description_html: + few: Ovaj nalog ima %{count} prekršaja. + one: Ovaj nalog ima jedan prekršaj. + other: Ovaj nalog ima %{count} prekršaja. promote: Unapredi protocol: Protokol public: Javno - redownload: Osveži avatar - remote_suspension_reversible_hint_html: Налог је суспендован на њиховом серверу, а подаци ће бити у потпуности уклоњени %{date}. До тада, удаљени сервер може вратити овај налог без икаквих негативних ефеката. Ако желите одмах да уклоните све податке налога, то можете учинити у наставку. + push_subscription_expires: PuSH pretplata ističe + redownload: Osveži profil + redownloaded_msg: Uspešno osvežen profil korisnika %{username} iz izvora + reject: Odbij + rejected_msg: Zahtev za registraciju korisnika %{username} je uspešno odbijen + remote_suspension_irreversible: Podaci ovog naloga su nepovratno izbrisani. + remote_suspension_reversible_hint_html: Nalog je suspendovan sa svog servera i njegovi podaci će biti izbrisani datuma %{date}. Do tada, udaljeni server može da vrati ovaj nalog bez ikakvih promena. Ukoliko želite da odmah obrišete sve podatke naloga, možete to učiniti ispod. + remove_avatar: Ukloni avatar + remove_header: Odstrani zaglavlje + removed_avatar_msg: Slika avatara korisnika %{username} je uspešno uklonjena + removed_header_msg: Uspešno obrisana slika zaglavlja korisnika %{username} resend_confirmation: already_confirmed: Ovaj korisnik je već potvrđen - send: Ponovo pošaljite e-poruku za potvrdu - success: E-mail potvrde je uspešno poslat! + send: Ponovo pošalji imejl potvrdu + success: Imejl za potvrdu je uspešno poslat! reset: Resetuj reset_password: Resetuj lozinku resubscribe: Ponovo se pretplati + role: Uloga search: Pretraga + search_same_email_domain: Ostali korisnici sa istim domenom e-pošte + search_same_ip: Ostali korisnici sa istom IP adresom + security: Bezbednost + security_measures: + only_password: Samo lozinka + password_and_2fa: Lozinka i dvofaktorska autentifikacija + sensitive: Označi kao osetljiv + sensitized: Označeno kao osetljivo shared_inbox_url: Adresa deljenog sandučeta show: - created_reports: Prijave koje je napravio ovaj nalog - targeted_reports: Prijave napravljene o ovom nalogu + created_reports: Podnete prijave + targeted_reports: Prijave od strane drugih silence: Ućutkaj - statuses: Statusi + silenced: Ućutkan + statuses: Objave + strikes: Prethodni prestupi subscribe: Pretplati se + suspend: Suspenduj + suspended: Suspendovani + suspension_irreversible: Podaci ovog naloga su nepovratno izbrisani. Možete odsuspendovati ovaj nalog čime će on postati upotrebljiv, ali se podaci prethodno sadržani na nalogu neće vratiti. + suspension_reversible_hint_html: Nalog je suspendovan i njegovi podaci će biti izbrisani datuma %{date}. Do tada, ovaj nalog može biti vraćen bez ikakvih promena. Ukoliko želite da odmah obrišete sve podatke naloga, možete to učiniti ispod. title: Nalozi + unblock_email: Odblokiraj adresu e-pošte + unblocked_email_msg: Uspešno odblokirana imejl adresa korisnika %{username} + unconfirmed_email: Nepotvrđena adresa e-pošte + undo_sensitized: Ukloni oznaku „osetljiv” undo_silenced: Ukini ćutanje undo_suspension: Ukini suspenziju + unsilenced_msg: Uspešno poništeno ograničenje naloga %{username} unsubscribe: Ukini pretplatu + unsuspended_msg: Uspešno poništena suspenzija naloga %{username} username: Korisničko ime + view_domain: Pročitaj opis domena + warn: Upozori web: Veb + whitelisted: Dozvoljena federacija action_logs: + action_types: + approve_appeal: Uvaži žalbu + approve_user: Odobri korisnika + assigned_to_self_report: Dodeli prijavu + change_email_user: Promeni e-adresu korisnika + change_role_user: Promeni ulogu korisnika + confirm_user: Potvrdi korisnika + create_account_warning: Kreiraj upozorenje + create_announcement: Kreiraj najavu + create_canonical_email_block: Kreiraj blok e-pošte + create_custom_emoji: Napravi prilagođeni emodži + create_domain_allow: Dodaj dozvoljeni domen + create_domain_block: Dodaj blokirani domen + create_email_domain_block: Blokiraj imejl domen + create_ip_block: Napravi IP uslov + create_unavailable_domain: Dodaj domen kao nedostupan + create_user_role: Kreiraj ulogu + demote_user: Smanji ovlašćenja korisnika + destroy_announcement: Izbriši najavu + destroy_canonical_email_block: Izbriši blok e-pošte + destroy_custom_emoji: Obriši prilagođeni emodži + destroy_domain_allow: Obriši dozvoljeni domen + destroy_domain_block: Obriši blokirani domen + destroy_email_domain_block: Izbriši blok e-pošte + destroy_instance: Očisti domen + destroy_ip_block: Obriši IP uslov + destroy_status: Izbriši post + destroy_unavailable_domain: Obriši nedostupan domen + destroy_user_role: Uništi poziciju + disable_2fa_user: Onemogući dvofaktorsku autentifikaciju + disable_custom_emoji: Onemogući prilagođene emodžije + disable_sign_in_token_auth_user: Onemogući imejl autentifikaciju za korisnika + disable_user: Onemogući korisnika + enable_custom_emoji: Omogući prilagođene emodžije + enable_sign_in_token_auth_user: Omogući imejl autentifikaciju za korisnika + enable_user: Omogući korisnika + memorialize_account: Pretvori u memorijalni nalog + promote_user: Unapredi korisnika + reject_appeal: Odbij žalbu + reject_user: Odbaci korisnika + remove_avatar_user: Ukloni avatar + reopen_report: Ponovo otvori prijavu + resend_user: Ponovo pošalji mejl za potvrdu + reset_password_user: Resetuj lozinku + resolve_report: Zatvori prijavu + sensitive_account: Označi nalog kao osetljiv + silence_account: Ograniči nalog + suspend_account: Obustavi nalog + unassigned_report: Povuci prijavu + unblock_email_account: Odblokiraj imejl adresu + unsensitive_account: Ukloni dodeljenu oznaku „osetljiv” + unsilence_account: Povuci ograničenje naloga + unsuspend_account: Povuci suspenziju naloga + update_announcement: Saopštenje o ažuriranju + update_custom_emoji: Ažuriraj prilagođene emodžije + update_domain_block: Ažuriraj domen blok + update_ip_block: Ažuriraj IP uslov + update_status: Uredi objavu + update_user_role: Uredi ulogu + actions: + approve_appeal_html: "%{name} je uvažio žalbu korisnika %{target} na odluku moderatora" + approve_user_html: "%{name} je odobrio/-la registraciju korisnika %{target}" + assigned_to_self_report_html: "%{name} je sebi dodelio/-la prijavu %{target}" + change_email_user_html: "%{name} je promenio/-la imejl adresu korisnika %{target}" + change_role_user_html: "%{name} je promenio/-la ovlašćenja korisnika %{target}" + confirm_user_html: "%{name} je potvrdio/-la imejl adresu korisnika %{target}" + create_account_warning_html: "%{name} je poslao/-la upozorenje korisniku %{target}" + create_announcement_html: "%{name} je napravio/-la novo saopštenje %{target}" + create_canonical_email_block_html: "%{name} je blokirao/-la imejl adresu sa hešom %{target}" + create_custom_emoji_html: "%{name} je otpremio/-la nove emodžije %{target}" + create_domain_allow_html: "%{name} je dozvolio/-la federaciju sa domenom %{target}" + create_domain_block_html: "%{name} je blokirao/-la domen %{target}" + create_email_domain_block_html: "%{name} je blokirao/-la imejl domen %{target}" + create_ip_block_html: "%{name} je napravio/-la uslov za IP adrese %{target}" + create_unavailable_domain_html: "%{name} je obustavio/-la isporučivanje domenu %{target}" + create_user_role_html: "%{name} je napravio/-la %{target} poziciju" + demote_user_html: "%{name} je smanjio ovlašćenja korisnika %{target}" + destroy_announcement_html: "%{name} je obrisao/-la saopštenje %{target}" + destroy_canonical_email_block_html: "%{name} je odblokirao/-la imejl adresu sa hešom %{target}" + destroy_custom_emoji_html: "%{name} je obrisao/-la emodži %{target}" + destroy_domain_allow_html: "%{name} je zabranio/-la federaciju sa domenom %{target}" + destroy_domain_block_html: "%{name} je odblokirao/-la domen %{target}" + destroy_email_domain_block_html: "%{name} je odblokirao/-la imejl domen %{target}" + destroy_instance_html: "%{name} je očistio/-la domen %{target}" + destroy_ip_block_html: "%{name} je obrisao/-la uslov za IP adrese %{target}" + destroy_status_html: "%{name} je izbrisao/-la objavu korisnika %{target}" + destroy_unavailable_domain_html: "%{name} je ponovo uspostavio/-la isporučivanje domenu %{target}" + destroy_user_role_html: "%{name} je izbrisao/-la %{target} poziciju" + disable_2fa_user_html: "%{name} je onemogućio/-la dvofaktorsku autentifikaciju za korisnika %{target}" + disable_custom_emoji_html: "%{name} je onemogućio/-la emodži %{target}" + disable_sign_in_token_auth_user_html: "%{name} je onemogućio/-la imejl autentifikaciju za korisnika %{target}" + disable_user_html: "%{name} je onemogućio/-la prijavljivanje za korisnika %{target}" + enable_custom_emoji_html: "%{name} je omogućio/-la emodži %{target}" + enable_sign_in_token_auth_user_html: "%{name} je omogućio/-la imejl autentifikaciju za %{target}" + enable_user_html: "%{name} je omogućio/-la prijavljivanje korisniku %{target}" + memorialize_account_html: "%{name} je pretvorio/-la nalog korisnika %{target} u memorijalnu stranicu" + promote_user_html: "%{name} je unapredio/-la korisnika %{target}" + reject_appeal_html: "%{name} je odbio/-la žalbu na moderacijsku odluku koju je priložio korisnik %{target}" + reject_user_html: "%{name} je odbio/-la registraciju korisnika %{target}" + remove_avatar_user_html: "%{name} je uklonio avatar korisnika %{target}" + reopen_report_html: "%{name} je ponovo otvorio/-la prijavu %{target}" + resend_user_html: "%{name} je ponovo poslao/-la imejl za potvrdu korisniku %{target}" + reset_password_user_html: "%{name} je resetovao/-la lozinku korisnika %{target}" + resolve_report_html: "%{name} je rešio/-la prijavu %{target}" + sensitive_account_html: "%{name} je označio/-la medije naloga %{target} kao osetljive" + silence_account_html: "%{name} je ograničio/-la nalog %{target}" + suspend_account_html: "%{name} je suspendovao/-la nalog %{target}" + unassigned_report_html: "%{name} je povukao/-la dodelu prijave %{target}" + unblock_email_account_html: "%{name} je odblokirao/-la imejl adresu korisnika %{target}" + unsensitive_account_html: "%{name} je uklonio/-la oznaku „osetljivo” sa medija naloga %{target}" + unsilence_account_html: "%{name} je povukao/-la ograničenje naloga %{target}" + unsuspend_account_html: "%{name} je povukao/-la suspenziju naloga %{target}" + update_announcement_html: "%{name} je ažurirao/-la saopštenje %{target}" + update_custom_emoji_html: "%{name} je ažurirao/-la emodži %{target}" + update_domain_block_html: "%{name} je ažurirao/-la blok domena %{target}" + update_ip_block_html: "%{name} je promenio/-la IP uslov za %{target}" + update_status_html: "%{name} je ažurirao/-la objavu korisnika %{target}" + update_user_role_html: "%{name} je promenio/-la poziciju %{target}" + deleted_account: obrisan nalog + empty: Nije pronađen nijedan log. + filter_by_action: Filtriraj po aktivnosti + filter_by_user: Filtriraj po korisniku title: Zapisnik + announcements: + destroyed_msg: Saopštenje je uspešno obrisano! + edit: + title: Uredi najavu + empty: Nijedna najava nije pronađena. + live: Uživo + new: + create: Kreiraj najavu + title: Nova najava + publish: Objavi + published_msg: Najava uspešno objavljena! + scheduled_for: Zakazano za %{time} + scheduled_msg: Saopštenje je zakazano za objavljivanje! + title: Najave + unpublish: Povuci objavu + unpublished_msg: Objava saopštenja je uspešno povučena! + updated_msg: Saopštenje je uspešno ažurirano! custom_emojis: + assign_category: Dodeli kategoriju by_domain: Domen - copied_msg: Uspešno napravljena lokalna kopija emotikona + copied_msg: Uspešno napravljena lokalna kopija emodžija copy: Kopiraj - copy_failed_msg: Ne mogu da napravim lokalnu kopiju tog emotikona - created_msg: Emotikon uspešno napravljen! + copy_failed_msg: Ne mogu da napravim lokalnu kopiju tog emotidžija + create_new_category: Kreiraj novu kategoriju + created_msg: Emodži uspešno napravljen! delete: Obriši - destroyed_msg: Emotikon uspešno obrisan! + destroyed_msg: Emodži uspešno obrisan! disable: Onemogući - disabled_msg: Emotikon uspešno onemogućen - emoji: Emotikon + disabled: Onemogućeno + disabled_msg: Emodži uspešno onemogućen + emoji: Emodži enable: Omogući - enabled_msg: Emotikon uspešno omogućen + enabled: Omogućeno + enabled_msg: Emodži uspešno omogućen + image_hint: PNG ili GIF fajl veličine do %{size} + list: Lista listed: Izlistan new: - title: Dodaj novi proizvoljni emotikon + title: Dodaj novi proizvoljni emodži + no_emoji_selected: Nijedan emodži nije promenjen jer nijedan nije izabran + not_permitted: Niste ovlašćeni da obavljate ovu radnju overwrite: Prepiši shortcode: Prečica shortcode_hint: Najmanje 2 karaktera, dozvoljeni su samo slova, brojevi i donje crte - title: Proizvoljni emotikoni + title: Proizvoljni emotidžiji + uncategorized: Nekategorizovano + unlist: Neizlistan unlisted: Neizlistan - update_failed_msg: Ne mogu da ažuriram ovaj emotikon - updated_msg: emotikon uspešno ažuriran! + update_failed_msg: Ne mogu da ažuriram ovaj emodži + updated_msg: Emodži uspešno ažuriran! upload: Otpremi + dashboard: + active_users: aktivni korisnici + interactions: interakcije + media_storage: Multimedijalno skladište + new_users: novi korisnici + opened_reports: otvorene prijave + pending_appeals_html: + few: "%{count} žalbe na čekanju" + one: "%{count} žalba na čekanju" + other: "%{count} žalbi na čekanju" + pending_reports_html: + few: "%{count} prijave na čekanju" + one: "%{count} prijava na čekanju" + other: "%{count} prijava na čekanju" + pending_tags_html: + few: "%{count} heš oznake na čekanju" + one: "%{count} heš oznaka na čekanju" + other: "%{count} heš oznaka na čekanju" + pending_users_html: + few: "%{count} korisnika na čekanju" + one: "%{count} korisnik na čekanju" + other: "%{count} korisnika na čekanju" + resolved_reports: rešene prijave + software: Softver + sources: Izvori registracija + space: Korišćenje prostora + title: Komandna tabla + top_languages: Najzastupljeniji jezici + top_servers: Najaktivniji serveri + website: Vebsajt + disputes: + appeals: + empty: Nijedna žalba nije pronađena. + title: Žalbe + domain_allows: + add_new: Dozvoli federaciju sa domenom + created_msg: Domen je uspešno odobren za federaciju + destroyed_msg: Domen je odbijen za federaciju + export: Izvoz + import: Uvoz + undo: Zabrani federaciju sa domenom domain_blocks: - add_new: Dodaj novi + add_new: Dodaj novi blok domena created_msg: Blokiranje domena se obrađuje destroyed_msg: Blokiranje domena je opozvano domain: Domen + edit: Izmeni blok domena + existing_domain_block: Već ste uspostavili stroža ograničenja prema korisniku %{name}. + existing_domain_block_html: Već ste uspostavili stroža ograničenja prema %{name}, potrebno je da ga prvo odblokirate. + export: Izvoz + import: Uvoz new: create: Napravi blokadu hint: Blokiranje domena neće sprečiti pravljenje naloga u bazi, ali će retroaktivno i automatski primeniti određene moderatorske metode nad tim nalozima. severity: + desc_html: "Ograničenje će sakriti objave naloga sa ovog domena od svakog ko ih ne prati. Suspenzija će obrisati sav sadržaj, medije i podatke profila sa naloga ovog domena sa Vašeg servera. Koristite Ništa ukoliko samo želite da odbijete medijske fajlove." noop: Ništa + silence: Ograniči suspend: Suspenzija title: Novo blokiranje domena + no_domain_block_selected: Nijedan blok domena nije promenjen jer nijedan nije izabran + not_permitted: Niste ovlašćeni da obavljate ovu radnju + obfuscate: Sakrij ime domena + obfuscate_hint: Delimično sakrij ime domena na listi ako je reklamiranje liste ograničenih domena omogućeno + private_comment: Privatni komentar + private_comment_hint: Komentar o ograničenju ovog domena za internu upotrebu od strane moderatora. + public_comment: Javni komentar + public_comment_hint: Komentar o ograničenju ovog domena za javnost, ukoliko je reklamiranje liste ograničenih domena omogućeno. reject_media: Odbaci multimediju - reject_media_hint: Uklanja lokalno uskladištene multimedijske fajlove i odbija da ih skida na dalje. Nebitno je za suspenziju - undo: Poništi + reject_media_hint: Uklanja lokalno uskladištene multimedijske fajlove i odbija da ih skida ubuduće. Nebitno je za suspenziju + reject_reports: Odbaci izveštaj + reject_reports_hint: Ignoriši sve izveštaje koji dolaze sa ovog domena. Nebitno je za suspenzije + undo: Poništi blok domena + view: Pročitaj blok domena email_domain_blocks: - add_new: Dodaj novuAdd new - created_msg: Uspešno dodao domen e-pošte na crnu listu - delete: Ukloni + add_new: Dodaj novi + attempts_over_week: + few: "%{count} pokušaja tokom prethodne nedelje" + one: "%{count} pokušaj tokom prethodne nedelje" + other: "%{count} pokušaja registracije tokom prethodne nedelje" + created_msg: Uspešno dodao domen E-pošte na crnu listu + delete: Obriši + dns: + types: + mx: MX izveštaj domain: Domen new: create: Dodaj domen - title: Nova stavka u crnoj listi e-pošti - title: Crna lista adresa e-pošte + resolve: Pretvori domen + title: Nova stavka e-pošte u crnoj listi + no_email_domain_block_selected: Nijedan blok imejl domena nije promenjen jer nijedan nije izabran + not_permitted: Nije dozvoljeno + resolved_dns_records_hint_html: Ime domena se pretvara u sledeće MX domene, koji su naposletku odgovorni za prihvatanje elektronske pošte. Blokiranje MX domena će blokirati registracije sa svake imejl adrese koja koristi taj MX domen, čak i u slučaju kada se vidljivo ime domena razlikuje. Vodite računa o tome da ne blokirate velike imejl provajdere. + resolved_through_html: Preusmereno kroz %{domain} + title: Crna lista E-pošte + export_domain_allows: + new: + title: Uvezi dozvoljene domene + no_file: Nijedan fajl nije odabran + export_domain_blocks: + import: + description_html: Upravo ćete uvesti listu blokiranih domena. Molimo Vas, vrlo pažljivo pregledajte ovu listu, posebno ukoliko je niste sami napravili. + existing_relationships_warning: Postojeći odnosi u obliku praćenja + private_comment_description_html: 'Da bi Vam pomogli da pratite odakle su blokovi uvezeni, uvezeni blokovi će biti napravljeni sa sledećim privatnim komentarom: %{comment}' + private_comment_template: Uvezeno sa izvora %{source} na datum %{date} + title: Uvezi blokirane domene + invalid_domain_block: 'Jedan ili više blokova domena je preskočen zbog sledeće greške tj. grešaka: %{error}' + new: + title: Uvezi blokirane domene + no_file: Nijedan fajl nije odabran + follow_recommendations: + description_html: "Predlozi za praćenje pomažu novim korisnicima da brzo pronađu zanimljiv sadržaj. Kada korisnik nije dovoljno interagovao sa ostalima da bi se za njega formirali personalizovani predlozi za praćenje, ovi nalozi će biti preporučeni umesto toga. Oni se generišu na dnevnoj bazi iz skupa naloga sa najviše nedavnih angažovanja i najviše lokalnih pratilaca za jedan jezik." + language: Za jezik + status: Status + suppress: Potisni preporuke za praćenje + suppressed: Potisnuto + title: Preporuke za praćenje + unsuppress: Vrati preporuku za praćenje instances: - title: Poznate instance + availability: + description_html: + few: Ukoliko isporuka domenu ne uspe nijednom tokom %{count} različitih dana, dalji pokušaji isporuke neće biti inicirani osim ukoliko se ne primi isporuka sa domena. + one: Ako isporuka domenu ne uspe nijednom u vremenskom periodu od %{count} dana, dalji pokušaji isporuke se neće inicirati osim ukoliko se ne primi isporuka sa domena. + other: Ukoliko isporuka domenu ne uspe nijednom tokom %{count} različitih dana, dalji pokušaji isporuke se neće inicirati osim ukoliko se ne primi isporuka sa domena. + failure_threshold_reached: Prag neuspeha dostignut datuma %{date}. + failures_recorded: + few: Neuspeli pokušaji tokom %{count} različita dana. + one: Neuspeli pokušaj tokom %{count} dana. + other: Neuspeli pokušaji tokom %{count} različitih dana. + no_failures_recorded: Bez zabeleženih neuspeha. + title: Dostupnost + warning: Poslednji pokušaj povezivanja sa ovim serverom je bio neuspešan + back_to_all: Sve + back_to_limited: Ograničeno + back_to_warning: Upozorenje + by_domain: Domen + confirm_purge: Da li ste sigurni da želite da trajno uklonite podatke sa ovog domena? + content_policies: + comment: Interna beleška + description_html: Možete da definišete politiku sadržaja koja će važiti za sve naloge na ovom domenu i svakom od njegovih poddomena. + limited_federation_mode_description_html: Možete da odlučite da li da dopustite federaciju sa ovim domenom. + policies: + reject_media: Odbij multimediju + reject_reports: Odbij prijave + silence: Ograniči + suspend: Suspenduj + policy: Politika + reason: Javni razlog + title: Politika sadržaja + dashboard: + instance_accounts_dimension: Najpraćeniji nalozi + instance_accounts_measure: uskladišteni nalozi + instance_followers_measure: naši pratioci ovde + instance_follows_measure: njihovi pratioci ovde + instance_languages_dimension: Najzastupljeniji jezici + instance_media_attachments_measure: uskladišteni multimedijalni prilozi + instance_reports_measure: prijave protiv njih + instance_statuses_measure: uskladištene objave + delivery: + all: Sve + clear: Očisti greške prilikom isporuke + failing: Bez uspeha + restart: Započni isporuku ponovo + stop: Obustavi isporuku + unavailable: Nedostupno + delivery_available: Dostava je dostupna + delivery_error_days: Dani neuspešnih isporuka + delivery_error_hint: Ukoliko isporuka nije moguća %{count} dana, automatski će biti obeležena kao neisporučiva. + destroyed_msg: Podaci sa %{domain} su sada u redu za čekanje za izvesno brisanje. + empty: Nijedan domen nije pronađen. + known_accounts: + few: "%{count} poznata naloga" + one: "%{count} poznat nalog" + other: "%{count} poznatih naloga" + moderation: + all: Sve + limited: Ograničeno + title: Moderacija + private_comment: Privatni komentar + public_comment: Javni komentar + purge: Čistka + purge_description_html: Ukoliko verujete da je ovaj domen trajno ugašen, možete da obrišete sve zapise naloga i srodne podatke ovog domena sa svog skladišta. Ovo može da potraje. + title: Federacija + total_blocked_by_us: Blokirano od strane nas + total_followed_by_them: Praćeni od strane njih + total_followed_by_us: Praćeni od strane nas + total_reported: Prijave vezane za njih + total_storage: Multimedijalni prilozi + totals_time_period_hint_html: Ukupne vrednosti prikazane ispod uključuju podatke za sva vremena. invites: + deactivate_all: Deaktiviraj sve filter: all: Sve - available: Aktivne - expired: Istekle + available: Dostupni + expired: Istekli + title: Filter title: Pozivnice + ip_blocks: + add_new: Napravi pravilo + created_msg: Uspešno je dodato novo IP pravilo + delete: Izbriši + expires_in: + '1209600': 2 nedelje + '15778476': 6 meseci + '2629746': 1 mesec + '31556952': 1 godina + '86400': 1 dan + '94670856': 3 godine + new: + title: Kreiraj novo IP pravilo + no_ip_block_selected: Nijedno IP pravilo nije promenjeno jer nijedno nije izabrano + title: IP pravila + relationships: + title: Odnosi korisnika %{acct} + relays: + add_new: Dodaj novi relej + delete: Obriši + description_html: "Federalni relej je posrednički server koji razmenjuje velike količine javnih truba između servera na koji je pretplaćen i na koji objavljuje.Može pomoći malim i srednjim serverima da otkriju sadržaj iz fediversa, koji inače zahteva od lokalnih korisnika da ručno pratiti ostale ljude na udaljenim serverima." + disable: Isključi + disabled: Isključen + enable: Uključi + enable_hint: Kada se omogući, vaš server će biti pretplaćen na sve javne objave sa ovog releja, i počeće da šalje javne objave ovog servera na njega. + enabled: Uključen + inbox_url: URL Releja + pending: Čeka se odobrenje releja + save_and_enable: Sačuvaj i omogući + setup: Podesi vezu releja + signatures_not_enabled: Prenosi možda neće raditi ispravno dok je uključen bezbedni režim ili režim ograničene federacije + status: Status + title: Releji + report_notes: + created_msg: Beleška prijave uspešno napravljena! + destroyed_msg: Beleška prijave uspešno izbrisana! reports: + account: + notes: + few: "%{count} beleške" + one: "%{count} beleška" + other: "%{count} beležaka" + action_log: Zapisnik action_taken_by: Akciju izveo + actions: + delete_description_html: Prijavljene objave će biti obrisane i prekršaj će biti upisan da bi Vam olakšali intervenciju prilikom budućih prestupa sa istog naloga. + mark_as_sensitive_description_html: Multimedijalni sadržaj sa prijavljenih objava će biti označen kao osetljiv i prekršaj će biti upisan radi lakše intervencije u slučaju daljih prekršaja sa istog naloga. + other_description_html: Pogledajte više opcija za kontrolisanje ponašanja naloga i prilagodite komunikaciju sa prijavljenim nalogom. + resolve_description_html: Nijedna radnja neće biti preduzeta protiv prijavljenog naloga, nijedan prestup nije upisan i prijava će biti zatvorena. + silence_description_html: Nalog će biti vidljiv samo onima koji ga već prate ili koji ga ručno potraže, što će značajno ograničiti njegov domet. Ograničenje se može povući u svakom trenutku. Zatvara sve prijave podnete protiv ovog naloga. + suspend_description_html: Nalog i svi njegovi sadržaji će postati nedostupni i u jednom trenutku izbrisani, a interakcija sa nalogom više neće biti moguća. Suspenzija se može povući u roku od 30 dana. Zatvara sve prijave podnete protiv ovog naloga. + actions_description_html: Odlučite koju radnju da sprovedete radi rešavanja ove prijave. Ukoliko sprovedete kaznenu radnju protiv prijavljenog naloga, vlasnik naloga će biti obavešten putem i-mejla, osim ukoliko oznaka „Nepoželjne poruke” nije odabrana. + actions_description_remote_html: Odlučite koju radnju da preduzmete radi rešavanja ove prijave. Ovo će uticati samo na to kako Vaš server komunicira sa ovim udaljenim nalogom i obrađuje njegov sadržaj. + add_to_report: Dodaj još u prijavu are_you_sure: Da li ste sigurni? + assign_to_self: Dodeli meni + assigned: Dodeljeni moderator + by_target_domain: Domen prijavljenog naloga + cancel: Otkaži + category: Kategorija + category_description_html: Razlog zbog kog je ovaj nalog i/ili sadržaj prijavljen će biti obrazložen u komunikaciji sa prijavljenim nalogom comment: none: Ništa - mark_as_resolved: Označi kao rešen + comment_description_html: 'Radi pružanja više informacija, %{name} je napisao/-la:' + confirm: Potvrdi + confirm_action: Potvrdi moderacijsku radnju prema @%{acct} + created_at: Prijavljena + delete_and_resolve: Obriši objave + forwarded: Prosleđeno + forwarded_to: Prosleđeno ka %{domain} + mark_as_resolved: Označi kao rešenu + mark_as_sensitive: Obeleži kao osetljivo + mark_as_unresolved: Označi kao nerešenu + no_one_assigned: Niko + notes: + create: Dodaj belešku + create_and_resolve: Reši sa beleškom + create_and_unresolve: Otvori ponovo sa beleškom + delete: Obriši + placeholder: Opišite kakve su radnje preduzete, ili bilo kakve povezane novosti... + title: Beleške + notes_description_html: Pročitajte i ostavite napomene drugim moderatorima i sebi u budućnosti + processed_msg: 'Prijava #%{id} uspešno obrađena' + quick_actions_description_html: 'Preduzmite brzu radnju ili se spustite niže da biste videli prijavljeni sadržaj:' + remote_user_placeholder: udaljeni korisnik sa %{instance} + reopen: Otvori prijavu ponovo report: 'Prijava #%{id}' reported_account: Prijavljeni nalog reported_by: Prijavio - resolved: Rešeni + resolved: Rešena + resolved_msg: Prijava uspešno razrešena! + skip_to_actions: Preskoči do radnji + status: Status + statuses: Prijavljeni sadržaj + statuses_description_html: Sporni sadržaj će biti naveden u komunikaciji sa prijavljenim nalogom + summary: + action_preambles: + delete_html: 'Upravo ćete obrisati neke od objava korisnika @%{acct}. Ovo će:' + mark_as_sensitive_html: 'Upravo ćete označiti neke objave korisnika @%{acct} kao osetljive. Ovo će:' + silence_html: 'Upravo ćete ograničiti nalog korisnika @%{acct}. Ovo će:' + suspend_html: 'Upravo ćete suspendovati nalog korisnika @%{acct}. Ovo će:' + actions: + delete_html: Obrišite sporne objave + mark_as_sensitive_html: Obeležite medije spornih objava kao osetljive + silence_html: Žestoko ograničite domet korisnika @%{acct} tako što ćete učiniti njegov profil i sadržaje vidljive samo ljudima koji ih već prate i ljudima koji ručno potraže profil + suspend_html: Suspendujte korisnika @%{acct}, što će učiniti njegov profil i sadržaje nedostupnim za pristup i interakciju + close_report: 'Označite prijavu #%{id} kao rešenu' + close_reports_html: Označi sve prijave protiv @%{acct} kao rešene + delete_data_html: Obriši profil i sadržaje korisnika @%{acct} za 30 dana osim ukoliko suspenzija bude povučena u međuvremenu + preview_preamble_html: "@%{acct} će primiti upozorenje sledeće sadržine:" + record_strike_html: Upišite prekršaj na ime @%{acct} da bi Vam bilo lakše da u budućnosti intervenišete prilikom daljih prestupa sa ovog naloga + send_email_html: Pošalji imejl upozorenja korisniku @%{acct} + warning_placeholder: Opciono dodatno obrazloženje za moderacijsku radnju. + target_origin: Poreklo prijavljenog naloga title: Prijave - unresolved: Nerešeni + unassign: Ukloni dodelu + unknown_action_msg: 'Nepoznata radnja: %{action}' + unresolved: Nerešene + updated_at: Ažurirana + view_profile: Pogledaj profil + roles: + add_new: Dodaj ulogu + assigned_users: + few: "%{count} korisnika" + one: "%{count} korisnik" + other: "%{count} korisnika" + categories: + administration: Administracija + devops: DevOps + invites: Pozivnice + moderation: Moderacija + special: Posebno + delete: Izbriši + description_html: Pomoću korisničkih uloga možete da podesite kojim funkcijama i delovima Mastodona Vaši korisnici mogu da pristupe. + edit: Izmeni ulogu '%{name}' + everyone: Podrazumevana ovlašćenja + everyone_full_description_html: Ovo je osnovna uloga koja se odnosi na sve korisnike, čak i one kojima nije dodeljena uloga. Sve druge uloge nasleđuju ovlašćenja od osnovne uloge. + permissions_count: + few: "%{count} dozvole" + one: "%{count} dozvola" + other: "%{count} dozvola" + privileges: + administrator: Administrator + administrator_description: Korisnici sa ovom privilegijom mogu da zaobiđu sva druga ograničenja + delete_user_data: Izbriši podatke korisnika + delete_user_data_description: Dopušta korisnicima da izbrišu podatke drugih korisnika bez odlaganja + invite_users: Pozovi korisnike + invite_users_description: Dopušta korisnicima da pozove nove ljude na server + manage_announcements: Upravljaj obaveštenjima + manage_announcements_description: Dopušta korisnicima da rukovode saopštenjima na serveru + manage_appeals: Nadgledanje žalbi + manage_appeals_description: Dopušta korisnicima da pregledaju žalbe na moderacijske radnje + manage_blocks: Nadgledanje blokova + manage_blocks_description: Dopušta korisnicima da blokiraju imejl provajdere i IP adrese + manage_custom_emojis: Nadležnost nad prilagođenim emodžijima + manage_custom_emojis_description: Daje korisnicima kontrolu nad prilagođenim emodžijima na serveru + manage_federation: Nadgledanje federacije + manage_federation_description: Dopušta korisnicima da blokiraju ili dozvole federaciju sa drugim domenima i kontrolišu isporučivanje podataka drugim serverima + manage_invites: Nadgledanje pozivnica + manage_invites_description: Dopušta korisnicima da pretražuju i deaktiviraju pozivnice + manage_reports: Nadgledanje prijava + manage_reports_description: Dopušta korisnicima da pregledaju prijave i izvršavaju moderacijske radnje nad njima + manage_roles: Upravljaj ulogama + manage_roles_description: Dopušta korisnicima da nadgledaju i dodeljuju uloge sa nižim ovlašćenjima od njihove + manage_rules: Upravljaj pravilima + manage_rules_description: Dozvoli korisnicima da menjaju pravila servera + manage_settings: Upravljaj postavkama + manage_settings_description: Dozvoli korisnicima da menjaju postavke sajta + manage_taxonomies: Nadgledanje taksonomija + manage_taxonomies_description: Dopušta korisnicima da pregledaju sadržaj u trendu i ažuriraju postavke heš oznaka + manage_user_access: Nadležnost nad korisničkim pristupom + manage_user_access_description: Dopušta korisnicima da onemoguće dvofaktorsku autentifikaciju drugih korisnika, menjaju im imejl adrese i resetuju im lozinke + manage_users: Nadležnost nad korisnicima + manage_users_description: Dopušta korisnicima da pročitaju detalje drugih korisnika i izvršavaju moderacijske radnje nad njima + manage_webhooks: Nadležnost nad webhook elementima + manage_webhooks_description: Dopušta korisnicima da uspostave webhook elemente za administrativne radnje + view_audit_log: Pročitaj zapisnik revizija + view_audit_log_description: Dopušta korisnicima da vide istoriju administrativnih radnji na serveru + view_dashboard: Pogledaj kontrolni panel + view_dashboard_description: Dopušta korisnicima da pristupe kontrolnom panelu i raznim metrikama + view_devops: DevOps + view_devops_description: Dopušta korisnicima da pristupe Sidekiq i pgHero kontrolnim panelima + title: Uloge + rules: + add_new: Dodaj pravilo + delete: Izbriši + description_html: Dok većina tvrdi da je pročitala i slaže se sa uslovima korišćenja, ljudi ih obično ne čitaju sve dok se ne javi problem. Učinite pravila Vašeg servera čitljivijim i pristupačnijim tako što ćete ih izložiti u formi liste. Potrudite se da pojedinačna pravila budu kratka i jednostavna, ali pokušajte i da ih ne iscepkate u previše odvojenih stavki. + edit: Uredi pravilo + empty: Nijedno pravilo servera još nije definisano. + title: Pravila servera + settings: + about: + manage_rules: Upravljanje pravilima servera + preamble: Pružite detaljne informacije o tome kako se server vodi, moderira i finansira. + rules_hint: Postoji predviđeno mesto za pravila koja se od korisnika očekuje da poštuju. + title: Naziv + appearance: + preamble: Prilagodite veb interfejs Mastodona. + title: Izgled + branding: + preamble: Brendiranje Vašeg servera ga izdvaja od drugih servera na mreži. Ove informacije mogu biti prikazane u raznim okruženjima, poput Mastodonovog veb interfejsa, nativnih aplikacija, u pregledima linkova na drugim serverima i u aplikacijama za razmenu poruka, itd. Iz ovog razloga, najbolje je da ove informacije budu kratke, jasne i koncizne. + title: Brendiranje + content_retention: + preamble: Kontrolišite kako se sadržaj generisan od strane korisnika skladišti na Mastodonu. + title: Zadržavanje sadržaja + default_noindex: + desc_html: Utiče na sve korisnike koji nisu sami promenili ovu postavku + title: Podrazumevano isključi korisnike iz indeksiranja pretraživača + discovery: + follow_recommendations: Preporuke za praćenje + preamble: Održavanje zanimljivih sadržaja na površini je ključno u privlačenju novih korisnika koji možda ne znaju nikoga na Mastodonu. Kontrolišite kako različiti načini istraživanja funkcionišu na Vašem serveru. + profile_directory: Direktorijum profilâ + public_timelines: Javne vremenske linije + publish_discovered_servers: Objavi otkrivene servere + publish_statistics: Objavi statistiku + title: Otkrivanje + trends: Trendovi + domain_blocks: + all: Svima + disabled: Nikome + users: Prijavljenim lokalnim korisnicima + registrations: + preamble: Kontrolišite ko sme da napravi nalog na Vašem serveru. + title: Registracije + registrations_mode: + modes: + approved: Odobrenje neophodno za registraciju + none: Niko ne može da se registruje + open: Bilo ko može da se registruje + title: Podešavanja servera + site_uploads: + delete: Obriši otpremljeni fajl + destroyed_msg: Otpremanje uspešno obrisano! statuses: + account: Autor + application: Aplikacija back_to_account: Nazad na stranu naloga + back_to_report: Nazad na stranicu sa prijavama + batch: + remove_from_report: Uklonite iz prijave + report: Prijavi + deleted: Obrisano + favourites: Omiljeno + history: Istorija verzijâ + in_reply_to: Odgovor na + language: Jezik media: title: Multimedija + metadata: Meta podaci + no_status_selected: Nijedan status nije promenjen jer nijedan nije izabran + open: Otvori objavu + original_status: Originalna objava + reblogs: Deljenja + status_changed: Objava promenjena title: Statusi naloga + trending: U trendu + visibility: Vidljivost with_media: Sa multimedijom + strikes: + actions: + delete_statuses: "%{name} je obrisao/-la objave %{target}" + disable: "%{name} je zamrznuo nalog korisnika %{target}" + mark_statuses_as_sensitive: "%{name} je označio/-la objave korisnika %{target} kao osetljive" + none: "%{name} je poslao/-la upozorenje korisniku %{target}" + sensitive: "%{name} je obeležio/-la nalog %{target} kao osetljiv" + silence: "%{name} je ograničio/-la nalog %{target}" + suspend: "%{name} je suspendovao/-la nalog %{target}" + appeal_approved: Žalba uvažena + appeal_pending: Žalba u razmatranju + appeal_rejected: Žalba odbijena + system_checks: + database_schema_check: + message_html: Selidbe bazâ podataka su na čekanju. Molimo Vas obavite ih da bi se aplikacija ponašala kako treba + elasticsearch_running_check: + message_html: Povezivanje na Elasticsearch nije bilo moguće. Molimo Vas proverite da li je pokrenut, ili onemogućite pretragu celog teksta + elasticsearch_version_check: + message_html: 'Neusklađena Elasticsearch verzija: %{value}' + version_comparison: Elasticsearch %{running_version} je instaliran a %{required_version} je neophodan + rules_check: + action: Upravljanje pravilima servera + message_html: Niste definisali nijedno pravilo servera. + sidekiq_process_check: + message_html: Nijedan Sidekiq proces nije pokrenut za red(ove) %{value}. Molimo Vas pregledajte svoju Sidekiq konfiguraciju + upload_check_privacy_error: + action: Proverite ovde za više informacija + message_html: "Vaš veb server je pogrešno konfigurisan. Privatnost vaših korisnika je izložena riziku." + upload_check_privacy_error_object_storage: + action: Proverite ovde za više informacija + message_html: "Vaše skladište objekta je pogrešno konfigurisano. Privatnost vaših korisnika je izložena riziku." + tags: + review: Pregledaj status + updated_msg: Podešavanja heš oznaka uspešno ažurirana title: Administracija + trends: + allow: Dozvoli + approved: Odobreno + disallow: Zabrani + links: + allow: Dozvoli link + allow_provider: Dozvoli izdavača + description_html: Ovo su linkovi koji se trenutno često dele među nalozima koje Vaš server vidi. Može pomoći Vašim korisnicima da saznaju šta se dešava u svetu. Nijedan link nije javno prikazan sve dok Vi ne odobrite izdavača. Takođe možete da dozvolite ili odbijete zasebne linkove. + disallow: Zabrani link + disallow_provider: Zabrani izdavača + no_link_selected: Nijedan link nije promenjen jer nijedan nije izabran + publishers: + no_publisher_selected: Nijedan izdavač nije promenjen jer nijedan nije izabran + shared_by_over_week: + few: Podeljen od strane %{count} osobe tokom prethodne nedelje + one: Podeljen od strane jedne osobe tokom prethodne nedelje + other: Podeljen od strane %{count} osoba tokom prethodne nedelje + title: Linkovi u trendu + usage_comparison: Podeljeno %{today} puta danas, u poređenju sa %{yesterday} puta juče + not_allowed_to_trend: Nije odobreno za trend + only_allowed: Samo dozvoljeno + pending_review: Pregled na čekanju + preview_card_providers: + allowed: Linkovi sa ovog izvora mogu da budu „u trendu” + description_html: Ovo su domeni čiji se linkovi često dele na Vašem serveru. Linkovi neće biti javno prikazani kao „u trendu” osim ukoliko je domen linkova odobren. Vaše odobrenje (ili odbijanje) se prenosi i na poddomene. + rejected: Linkovi sa ovog izvora neće biti „u trendu” + title: Izdavači + rejected: Odbijen + statuses: + allow: Dozvoli objavu + allow_account: Odobri autora + description_html: Ovo su objave za koje Vaš server zna, a koje se trenutno često dele i koje korisnici često stavljaju u „omiljene”. Mogu pomoći Vašim novim korisnicima i povratnicima da pronađu još ljudi za praćenje. Nijedna objava nije prikazana javno sve dok Vi ne odobrite autora, odnosno dok autor ne dozvoli da njegov/njen nalog bude preporučen drugima. Takođe možete da odobrite ili odbijete zasebne objave. + disallow: Zabrani objavu + disallow_account: Zabrani autora + no_status_selected: Nijedna objava u trendu nije promenjena jer nijedna nije izabrana + not_discoverable: Autor nije dao saglasnost da bude preporučen + shared_by: + few: Podeljeno i stavljeno u „omiljene” %{friendly_count} puta + one: Podeljeno ili stavljeno u „omiljene” jednom + other: Podeljeno i stavljeno u „omiljene” %{friendly_count} puta + title: Objave u trendu + tags: + current_score: Trenutna vrednost %{score} + dashboard: + tag_accounts_measure: jedinstvene upotrebe + tag_languages_dimension: Najzastupljeniji jezici + tag_servers_dimension: Najaktivniji serveri + tag_servers_measure: različiti serveri + tag_uses_measure: ukupno upotreba + description_html: Ovo su heš oznake koje se trenutno često pojavljuju u objavama koje Vaš server vidi. Mogu pomoći Vašim korisnicima da otkriju o čemu se trenutno najviše govori. Nijedna heš oznaka nije prikazana javno sve dok Vi to ne odobrite. + listable: Može se preporučiti + no_tag_selected: Nijedna oznaka nije izmenjena jer nijedna nije izabrana + not_listable: Neće biti preporučeno + not_trendable: Neće se pojavljivati u trendovima + not_usable: Ne može se koristiti + peaked_on_and_decaying: Vrhunac dostignut datuma %{date}, od tada u opadanju + title: Heš oznake u trendu + trendable: Može da se pojavi pod trendovima + trending_rank: 'U trendu #%{rank}' + usable: Može se koristiti + usage_comparison: Upotrebljeno %{today} puta danas, u poređenju sa %{yesterday} puta juče + used_by_over_week: + few: Korišćeno od strane %{count} osobe tokom prethodne nedelje + one: Korišćeno od strane jedne osobe tokom prethodne nedelje + other: Korišćeno od strane %{count} ljudi tokom prethodne nedelje + title: Trendovi + trending: U trendu + warning_presets: + add_new: Dodaj novi + delete: Izbriši + edit_preset: Uredi preset upozorenja + empty: Još uvek niste definisali nijedan šablon upozorenja. + title: Upravljaj presetima upozorenja + webhooks: + add_new: Dodaj krajnju tačku + delete: Izbriši + description_html: "Webhook omogućava Mastodonu da Vašoj aplikaciji isporučuje obaveštenja u realnom vremenu o odabranim događajima, tako da Vaša aplikacija može da automatski izazove reakciju." + disable: Onemogući + disabled: Onemogućeno + edit: Izmeni krajnju tačku + empty: Još uvek nemate nijednu konfigurisanu webhook krajnju tačku. + enable: Omogući + enabled: Aktivno + enabled_events: + few: "%{count} omogućena događaja" + one: 1 omogućen događaj + other: "%{count} omogućenih događaja" + events: Događaji + new: Novi webhook + rotate_secret: Rotacija tajni + secret: Tajno potpisivanje + status: Status + title: Veb-presretač + webhook: Veb-presretač admin_mailer: + new_appeal: + actions: + delete_statuses: obrisati objave korisnika + disable: zamrznuti nalog korisnika + mark_statuses_as_sensitive: označiti objave korisnika kao osetljive + none: upozorenje + sensitive: označiti nalog kao osetljiv + silence: ograničiti nalog + suspend: suspendovati nalog + body: "%{target} prilaže žalbu na moderacijsku odluku korisnika %{action_taken_by} od %{date}, koja je glasila %{type}. U žalbi piše:" + next_steps: Možete uvažiti žalbu da biste povukli moderacijsku odluku, ili je možete ignorisati. + subject: "%{username} prilaže žalbu na moderacijsku odluku sa %{instance}" + new_pending_account: + body: Detalji novog naloga su navedeni dole. Možete odobriti ili odbiti ovaj zahtev. + subject: Nov nalog za pregled na %{instance} (%{username}) new_report: body: "%{reporter} je prijavio %{target}" + body_remote: Neka sa domena %{domain} je prijavio %{target} subject: Nova prijava za %{instance} (#%{id}) + new_trends: + body: 'Sledeće stavke je potrebno pregledati pre nego što mogu javno da se prikažu:' + new_trending_links: + title: Linkovi u trendu + new_trending_statuses: + title: Objave u trendu + new_trending_tags: + no_approved_tags: Trenutno nema odobrenih heš oznaka u trendu. + requirements: 'Bilo koji od sledećih kandidata bi mogao prevazići #%{rank} odobrenu heš oznaku u trendu, koja je trenutno #%{lowest_tag_name} sa vrednošću %{lowest_tag_score}.' + title: Heš oznake u trendu + subject: Novi trendovi za pregled na %{instance} + aliases: + add_new: Napravi pseudonim + created_msg: Uspešno je napravljen novi pseudonim. Sada možete inicirati preseljenje sa starog naloga. + deleted_msg: Uspešno je uklonjen pseudonim. Premeštanje sa tog naloga na ovaj više neće biti moguće. + empty: Nemate nijedan pseudonim. + hint_html: Ako želite da se preselite sa drugog naloga na ovaj, ovde možete napraviti pseudonim, koji je neophodan pre nego što možete nastaviti sa prebacivanjem pratilaca sa starog naloga na ovaj. Ova radnja sama po sebi je bezopasna i reverzibilna. Preseljenje naloga se inicira sa starog naloga. + remove: Odveži pseudonim + appearance: + advanced_web_interface: Napredno veb okruženje + advanced_web_interface_hint: 'Ako želite da iskoristite celu širinu ekrana, napredno veb okruženje vam omogućuje da konfigurišete mnogo različitih kolona da biste videli onoliko informacija u isto vreme koliko želite: početnu stranicu, obaveštenja, združenu vremensku liniju, bilo koji broj lista i heš oznaka.' + animations_and_accessibility: Animacije i pristupačnost + confirmation_dialogs: Dijalozi potvrde + discovery: Otkrivanje + localization: + body: Mastodon prevode dobrovoljci. + guide_link: https://crowdin.com/project/mastodon + guide_link_text: Svako može doprineti. + sensitive_content: Osetljiv sadržaj + toot_layout: Raspored objava application_mailer: + notification_preferences: Promeni preference E-pošte + salutation: Poštovani %{name}, settings: 'Promeni podešavanja e-pošte: %{link}' view: 'Pogledaj:' + view_profile: Pogledaj nalog + view_status: Pogledaj status applications: created: Aplikacija uspešno napravljena destroyed: Aplikacija uspešno obrisana + logout: Odjava regenerate_token: Rekreiraj pristupni token token_regenerated: Pristupni token uspešno rekreiran warning: Oprezno sa ovim podacima. Nikad je ne delite ni sa kim! your_token: Vaš pristupni token auth: - delete_account: Obriši nalog - delete_account_html: Ako želite da obrišete Vaš nalog, možete nastaviti ovde. Bićete upitani da potvrdite. + apply_for_account: Zatražite nalog + change_password: Lozinka + confirmations: + wrong_email_hint: Ako ta imejl adresa nije ispravna, možete je promeniti u podešavanjima naloga. + delete_account: Brisanje naloga + delete_account_html: Ako želite da izbrišete vaš nalog, možete nastaviti ovde. Od vas će se tražiti potvrda. + description: + prefix_invited_by_user: "@%{name} Vas poziva da se pridružite ovom serveru Mastodona!" + prefix_sign_up: Pridružite se Mastodonu danas! + suffix: Sa nalogom, moći ćete da pratite ljude, objavljujete novosti i razmenjujete poruke sa korisnicima bilo kog Mastodon servera i više! didnt_get_confirmation: Niste dobili poruku sa uputstvima za potvrdu naloga? + dont_have_your_security_key: Nemate sigurnosni ključ? forgot_password: Zaboravili ste lozinku? invalid_reset_password_token: Token za resetovanje lozinke je neispravan ili je istekao. Zatražite novi. + link_to_otp: Unesite dvofaktorski kod sa svog telefona ili rezervni kod + link_to_webauth: Koristite svoj sigurnosni ključ + log_in_with: Prijavite se pomoću login: Prijavi se logout: Odjava - migrate_account: Pomeri u drugi nalog + migrate_account: Premeštanje u drugi nalog migrate_account_html: Ako želite da preusmerite ovaj nalog na neki drugi, možete to podesiti ovde. + or_log_in_with: Ili se prijavite sa + privacy_policy_agreement_html: Pročitao/-la sam i saglasan/-a sam sa politikom privatnosti + providers: + cas: CAS-om + saml: SAML-om register: Registruj se + registration_closed: "%{instance} ne prima nove članove" resend_confirmation: Pošalji poruku sa uputstvima o potvrdi naloga ponovo reset_password: Resetuj lozinku + rules: + accept: Prihvati + back: Nazad + preamble: Ovo su pravila koja su uspostavili i koja sprovode moderatori servera %{domain}. + title: Neka osnovna pravila. security: Bezbednost set_new_password: Postavi novu lozinku + setup: + email_below_hint_html: Ako je imejl adresa ispod neispravna, možete je promeniti ovde i dobiti novi imejl potvrde. + email_settings_hint_html: Imejl potvrde je poslat na %{email}. Ako ta imejl adresa nije ispravna, možete je promeniti u podešavanjima naloga. + title: Postavljanje + sign_in: + preamble_html: Prijavite se sa svojim podacima za %{domain}. Ako se Vaš nalog nalazi na drugom serveru, nećete moći da se prijavite ovde. + title: Prijavite se na %{domain} + sign_up: + preamble: Sa nalogom na ovom Mastodon serveru, moći ćete da pratite bilo koga sa mreže, bez obzira na to na kom serveru se njegov/njen nalog nalazi. + title: Hajde da Vam namestimo nalog na %{domain}. + status: + account_status: Status naloga + confirming: Čekanje na potvrdu putem imejla. + functional: Vaš nalog je potpuno operativan. + pending: Vaš zahtev je na čekanju za pregled od strane našeg osoblja. Ovo može potrajati neko vreme. Primićete imejl poruku ukoliko Vam zahtev bude odobren. + redirecting_to: Vaš nalog je neaktivan jer preusmerava na %{acct}. + view_strikes: Pogledajte prethodne prestupe upisane na Vaše ime + too_fast: Formular je podnet prebrzo, pokušajte ponovo. + use_security_key: Koristite sigurnosni ključ authorize_follow: + already_following: Već pratite ovaj nalog + already_requested: Već ste poslali zahtev za praćenje tom nalogu error: Nažalost, desila se greška pri traženju udaljenog naloga follow: Zaprati follow_request: 'Poslali ste zahtev za praćenjen za:' following: 'Sjajno! Sada pratite:' post_follow: close: Ili možete zatvoriti ovaj prozor. - return: Vrati se na profil ovog korisnika + return: Vrati se na nalog ovog korisnika web: Idi na veb title: Zaprati %{acct} + challenge: + confirm: Nastavi + hint_html: "Savet: Nećemo Vas pitati za lozinku ponovo u narednih sat vremena." + invalid_password: Neispravna lozinka + prompt: Potvrdite lozinku za nastavak + crypto: + errors: + invalid_key: nije validan Ed25519 ili Curve25519 ključ + invalid_signature: nije validan Ed25519 potpis + date: + formats: + default: "%d. %b. %Y." + with_month_name: "%d. %B %Y." datetime: distance_in_words: + about_x_hours: "%{count} č." about_x_months: "%{count}mesec" about_x_years: "%{count}god" almost_x_years: "%{count}god" half_a_minute: Upravo sad + less_than_x_minutes: "%{count} min." less_than_x_seconds: Upravo sad over_x_years: "%{count}god" + x_days: "%{count}d" + x_minutes: "%{count} min." x_months: "%{count}mesec" + x_seconds: "%{count} sek." deletes: + challenge_not_passed: Lozinka koju ste uneli nije bila ispravna confirm_password: Unesite trenutnu lozinku da bismo proverili Vaš identitet + confirm_username: Unesite svoje korisničko ime da biste potvrdili proceduru proceed: Obriši nalog success_msg: Vaš nalog je uspešno obrisan + warning: + before: 'Pre nego što nastavite, molimo Vas pažljivo pročitajte sledeće napomene:' + caches: Sadržaj koji je keširan na drugim serverima može da ostane netaknut + data_removal: Vaše objave i drugi podaci će biti trajno izbrisani + email_change_html: Možete promeniti svoju imejl adresu bez brisanja svog naloga + email_contact_html: Ako poruka i dalje ne stiže, možete poslati mejl na %{email} za pomoć + email_reconfirmation_html: Ukoliko Vam imejl za potvrdu ne stiže, možete ga ponovo zatražiti + irreversible: Nećete biti u mogućnosti da vratite ili reaktivirate svoj nalog + more_details_html: Za više detalja, pogledajte politiku privatnosti. + username_available: Vaše korisničko ime će ponovo postati dostupno + username_unavailable: Vaše korisničko ime će ostati nedostupno + disputes: + strikes: + action_taken: Radnja preduzeta + appeal: Žalba + appeal_approved: Žalba na ovaj prestup je uvažena i prestup više nije validan + appeal_rejected: Žalba je odbijena + appeal_submitted_at: Žalba je priložena + appealed_msg: Vaša žalba je priložena. Bićete obavešteni ukoliko ona bude bila uvažena. + appeals: + submit: Priloži žalbu + approve_appeal: Uvaži žalbu + associated_report: Srodna prijava + created_at: Datum + description_html: Ovo su radnje preduzete protiv Vašeg naloga i upozorenja koja su Vam poslali članovi osoblja %{instance}. + recipient: Usmereno prema + reject_appeal: Odbij žalbu + status: 'Objava #%{id}' + status_removed: Objava je već uklonjena iz sistema + title: "%{action} od %{date}" + title_actions: + delete_statuses: Brisanje objava + disable: Zamrzavanje naloga + mark_statuses_as_sensitive: Označavanje objava kao osetljivih + none: Upozorenje + sensitive: Označavanje naloga kao osetljivog + silence: Ograničenje naloga + suspend: Suspenzija naloga + your_appeal_approved: Vaša žalba je uvažena + your_appeal_pending: Priložili ste žalbu + your_appeal_rejected: Vaša žalba je odbijena + domain_validator: + invalid_domain: nelegitimno ime domena errors: - '400': The request you submitted was invalid or malformed. + '400': Zahtev koji ste podneli je bio nelegitiman ili u pogrešnom formatu. '403': Nemate dozvola da vidite ovu stranu. '404': Strana koju ste tražili ne postoji. - '406': This page is not available in the requested format. + '406': Ova stranica nije dostupna u izabranom formatu. '410': Strana koju ste tražili više ne postoji. + '422': + content: Bezbedonosna provera nije uspela. Da ne blokirate kolačiće? + title: Bezbedonosna provera nije uspela '429': Uspored '500': content: Izvinjavamo se, nešto je pošlo po zlu sa ove strane. title: Strana nije ispravna - '503': The page could not be served due to a temporary server failure. + '503': Stranicu nije bilo moguće dostaviti usled privremenog pada servera. noscript_html: Da biste koristili Mastodont veb aplikaciju, omogućite JavaScript. U suprotnom, probajte neku od originalnih aplikacija za Mastodont za Vašu platformu. + existing_username_validator: + not_found: nije bilo moguće pronaći lokalnog korisnika sa tim korisničkim imenom + not_found_multiple: nije bilo moguće pronaći %{usernames} exports: + archive_takeout: + date: Datum + download: Preuzmite Vašu arhivu + hint_html: Možete zatražiti arhivu vaših objava i otpremljenih medija. Izvezeni podaci će biti u ActivityPub formatu, koji može čitati bilo koji kompatibilan softver. Arhivu možete zatražiti svakih 7 dana. + in_progress: Sastavljanje vaše arhive... + request: Zatražite svoju arhivu + size: Veličina blocks: Blokirali ste - mutes: Ućutkali ste + bookmarks: Obeleživači + csv: CSV + domain_blocks: Blokovi domena + lists: Liste + mutes: Ignorišete storage: Multimedijalno skladište + featured_tags: + add_new: Dodaj novu + errors: + limit: Već ste istakli maksimalan broj heš oznaka + hint_html: "Šta su istaknute heš onake? One se prikazuju istaknuto na vašem javnom profilu i omogućuju ljudima da pregledaju vaše javne objave konkretno pod tim heš oznakama. One su sjajan alat za praćenje kreativnih radova ili dugoročnih projekata." + filters: + contexts: + account: Profili + home: Vremenska linija početne + notifications: Obaveštenja + public: Javne vremenske linije + thread: Razgovori + edit: + add_keyword: Dodaj ključnu reč + keywords: Ključne reči + statuses: Zasebne objave + statuses_hint_html: Ovaj filter važi za odabrane zasebne objave bez obzira na to da li sadrže ključne reči navedene ispod. Pregledajte ili uklonite objave iz filtera. + title: Izmeni filter + errors: + deprecated_api_multiple_keywords: Ovi parametri ne mogu biti promenjeni u ovoj aplikaciji zato što se odnose na više od jedne ključne reči. Koristite ažurniju aplikaciju ili veb interfejs. + invalid_context: Nijedan ili nevažeći kontekst isporučen + index: + contexts: Filtrira u %{contexts} + delete: Izbriši + empty: Nemate filtere. + expires_in: Ističe za %{distance} + expires_on: Ističe datuma %{date} + keywords: + few: "%{count} ključne reči" + one: "%{count} ključna reč" + other: "%{count} ključnih reči" + statuses: + few: "%{count} objave" + one: "%{count} objava" + other: "%{count} objava" + statuses_long: + few: "%{count} zasebne objave sakrivene" + one: "%{count} zasebna objava sakrivena" + other: "%{count} zasebnih objava sakriveno" + title: Filteri + new: + save: Sačuvaj novi filter + title: Dodaj novi filter + statuses: + back_to_filter: Nazad na filter + batch: + remove: Ukloni iz filtera + index: + hint: Ovaj filter važi za odabrane zasebne objave bez obzira na druge kriterijume. Možete da dodate više objava u ovaj filter putem veb interfejsa. + title: Filtrirane objave generic: + all: Svi + all_items_on_page_selected_html: + few: Sve %{count} stavke sa ove stranice su izabrane. + one: "%{count} stavka sa ove stranice je izabrana." + other: Svih %{count} stavki sa ove stranice je izabrano. + all_matching_items_selected_html: + few: Sve %{count} stavke koje se poklapaju sa Vašom pretragom su izabrane. + one: "%{count} stavka koja se poklapa sa Vašom pretragom je izabrana." + other: Svih %{count} stavki koje se poklapaju sa Vašom pretragom su izabrane. changes_saved_msg: Izmene uspešno sačuvane! - save_changes: Snimi izmene + copy: Kopiraj + delete: Izbriši + deselect: Poništi sve izbore + none: Nijedna + order_by: Sortiraj prema + save_changes: Sačuvaj promene + select_all_matching_items: + few: Odaberite sve %{count} stavke koje se poklapaju sa Vašom pretragom. + one: Odaberite %{count} stavku koja se poklapa sa Vašom pretragom. + other: Odaberite svih %{count} stavki koje se poklapaju sa Vašom pretragom. + today: danas validation_errors: few: Nešto nije baš kako treba! Pregledajte %{count} greške ispod one: Nešto nije baš kako treba! Pregledajte greške ispod other: Nešto nije baš kako treba! Pregledajte %{count} grešaka ispod imports: + errors: + invalid_csv_file: 'Neispravan CSV fajl. Greška: %{error}' + over_rows_processing_limit: sadrži više od %{count} redova + modes: + merge: Stapanje + merge_long: Zadržite postojeće zapise i dodajte nove + overwrite: Zameni + overwrite_long: Zameni trenutne zapise novima preface: Možete uvesti podatke koje ste izvezli sa druge instance, kao što su liste ljudi koje ste pratili ili blokirali. success: Vaši podaci su uspešno otpremljeni i biće obrađeni uskoro types: blocking: Lista blokiranja + bookmarks: Obeleživači + domain_blocking: Lista blokiranih domena following: Lista pratilaca muting: Lista ućutkanih upload: Otpremi @@ -242,10 +1275,11 @@ sr-Latn: '21600': 6 sati '3600': 1 sad '43200': 12 sati - '604800': 1 week + '604800': 1 nedelja '86400': 1 dan expires_in_prompt: Nikad generate: Generiši + invited_by: 'Pozvao Vas je:' max_uses: few: "%{count} korišćenja" one: 1 korišćenje @@ -255,100 +1289,460 @@ sr-Latn: table: expires_at: Ističe uses: Korišćenja - title: Pozovi ljude + title: Pozovite ljude + lists: + errors: + limit: Dostigli ste maksimalni broj listâ + login_activities: + authentication_methods: + otp: aplikacija za dvofaktorsku autentifikaciju + password: lozinka + sign_in_token: imejl sigurnosni kod + webauthn: sigurnosni ključevi + description_html: Ukoliko primetite aktivnost koju ne prepoznajete, razmislite o tome da promenite svoju lozinku i uključite dvofaktorsku autentifikaciju. + empty: Istorija autentifikacije nije dostupna + failed_sign_in_html: Neuspešan pokušaj prijavljivanja putem %{method} sa %{ip} (%{browser}) + successful_sign_in_html: Uspešan pokušaj prijavljivanja putem %{method} sa %{ip} (%{browser}) + title: Istorija autentifikacije media_attachments: validations: images_and_video: Ne može da se prikači video na status koji već ima slike + not_ready: Ne mogu se priložiti fajlovi koji još uvek nisu obrađeni. Pokušajte ponovo za koji trenutak! too_many: Ne može se prikačiti više od 4 fajla migrations: acct: korisnik@domen novog naloga + cancel: Otkaži preusmerenje + cancel_explanation: Otkazivanje preusmerenja će ponovo aktivirati Vaš sadašnji nalog, ali neće vratiti pratioce koji su premešteni na drugi nalog. + cancelled_msg: Uspešno je otkazano preusmerenje. + errors: + already_moved: već ste se preselili na isti nalog + missing_also_known_as: nije pseudonim ovog naloga + move_to_self: ne možete se preseliti na sadašnji nalog + not_found: nije bilo moguće pronaći nalog + on_cooldown: Pod ograničenjem ste + followers_count: Pratioci u trenutku premeštaja + incoming_migrations: Premeštanje iz drugog naloga + incoming_migrations_html: Da biste prešli sa drugog naloga na ovaj, prvo morate kreirate pseudonim naloga. + moved_msg: Vaš nalog sada preusmerava na %{acct} i Vaši pratioci se trenutno prebacuju. + not_redirecting: Vaš nalog trenutno ne preusmerava ni na jedan drugi nalog. + on_cooldown: Nedavno ste se preselili na novi nalog. Ova funkcija će Vam ponovo postati dostupna za %{count} dana. + past_migrations: Prethodne selidbe + proceed_with_move: Prebacite pratioce + redirected_msg: Vaš nalog sada preusmerava na %{acct}. + redirecting_to: Vaš nalog preusmerava na %{acct}. + set_redirect: Postavi preusmerenje + warning: + backreference_required: Novi nalog prvo mora biti konfigurisan tako da referiše na ovaj nalog + before: 'Pre nego što nastavite, molimo Vas pažljivo pročitajte sledeće napomene:' + cooldown: Nakon preseljenja potrebno je da prođe određeno vreme pre nego što ćete ponovo moći da se preselite + disabled_account: Vaš trenutni nalog više neće biti upotrebljiv. Međutim, imaćete pristup izvozu podataka kao i reaktivaciji. + followers: Ova radnja će premestiti sve pratioce sa trenutnog naloga na novi nalog + only_redirect_html: Umesto preseljenja, možete samo dodati preusmeravajući link na svoj profil.. + other_data: Ostali podaci neće biti automatski prebačeni + redirect: Profil Vašeg sadašnjeg naloga će biti ažuriran sa obaveštenjem o preusmerenju i biće isključen iz pretrage moderation: title: Moderacija + move_handler: + carry_blocks_over_text: Ovaj korisnik se preselio sa naloga %{acct}, koji ste blokirali. + carry_mutes_over_text: Ovaj korisnik se preselio sa naloga %{acct}, koji ste utišali. + copy_account_note_text: 'Ovaj korisnik se preselio sa naloga %{acct}, o kome ste zapisali sledeće beleške:' + navigation: + toggle_menu: Prikaži/sakrij meni notification_mailer: + admin: + report: + subject: "%{name} je podneo/-la prijavu" + sign_up: + subject: "%{name} se registrovao/-la" favourite: body: "%{name} je postavio kao omiljen Vaš status:" subject: "%{name} je postavio kao omiljen Vaš status" + title: Novi omiljeni follow: body: "%{name} Vas je zapratio!" subject: "%{name} Vas je zapratio" + title: Novi pratioc follow_request: + action: Upravljajte zahtevima za praćenje body: "%{name} je zatražio da Vas zaprati" subject: 'Pratioci na čekanju: %{name}' + title: Novi zahtev za praćenje mention: + action: Odgovori body: "%{name} Vas je pomenuo u:" subject: "%{name} Vas je pomenuo" + title: Novo spominjanje + poll: + subject: Anketa korisnika %{name} se završila reblog: - body: "%{name} Vam je podržao(la) status:" - subject: "%{name} je podržao(la) Vaš status" + body: "%{name} Vam je podržao/la status:" + subject: "%{name} je podržao/la Vaš status" + title: Nova podrška + status: + subject: "%{name} je upravo postavio/-la objavu" + update: + subject: "%{name} je izmenio/-la objavu" + notifications: + email_events: Događaji za obaveštenja e-poštom + email_events_hint: 'Izaberite dešavanja za koja želite da primate obaveštenja:' + other_settings: Ostala podešavanja obaveštenja + number: + human: + decimal_units: + format: "%n %u" + units: + billion: mlrd. + million: mil. + quadrillion: tril. + thousand: hilj. + trillion: bil. + otp_authentication: + code_hint: Ukucajte kod generisan u Vašoj aplikaciji za autentifikaciju da biste potvrdili + description_html: Ako uključite dvofaktorsku autentifikaciju putem aplikacije za autentifikaciju, moraćete da budete pri telefonu prilikom prijavljivanja da biste imali pristup generisanim kodovima za prijavu. + enable: Omogući + instructions_html: "Skenirajte ovaj QR kod pomoću Google autentifikatora ili slične aplikacije na svom telefonu. Od sada pa ubuduće, ta aplikacija će generisati pristupne kodove koje ćete morati da unesete prilikom prijavljivanja." + manual_instructions: 'Ako ne možete da skenirate QR kod i morate da ga unesete ručno, evo njegove tekstualne šifre:' + setup: Instalacija + wrong_code: Uneseni kod je bio neispravan! Da li su vreme servera i vreme uređaja ispravni? pagination: - next: Sledeći + newer: Novije + next: Sledeće + older: Starije prev: Prethodni + truncate: "…" + polls: + errors: + already_voted: Već ste glasali u ovoj anketi + duplicate_options: sadrži duplikate + duration_too_long: previše je daleko u budućnosti + duration_too_short: previše je skoro + expired: Anketa je već završena + invalid_choice: Izabrana opcija ne postoji + over_character_limit: ne može biti duže od po %{max} karaktera + too_few_options: mora imati više od jedne opcije + too_many_options: ne može da sadrži više od %{max} opcija + preferences: + other: Ostalo + posting_defaults: Podrazumevana podešavanja objavljivanja + public_timelines: Javne vremenske linije + privacy_policy: + title: Politika privatnosti + reactions: + errors: + limit_reached: Dostignuto je ograničenje različitih reakcija + unrecognized_emoji: nije prepoznat emodži + relationships: + activity: Aktivnost naloga + confirm_follow_selected_followers: Da li ste sigurni da želite da pratite izabrane pratioce? + confirm_remove_selected_followers: Da li ste sigurni da želite da uklonite izabrane pratioce? + confirm_remove_selected_follows: Da li ste sigurni da želite da uklonite izabrana praćenja? + dormant: Neaktivan + follow_failure: Nije moguće pratiti neke od izabranih naloga. + follow_selected_followers: Prati izabrane pratioce + followers: Pratioci + following: Praćenja + invited: Pozvan + last_active: Poslednji put aktivan + most_recent: Najnoviji + moved: Premešten + mutual: Zajednički + primary: Primarni + relationship: Odnos + remove_selected_domains: Ukloni sve pratioce sa izabranih domena + remove_selected_followers: Ukloni izabrane pratioce + remove_selected_follows: Otprati izabrane korisnike + status: Status naloga remote_follow: missing_resource: Ne mogu da nađem zahtevanu adresu preusmeravanja za Vaš nalog + reports: + errors: + invalid_rules: ne referiše na legitimna pravila + rss: + content_warning: 'Upozorenje o sadržaju:' + descriptions: + account: Javne objave sa @%{acct} + tag: 'Javne objave označene sa #%{hashtag}' + scheduled_statuses: + over_daily_limit: Prekoračili ste granicu od %{limit} planiranih objava za danas + over_total_limit: Prekoračili ste granicu od %{limit} planiranih objava + too_soon: Planirani datum mora biti u budućnosti sessions: activity: Poslednja aktivnost browser: Veb čitač browsers: - chrome: Hrom + alipay: Alipej + blackberry: Blekberi + chrome: Chrome + edge: Majkrosoft Edž + electron: Elektron + firefox: Fajerfoks generic: Nepoznati veb čitač + huawei_browser: Huawei pregledač + ie: Internet Eksplorer + micro_messenger: MajkroMesendžer + nokia: Nokija S40 Ovi Pretraživač + opera: Opera + otter: Oter + phantom_js: FantomDžejEs + qq: KjuKju Pretraživač + safari: Safari + uc_browser: UC Browser + unknown_browser: Nepoznati pregledač + weibo: Veibo current_session: Trenutna sesija description: "%{browser} sa %{platform}" - explanation: Ovo su trenutno prijavljeni veb čitači na Vaš Mastodont nalog. + explanation: Ovo su veb pretraživači koji su trenutno prijavljeni na Vaš Mastodon nalog. + ip: IP platforms: - adobe_air: Adobe Air-a + adobe_air: Adob Er-a android: Androida + blackberry: Blekberi + chrome_os: ChromeOS firefox_os: Fajerfoks OS-a + ios: iOS-a + kai_os: KaiOS linux: Linuksa - mac: Mac-a - other: nepoznate platforme - windows: Vindouza - windows_mobile: Vindouz mobilnog - windows_phone: Vindouz telefona + mac: Meka + unknown_platform: Nepoznata platforma + windows: Windows + windows_mobile: Windows Mobile + windows_phone: Windows Phone revoke: Opozovi revoke_success: Sesija uspešno opozvana title: Sesije + view_authentication_history: Pogledajte istoriju autentifikacije vašeg naloga settings: + account: Nalog + account_settings: Podešavanja naloga + aliases: Pseudonimi naloga + appearance: Izgled authorized_apps: Autorizovane aplikacije - back: Nazad na Mastodonta + back: Nazad na Mastodon delete: Brisanje naloga development: Razvoj - edit_profile: Izmena profila + edit_profile: Uređivanje profila export: Izvoz podataka + featured_tags: Istaknute heš oznake import: Uvoz + import_and_export: Uvoz i izvoz migrate: Prebacivanje naloga notifications: Obaveštenja preferences: Podešavanja + profile: Nalog + relationships: Praćenja i pratioci + statuses_cleanup: Automatsko brisanje objava + strikes: Moderacijski prestupi two_factor_authentication: Dvofaktorska identifikacija + webauthn_authentication: Sigurnosni ključevi statuses: + attached: + audio: + few: "%{count} audio zapisa" + one: "%{count} audio zapis" + other: "%{count} audio zapisa" + description: 'U prilogu: %{attached}' + image: + few: "%{count} slika" + one: "%{count} sliku" + other: "%{count} slika" + video: + few: "%{count} video zapisa" + one: "%{count} video zapis" + other: "%{count} video zapisa" + boosted_from_html: Podržano od %{acct_link} + content_warning: 'Upozorenje na sadržaj: %{warning}' + default_language: Isto kao jezik okruženja + disallowed_hashtags: + few: 'sadrži zabranjene heštegove: %{tags}' + one: 'sadrži zabranjeni hešteg: %{tags}' + other: 'sadrži zabranjene heštegove: %{tags}' + edited_at_html: Izmenjeno %{date} + errors: + in_reply_not_found: Objava na koju pokušavate da odgovorite naizgled ne postoji. open_in_web: Otvori u vebu over_character_limit: ograničenje od %{max} karaktera prekoračeno pin_errors: - limit: Već imate prikačen najveći broj tutova - ownership: Tuđi tutovi ne mogu da se prikače + direct: Objave koje su vidljive samo pomenutim korisnicima ne mogu biti prikačene + limit: Već ste zakačili maksimalan broj objava + ownership: Tuđa objava se ne može zakačiti reblog: Podrška ne može da se prikači + poll: + total_people: + few: "%{count} osobe" + one: "%{count} osoba" + other: "%{count} ljudi" + total_votes: + few: "%{count} glasa" + one: "%{count} glas" + other: "%{count} glasova" + vote: Glasajte show_more: Prikaži još + show_newer: Nikad ne prikazuj + show_older: Prikaži starije + show_thread: Prikaži niz + sign_in_to_participate: Prijavite se da učestvujete u razgovoru + title: "%{name}: „%{quote}”" visibilities: + direct: Direktno private: Samo pratioci - private_long: Samo prikaži pratiocima + private_long: Prikaži samo pratiocima public: Javno public_long: Svako može da vidi unlisted: Neizlistano - unlisted_long: Svako može da vidi, ali nije izlistano na javnim lajnama + unlisted_long: Svako može da vidi, ali nije izlistano na javnim vremenskim linijama + statuses_cleanup: + enabled: Automatski izbriši stare objave + enabled_hint: Automatski briše vaše objave kada dostignu određeni starosni prag, osim ako se ne podudaraju sa jednim od izuzetaka u nastavku + exceptions: Izuzeci + explanation: Pošto je brisanje objava skupa operacija, ovo se radi polako tokom vremena kada server inače nije zauzet. Iz tog razloga, vaše objave mogu biti izbrisane neko vreme nakon što dostignu starosni prag. + ignore_favs: Ignoriši omiljene + ignore_reblogs: Ignoriši podržavanja + interaction_exceptions: Izuzeci zasnovani na interakcijama + interaction_exceptions_explanation: Imajte na umu da ne postoji garancija da će objave biti izbrisane ako broj označavanja kao omiljenih ili broj podržavanja padne ispod praga nakon što ga premaše. + keep_direct: Zadrži direktne poruke + keep_direct_hint: Ne briše nijednu od vaših direktnih poruka + keep_media: Zadrži objave sa medijskim prilozima + keep_media_hint: Ne briše nijednu od vaših objava koje imaju medijske priloge + keep_pinned: Zadrži zakačene objave + keep_pinned_hint: Ne briše nijednu od vaših zakačenih objava + keep_polls: Zadrži ankete + keep_polls_hint: Ne briše nijednu od vaših anketa + keep_self_bookmark: Zadrži objave koje ste dodali u obeleživače + keep_self_bookmark_hint: Ne briše vaše sopstvene objave ako ste ih dodlai u obeleživače + keep_self_fav: Zadrži omiljene objave + keep_self_fav_hint: Ne briše vaše sopstvene objave ako ste ih označili kao omiljene + min_age: + '1209600': 2 sedmice + '15778476': 6 meseci + '2629746': 1 mesec + '31556952': 1 godina + '5259492': 2 meseca + '604800': 1 sedmica + '63113904': 2 godine + '7889238': 3 meseca + min_age_label: Starosni prag + min_favs: Zadrži objave označene kao omiljene najmanje + min_favs_hint: Ne briše nijednu vašu objavu koja je dobila najmanje ovaj broj omiljenih. Ostavite prazno za brisanje objava bez obzira na njihov broj omiljenih + min_reblogs: Zadrži objave podržane barem + min_reblogs_hint: Ne briše nijednu vašu objavu koja je bila podržana najmanje ovoliko puta. Ostavite prazno za brisanje objava bez obzira na njihov broj podržavanja stream_entries: - pinned: Prikačeni tut + pinned: Zakačena objava reblogged: podržano sensitive_content: Osetljiv sadržaj + strikes: + errors: + too_late: Istekao je rok za podnošenje žalbe na zabeležen prestup + tags: + does_not_match_previous_name: ne poklapa se sa prethodnim imenom themes: - default: Mastodont + contrast: Veliki kontrast + default: Mastodon + mastodon-light: Mastodon (svetlo) + time: + formats: + default: "%d %b %Y, %H:%M" + month: "%b %Y" + time: "%H:%M" two_factor_authentication: + add: Dodaj disable: Isključi + disabled_success: Dvofaktorska autentifikacija je uspešno onemogućena + edit: Izmeni enabled: Dvofaktorska identifikacija je uključena enabled_success: Dvofaktorska identifikacija je uspešno uključena generate_recovery_codes: Generiši kodove za oporavak - lost_recovery_codes: Kodovi za oporavak Vam omogućavaju da povratite pristup nalogu ako izgubite telefon. Ako izgubite kodove za oporavak, možete ih regenerisati ovde. Od tog trenutka, stari kodovi za oporavak više ne važe. + lost_recovery_codes: Kodovi za oporavak Vam omogućavaju da povratite pristup nalogu ako izgubite telefon. Ako izgubite kodove za oporavak, možete ih re-generisati ovde. Od tog trenutka, stari kodovi za oporavak više ne važe. + methods: Metode dvofaktorske autentifikacije + otp: Aplikacija za autentifikaciju recovery_codes: Napravite rezervu kodova za oporavak - recovery_codes_regenerated: Kodovi za oporavak uspešno regenerisani + recovery_codes_regenerated: Kodovi za oporavak uspešno re-generisani recovery_instructions_html: Ako ikada izgubite pristup telefonu, možete iskoristiti kodove za oporavak date ispod da povratite pristup nalogu. Držite kodove za oporavak na sigurnom. Na primer, odštampajte ih i čuvajte ih sa ostalim važnim dokumentima. + webauthn: Sigurnosni ključevi + user_mailer: + appeal_approved: + action: Idite na svoj nalog + explanation: Žalba podneta datuma %{appeal_date} na upisan prestup na Vaše ime datuma %{strike_date} je uvažena. Vaš nalog je ponovo u povoljnom položaju. + subject: Vaša žalba podneta %{date} je uvažena + title: Žalba uvažena + appeal_rejected: + explanation: Žalba podneta datuma %{appeal_date} na upisan prestup na Vaše ime datuma %{strike_date} je odbijena. + subject: Vaša žalba podneta %{date} je odbijena + title: Žalba odbijena + backup_ready: + explanation: Tražili ste potpunu rezervnu kopiju vašeg Mastodon računa. Spremna za preuzimanje! + subject: Vaša arhiva je spremna za preuzimanje + title: Izvoz arhive + suspicious_sign_in: + change_password: promenite svoju lozinku + details: 'Evo detalja o prijavi:' + explanation: Primetili smo prijavu na Vaš nalog sa nepoznate IP adrese. + further_actions_html: Ukoliko to niste bili Vi, preporučujemo da odmah %{action} i uključite dvofaktorsku autentifikaciju da biste održali bezbednost svog naloga. + subject: Vašem nalogu je pristupljeno sa nepozate IP adrese + title: Novo prijavljivanje + warning: + appeal: Priložite žalbu + appeal_description: Ukoliko verujete da je u pitanju greška, možete priložiti žalbu osoblju %{instance}. + categories: + spam: Neželjena pošta + violation: Sadržaj krši sledeća pravila zajednice + explanation: + delete_statuses: Za neke od Vaših objava je ustanovljeno da krše jedno ili više pravila zajednice i usled toga su uklonjene od strane moderatora %{instance}. + disable: Više ne možete da koristite svoj nalog, ali Vaš profil i drugi podaci ostaju netaknuti. Možete da zatražite rezervnu kopiju svojih podataka, promenite podešavanja naloga ili obrišete svoj nalog. + mark_statuses_as_sensitive: Neke od Vaših objava su označene kao osetljive od strane moderatora %{instance}. Ovo znači da će ljudi morati da kliknu na multimedije u objavama pre nego što mogu da ih vide. Ubuduće možete sami da označite svoju multimediju kao osetljivu prilikom sastavljanja objave. + sensitive: Od sada će svi Vaši otpremljeni multimedijalni fajlovi biti označeni kao osetljivi i sakriveni iza tastera upozorenja. + silence: I dalje možete koristiti svoj nalog ali samo ljudi koji Vas već prate će videti Vaše objave na ovom serveru, i možda ćete biti isključeni iz raznih mehanizama otkrivanja. Međutim, drugi ljudi i dalje mogu ručno da Vas zaprate. + suspend: Više ne možete da koristite svoj nalog, i Vaš profil i ostali podaci Vam više nisu dostupni. I dalje možete da se prijavite da biste zatražili rezervnu kopiju svojih podataka sve dok se Vaši podaci trajno ne izbrišu za oko 30 dana, s tim što ćemo zadržati neke osnovne podatke da bismo Vas sprečili u eventualnom zaobilaženju suspenzije. + reason: 'Obrazloženje:' + statuses: 'Citirane objave:' + subject: + delete_statuses: Vaše objave sa %{acct} su izbrisane + disable: Vaš nalog %{acct} je zamrznut + mark_statuses_as_sensitive: Vaše objave sa %{acct} su obeležene kao osetljive + none: Upozorenje za %{acct} + sensitive: Vaše objave sa %{acct} će ubuduće biti označene kao osetljive + silence: Vaš nalog %{acct} je ograničen + suspend: Vaš nalog %{acct} je suspendovan + title: + delete_statuses: Objave su obrisane + disable: Nalog zamrznut + mark_statuses_as_sensitive: Objave su označene kao osetljive + none: Upozorenje + sensitive: Nalog je označen kao osetljiv + silence: Nalog ograničen + suspend: Nalog suspendovan + welcome: + edit_profile_action: Podesi nalog + edit_profile_step: Možete prilagoditi svoj profil tako što ćete postaviti profilnu sliku, promeniti ime za prikaz i tako dalje. Možete dati saglasnost da pregledate nove pratioce pre nego što im dozvolite da Vas zaprate. + explanation: Evo nekoliko saveta za početak + final_action: Počnite objavljivati + final_step: 'Počnite da objavljujete! Čak i bez pratilaca, Vaše javne objave su vidljive drugim ljudima, na primer na lokalnoj vremenskoj liniji ili u heš oznakama. Možda želite da se predstavite sa heš oznakom #introductions ili #predstavljanja.' + full_handle: Vaš pun nadimak + full_handle_hint: Ovo biste rekli svojim prijateljima kako bi vam oni poslali poruku, ili zapratili sa druge instance. + subject: Dobrodošli na Mastodon + title: Dobrodošli, %{name}! users: + follow_limit_reached: Ne možete pratiti više od %{limit} ljudi + go_to_sso_account_settings: Idite na podešavanja naloga svog dobavljača identiteta invalid_otp_token: Neispravni dvofaktorski kod - signed_in_as: 'Prijavljen kao:' + otp_lost_help_html: Ako izgubite pristup za oba, možete stupiti u kontakt sa %{email} + seamless_external_login: Prijavljeni ste putem spoljašnje usluge, tako da lozinka i podešavanja E-pošte nisu dostupni. + signed_in_as: 'Prijavljen/a kao:' + verification: + verification: Provera + webauthn_credentials: + add: Dodajte novi sigurnosni ključ + create: + error: Iskrsao je problem prilikom dodavanja Vašeg sigurnosnog ključa. Molimo Vas pokušajte ponovo. + success: Vaš sigurnosni ključ je uspešno dodat. + delete: Izbriši + delete_confirmation: Da li ste sigurni da želite da izbrišete ovaj sigurnosni ključ? + description_html: Ako uključite autentifikaciju sigurnosnim ključem, moraćete da koristite jedan od svojih sigurnosnih ključeva prilikom prijavljivanja. + destroy: + error: Iskrsao je problem prilikom brisanja Vašeg sigurnosnog ključa. Molimo Vas pokušajte ponovo. + success: Vaš sigurnosni ključ je uspešno obrisan. + invalid_credential: Neispravan sigurnosni ključ + nickname_hint: Unesite nadimak svog novog sigurnosnog ključa + not_enabled: Još uvek niste omogućili WebAuthn + not_supported: Ovaj pretraživač ne podržava sigurnosne ključeve + otp_required: Da biste koristili sigurnosne ključeve, molimo Vas prvo uključite dvofaktorsku autentifikaciju. + registered_on: Registrovan/-a %{date} diff --git a/config/locales/sr.yml b/config/locales/sr.yml index 8a56fa7f30..fb90cef5d5 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -1,23 +1,24 @@ --- sr: about: - about_mastodon_html: Мастодон је друштвена мрежа базирана на отвореним протоколима и слободном софтверу отвореног кода. Децентрализована је као што је децентрализована е-пошта. + about_mastodon_html: 'Друштвена мрежа будућности: без реклама, без корпоративног праћења, етички дизајн, и децентрализација! Поседујте своје податке са Мастодоном!' contact_missing: Није постављено contact_unavailable: Није доступно hosted_on: Мастодон хостован на %{domain} - title: О + title: О инстанци accounts: - follow: Прати + follow: Запрати followers: - few: Пратиоци - one: Пратиоц - other: Пратиоци + few: Пратиоца + one: Пратилац + other: Пратилаца following: Пратим - last_active: последњи пут активни + instance_actor_flash: Овај налог је виртуелни актер који не представља ниједног корисника лично, већ сâм сервер. Користи се у сврху федерације и не треба га суспендовати. + last_active: најскорија активност link_verified_on: Власништво над овом везом је проверено %{date} - nothing_here: Овде нема ништа! + nothing_here: Овде нема ничега! pin_errors: - following: Морате пратити ову особу ако хоћете да потврдите + following: Морате пратити особу коју желите да препоручите posts: few: Објаве one: Објава @@ -34,16 +35,17 @@ sr: accounts: add_email_domain_block: Блокирај домен е-поште approve: Одобри + approved_msg: Захтев за регистрацију корисника %{username} је успешно одобрен are_you_sure: Да ли сте сигурни? avatar: Аватар by_domain: Домен change_email: changed_msg: Е-пошта налога успешно промењена! - current_email: Тренутна е-пошта - label: Промените е-пошту - new_email: Нова e-пошта - submit: Промените e-пошту - title: Промените e-пошту за %{username} + current_email: Тренутна адреса е-поште + label: Промените адресу е-поште + new_email: Нова адреса e-поште + submit: Промените адресу e-поште + title: Промените адресу e-поште за %{username} change_role: changed_msg: Улога успешно промењена! label: Промени улогу @@ -51,21 +53,25 @@ sr: title: Промени улогу за %{username} confirm: Потврди confirmed: Потврђено - confirming: Потврдување + confirming: Потврђивање custom: Произвољно delete: Обриши податке deleted: Избрисано demote: Ражалуј - disable: Искључи + destroyed_msg: Подаци корисника %{username} су неповратно стављени у ред за брисање + disable: Замрзни + disable_sign_in_token_auth: Онемогући имејл аутентификацију disable_two_factor_authentication: Искључи 2FA - disabled: Искључена - display_name: Приказано име + disabled: Замрзнут + display_name: Име за приказ domain: Домен edit: Измени email: Е-пошта email_status: Статус е-поште enable: Омогући - enabled: Укључено + enable_sign_in_token_auth: Омогући имејл аутентификацију + enabled: Омогућен + enabled_msg: Успешно одлеђен налог корисника %{username} followers: Пратиоци follows: Праћени header: Заглавље @@ -73,18 +79,21 @@ sr: invite_request_text: Разлози за придруживање invited_by: Позван од стране ip: IP - joined: Придружио се + joined: Придружио/-ла се location: all: Све - local: Локалне - remote: Удаљене + local: Локални + remote: Удаљени title: Локација login_status: Статус пријаве media_attachments: Мултимедијални прилози memorialize: Пребаци у in memoriam + memorialized: Подигнут споменик + memorialized_msg: "%{username} је успешно претворен у меморијални налог" moderation: active: Активан all: Сви + disabled: Искључен pending: На чекању silenced: Ограничено suspended: Суспендовани @@ -92,79 +101,202 @@ sr: moderation_notes: Модераторске белешке most_recent_activity: Најскорија активност most_recent_ip: Најскорија IP адреса + no_account_selected: Ниједан налог није промењен јер ниједан није изабран no_limits_imposed: Нема ограничења no_role_assigned: Ниједна улога није додељена not_subscribed: Није претплаћен pending: Чека на преглед - perform_full_suspension: Искључи + perform_full_suspension: Суспендуј + previous_strikes: Претходни прекршаји + previous_strikes_description_html: + few: Овај налог има %{count} прекршаја. + one: Овај налог има један прекршај. + other: Овај налог има %{count} прекршаја. promote: Унапреди protocol: Протокол public: Јавно push_subscription_expires: PuSH претплата истиче - redownload: Освежи налог - reject: Одбаци + redownload: Освежи профил + redownloaded_msg: Успешно освежен профил корисника %{username} из извора + reject: Одбиј + rejected_msg: Захтев за регистрацију корисника %{username} је успешно одбијен + remote_suspension_irreversible: Подаци овог налога су неповратно избрисани. + remote_suspension_reversible_hint_html: Налог је суспендован са свог сервера и његови подаци ће бити избрисани датума %{date}. До тада, удаљени сервер може да врати овај налог без икаквих промена. Уколико желите да одмах обришете све податке налога, можете то учинити испод. remove_avatar: Уклони аватар remove_header: Одстрани заглавље removed_avatar_msg: Слика аватара корисника %{username} је успешно уклоњена + removed_header_msg: Успешно обрисана слика заглавља корисника %{username} resend_confirmation: - already_confirmed: Овој корисник е веќе потврден - send: Препрати го е-мајлот за потврда - success: Е-пошта за потврда успешно испратена! + already_confirmed: Овај корисник је већ потврђен + send: Поново пошаљи имејл потврду + success: Имејл за потврду је успешно послат! reset: Ресетуј reset_password: Ресетуј лозинку resubscribe: Поново се претплати role: Улога search: Претрага + search_same_email_domain: Остали корисници са истим доменом е-поште + search_same_ip: Остали корисници са истом IP адресом + security: Безбедност security_measures: only_password: Само лозинка + password_and_2fa: Лозинка и двофакторска аутентификација + sensitive: Означи као осетљив sensitized: Означено као осетљиво shared_inbox_url: Адреса дељеног сандучета show: - created_reports: Направљени извештаји + created_reports: Поднете пријаве targeted_reports: Пријаве од стране других silence: Ућуткај silenced: Ућуткан - statuses: Статуси + statuses: Објаве + strikes: Претходни преступи subscribe: Претплати се suspend: Суспендуј suspended: Суспендовани + suspension_irreversible: Подаци овог налога су неповратно избрисани. Можете одсуспендовати овај налог чиме ће он постати употребљив, али се подаци претходно садржани на налогу неће вратити. + suspension_reversible_hint_html: Налог је суспендован и његови подаци ће бити избрисани датума %{date}. До тада, овај налог може бити враћен без икаквих промена. Уколико желите да одмах обришете све податке налога, можете то учинити испод. title: Налози unblock_email: Одблокирај адресу е-поште - unconfirmed_email: Непотврђена е-пошта + unblocked_email_msg: Успешно одблокирана имејл адреса корисника %{username} + unconfirmed_email: Непотврђена адреса е-поште + undo_sensitized: Уклони ознаку „осетљив” undo_silenced: Укини ћутање undo_suspension: Укини суспензију + unsilenced_msg: Успешно поништено ограничење налога %{username} unsubscribe: Укини претплату + unsuspended_msg: Успешно поништена суспензија налога %{username} username: Корисничко име + view_domain: Прочитај опис домена warn: Упозори web: Веб + whitelisted: Дозвољена федерација action_logs: action_types: + approve_appeal: Уважи жалбу approve_user: Одобри корисника + assigned_to_self_report: Додели пријаву change_email_user: Промени e-адресу корисника change_role_user: Промени улогу корисника confirm_user: Потврди корисника create_account_warning: Креирај упозорење create_announcement: Креирај најаву create_canonical_email_block: Креирај блок е-поште + create_custom_emoji: Направи прилагођени емоџи + create_domain_allow: Додај дозвољени домен + create_domain_block: Додај блокирани домен + create_email_domain_block: Блокирај имејл домен + create_ip_block: Направи IP услов + create_unavailable_domain: Додај домен као недоступан create_user_role: Креирај улогу + demote_user: Смањи овлашћења корисника destroy_announcement: Избриши најаву destroy_canonical_email_block: Избриши блок е-поште + destroy_custom_emoji: Обриши прилагођени емоџи + destroy_domain_allow: Обриши дозвољени домен + destroy_domain_block: Обриши блокирани домен + destroy_email_domain_block: Избриши блок е-поште + destroy_instance: Очисти домен + destroy_ip_block: Обриши IP услов destroy_status: Избриши пост + destroy_unavailable_domain: Обриши недоступан домен + destroy_user_role: Уништи позицију + disable_2fa_user: Онемогући двофакторску аутентификацију + disable_custom_emoji: Онемогући прилагођене емоџије + disable_sign_in_token_auth_user: Онемогући имејл аутентификацију за корисника disable_user: Онемогући корисника + enable_custom_emoji: Омогући прилагођене емоџије + enable_sign_in_token_auth_user: Омогући имејл аутентификацију за корисника enable_user: Омогући корисника + memorialize_account: Претвори у меморијални налог + promote_user: Унапреди корисника + reject_appeal: Одбиј жалбу reject_user: Одбаци корисника remove_avatar_user: Уклони аватар + reopen_report: Поново отвори пријаву + resend_user: Поново пошаљи мејл за потврду + reset_password_user: Ресетуј лозинку + resolve_report: Затвори пријаву + sensitive_account: Означи налог као осетљив silence_account: Ограничи налог suspend_account: Обустави налог + unassigned_report: Повуци пријаву + unblock_email_account: Одблокирај имејл адресу + unsensitive_account: Уклони додељену ознаку „осетљив” + unsilence_account: Повуци ограничење налога + unsuspend_account: Повуци суспензију налога + update_announcement: Саопштење о ажурирању + update_custom_emoji: Ажурирај прилагођене емоџије + update_domain_block: Ажурирај домен блок + update_ip_block: Ажурирај IP услов update_status: Уреди објаву update_user_role: Уреди улогу actions: + approve_appeal_html: "%{name} је уважио жалбу корисника %{target} на одлуку модератора" + approve_user_html: "%{name} је одобрио/-ла регистрацију корисника %{target}" + assigned_to_self_report_html: "%{name} је себи доделио/-ла пријаву %{target}" + change_email_user_html: "%{name} је променио/-ла имејл адресу корисника %{target}" + change_role_user_html: "%{name} је променио/-ла овлашћења корисника %{target}" + confirm_user_html: "%{name} је потврдио/-ла имејл адресу корисника %{target}" + create_account_warning_html: "%{name} је послао/-ла упозорење кориснику %{target}" + create_announcement_html: "%{name} је направио/-ла ново саопштење %{target}" + create_canonical_email_block_html: "%{name} је блокирао/-ла имејл адресу са хешом %{target}" + create_custom_emoji_html: "%{name} је отпремио/-ла нове емоџије %{target}" + create_domain_allow_html: "%{name} је дозволио/-ла федерацију са доменом %{target}" + create_domain_block_html: "%{name} је блокирао/-ла домен %{target}" + create_email_domain_block_html: "%{name} је блокирао/-ла имејл домен %{target}" + create_ip_block_html: "%{name} је направио/-ла услов за IP адресе %{target}" + create_unavailable_domain_html: "%{name} је обуставио/-ла испоручивање домену %{target}" + create_user_role_html: "%{name} је направио/-ла %{target} позицију" + demote_user_html: "%{name} је смањио овлашћења корисника %{target}" + destroy_announcement_html: "%{name} је обрисао/-ла саопштење %{target}" + destroy_canonical_email_block_html: "%{name} је одблокирао/-ла имејл адресу са хешом %{target}" + destroy_custom_emoji_html: "%{name} је обрисао/-ла емоџи %{target}" + destroy_domain_allow_html: "%{name} је забранио/-ла федерацију са доменом %{target}" + destroy_domain_block_html: "%{name} је одблокирао/-ла домен %{target}" + destroy_email_domain_block_html: "%{name} је одблокирао/-ла имејл домен %{target}" + destroy_instance_html: "%{name} је очистио/-ла домен %{target}" + destroy_ip_block_html: "%{name} је обрисао/-ла услов за IP адресе %{target}" + destroy_status_html: "%{name} је избрисао/-ла објаву корисника %{target}" + destroy_unavailable_domain_html: "%{name} је поново успоставио/-ла испоручивање домену %{target}" + destroy_user_role_html: "%{name} је избрисао/-ла %{target} позицију" + disable_2fa_user_html: "%{name} је онемогућио/-ла двофакторску аутентификацију за корисника %{target}" + disable_custom_emoji_html: "%{name} је онемогућио/-ла емоџи %{target}" + disable_sign_in_token_auth_user_html: "%{name} је онемогућио/-ла имејл аутентификацију за корисника %{target}" + disable_user_html: "%{name} је онемогућио/-ла пријављивање за корисника %{target}" + enable_custom_emoji_html: "%{name} је омогућио/-ла емоџи %{target}" + enable_sign_in_token_auth_user_html: "%{name} је омогућио/-ла имејл аутентификацију за %{target}" + enable_user_html: "%{name} је омогућио/-ла пријављивање кориснику %{target}" + memorialize_account_html: "%{name} је претворио/-ла налог корисника %{target} у меморијалну страницу" + promote_user_html: "%{name} је унапредио/-ла корисника %{target}" + reject_appeal_html: "%{name} је одбио/-ла жалбу на модерацијску одлуку коју је приложио корисник %{target}" + reject_user_html: "%{name} је одбио/-ла регистрацију корисника %{target}" remove_avatar_user_html: "%{name} је уклонио аватар корисника %{target}" + reopen_report_html: "%{name} је поново отворио/-ла пријаву %{target}" + resend_user_html: "%{name} је поново послао/-ла имејл за потврду кориснику %{target}" + reset_password_user_html: "%{name} је ресетовао/-ла лозинку корисника %{target}" + resolve_report_html: "%{name} је решио/-ла пријаву %{target}" + sensitive_account_html: "%{name} је означио/-ла медије налога %{target} као осетљиве" + silence_account_html: "%{name} је ограничио/-ла налог %{target}" + suspend_account_html: "%{name} је суспендовао/-ла налог %{target}" + unassigned_report_html: "%{name} је повукао/-ла доделу пријаве %{target}" + unblock_email_account_html: "%{name} је одблокирао/-ла имејл адресу корисника %{target}" + unsensitive_account_html: "%{name} је уклонио/-ла ознаку „осетљиво” са медија налога %{target}" + unsilence_account_html: "%{name} је повукао/-ла ограничење налога %{target}" + unsuspend_account_html: "%{name} је повукао/-ла суспензију налога %{target}" + update_announcement_html: "%{name} је ажурирао/-ла саопштење %{target}" + update_custom_emoji_html: "%{name} је ажурирао/-ла емоџи %{target}" + update_domain_block_html: "%{name} је ажурирао/-ла блок домена %{target}" + update_ip_block_html: "%{name} је променио/-ла IP услов за %{target}" + update_status_html: "%{name} је ажурирао/-ла објаву корисника %{target}" + update_user_role_html: "%{name} је променио/-ла позицију %{target}" deleted_account: обрисан налог + empty: Није пронађен ниједан лог. filter_by_action: Филтрирај по активности filter_by_user: Филтрирај по кориснику title: Записник announcements: + destroyed_msg: Саопштење је успешно обрисано! edit: title: Уреди најаву empty: Ниједна најава није пронађена. @@ -174,7 +306,12 @@ sr: title: Нова најава publish: Објави published_msg: Најава успешно објављена! + scheduled_for: Заказано за %{time} + scheduled_msg: Саопштење је заказано за објављивање! title: Најаве + unpublish: Повуци објаву + unpublished_msg: Објава саопштења је успешно повучена! + updated_msg: Саопштење је успешно ажурирано! custom_emojis: assign_category: Додели категорију by_domain: Домен @@ -192,85 +329,212 @@ sr: enable: Омогући enabled: Омогућено enabled_msg: Емоџи успешно омогућен + image_hint: PNG или GIF фајл величине до %{size} + list: Листа listed: Излистан new: title: Додај нови произвољни емоџи + no_emoji_selected: Ниједан емоџи није промењен јер ниједан није изабран + not_permitted: Нисте овлашћени да обављате ову радњу overwrite: Препиши shortcode: Пречица shortcode_hint: Најмање 2 карактера, дозвољени су само слова, бројеви и доње црте title: Произвољни емотиџији + uncategorized: Некатегоризовано + unlist: Неизлистан unlisted: Неизлистан update_failed_msg: Не могу да ажурирам овај емоџи updated_msg: Емоџи успешно ажуриран! upload: Отпреми dashboard: + active_users: активни корисници + interactions: интеракције + media_storage: Мултимедијално складиште + new_users: нови корисници + opened_reports: отворене пријаве + pending_appeals_html: + few: "%{count} жалбе на чекању" + one: "%{count} жалба на чекању" + other: "%{count} жалби на чекању" + pending_reports_html: + few: "%{count} пријаве на чекању" + one: "%{count} пријава на чекању" + other: "%{count} пријава на чекању" + pending_tags_html: + few: "%{count} хеш ознаке на чекању" + one: "%{count} хеш ознака на чекању" + other: "%{count} хеш ознака на чекању" + pending_users_html: + few: "%{count} корисника на чекању" + one: "%{count} корисник на чекању" + other: "%{count} корисника на чекању" + resolved_reports: решене пријаве software: Софтвер + sources: Извори регистрација space: Коришћење простора title: Командна табла + top_languages: Најзаступљенији језици + top_servers: Најактивнији сервери + website: Вебсајт + disputes: + appeals: + empty: Ниједна жалба није пронађена. + title: Жалбе domain_allows: + add_new: Дозволи федерацију са доменом + created_msg: Домен је успешно одобрен за федерацију + destroyed_msg: Домен је одбијен за федерацију export: Извоз import: Увоз + undo: Забрани федерацију са доменом domain_blocks: add_new: Додај нови блок домена created_msg: Блокирање домена се обрађује destroyed_msg: Блокирање домена је опозвано domain: Домен + edit: Измени блок домена + existing_domain_block: Већ сте успоставили строжа ограничења према кориснику %{name}. + existing_domain_block_html: Већ сте успоставили строжа ограничења према %{name}, потребно је да га прво одблокирате. export: Извоз import: Увоз new: create: Направи блокаду hint: Блокирање домена неће спречити прављење налога у бази, али ће ретроактивно и аутоматски применити одређене модераторске методе над тим налозима. severity: + desc_html: "Ограничење ће сакрити објаве налога са овог домена од сваког ко их не прати. Суспензија ће обрисати сав садржај, медије и податке профила са налога овог домена са Вашег сервера. Користите Ништа уколико само желите да одбијете медијске фајлове." noop: Ништа + silence: Ограничи suspend: Суспензија title: Ново блокирање домена + no_domain_block_selected: Ниједан блок домена није промењен јер ниједан није изабран + not_permitted: Нисте овлашћени да обављате ову радњу + obfuscate: Сакриј име домена + obfuscate_hint: Делимично сакриј име домена на листи ако је рекламирање листе ограничених домена омогућено private_comment: Приватни коментар + private_comment_hint: Коментар о ограничењу овог домена за интерну употребу од стране модератора. public_comment: Јавни коментар + public_comment_hint: Коментар о ограничењу овог домена за јавност, уколико је рекламирање листе ограничених домена омогућено. reject_media: Одбаци мултимедију reject_media_hint: Уклања локално ускладиштене мултимедијске фајлове и одбија да их скида убудуће. Небитно је за суспензију reject_reports: Одбаци извештај reject_reports_hint: Игнориши све извештаје који долазе са овог домена. Небитно је за суспензије undo: Поништи блок домена + view: Прочитај блок домена email_domain_blocks: add_new: Додај нови + attempts_over_week: + few: "%{count} покушаја током претходне недеље" + one: "%{count} покушај током претходне недеље" + other: "%{count} покушаја регистрације током претходне недеље" created_msg: Успешно додао домен Е-поште на црну листу delete: Обриши + dns: + types: + mx: MX извештај domain: Домен new: create: Додај домен + resolve: Претвори домен title: Нова ставка е-поштe у црној листи + no_email_domain_block_selected: Ниједан блок имејл домена није промењен јер ниједан није изабран + not_permitted: Није дозвољено + resolved_dns_records_hint_html: Име домена се претвара у следеће MX домене, који су напослетку одговорни за прихватање електронске поште. Блокирање MX домена ће блокирати регистрације са сваке имејл адресе која користи тај MX домен, чак и у случају када се видљиво име домена разликује. Водите рачуна о томе да не блокирате велике имејл провајдере. + resolved_through_html: Преусмерено кроз %{domain} title: Црна листа E-поште + export_domain_allows: + new: + title: Увези дозвољене домене + no_file: Ниједан фајл није одабран export_domain_blocks: import: + description_html: Управо ћете увести листу блокираних домена. Молимо Вас, врло пажљиво прегледајте ову листу, посебно уколико је нисте сами направили. existing_relationships_warning: Постојећи односи у облику праћења + private_comment_description_html: 'Да би Вам помогли да пратите одакле су блокови увезени, увезени блокови ће бити направљени са следећим приватним коментаром: %{comment}' + private_comment_template: Увезено са извора %{source} на датум %{date} + title: Увези блокиране домене + invalid_domain_block: 'Један или више блокова домена је прескочен због следеће грешке тј. грешака: %{error}' + new: + title: Увези блокиране домене + no_file: Ниједан фајл није одабран follow_recommendations: + description_html: "Предлози за праћење помажу новим корисницима да брзо пронађу занимљив садржај. Када корисник није довољно интераговао са осталима да би се за њега формирали персонализовани предлози за праћење, ови налози ће бити препоручени уместо тога. Они се генеришу на дневној бази из скупа налога са највише недавних ангажовања и највише локалних пратилаца за један језик." + language: За језик status: Статус + suppress: Потисни препоруке за праћење + suppressed: Потиснуто + title: Препоруке за праћење + unsuppress: Врати препоруку за праћење instances: + availability: + description_html: + few: Уколико испорука домену не успе ниједном током %{count} различитих дана, даљи покушаји испоруке неће бити иницирани осим уколико се не прими испорука са домена. + one: Ако испорука домену не успе ниједном у временском периоду од %{count} дана, даљи покушаји испоруке се неће иницирати осим уколико се не прими испорука са домена. + other: Уколико испорука домену не успе ниједном током %{count} различитих дана, даљи покушаји испоруке се неће иницирати осим уколико се не прими испорука са домена. + failure_threshold_reached: Праг неуспеха достигнут датума %{date}. + failures_recorded: + few: Неуспели покушаји током %{count} различита дана. + one: Неуспели покушај током %{count} дана. + other: Неуспели покушаји током %{count} различитих дана. + no_failures_recorded: Без забележених неуспеха. + title: Доступност + warning: Последњи покушај повезивања са овим сервером је био неуспешан back_to_all: Све back_to_limited: Ограничено back_to_warning: Упозорење by_domain: Домен + confirm_purge: Да ли сте сигурни да желите да трајно уклоните податке са овог домена? content_policies: + comment: Интерна белешка + description_html: Можете да дефинишете политику садржаја која ће важити за све налоге на овом домену и сваком од његових поддомена. + limited_federation_mode_description_html: Можете да одлучите да ли да допустите федерацију са овим доменом. policies: + reject_media: Одбиј мултимедију + reject_reports: Одбиј пријаве silence: Ограничи suspend: Суспендуј policy: Политика reason: Јавни разлог + title: Политика садржаја + dashboard: + instance_accounts_dimension: Најпраћенији налози + instance_accounts_measure: ускладиштени налози + instance_followers_measure: наши пратиоци овде + instance_follows_measure: њихови пратиоци овде + instance_languages_dimension: Најзаступљенији језици + instance_media_attachments_measure: ускладиштени мултимедијални прилози + instance_reports_measure: пријаве против њих + instance_statuses_measure: ускладиштене објаве delivery: all: Све + clear: Очисти грешке приликом испоруке + failing: Без успеха + restart: Започни испоруку поново + stop: Обустави испоруку unavailable: Недоступно delivery_available: Достава је доступна + delivery_error_days: Дани неуспешних испорука + delivery_error_hint: Уколико испорука није могућа %{count} дана, аутоматски ће бити обележена као неиспоручива. + destroyed_msg: Подаци са %{domain} су сада у реду за чекање за извесно брисање. + empty: Ниједан домен није пронађен. + known_accounts: + few: "%{count} позната налога" + one: "%{count} познат налог" + other: "%{count} познатих налога" moderation: all: Све limited: Ограничено title: Модерација private_comment: Приватни коментар public_comment: Јавни коментар + purge: Чистка + purge_description_html: Уколико верујете да је овај домен трајно угашен, можете да обришете све записе налога и сродне податке овог домена са свог складишта. Ово може да потраје. title: Федерација total_blocked_by_us: Блокирано од стране нас total_followed_by_them: Праћени од стране њих total_followed_by_us: Праћени од стране нас total_reported: Пријаве везане за њих + total_storage: Мултимедијални прилози + totals_time_period_hint_html: Укупне вредности приказане испод укључују податке за сва времена. invites: deactivate_all: Деактивирај све filter: @@ -280,6 +544,9 @@ sr: title: Филтер title: Позивнице ip_blocks: + add_new: Направи правило + created_msg: Успешно је додато ново IP правило + delete: Избриши expires_in: '1209600': 2 недеље '15778476': 6 месеци @@ -290,6 +557,7 @@ sr: new: title: Креирај ново IP правило no_ip_block_selected: Ниједно IP правило није промењено јер ниједно није изабрано + title: IP правила relationships: title: Односи корисника %{acct} relays: @@ -305,88 +573,401 @@ sr: pending: Чека се одобрење релеја save_and_enable: Сачувај и омогући setup: Подеси везу релеја + signatures_not_enabled: Преноси можда неће радити исправно док је укључен безбедни режим или режим ограничене федерације status: Статус title: Релеји report_notes: created_msg: Белешка пријаве успешно направљена! destroyed_msg: Белешка пријаве успешно избрисана! reports: + account: + notes: + few: "%{count} белешке" + one: "%{count} белешка" + other: "%{count} бележака" + action_log: Записник action_taken_by: Акцију извео + actions: + delete_description_html: Пријављене објаве ће бити обрисане и прекршај ће бити уписан да би Вам олакшали интервенцију приликом будућих преступа са истог налога. + mark_as_sensitive_description_html: Мултимедијални садржај са пријављених објава ће бити означен као осетљив и прекршај ће бити уписан ради лакше интервенције у случају даљих прекршаја са истог налога. + other_description_html: Погледајте више опција за контролисање понашања налога и прилагодите комуникацију са пријављеним налогом. + resolve_description_html: Ниједна радња неће бити предузета против пријављеног налога, ниједан преступ није уписан и пријава ће бити затворена. + silence_description_html: Налог ће бити видљив само онима који га већ прате или који га ручно потраже, што ће значајно ограничити његов домет. Ограничење се може повући у сваком тренутку. Затвара све пријаве поднете против овог налога. + suspend_description_html: Налог и сви његови садржаји ће постати недоступни и у једном тренутку избрисани, а интеракција са налогом више неће бити могућа. Суспензија се може повући у року од 30 дана. Затвара све пријаве поднете против овог налога. + actions_description_html: Одлучите коју радњу да спроведете ради решавања ове пријаве. Уколико спроведете казнену радњу против пријављеног налога, власник налога ће бити обавештен путем и-мејла, осим уколико ознака „Непожељне поруке” није одабрана. + actions_description_remote_html: Одлучите коју радњу да предузмете ради решавања ове пријаве. Ово ће утицати само на то како Ваш сервер комуницира са овим удаљеним налогом и обрађује његов садржај. + add_to_report: Додај још у пријаву are_you_sure: Да ли сте сигурни? assign_to_self: Додели мени assigned: Додељени модератор + by_target_domain: Домен пријављеног налога + cancel: Откажи + category: Категорија + category_description_html: Разлог због ког је овај налог и/или садржај пријављен ће бити образложен у комуникацији са пријављеним налогом comment: none: Ништа + comment_description_html: 'Ради пружања више информација, %{name} је написао/-ла:' + confirm: Потврди + confirm_action: Потврди модерацијску радњу према @%{acct} created_at: Пријављена + delete_and_resolve: Обриши објаве + forwarded: Прослеђено + forwarded_to: Прослеђено ка %{domain} mark_as_resolved: Означи као решену + mark_as_sensitive: Обележи као осетљиво mark_as_unresolved: Означи као нерешену + no_one_assigned: Нико notes: create: Додај белешку create_and_resolve: Реши са белешком create_and_unresolve: Отвори поново са белешком delete: Обриши placeholder: Опишите какве су радње предузете, или било какве повезане новости... + title: Белешке + notes_description_html: Прочитајте и оставите напомене другим модераторима и себи у будућности + processed_msg: 'Пријава #%{id} успешно обрађена' + quick_actions_description_html: 'Предузмите брзу радњу или се спустите ниже да бисте видели пријављени садржај:' + remote_user_placeholder: удаљени корисник са %{instance} reopen: Отвори пријаву поново report: 'Пријава #%{id}' reported_account: Пријављени налог reported_by: Пријавио resolved: Решена resolved_msg: Пријава успешно разрешена! + skip_to_actions: Прескочи до радњи status: Статус + statuses: Пријављени садржај + statuses_description_html: Спорни садржај ће бити наведен у комуникацији са пријављеним налогом + summary: + action_preambles: + delete_html: 'Управо ћете обрисати неке од објава корисника @%{acct}. Ово ће:' + mark_as_sensitive_html: 'Управо ћете означити неке објаве корисника @%{acct} као осетљиве. Ово ће:' + silence_html: 'Управо ћете ограничити налог корисника @%{acct}. Ово ће:' + suspend_html: 'Управо ћете суспендовати налог корисника @%{acct}. Ово ће:' + actions: + delete_html: Обришите спорне објаве + mark_as_sensitive_html: Обележите медије спорних објава као осетљиве + silence_html: Жестоко ограничите домет корисника @%{acct} тако што ћете учинити његов профил и садржаје видљиве само људима који их већ прате и људима који ручно потраже профил + suspend_html: Суспендујте корисника @%{acct}, што ће учинити његов профил и садржаје недоступним за приступ и интеракцију + close_report: 'Означите пријаву #%{id} као решену' + close_reports_html: Означи све пријаве против @%{acct} као решене + delete_data_html: Обриши профил и садржаје корисника @%{acct} за 30 дана осим уколико суспензија буде повучена у међувремену + preview_preamble_html: "@%{acct} ће примити упозорење следеће садржине:" + record_strike_html: Упишите прекршај на име @%{acct} да би Вам било лакше да у будућности интервенишете приликом даљих преступа са овог налога + send_email_html: Пошаљи имејл упозорења кориснику @%{acct} + warning_placeholder: Опционо додатно образложење за модерацијску радњу. + target_origin: Порекло пријављеног налога title: Пријаве unassign: Уклони доделу + unknown_action_msg: 'Непозната радња: %{action}' unresolved: Нерешене updated_at: Ажурирана view_profile: Погледај профил roles: add_new: Додај улогу + assigned_users: + few: "%{count} корисника" + one: "%{count} корисник" + other: "%{count} корисника" categories: administration: Администрација + devops: DevOps + invites: Позивнице moderation: Модерација + special: Посебно delete: Избриши + description_html: Помоћу корисничких улога можете да подесите којим функцијама и деловима Мастодона Ваши корисници могу да приступе. + edit: Измени улогу '%{name}' + everyone: Подразумевана овлашћења + everyone_full_description_html: Ово је основна улога која се односи на све кориснике, чак и оне којима није додељена улога. Све друге улоге наслеђују овлашћења од основне улоге. + permissions_count: + few: "%{count} дозволе" + one: "%{count} дозвола" + other: "%{count} дозвола" privileges: administrator: Администратор + administrator_description: Корисници са овом привилегијом могу да заобиђу сва друга ограничења delete_user_data: Избриши податке корисника + delete_user_data_description: Допушта корисницима да избришу податке других корисника без одлагања invite_users: Позови кориснике + invite_users_description: Допушта корисницима да позове нове људе на сервер manage_announcements: Управљај обавештењима + manage_announcements_description: Допушта корисницима да руководе саопштењима на серверу + manage_appeals: Надгледање жалби + manage_appeals_description: Допушта корисницима да прегледају жалбе на модерацијске радње + manage_blocks: Надгледање блокова + manage_blocks_description: Допушта корисницима да блокирају имејл провајдере и IP адресе + manage_custom_emojis: Надлежност над прилагођеним емоџијима + manage_custom_emojis_description: Даје корисницима контролу над прилагођеним емоџијима на серверу + manage_federation: Надгледање федерације + manage_federation_description: Допушта корисницима да блокирају или дозволе федерацију са другим доменима и контролишу испоручивање података другим серверима + manage_invites: Надгледање позивница + manage_invites_description: Допушта корисницима да претражују и деактивирају позивнице + manage_reports: Надгледање пријава + manage_reports_description: Допушта корисницима да прегледају пријаве и извршавају модерацијске радње над њима manage_roles: Управљај улогама + manage_roles_description: Допушта корисницима да надгледају и додељују улоге са нижим овлашћењима од њихове manage_rules: Управљај правилима manage_rules_description: Дозволи корисницима да мењају правила сервера manage_settings: Управљај поставкама manage_settings_description: Дозволи корисницима да мењају поставке сајта + manage_taxonomies: Надгледање таксономија + manage_taxonomies_description: Допушта корисницима да прегледају садржај у тренду и ажурирају поставке хеш ознака + manage_user_access: Надлежност над корисничким приступом + manage_user_access_description: Допушта корисницима да онемогуће двофакторску аутентификацију других корисника, мењају им имејл адресе и ресетују им лозинке + manage_users: Надлежност над корисницима + manage_users_description: Допушта корисницима да прочитају детаље других корисника и извршавају модерацијске радње над њима + manage_webhooks: Надлежност над webhook елементима + manage_webhooks_description: Допушта корисницима да успоставе webhook елементе за административне радње + view_audit_log: Прочитај записник ревизија + view_audit_log_description: Допушта корисницима да виде историју административних радњи на серверу + view_dashboard: Погледај контролни панел + view_dashboard_description: Допушта корисницима да приступе контролном панелу и разним метрикама + view_devops: DevOps + view_devops_description: Допушта корисницима да приступе Sidekiq и pgHero контролним панелима + title: Улоге rules: add_new: Додај правило delete: Избриши + description_html: Док већина тврди да је прочитала и слаже се са условима коришћења, људи их обично не читају све док се не јави проблем. Учините правила Вашег сервера читљивијим и приступачнијим тако што ћете их изложити у форми листе. Потрудите се да појединачна правила буду кратка и једноставна, али покушајте и да их не исцепкате у превише одвојених ставки. edit: Уреди правило empty: Ниједно правило сервера још није дефинисано. title: Правила сервера settings: + about: + manage_rules: Управљање правилима сервера + preamble: Пружите детаљне информације о томе како се сервер води, модерира и финансира. + rules_hint: Постоји предвиђено место за правила која се од корисника очекује да поштују. + title: Назив appearance: + preamble: Прилагодите веб интерфејс Мастодона. title: Изглед + branding: + preamble: Брендирање Вашег сервера га издваја од других сервера на мрежи. Ове информације могу бити приказане у разним окружењима, попут Мастодоновог веб интерфејса, нативних апликација, у прегледима линкова на другим серверима и у апликацијама за размену порука, итд. Из овог разлога, најбоље је да ове информације буду кратке, јасне и концизне. + title: Брендирање + content_retention: + preamble: Контролишите како се садржај генерисан од стране корисника складишти на Мастодону. + title: Задржавање садржаја default_noindex: desc_html: Утиче на све кориснике који нису сами променили ову поставку title: Подразумевано искључи кориснике из индексирања претраживача discovery: + follow_recommendations: Препоруке за праћење + preamble: Одржавање занимљивих садржаја на површини је кључно у привлачењу нових корисника који можда не знају никога на Мастодону. Контролишите како различити начини истраживања функционишу на Вашем серверу. + profile_directory: Директоријум профилâ public_timelines: Јавне временске линије + publish_discovered_servers: Објави откривене сервере + publish_statistics: Објави статистику title: Откривање + trends: Трендови + domain_blocks: + all: Свима + disabled: Никоме + users: Пријављеним локалним корисницима + registrations: + preamble: Контролишите ко сме да направи налог на Вашем серверу. + title: Регистрације + registrations_mode: + modes: + approved: Одобрење неопходно за регистрацију + none: Нико не може да се региструје + open: Било ко може да се региструје + title: Подешавања сервера + site_uploads: + delete: Обриши отпремљени фајл + destroyed_msg: Отпремање успешно обрисано! statuses: + account: Аутор + application: Апликација back_to_account: Назад на страну налога + back_to_report: Назад на страницу са пријавама + batch: + remove_from_report: Уклоните из пријаве + report: Пријави + deleted: Обрисано + favourites: Омиљено + history: Историја верзијâ + in_reply_to: Одговор на + language: Језик media: title: Мултимедија + metadata: Мета подаци no_status_selected: Ниједан статус није промењен јер ниједан није изабран + open: Отвори објаву + original_status: Оригинална објава + reblogs: Дељења + status_changed: Објава промењена title: Статуси налога + trending: У тренду + visibility: Видљивост with_media: Са мултимедијом + strikes: + actions: + delete_statuses: "%{name} је обрисао/-ла објаве %{target}" + disable: "%{name} је замрзнуо налог корисника %{target}" + mark_statuses_as_sensitive: "%{name} је означио/-ла објаве корисника %{target} као осетљиве" + none: "%{name} је послао/-ла упозорење кориснику %{target}" + sensitive: "%{name} је обележио/-ла налог %{target} као осетљив" + silence: "%{name} је ограничио/-ла налог %{target}" + suspend: "%{name} је суспендовао/-ла налог %{target}" + appeal_approved: Жалба уважена + appeal_pending: Жалба у разматрању + appeal_rejected: Жалба одбијена + system_checks: + database_schema_check: + message_html: Селидбе базâ података су на чекању. Молимо Вас обавите их да би се апликација понашала како треба + elasticsearch_running_check: + message_html: Повезивање на Elasticsearch није било могуће. Молимо Вас проверите да ли је покренут, или онемогућите претрагу целог текста + elasticsearch_version_check: + message_html: 'Неусклађена Elasticsearch верзија: %{value}' + version_comparison: Elasticsearch %{running_version} је инсталиран а %{required_version} је неопходан + rules_check: + action: Управљање правилима сервера + message_html: Нисте дефинисали ниједно правило сервера. + sidekiq_process_check: + message_html: Ниједан Sidekiq процес није покренут за ред(ове) %{value}. Молимо Вас прегледајте своју Sidekiq конфигурацију + upload_check_privacy_error: + action: Проверите овде за више информација + message_html: "Ваш веб сервер је погрешно конфигурисан. Приватност ваших корисника је изложена ризику." + upload_check_privacy_error_object_storage: + action: Проверите овде за више информација + message_html: "Ваше складиште објекта је погрешно конфигурисано. Приватност ваших корисника је изложена ризику." + tags: + review: Прегледај статус + updated_msg: Подешавања хеш ознака успешно ажурирана title: Администрација + trends: + allow: Дозволи + approved: Одобрено + disallow: Забрани + links: + allow: Дозволи линк + allow_provider: Дозволи издавача + description_html: Ово су линкови који се тренутно често деле међу налозима које Ваш сервер види. Може помоћи Вашим корисницима да сазнају шта се дешава у свету. Ниједан линк није јавно приказан све док Ви не одобрите издавача. Такође можете да дозволите или одбијете засебне линкове. + disallow: Забрани линк + disallow_provider: Забрани издавача + no_link_selected: Ниједан линк није промењен јер ниједан није изабран + publishers: + no_publisher_selected: Ниједан издавач није промењен јер ниједан није изабран + shared_by_over_week: + few: Подељен од стране %{count} особе током претходне недеље + one: Подељен од стране једне особе током претходне недеље + other: Подељен од стране %{count} особа током претходне недеље + title: Линкови у тренду + usage_comparison: Подељено %{today} пута данас, у поређењу са %{yesterday} пута јуче + not_allowed_to_trend: Није одобрено за тренд + only_allowed: Само дозвољено + pending_review: Преглед на чекању + preview_card_providers: + allowed: Линкови са овог извора могу да буду „у тренду” + description_html: Ово су домени чији се линкови често деле на Вашем серверу. Линкови неће бити јавно приказани као „у тренду” осим уколико је домен линкова одобрен. Ваше одобрење (или одбијање) се преноси и на поддомене. + rejected: Линкови са овог извора неће бити „у тренду” + title: Издавачи + rejected: Одбијен + statuses: + allow: Дозволи објаву + allow_account: Одобри аутора + description_html: Ово су објаве за које Ваш сервер зна, а које се тренутно често деле и које корисници често стављају у „омиљене”. Могу помоћи Вашим новим корисницима и повратницима да пронађу још људи за праћење. Ниједна објава није приказана јавно све док Ви не одобрите аутора, односно док аутор не дозволи да његов/њен налог буде препоручен другима. Такође можете да одобрите или одбијете засебне објаве. + disallow: Забрани објаву + disallow_account: Забрани аутора + no_status_selected: Ниједна објава у тренду није промењена јер ниједна није изабрана + not_discoverable: Аутор није дао сагласност да буде препоручен + shared_by: + few: Подељено и стављено у „омиљене” %{friendly_count} пута + one: Подељено или стављено у „омиљене” једном + other: Подељено и стављено у „омиљене” %{friendly_count} пута + title: Објаве у тренду + tags: + current_score: Тренутна вредност %{score} + dashboard: + tag_accounts_measure: јединствене употребе + tag_languages_dimension: Најзаступљенији језици + tag_servers_dimension: Најактивнији сервери + tag_servers_measure: различити сервери + tag_uses_measure: укупно употреба + description_html: Ово су хеш ознаке које се тренутно често појављују у објавама које Ваш сервер види. Могу помоћи Вашим корисницима да открију о чему се тренутно највише говори. Ниједна хеш ознака није приказана јавно све док Ви то не одобрите. + listable: Може се препоручити + no_tag_selected: Ниједна ознака није измењена јер ниједна није изабрана + not_listable: Неће бити препоручено + not_trendable: Неће се појављивати у трендовима + not_usable: Не може се користити + peaked_on_and_decaying: Врхунац достигнут датума %{date}, од тада у опадању + title: Хеш ознаке у тренду + trendable: Може да се појави под трендовима + trending_rank: 'У тренду #%{rank}' + usable: Може се користити + usage_comparison: Употребљено %{today} пута данас, у поређењу са %{yesterday} пута јуче + used_by_over_week: + few: Коришћено од стране %{count} особе током претходне недеље + one: Коришћено од стране једне особе током претходне недеље + other: Коришћено од стране %{count} људи током претходне недеље + title: Трендови + trending: У тренду warning_presets: add_new: Додај нови delete: Избриши edit_preset: Уреди пресет упозорења + empty: Још увек нисте дефинисали ниједан шаблон упозорења. title: Управљај пресетима упозорења + webhooks: + add_new: Додај крајњу тачку + delete: Избриши + description_html: "Webhook омогућава Мастодону да Вашој апликацији испоручује обавештења у реалном времену о одабраним догађајима, тако да Ваша апликација може да aутоматски изазове реакцију." + disable: Онемогући + disabled: Онемогућено + edit: Измени крајњу тачку + empty: Још увек немате ниједну конфигурисану webhook крајњу тачку. + enable: Омогући + enabled: Активно + enabled_events: + few: "%{count} омогућена догађаја" + one: 1 омогућен догађај + other: "%{count} омогућених догађаја" + events: Догађаји + new: Нови webhook + rotate_secret: Ротација тајни + secret: Тајно потписивање + status: Статус + title: Веб-пресретач + webhook: Веб-пресретач admin_mailer: + new_appeal: + actions: + delete_statuses: обрисати објаве корисника + disable: замрзнути налог корисника + mark_statuses_as_sensitive: означити објаве корисника као осетљиве + none: упозорење + sensitive: означити налог као осетљив + silence: ограничити налог + suspend: суспендовати налог + body: "%{target} прилаже жалбу на модерацијску одлуку корисника %{action_taken_by} од %{date}, која је гласила %{type}. У жалби пише:" + next_steps: Можете уважити жалбу да бисте повукли модерацијску одлуку, или је можете игнорисати. + subject: "%{username} прилаже жалбу на модерацијску одлуку са %{instance}" + new_pending_account: + body: Детаљи новог налога су наведени доле. Можете одобрити или одбити овај захтев. + subject: Нов налог за преглед на %{instance} (%{username}) new_report: body: "%{reporter} је пријавио %{target}" body_remote: Нека са домена %{domain} је пријавио %{target} subject: Нова пријава за %{instance} (#%{id}) + new_trends: + body: 'Следеће ставке је потребно прегледати пре него што могу јавно да се прикажу:' + new_trending_links: + title: Линкови у тренду + new_trending_statuses: + title: Објаве у тренду + new_trending_tags: + no_approved_tags: Тренутно нема одобрених хеш ознака у тренду. + requirements: 'Било који од следећих кандидата би могао превазићи #%{rank} одобрену хеш ознаку у тренду, која је тренутно #%{lowest_tag_name} са вредношћу %{lowest_tag_score}.' + title: Хеш ознаке у тренду + subject: Нови трендови за преглед на %{instance} + aliases: + add_new: Направи псеудоним + created_msg: Успешно је направљен нови псеудоним. Сада можете иницирати пресељење са старог налога. + deleted_msg: Успешно је уклоњен псеудоним. Премештање са тог налога на овај више неће бити могуће. + empty: Немате ниједан псеудоним. + hint_html: Ако желите да се преселите са другог налога на овај, овде можете направити псеудоним, који је неопходан пре него што можете наставити са пребацивањем пратилаца са старог налога на овај. Ова радња сама по себи је безопасна и реверзибилна. Пресељење налога се иницира са старог налога. + remove: Одвежи псеудоним appearance: advanced_web_interface: Напредно веб окружење advanced_web_interface_hint: 'Ако желите да искористите целу ширину екрана, напредно веб окружење вам омогућује да конфигуришете много различитих колона да бисте видели онолико информација у исто време колико желите: почетну страницу, обавештења, здружену временску линију, било који број листа и хеш ознака.' @@ -395,11 +976,13 @@ sr: discovery: Откривање localization: body: Mastodon преводе добровољци. + guide_link: https://crowdin.com/project/mastodon guide_link_text: Свако може допринети. sensitive_content: Осетљив садржај toot_layout: Распоред објава application_mailer: notification_preferences: Промени преференце Е-поште + salutation: Поштовани %{name}, settings: 'Промени подешавања е-поште: %{link}' view: 'Погледај:' view_profile: Погледај налог @@ -407,35 +990,71 @@ sr: applications: created: Апликација успешно направљена destroyed: Апликација успешно обрисана + logout: Одјава regenerate_token: Рекреирај приступни токен token_regenerated: Приступни токен успешно рекреиран warning: Опрезно са овим подацима. Никад је не делите ни са ким! your_token: Ваш приступни токен auth: + apply_for_account: Затражите налог change_password: Лозинка + confirmations: + wrong_email_hint: Ако та имејл адреса није исправна, можете је променити у подешавањима налога. delete_account: Брисање налога delete_account_html: Ако желите да избришете ваш налог, можете наставити овде. Од вас ће се тражити потврда. + description: + prefix_invited_by_user: "@%{name} Вас позива да се придружите овом серверу Мастодона!" + prefix_sign_up: Придружите се Мастодону данас! + suffix: Са налогом, моћи ћете да пратите људе, објављујете новости и размењујете поруке са корисницима било ког Мастодон сервера и више! didnt_get_confirmation: Нисте добили поруку са упутствима за потврду налога? + dont_have_your_security_key: Немате сигурносни кључ? forgot_password: Заборавили сте лозинку? invalid_reset_password_token: Токен за ресетовање лозинке је неисправан или је истекао. Затражите нови. + link_to_otp: Унесите двофакторски код са свог телефона или резервни код + link_to_webauth: Користите свој сигурносни кључ + log_in_with: Пријавите се помоћу login: Пријави се logout: Одјава migrate_account: Премештање у други налог migrate_account_html: Ако желите да преусмерите овај налог на неки други, можете то подесити овде. or_log_in_with: Или се пријавите са + privacy_policy_agreement_html: Прочитао/-ла сам и сагласан/-а сам са политиком приватности providers: cas: CAS-ом saml: SAML-ом register: Региструј се + registration_closed: "%{instance} не прима нове чланове" resend_confirmation: Пошаљи поруку са упутствима о потврди налога поново reset_password: Ресетуј лозинку + rules: + accept: Прихвати + back: Назад + preamble: Ово су правила која су успоставили и која спроводе модератори сервера %{domain}. + title: Нека основна правила. security: Безбедност set_new_password: Постави нову лозинку + setup: + email_below_hint_html: Ако је имејл адреса испод неисправна, можете је променити овде и добити нови имејл потврде. + email_settings_hint_html: Имејл потврде је послат на %{email}. Ако та имејл адреса није исправна, можете је променити у подешавањима налога. + title: Постављање + sign_in: + preamble_html: Пријавите се са својим подацима за %{domain}. Ако се Ваш налог налази на другом серверу, нећете моћи да се пријавите овде. + title: Пријавите се на %{domain} + sign_up: + preamble: Са налогом на овом Мастодон серверу, моћи ћете да пратите било кога са мреже, без обзира на то на ком серверу се његов/њен налог налази. + title: Хајде да Вам наместимо налог на %{domain}. status: account_status: Статус налога + confirming: Чекање на потврду путем имејла. functional: Ваш налог је потпуно оперативан. + pending: Ваш захтев је на чекању за преглед од стране нашег особља. Ово може потрајати неко време. Примићете имејл поруку уколико Вам захтев буде одобрен. + redirecting_to: Ваш налог је неактиван јер преусмерава на %{acct}. + view_strikes: Погледајте претходне преступе уписане на Ваше име + too_fast: Формулар је поднет пребрзо, покушајте поново. + use_security_key: Користите сигурносни кључ authorize_follow: already_following: Већ пратите овај налог + already_requested: Већ сте послали захтев за праћење том налогу error: Нажалост, десила се грешка при тражењу удаљеног налога follow: Запрати follow_request: 'Послали сте захтев за праћењен за:' @@ -445,25 +1064,87 @@ sr: return: Врати се на налог овог корисника web: Иди на веб title: Запрати %{acct} + challenge: + confirm: Настави + hint_html: "Савет: Нећемо Вас питати за лозинку поново у наредних сат времена." + invalid_password: Неисправна лозинка + prompt: Потврдите лозинку за наставак + crypto: + errors: + invalid_key: није валидан Ed25519 или Curve25519 кључ + invalid_signature: није валидан Ed25519 потпис + date: + formats: + default: "%d. %b. %Y." + with_month_name: "%d. %B %Y." datetime: distance_in_words: + about_x_hours: "%{count} ч." about_x_months: "%{count}месец" about_x_years: "%{count}год" almost_x_years: "%{count}год" half_a_minute: Управо сад + less_than_x_minutes: "%{count} мин." less_than_x_seconds: Управо сад over_x_years: "%{count}год" x_days: "%{count}д" + x_minutes: "%{count} мин." x_months: "%{count}месец" + x_seconds: "%{count} сек." deletes: + challenge_not_passed: Лозинка коју сте унели није била исправна confirm_password: Унесите тренутну лозинку да бисмо проверили Ваш идентитет + confirm_username: Унесите своје корисничко име да бисте потврдили процедуру proceed: Обриши налог success_msg: Ваш налог је успешно обрисан + warning: + before: 'Пре него што наставите, молимо Вас пажљиво прочитајте следеће напомене:' + caches: Садржај који је кеширан на другим серверима може да остане нетакнут + data_removal: Ваше објаве и други подаци ће бити трајно избрисани + email_change_html: Можете променити своју имејл адресу без брисања свог налога + email_contact_html: Ако порука и даље не стиже, можете послати мејл на %{email} за помоћ + email_reconfirmation_html: Уколико Вам имејл за потврду не стиже, можете га поново затражити + irreversible: Нећете бити у могућности да вратите или реактивирате свој налог + more_details_html: За више детаља, погледајте политику приватности. + username_available: Ваше корисничко име ће поново постати доступно + username_unavailable: Ваше корисничко име ће остати недоступно + disputes: + strikes: + action_taken: Радња предузета + appeal: Жалба + appeal_approved: Жалба на овај преступ је уважена и преступ више није валидан + appeal_rejected: Жалба је одбијена + appeal_submitted_at: Жалба је приложена + appealed_msg: Ваша жалба је приложена. Бићете обавештени уколико она буде била уважена. + appeals: + submit: Приложи жалбу + approve_appeal: Уважи жалбу + associated_report: Сродна пријава + created_at: Датум + description_html: Ово су радње предузете против Вашег налога и упозорења која су Вам послали чланови особља %{instance}. + recipient: Усмерено према + reject_appeal: Одбиј жалбу + status: 'Објава #%{id}' + status_removed: Објава је већ уклоњена из система + title: "%{action} од %{date}" + title_actions: + delete_statuses: Брисање објава + disable: Замрзавање налога + mark_statuses_as_sensitive: Означавање објава као осетљивих + none: Упозорење + sensitive: Означавање налога као осетљивог + silence: Ограничење налога + suspend: Суспензија налога + your_appeal_approved: Ваша жалба је уважена + your_appeal_pending: Приложили сте жалбу + your_appeal_rejected: Ваша жалба је одбијена + domain_validator: + invalid_domain: нелегитимно име домена errors: - '400': The request you submitted was invalid or malformed. + '400': Захтев који сте поднели је био нелегитиман или у погрешном формату. '403': Немате дозвола да видите ову страну. '404': Страна коју сте тражили не постоји. - '406': This page is not available in the requested format. + '406': Ова страница није доступна у изабраном формату. '410': Страна коју сте тражили више не постоји. '422': content: Безбедоносна провера није успела. Да не блокирате колачиће? @@ -472,8 +1153,11 @@ sr: '500': content: Извињавамо се, нешто је пошло по злу са ове стране. title: Страна није исправна - '503': The page could not be served due to a temporary server failure. + '503': Страницу није било могуће доставити услед привременoг пада сервера. noscript_html: Да бисте користили Мастодонт веб апликацију, омогућите JavaScript. У супротном, пробајте неку од оригиналних апликација за Мастодонт за Вашу платформу. + existing_username_validator: + not_found: није било могуће пронаћи локалног корисника са тим корисничким именом + not_found_multiple: није било могуће пронаћи %{usernames} exports: archive_takeout: date: Датум @@ -483,6 +1167,8 @@ sr: request: Затражите своју архиву size: Величина blocks: Блокирали сте + bookmarks: Обележивачи + csv: CSV domain_blocks: Блокови домена lists: Листе mutes: Игноришете @@ -494,33 +1180,90 @@ sr: hint_html: "Шта су истакнуте хеш онаке? Оне се приказују истакнуто на вашем јавном профилу и омогућују људима да прегледају ваше јавне објаве конкретно под тим хеш ознакама. Оне су сјајан алат за праћење креативних радова или дугорочних пројеката." filters: contexts: + account: Профили home: Временска линија почетне notifications: Обавештења public: Јавне временске линије thread: Разговори edit: + add_keyword: Додај кључну реч + keywords: Кључне речи + statuses: Засебне објаве + statuses_hint_html: Овај филтер важи за одабране засебне објаве без обзира на то да ли садрже кључне речи наведене испод. Прегледајте или уклоните објаве из филтера. title: Измени филтер errors: + deprecated_api_multiple_keywords: Ови параметри не могу бити промењени у овој апликацији зато што се односе на више од једне кључне речи. Користите ажурнију апликацију или веб интерфејс. invalid_context: Ниједан или неважећи контекст испоручен index: + contexts: Филтрира у %{contexts} delete: Избриши empty: Немате филтере. + expires_in: Истиче за %{distance} + expires_on: Истиче датума %{date} + keywords: + few: "%{count} кључне речи" + one: "%{count} кључна реч" + other: "%{count} кључних речи" + statuses: + few: "%{count} објаве" + one: "%{count} објава" + other: "%{count} објава" + statuses_long: + few: "%{count} засебне објаве сакривене" + one: "%{count} засебна објава сакривена" + other: "%{count} засебних објава сакривено" title: Филтери new: + save: Сачувај нови филтер title: Додај нови филтер + statuses: + back_to_filter: Назад на филтер + batch: + remove: Уклони из филтера + index: + hint: Овај филтер важи за одабране засебне објаве без обзира на друге критеријуме. Можете да додате више објава у овај филтер путем веб интерфејса. + title: Филтриране објаве generic: + all: Сви + all_items_on_page_selected_html: + few: Све %{count} ставке са ове странице су изабране. + one: "%{count} ставка са ове странице је изабрана." + other: Свих %{count} ставки са ове странице је изабрано. + all_matching_items_selected_html: + few: Све %{count} ставке које се поклапају са Вашом претрагом су изабране. + one: "%{count} ставка која се поклапа са Вашом претрагом је изабрана." + other: Свих %{count} ставки које се поклапају са Вашом претрагом су изабране. changes_saved_msg: Измене успешно сачуване! copy: Копирај + delete: Избриши + deselect: Поништи све изборе + none: Ниједна + order_by: Сортирај према save_changes: Сачувај промене + select_all_matching_items: + few: Одаберите све %{count} ставке које се поклапају са Вашом претрагом. + one: Одаберите %{count} ставку која се поклапа са Вашом претрагом. + other: Одаберите свих %{count} ставки које се поклапају са Вашом претрагом. + today: данас validation_errors: few: Нешто није баш како треба! Прегледајте %{count} грешке испод one: Нешто није баш како треба! Прегледајте грешке испод other: Нешто није баш како треба! Прегледајте %{count} грешака испод imports: + errors: + invalid_csv_file: 'Неисправан CSV фајл. Грешка: %{error}' + over_rows_processing_limit: садржи више од %{count} редова + modes: + merge: Стапање + merge_long: Задржите постојеће записе и додајте нове + overwrite: Замени + overwrite_long: Замени тренутне записе новима preface: Можете увести податке које сте извезли са друге инстанце, као што су листе људи које сте пратили или блокирали. success: Ваши подаци су успешно отпремљени и биће обрађени ускоро types: blocking: Листа блокирања + bookmarks: Обележивачи + domain_blocking: Листа блокираних домена following: Листа пратилаца muting: Листа ућутканих upload: Отпреми @@ -547,17 +1290,70 @@ sr: expires_at: Истиче uses: Коришћења title: Позовите људе + lists: + errors: + limit: Достигли сте максимални број листâ + login_activities: + authentication_methods: + otp: апликација за двофакторску аутентификацију + password: лозинка + sign_in_token: имејл сигурносни код + webauthn: сигурносни кључеви + description_html: Уколико приметите активност коју не препознајете, размислите о томе да промените своју лозинку и укључите двофакторску аутентификацију. + empty: Историја аутентификације није доступна + failed_sign_in_html: Неуспешан покушај пријављивања путем %{method} са %{ip} (%{browser}) + successful_sign_in_html: Успешан покушај пријављивања путем %{method} са %{ip} (%{browser}) + title: Историја аутентификације media_attachments: validations: images_and_video: Не може да се прикачи видео на статус који већ има слике + not_ready: Не могу се приложити фајлови који још увек нису обрађени. Покушајте поново за који тренутак! too_many: Не може се прикачити више од 4 фајла migrations: acct: корисник@домен новог налога + cancel: Откажи преусмерење + cancel_explanation: Отказивање преусмерења ће поново активирати Ваш садашњи налог, али неће вратити пратиоце који су премештени на други налог. + cancelled_msg: Успешно је отказано преусмерење. + errors: + already_moved: већ сте се преселили на исти налог + missing_also_known_as: није псеудоним овог налога + move_to_self: не можете се преселити на садашњи налог + not_found: није било могуће пронаћи налог + on_cooldown: Под ограничењем сте + followers_count: Пратиоци у тренутку премештаја incoming_migrations: Премештање из другог налога incoming_migrations_html: Да бисте прешли са другог налога на овај, прво морате креирате псеудоним налога. + moved_msg: Ваш налог сада преусмерава на %{acct} и Ваши пратиоци се тренутно пребацују. + not_redirecting: Ваш налог тренутно не преусмерава ни на један други налог. + on_cooldown: Недавно сте се преселили на нови налог. Ова функција ће Вам поново постати доступна за %{count} дана. + past_migrations: Претходне селидбе + proceed_with_move: Пребаците пратиоце + redirected_msg: Ваш налог сада преусмерава на %{acct}. + redirecting_to: Ваш налог преусмерава на %{acct}. + set_redirect: Постави преусмерење + warning: + backreference_required: Нови налог прво мора бити конфигурисан тако да реферише на овај налог + before: 'Пре него што наставите, молимо Вас пажљиво прочитајте следеће напомене:' + cooldown: Након пресељења потребно је да прође одређено време пре него што ћете поново моћи да се преселите + disabled_account: Ваш тренутни налог више неће бити употребљив. Међутим, имаћете приступ извозу података као и реактивацији. + followers: Ова радња ће преместити све пратиоце са тренутног налога на нови налог + only_redirect_html: Уместо пресељења, можете само додати преусмеравајући линк на свој профил.. + other_data: Остали подаци неће бити аутоматски пребачени + redirect: Профил Вашег садашњег налога ће бити ажуриран са обавештењем о преусмерењу и биће искључен из претраге moderation: title: Модерација + move_handler: + carry_blocks_over_text: Овај корисник се преселио са налога %{acct}, који сте блокирали. + carry_mutes_over_text: Овај корисник се преселио са налога %{acct}, који сте утишали. + copy_account_note_text: 'Овај корисник се преселио са налога %{acct}, о коме сте записали следеће белешке:' + navigation: + toggle_menu: Прикажи/сакриј мени notification_mailer: + admin: + report: + subject: "%{name} је поднео/-ла пријаву" + sign_up: + subject: "%{name} се регистровао/-ла" favourite: body: "%{name} је поставио као омиљен Ваш статус:" subject: "%{name} је поставио као омиљен Ваш статус" @@ -576,29 +1372,72 @@ sr: body: "%{name} Вас је поменуо у:" subject: "%{name} Вас је поменуо" title: Ново спомињање + poll: + subject: Анкета корисника %{name} се завршила reblog: body: "%{name} Вам је подржао/ла статус:" subject: "%{name} је подржао/ла Ваш статус" title: Нова подршка + status: + subject: "%{name} jе управо поставио/-ла објаву" + update: + subject: "%{name} је изменио/-ла објаву" notifications: email_events: Догађаји за обавештења е-поштом email_events_hint: 'Изаберите дешавања за која желите да примате обавештења:' other_settings: Остала подешавања обавештења + number: + human: + decimal_units: + format: "%n %u" + units: + billion: млрд. + million: мил. + quadrillion: трил. + thousand: хиљ. + trillion: бил. + otp_authentication: + code_hint: Укуцајте код генерисан у Вашој апликацији за аутентификацију да бисте потврдили + description_html: Ако укључите двофакторску аутентификацију путем апликације за аутентификацију, мораћете да будете при телефону приликом пријављивања да бисте имали приступ генерисаним кодовима за пријаву. + enable: Омогући + instructions_html: "Скенирајте овај QR код помоћу Google аутентификатора или сличне апликације на свом телефону. Од сада па убудуће, та апликација ће генерисати приступне кодове које ћете морати да унесете приликом пријављивања." + manual_instructions: 'Ако не можете да скенирате QR код и морате да га унесете ручно, ево његове текстуалне шифре:' + setup: Инсталација + wrong_code: Унесени код је био неисправан! Да ли су време сервера и време уређаја исправни? pagination: newer: Новије next: Следеће older: Старије prev: Претходни + truncate: "…" + polls: + errors: + already_voted: Већ сте гласали у овој анкети + duplicate_options: садржи дупликате + duration_too_long: превише је далеко у будућности + duration_too_short: превише је скоро + expired: Анкета је већ завршена + invalid_choice: Изабрана опција не постоји + over_character_limit: не може бити дуже од по %{max} карактера + too_few_options: мора имати више од једне опције + too_many_options: не може да садржи више од %{max} опција preferences: other: Остало posting_defaults: Подразумевана подешавања објављивања public_timelines: Јавне временске линије + privacy_policy: + title: Политика приватности + reactions: + errors: + limit_reached: Достигнуто је ограничење различитих реакција + unrecognized_emoji: није препознат емоџи relationships: activity: Активност налога confirm_follow_selected_followers: Да ли сте сигурни да желите да пратите изабране пратиоце? confirm_remove_selected_followers: Да ли сте сигурни да желите да уклоните изабране пратиоце? confirm_remove_selected_follows: Да ли сте сигурни да желите да уклоните изабрана праћења? dormant: Неактиван + follow_failure: Није могуће пратити неке од изабраних налога. follow_selected_followers: Прати изабране пратиоце followers: Пратиоци following: Праћења @@ -615,6 +1454,14 @@ sr: status: Статус налога remote_follow: missing_resource: Не могу да нађем захтевану адресу преусмеравања за Ваш налог + reports: + errors: + invalid_rules: не реферише на легитимна правила + rss: + content_warning: 'Упозорење о садржају:' + descriptions: + account: Јавне објаве са @%{acct} + tag: 'Јавне објаве означене са #%{hashtag}' scheduled_statuses: over_daily_limit: Прекорачили сте границу од %{limit} планираних објава за данас over_total_limit: Прекорачили сте границу од %{limit} планираних објава @@ -624,11 +1471,13 @@ sr: browser: Веб читач browsers: alipay: Алипеј + blackberry: Блекбери chrome: Chrome edge: Мајкрософт Еџ electron: Електрон firefox: Фајерфокс generic: Непознати веб читач + huawei_browser: Huawei прегледач ie: Интернет Експлорер micro_messenger: МајкроМесенџер nokia: Нокија С40 Ови Претраживач @@ -637,18 +1486,24 @@ sr: phantom_js: ФантомЏејЕс qq: КјуКју Претраживач safari: Сафари + uc_browser: UC Browser + unknown_browser: Непознати прегледач weibo: Веибо current_session: Тренутна сесија description: "%{browser} са %{platform}" explanation: Ово су веб претраживачи који су тренутно пријављени на Ваш Мастодон налог. + ip: IP platforms: adobe_air: Адоб Ер-а android: Андроида + blackberry: Блекбери + chrome_os: ChromeOS firefox_os: Фајерфокс ОС-а ios: иОС-а + kai_os: KaiOS linux: Линукса mac: Мека - other: непознате платформе + unknown_platform: Непозната платформа windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -659,6 +1514,7 @@ sr: settings: account: Налог account_settings: Подешавања налога + aliases: Псеудоними налога appearance: Изглед authorized_apps: Ауторизоване апликације back: Назад на Мастодон @@ -675,9 +1531,15 @@ sr: profile: Налог relationships: Праћења и пратиоци statuses_cleanup: Аутоматско брисање објава + strikes: Модерацијски преступи two_factor_authentication: Двофакторска идентификација + webauthn_authentication: Сигурносни кључеви statuses: attached: + audio: + few: "%{count} аудио записа" + one: "%{count} аудио запис" + other: "%{count} аудио записа" description: 'У прилогу: %{attached}' image: few: "%{count} слика" @@ -694,15 +1556,34 @@ sr: few: 'садржи забрањене хештегове: %{tags}' one: 'садржи забрањени хештег: %{tags}' other: 'садржи забрањене хештегове: %{tags}' + edited_at_html: Измењено %{date} + errors: + in_reply_not_found: Објава на коју покушавате да одговорите наизглед не постоји. open_in_web: Отвори у вебу over_character_limit: ограничење од %{max} карактера прекорачено pin_errors: + direct: Објаве које су видљиве само поменутим корисницима не могу бити прикачене limit: Већ сте закачили максималан број објава ownership: Туђа објава се не може закачити reblog: Подршка не може да се прикачи + poll: + total_people: + few: "%{count} особе" + one: "%{count} особа" + other: "%{count} људи" + total_votes: + few: "%{count} гласа" + one: "%{count} глас" + other: "%{count} гласова" + vote: Гласајте show_more: Прикажи још + show_newer: Никад не приказуј + show_older: Прикажи старије + show_thread: Прикажи низ sign_in_to_participate: Пријавите се да учествујете у разговору + title: "%{name}: „%{quote}”" visibilities: + direct: Директно private: Само пратиоци private_long: Прикажи само пратиоцима public: Јавно @@ -742,54 +1623,127 @@ sr: min_age_label: Старосни праг min_favs: Задржи објаве означене као омиљене најмање min_favs_hint: Не брише ниједну вашу објаву која је добила најмање овај број омиљених. Оставите празно за брисање објава без обзира на њихов број омиљених + min_reblogs: Задржи објаве подржане барем min_reblogs_hint: Не брише ниједну вашу објаву која је била подржана најмање оволико пута. Оставите празно за брисање објава без обзира на њихов број подржавања stream_entries: pinned: Закачена објава reblogged: подржано sensitive_content: Осетљив садржај + strikes: + errors: + too_late: Истекао је рок за подношење жалбе на забележен преступ + tags: + does_not_match_previous_name: не поклапа се са претходним именом themes: contrast: Велики контраст default: Мастодон mastodon-light: Мастодон (светло) + time: + formats: + default: "%d %b %Y, %H:%M" + month: "%b %Y" + time: "%H:%M" two_factor_authentication: + add: Додај disable: Искључи + disabled_success: Двофакторска аутентификација је успешно онемогућена + edit: Измени enabled: Двофакторска идентификација је укључена enabled_success: Двофакторска идентификација је успешно укључена generate_recovery_codes: Генериши кодове за опоравак lost_recovery_codes: Кодови за опоравак Вам омогућавају да повратите приступ налогу ако изгубите телефон. Ако изгубите кодове за опоравак, можете их ре-генерисати овде. Од тог тренутка, стари кодови за опоравак више не важе. + methods: Методе двофакторске аутентификације + otp: Апликација за аутентификацију recovery_codes: Направите резерву кодова за опоравак recovery_codes_regenerated: Кодови за опоравак успешно ре-генерисани recovery_instructions_html: Ако икада изгубите приступ телефону, можете искористити кодове за опоравак дате испод да повратите приступ налогу. Држите кодове за опоравак на сигурном. На пример, одштампајте их и чувајте их са осталим важним документима. + webauthn: Сигурносни кључеви user_mailer: + appeal_approved: + action: Идите на свој налог + explanation: Жалба поднета датума %{appeal_date} на уписан преступ на Ваше име датума %{strike_date} је уважена. Ваш налог је поново у повољном положају. + subject: Ваша жалба поднета %{date} је уважена + title: Жалба уважена + appeal_rejected: + explanation: Жалба поднета датума %{appeal_date} на уписан преступ на Ваше име датума %{strike_date} је одбијена. + subject: Ваша жалба поднета %{date} је одбијена + title: Жалба одбијена backup_ready: explanation: Тражили сте потпуну резервну копију вашег Мастодон рачуна. Спремна за преузимање! subject: Ваша архива је спремна за преузимање title: Извоз архиве + suspicious_sign_in: + change_password: промените своју лозинку + details: 'Ево детаља о пријави:' + explanation: Приметили смо пријаву на Ваш налог са непознате IP адресе. + further_actions_html: Уколико то нисте били Ви, препоручујемо да одмах %{action} и укључите двофакторску аутентификацију да бисте одржали безбедност свог налога. + subject: Вашем налогу је приступљено са непозате IP адресе + title: Ново пријављивање warning: + appeal: Приложите жалбу + appeal_description: Уколико верујете да је у питању грешка, можете приложити жалбу особљу %{instance}. + categories: + spam: Нежељена пошта + violation: Садржај крши следећа правила заједнице + explanation: + delete_statuses: За неке од Ваших објава је установљено да крше једно или више правила заједнице и услед тога су уклоњене од стране модератора %{instance}. + disable: Више не можете да користите свој налог, али Ваш профил и други подаци остају нетакнути. Можете да затражите резервну копију својих података, промените подешавања налога или обришете свој налог. + mark_statuses_as_sensitive: Неке од Ваших објава су означене као осетљиве од стране модератора %{instance}. Ово значи да ће људи морати да кликну на мултимедије у објавама пре него што могу да их виде. Убудуће можете сами да означите своју мултимедију као осетљиву приликом састављања објаве. + sensitive: Од сада ће сви Ваши отпремљени мултимедијални фајлови бити означени као осетљиви и сакривени иза тастера упозорења. + silence: И даље можете користити свој налог али само људи који Вас већ прате ће видети Ваше објаве на овом серверу, и можда ћете бити искључени из разних механизама откривања. Међутим, други људи и даље могу ручно да Вас запрате. + suspend: Више не можете да користите свој налог, и Ваш профил и остали подаци Вам више нису доступни. И даље можете да се пријавите да бисте затражили резервну копију својих података све док се Ваши подаци трајно не избришу за око 30 дана, с тим што ћемо задржати неке основне податке да бисмо Вас спречили у евентуалном заобилажењу суспензије. + reason: 'Образложење:' + statuses: 'Цитиране објаве:' subject: + delete_statuses: Ваше објаве са %{acct} су избрисане disable: Ваш налог %{acct} је замрзнут + mark_statuses_as_sensitive: Ваше објаве са %{acct} су обележене као осетљиве none: Упозорење за %{acct} + sensitive: Ваше објаве са %{acct} ће убудуће бити означене као осетљиве silence: Ваш налог %{acct} је ограничен suspend: Ваш налог %{acct} је суспендован title: + delete_statuses: Објаве су обрисане disable: Налог замрзнут + mark_statuses_as_sensitive: Објаве су означене као осетљиве none: Упозорење + sensitive: Налог је означен као осетљив silence: Налог ограничен suspend: Налог суспендован welcome: edit_profile_action: Подеси налог + edit_profile_step: Можете прилагодити свој профил тако што ћете поставити профилну слику, променити име за приказ и тако даље. Можете дати сагласност да прегледате нове пратиоце пре него што им дозволите да Вас запрате. explanation: Ево неколико савета за почетак final_action: Почните објављивати + final_step: 'Почните да објављујете! Чак и без пратилаца, Ваше јавне објаве су видљиве другим људима, на пример на локалној временској линији или у хеш ознакама. Можда желите да се представите са хеш ознаком #introductions или #представљања.' full_handle: Ваш пун надимак full_handle_hint: Ово бисте рекли својим пријатељима како би вам они послали поруку, или запратили са друге инстанце. subject: Добродошли на Мастодон title: Добродошли, %{name}! users: follow_limit_reached: Не можете пратити више од %{limit} људи + go_to_sso_account_settings: Идите на подешавања налога свог добављача идентитета invalid_otp_token: Неисправни двофакторски код otp_lost_help_html: Ако изгубите приступ за оба, можете ступити у контакт са %{email} seamless_external_login: Пријављени сте путем спољашње услуге, тако да лозинка и подешавања Е-поште нису доступни. signed_in_as: 'Пријављен/а као:' verification: - explanation_html: 'Можете извршити проверу да сте Ви власник веза на Вашем налогу. Да би то радило, повезани веб сајт мора да садржи везу назад ка Вашем Мастодон налогу. Веза назад мора да има rel="me" атрибут. Текстуелни садржај везе није битан. Ево примера:' + explanation_html: 'Можете да се верификујете као власник веза у метаподацима профила. За то је потребно да повезани веб сајт мора садржати везу до вашег Mastodon профила. Након што додате везу, можда ћете морати да се вратите овде и поново сачувате свој профил да би верификација ступила на снагу. Повратна веза мора имати атрибут rel="me". Текстуални садржај везе није битан. Ево примера:' verification: Провера + webauthn_credentials: + add: Додајте нови сигурносни кључ + create: + error: Искрсао је проблем приликом додавања Вашег сигурносног кључа. Молимо Вас покушајте поново. + success: Ваш сигурносни кључ је успешно додат. + delete: Избриши + delete_confirmation: Да ли сте сигурни да желите да избришете овај сигурносни кључ? + description_html: Ако укључите аутентификацију сигурносним кључем, мораћете да користите један од својих сигурносних кључева приликом пријављивања. + destroy: + error: Искрсао је проблем приликом брисања Вашег сигурносног кључа. Молимо Вас покушајте поново. + success: Ваш сигурносни кључ је успешно обрисан. + invalid_credential: Неисправан сигурносни кључ + nickname_hint: Унесите надимак свог новог сигурносног кључа + not_enabled: Још увек нисте омогућили WebAuthn + not_supported: Овај претраживач не подржава сигурносне кључеве + otp_required: Да бисте користили сигурносне кључеве, молимо Вас прво укључите двофакторску аутентификацију. + registered_on: Регистрован/-а %{date} diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 9352f0c19a..6e7deb9eeb 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -812,6 +812,12 @@ sv: message_html: Du har inte definierat några serverregler. sidekiq_process_check: message_html: Ingen Sidekiq-process körs för kön/köerna %{value}. Vänligen kontrollera din Sidekiq-konfiguration + upload_check_privacy_error: + action: Kolla här för mer information + message_html: "Din webbserver är felkonfigurerad. Sekretessen för dina användare är i fara." + upload_check_privacy_error_object_storage: + action: Kolla här för mer information + message_html: "Din objektlagring är felkonfigurerad. Sekretessen för dina användare är i riskzonen." tags: review: Granskningsstatus updated_msg: Hashtagg-inställningarna har uppdaterats @@ -1196,8 +1202,6 @@ sv: index: hint: Detta filter gäller för att välja enskilda inlägg oavsett andra kriterier. Du kan lägga till fler inlägg till detta filter från webbgränssnittet. title: Filtrerade inlägg - footer: - trending_now: Trendar nu generic: all: Alla all_items_on_page_selected_html: @@ -1407,6 +1411,7 @@ sv: confirm_remove_selected_followers: Är du säker på att du vill ta bort valda följare? confirm_remove_selected_follows: Är du säker på att du vill ta bort valda följare? dormant: Vilande + follow_failure: Kan inte följa några av de valda kontona. follow_selected_followers: Följ valda personer followers: Följare following: Följer @@ -1446,6 +1451,7 @@ sv: electron: Electron firefox: Firefox generic: Okänd browser + huawei_browser: Huawei Browser ie: Internet Explorer micro_messenger: MicroMessenger nokia: Nokia S40 Ovi Browser @@ -1455,6 +1461,7 @@ sv: qq: QQ browser safari: Safari uc_browser: UC Browser + unknown_browser: Okänd browser weibo: Weibo current_session: Nuvarande session description: "%{browser} på %{platform}" @@ -1467,9 +1474,10 @@ sv: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: Mac - other: okänd plattform + unknown_platform: Okänd plattform windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1682,12 +1690,13 @@ sv: title: Välkommen ombord, %{name}! users: follow_limit_reached: Du kan inte följa fler än %{limit} personer + go_to_sso_account_settings: Gå till din identitetsleverantörs kontoinställningar invalid_otp_token: Ogiltig tvåfaktorskod otp_lost_help_html: Om du förlorat åtkomst till båda kan du komma i kontakt med %{email} seamless_external_login: Du är inloggad via en extern tjänst, inställningar för lösenord och e-post är därför inte tillgängliga. signed_in_as: 'Inloggad som:' verification: - explanation_html: 'Du kan verifiera dig själv som ägare av länkar i din profilmetadata, genom att på den länkade webbplatsen även länka tillbaka till din Mastodon-profil. Länken tillbaka måste ha attributet rel="me". Textinnehållet i länken spelar ingen roll. Här är ett exempel:' + explanation_html: 'Du kan bekräfta att du är ägare till länkarna i dina profilmetadata. För detta krävs att den länkade webbplatsen innehåller en länk tillbaka till din Mastodon-profil. När du har lagt till länken kan du behöva komma tillbaka hit och spara din profil på nytt för att verifieringen ska träda i kraft. Tillbakalänken måste ha attributet rel="me". Länkens textinnehåll spelar ingen roll. Här är ett exempel:' verification: Bekräftelse webauthn_credentials: add: Lägg till ny säkerhetsnyckel diff --git a/config/locales/th.yml b/config/locales/th.yml index 9c4a7bfc58..574ca91e4f 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -798,6 +798,12 @@ th: message_html: คุณไม่ได้กำหนดกฎของเซิร์ฟเวอร์ใด ๆ sidekiq_process_check: message_html: ไม่มีกระบวนการ Sidekiq ที่กำลังทำงานสำหรับคิว %{value} โปรดตรวจทานการกำหนดค่า Sidekiq ของคุณ + upload_check_privacy_error: + action: ตรวจสอบที่นี่สำหรับข้อมูลเพิ่มเติม + message_html: "เว็บเซิร์ฟเวอร์ของคุณกำหนดค่าไม่ถูกต้อง ความเป็นส่วนตัวของผู้ใช้ของคุณตกอยู่ในความเสี่ยง" + upload_check_privacy_error_object_storage: + action: ตรวจสอบที่นี่สำหรับข้อมูลเพิ่มเติม + message_html: "ที่เก็บข้อมูลวัตถุของคุณกำหนดค่าไม่ถูกต้อง ความเป็นส่วนตัวของผู้ใช้ของคุณตกอยู่ในความเสี่ยง" tags: review: สถานะการตรวจทาน updated_msg: อัปเดตการตั้งค่าแฮชแท็กสำเร็จ @@ -963,7 +969,7 @@ th: description: prefix_invited_by_user: "@%{name} เชิญคุณเข้าร่วมเซิร์ฟเวอร์ Mastodon นี้!" prefix_sign_up: ลงทะเบียนใน Mastodon วันนี้! - suffix: เมื่อมีบัญชี คุณจะสามารถติดตามผู้คน โพสต์การอัปเดต และแลกเปลี่ยนข้อความกับผู้ใช้จากเซิร์ฟเวอร์ Mastodon และอื่น ๆ! + suffix: ด้วยบัญชี คุณจะสามารถติดตามผู้คน โพสต์การอัปเดต และแลกเปลี่ยนข้อความกับผู้ใช้จากเซิร์ฟเวอร์ Mastodon และอื่น ๆ! didnt_get_confirmation: ไม่ได้รับคำแนะนำการยืนยัน? dont_have_your_security_key: ไม่มีกุญแจความปลอดภัยของคุณ? forgot_password: ลืมรหัสผ่านของคุณ? @@ -999,7 +1005,7 @@ th: preamble_html: ลงชื่อเข้าด้วยข้อมูลประจำตัว %{domain} ของคุณ หากบัญชีของคุณได้รับการโฮสต์ในเซิร์ฟเวอร์อื่น คุณจะไม่สามารถเข้าสู่ระบบได้ที่นี่ title: ลงชื่อเข้า %{domain} sign_up: - preamble: เมื่อมีบัญชีในเซิร์ฟเวอร์ Mastodon นี้ คุณจะสามารถติดตามบุคคลอื่นใดในเครือข่าย โดยไม่คำนึงถึงที่ซึ่งบัญชีของเขาได้รับการโฮสต์ + preamble: ด้วยบัญชีในเซิร์ฟเวอร์ Mastodon นี้ คุณจะสามารถติดตามบุคคลอื่นใดในเครือข่าย โดยไม่คำนึงถึงที่ซึ่งบัญชีของเขาได้รับการโฮสต์ title: มาตั้งค่าของคุณใน %{domain} กันเลย status: account_status: สถานะบัญชี @@ -1175,8 +1181,6 @@ th: index: hint: ตัวกรองนี้นำไปใช้เพื่อเลือกโพสต์แต่ละรายการโดยไม่คำนึงถึงเกณฑ์อื่น ๆ คุณสามารถเพิ่มโพสต์เพิ่มเติมไปยังตัวกรองนี้ได้จากส่วนติดต่อเว็บ title: โพสต์ที่กรองอยู่ - footer: - trending_now: กำลังนิยม generic: all: ทั้งหมด all_items_on_page_selected_html: @@ -1381,6 +1385,7 @@ th: confirm_remove_selected_followers: คุณแน่ใจหรือไม่ว่าต้องการเอาผู้ติดตามที่เลือกออก? confirm_remove_selected_follows: คุณแน่ใจหรือไม่ว่าต้องการเอาการติดตามที่เลือกออก? dormant: ไม่เคลื่อนไหว + follow_failure: ไม่สามารถติดตามบัญชีที่เลือกบางส่วน follow_selected_followers: ติดตามผู้ติดตามที่เลือก followers: ผู้ติดตาม following: กำลังติดตาม @@ -1399,7 +1404,7 @@ th: missing_resource: ไม่พบ URL การเปลี่ยนเส้นทางที่จำเป็นสำหรับบัญชีของคุณ reports: errors: - invalid_rules: ไม่ได้อ้างอิงกฎที่ถูกต้อง + invalid_rules: ไม่อ้างอิงกฎที่ถูกต้อง rss: content_warning: 'คำเตือนเนื้อหา:' descriptions: @@ -1420,6 +1425,7 @@ th: electron: Electron firefox: Firefox generic: เบราว์เซอร์ที่ไม่รู้จัก + huawei_browser: เบราว์เซอร์ Huawei ie: Internet Explorer micro_messenger: MicroMessenger nokia: เบราว์เซอร์ Nokia S40 Ovi @@ -1429,6 +1435,7 @@ th: qq: เบราว์เซอร์ QQ safari: Safari uc_browser: เบราว์เซอร์ UC + unknown_browser: เบราว์เซอร์ที่ไม่รู้จัก weibo: Weibo current_session: เซสชันปัจจุบัน description: "%{browser} ใน %{platform}" @@ -1441,9 +1448,10 @@ th: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: macOS - other: แพลตฟอร์มที่ไม่รู้จัก + unknown_platform: แพลตฟอร์มที่ไม่รู้จัก windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1650,12 +1658,13 @@ th: title: ยินดีต้อนรับ %{name}! users: follow_limit_reached: คุณไม่สามารถติดตามมากกว่า %{limit} คน + go_to_sso_account_settings: ไปยังการตั้งค่าบัญชีของผู้ให้บริการข้อมูลประจำตัวของคุณ invalid_otp_token: รหัสสองปัจจัยไม่ถูกต้อง otp_lost_help_html: หากคุณสูญเสียการเข้าถึงทั้งสองอย่าง คุณสามารถติดต่อ %{email} seamless_external_login: คุณได้เข้าสู่ระบบผ่านบริการภายนอก ดังนั้นจึงไม่มีการตั้งค่ารหัสผ่านและอีเมล signed_in_as: 'ลงชื่อเข้าเป็น:' verification: - explanation_html: 'คุณสามารถ ยืนยันตัวคุณเองว่าเป็นเจ้าของของลิงก์ในข้อมูลอภิพันธุ์โปรไฟล์ของคุณ สำหรับสิ่งนั้น เว็บไซต์ที่เชื่อมโยงต้องมีลิงก์ย้อนกลับไปยังโปรไฟล์ Mastodon ของคุณ ลิงก์ย้อนกลับ ต้อง มีแอตทริบิวต์ rel="me" เนื้อหาข้อความของลิงก์ไม่สำคัญ นี่คือตัวอย่าง:' + explanation_html: 'คุณสามารถ ยืนยันตัวคุณเองว่าเป็นเจ้าของของลิงก์ในข้อมูลอภิพันธุ์โปรไฟล์ของคุณ สำหรับสิ่งนั้น เว็บไซต์ที่เชื่อมโยงต้องมีลิงก์ย้อนกลับไปยังโปรไฟล์ Mastodon ของคุณ หลังจากการเพิ่มลิงก์คุณอาจจำเป็นต้องกลับมาที่นี่และบันทึกโปรไฟล์ของคุณใหม่เพื่อให้การตรวจสอบมีผล ลิงก์ย้อนกลับ ต้อง มีแอตทริบิวต์ rel="me" เนื้อหาข้อความของลิงก์ไม่สำคัญ นี่คือตัวอย่าง:' verification: การตรวจสอบ webauthn_credentials: add: เพิ่มกุญแจความปลอดภัยใหม่ diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 90a4208f0a..99aa325cb3 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -812,6 +812,12 @@ tr: message_html: Herhangi bir sunucu kuralı belirlemediniz. sidekiq_process_check: message_html: "%{value} kuyruk(lar)ı için herhangi bir Sidekiq süreci çalışmıyor. Lütfen Sidekiq yapılandırmanızı gözden geçirin" + upload_check_privacy_error: + action: Daha fazla bilgi için buraya tıklayın + message_html: "Web sunucunuz hatalı yapılandırılmış. Kullanıcılarınızın gizliliği tehlikede." + upload_check_privacy_error_object_storage: + action: Daha fazla bilgi için buraya göz atın + message_html: "Nesne depolamanız hatalı yapılandırılmış. Kullanıcılarınızın gizliliği tehlikede." tags: review: Durumu gözden geçir updated_msg: Etiket ayarları başarıyla güncellendi @@ -1196,8 +1202,6 @@ tr: index: hint: Bu filtre diğer ölçütlerden bağımsız olarak tekil gönderileri seçmek için uygulanıyor. Web arayüzünü kullanarak bu filtreye daha fazla gönderi ekleyebilirsiniz. title: Filtrelenmiş gönderiler - footer: - trending_now: Şu an gündemde generic: all: Tümü all_items_on_page_selected_html: @@ -1407,6 +1411,7 @@ tr: confirm_remove_selected_followers: Seçili takipçileri kaldırmak istediğinizden emin misiniz? confirm_remove_selected_follows: Seçili takipleri kaldırmak istediğinizden emin misiniz? dormant: Uykuda + follow_failure: Seçilen hesaplardan bazıları takip edilemedi. follow_selected_followers: Seçili takipçileri takip et followers: Takipçiler following: Takip edilenler @@ -1446,6 +1451,7 @@ tr: electron: Electron firefox: Firefox generic: Bilinmeyen tarayıcı + huawei_browser: Huawei Tarayıcı ie: Internet Explorer micro_messenger: MicroMessenger nokia: Nokia S40 Ovi Browser @@ -1455,6 +1461,7 @@ tr: qq: QQ Browser safari: Safari uc_browser: UC Browser + unknown_browser: Bilinmeyen Tarayıcı weibo: Weibo current_session: Geçerli oturum description: "%{platform} - %{browser}" @@ -1467,9 +1474,10 @@ tr: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: macOS - other: bilinmeyen platform + unknown_platform: Bilinmeyen Platform windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1682,12 +1690,13 @@ tr: title: Gemiye hoşgeldin, %{name}! users: follow_limit_reached: "%{limit} kişiden daha fazlasını takip edemezsiniz" + go_to_sso_account_settings: Kimlik sağlayıcı hesap ayarlarına gidin invalid_otp_token: Geçersiz iki adımlı doğrulama kodu otp_lost_help_html: Her ikisine de erişiminizi kaybettiyseniz, %{email} ile irtibata geçebilirsiniz seamless_external_login: Harici bir servis aracılığıyla oturum açtınız, bu nedenle parola ve e-posta ayarları mevcut değildir. signed_in_as: 'Oturum açtı:' verification: - explanation_html: 'Profil meta verisindeki bağlantıların sahibi olarak kendinizi doğrulayabilirsiniz. Bunun için, link verilen web sitesi Mastodon profilinize geri bir link içermelidir. Geri link bir rel="me" özelliğine sahip olmalıdır. Bağlantının metin içeriği önemli değildir. İşte bir örnek:' + explanation_html: 'Profil meta verisindeki bağlantıların sahibi olarak kendinizi doğrulayabilirsiniz. Bunun için, bağlantısı verilen web sitesi Mastodon profilinize bir bağlantı içermelidir. Doğrulamanın gerçekleşmesi için bağlantıyı ekledikten sonra buraya gelip profilinizi tekrar kaydetmelisiniz. Geri bağlantı bir rel="me" özelliğine sahip olmalıdır. Bağlantının metin içeriği önemli değildir. İşte bir örnek:' verification: Doğrulama webauthn_credentials: add: Yeni güvenlik anahtarı ekle diff --git a/config/locales/tt.yml b/config/locales/tt.yml index 9e03822489..d260e8be20 100644 --- a/config/locales/tt.yml +++ b/config/locales/tt.yml @@ -2,16 +2,20 @@ tt: about: contact_unavailable: Юк + title: Проект турында accounts: follow: Языл following: Язылгансыз admin: accounts: + approve: Хуплау avatar: Аватар by_domain: Домен change_email: label: Emailны үзгәртү submit: Emailны үзгәртү + change_role: + no_role: Рольсез confirm: Раслау deleted: Бетерелде domain: Домен @@ -19,6 +23,7 @@ tt: email: Эл. почта header: Башлам ip: ІР + joined: Кушылды location: all: Бөтенесе local: Җирле @@ -28,8 +33,13 @@ tt: all: Бөтенесе perform_full_suspension: Искә алмау reset: Ташлату + role: Роль search: Эзләү + security: Иминлек + security_measures: + only_password: Серсүз генә sensitive: Sizmäle + title: Аккаунтлар username: Кулланучы исеме web: Веб action_logs: @@ -40,10 +50,10 @@ tt: copy: Күчереп алу delete: Бетерү disable: Cүндерү - disabled: Cүндерелгән - enable: Кабызу + disabled: Cүнек + enable: Кушу list: Исемлек - upload: Йөкләү + upload: Йөкләтү domain_blocks: domain: Домен new: @@ -101,7 +111,7 @@ tt: application_mailer: salutation: "%{name}," auth: - change_password: Парол + change_password: Серсүз login: Керү providers: cas: САS @@ -141,7 +151,7 @@ tt: exports: archive_takeout: date: Көне - size: Olılıq + size: Зурлык bookmarks: Кыстыргычлар csv: СSV filters: @@ -158,7 +168,7 @@ tt: imports: types: bookmarks: Кыстыргычлар - upload: Йөкләү + upload: Йөкләтү invites: expired: Гамәлдән чыкты expires_in: @@ -172,15 +182,15 @@ tt: number: human: decimal_units: - format: "%n%u" + format: "%n %u" otp_authentication: - enable: Кабызу + enable: Кушу pagination: next: Киләсе prev: Алдыгы truncate: "…" relationships: - following: Язылгансыз + following: Язылулар sessions: browser: Браузер browsers: @@ -198,7 +208,7 @@ tt: qq: QQ Brоwser safari: Safаri weibo: Weibо - description: "%{browser} - %{platform}" + description: "%{platform} платформасында %{browser}" ip: ІР platforms: adobe_air: Adobе Air @@ -211,10 +221,10 @@ tt: windows_mobile: Windows Mоbile windows_phone: Windоws Phone settings: - account: Хисап язмасы - appearance: Küreneş - development: Эшләнмә - edit_profile: Профильны үзгәртү + account: Аккаунт + appearance: Тышкы кыяфәт + development: Ясаучылар өчен + edit_profile: Профильне үзгәртү import: Импортлау preferences: Caylaw profile: Профиль @@ -244,7 +254,7 @@ tt: edit: Үзгәртү user_mailer: warning: - reason: 'Сәбаб:' + reason: 'Сәбәп:' title: none: Игътибар webauthn_credentials: diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 347f7414dc..62736d23d7 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -840,6 +840,12 @@ uk: message_html: Ви не визначили будь-які правила сервера. sidekiq_process_check: message_html: Не працює процес Sidekiq для %{value} черги. Перегляньте конфігурації вашого Sidekiq + upload_check_privacy_error: + action: Перегляньте подробиці тут + message_html: "Ваш вебсервер неправильно налаштований. Приватність ваших користувачів піддається ризику" + upload_check_privacy_error_object_storage: + action: Перегляньте подробиці тут + message_html: "Ваше сховище об'єктів неправильно налаштоване. Приватність ваших користувачів піддається ризику" tags: review: Переглянути допис updated_msg: Параметри хештеґів успішно оновлені @@ -1238,8 +1244,6 @@ uk: index: hint: Цей фільтр застосовується для вибору окремих дописів, незалежно від інших критеріїв. Ви можете додавати більше дописів до цього фільтра з вебінтерфейсу. title: Відфільтровані дописи - footer: - trending_now: Актуальні generic: all: Усі all_items_on_page_selected_html: @@ -1459,6 +1463,7 @@ uk: confirm_remove_selected_followers: Ви дійсно бажаєте видалити вибраних підписників? confirm_remove_selected_follows: Ви дійсно хочете вилучити вибрані підписки? dormant: Неактивні + follow_failure: Не вдалося підписатися на деякі вибрані облікові записи. follow_selected_followers: Стежити за вибраними підписниками followers: Підписники following: Підписник @@ -1498,6 +1503,7 @@ uk: electron: Electron firefox: Firefox generic: Невідомий браузер + huawei_browser: Huawei Браузер ie: Internet Explorer micro_messenger: MicroMessenger nokia: Nokia S40 Ovi Browser @@ -1507,6 +1513,7 @@ uk: qq: QQ Browser safari: Сафарі uc_browser: UC Browser + unknown_browser: Невідомий браузер weibo: Weibo current_session: Поточний сеанс description: "%{browser} на %{platform}" @@ -1519,9 +1526,10 @@ uk: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: macOS - other: невідома платформа + unknown_platform: Невідома Платформа windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1746,12 +1754,13 @@ uk: title: Ласкаво просимо, %{name}! users: follow_limit_reached: Не можна слідкувати більш ніж за %{limit} людей + go_to_sso_account_settings: Перейдіть до налаштувань облікового запису постачальника ідентифікації invalid_otp_token: Введено неправильний код otp_lost_help_html: Якщо ви втратили доступ до обох, ви можете отримати доступ з %{email} seamless_external_login: Ви увійшли за допомогою зовнішнього сервісу, тому налаштування паролю та електронної пошти недоступні. signed_in_as: 'Ви увійшли як:' verification: - explanation_html: 'Ви можете підтвердити володіння посиланнями в метаданих вашого профілю. Для цього на зазначеному сайті повинне міститися посилання на ваш профіль Mastodon. Посилання повинне мати атрибут rel="me". Текстовий вміст посилання не має значення. Ось приклад:' + explanation_html: 'Ви можете підтвердити володіння посиланнями в метаданих вашого профілю. Для цього на зазначеному сайті повинен міститися посилання на ваш профіль Mastodon. Посилання повинне мати атрибут rel="me". Текстовий вміст посилання не має значення. Ось приклад:' verification: Підтвердження webauthn_credentials: add: Додати новий ключ безпеки diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 538b9304b0..a1a2257014 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -798,6 +798,12 @@ vi: message_html: Bạn chưa cập nhật nội quy máy chủ. sidekiq_process_check: message_html: Sidekiq không hoạt động khi truy vấn %{value}. Hãy kiểm tra lại cấu hình Sidekiq + upload_check_privacy_error: + action: Nhấn vào đây để biết thêm thông tin + message_html: "Máy chủ web của bạn bị cấu hình sai. Có nguy cơ ảnh hưởng bảo mật của người dùng." + upload_check_privacy_error_object_storage: + action: Nhấn vào đây để biết thêm thông tin + message_html: "Lưu trữ đối tượng của bạn bị cấu hình sai. Có nguy cơ ảnh hưởng bảo mật của người dùng." tags: review: Phê duyệt updated_msg: Hashtag đã được cập nhật thành công @@ -1175,8 +1181,6 @@ vi: index: hint: Bộ lọc này áp dụng để chọn các tút riêng lẻ bất kể các tiêu chí khác. Bạn có thể thêm các tút khác vào bộ lọc này từ giao diện web. title: Những tút đã lọc - footer: - trending_now: Thịnh hành generic: all: Tất cả all_items_on_page_selected_html: @@ -1381,6 +1385,7 @@ vi: confirm_remove_selected_followers: Bạn có chắc muốn bỏ theo dõi những người đã chọn? confirm_remove_selected_follows: Bạn có chắc muốn xoá những người theo dõi bạn đã chọn không? dormant: Chưa + follow_failure: Không thể theo dõi một số tài khoản đã chọn. follow_selected_followers: Theo dõi những người đã chọn followers: Người theo dõi following: Đang theo dõi @@ -1420,6 +1425,7 @@ vi: electron: Electron firefox: Firefox generic: Trình duyệt khác + huawei_browser: Huawei Browser ie: Internet Explorer micro_messenger: MicroMes hành khách nokia: Trình duyệt Nokia S40 Ovi @@ -1429,6 +1435,7 @@ vi: qq: QQ safari: Safari uc_browser: UC Browser + unknown_browser: Trình duyệt khác weibo: Weibo current_session: Phiên hiện tại description: "%{browser} trên %{platform}" @@ -1441,9 +1448,10 @@ vi: chrome_os: ChromeOS firefox_os: Hệ điều hành Firefox ios: iOS + kai_os: KaiOS linux: Linux mac: Mac - other: nền tảng khác + unknown_platform: Nền tảng khác windows: Windows windows_mobile: Windows Mobile windows_phone: Điện thoại Windows @@ -1650,6 +1658,7 @@ vi: title: Xin chào %{name}! users: follow_limit_reached: Bạn chỉ có thể theo dõi tối đa %{limit} người + go_to_sso_account_settings: Thiết lập tài khoản nhà cung cấp danh tính invalid_otp_token: Mã xác minh 2 bước không hợp lệ otp_lost_help_html: Nếu bạn mất quyền truy cập vào cả hai, bạn có thể đăng nhập bằng %{email} seamless_external_login: Bạn đã đăng nhập thông qua một dịch vụ bên ngoài, vì vậy mật khẩu và email không khả dụng. diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index e8ca1910a7..f85c6c73ac 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -307,12 +307,12 @@ zh-CN: unpublished_msg: 公告已取消发布! updated_msg: 公告已成功更新! custom_emojis: - assign_category: 指定分类 + assign_category: 指定类别 by_domain: 域名 copied_msg: 已成功将表情复制到本站 copy: 复制 copy_failed_msg: 无法将表情复制到本站 - create_new_category: 新建分类 + create_new_category: 新建类别 created_msg: 表情添加成功! delete: 删除 destroyed_msg: 表情删除成功! @@ -798,6 +798,12 @@ zh-CN: message_html: 你没有定义任何服务器规则。 sidekiq_process_check: message_html: "%{value} 队列未运行任何 Sidekiq 进程。请检查你的 Sidekiq 配置" + upload_check_privacy_error: + action: 点击这里查看更多信息 + message_html: "您的网站服务器配置错误,您用户的隐私处于危险中。" + upload_check_privacy_error_object_storage: + action: 点击这里查看更多信息 + message_html: "您的对象存储空间配置错误,您用户的隐私处于危险中。" tags: review: 审核状态 updated_msg: 话题标签设置更新成功 @@ -948,7 +954,7 @@ zh-CN: applications: created: 应用创建成功 destroyed: 应用删除成功 - logout: 登出 + logout: 退出登录 regenerate_token: 重置访问令牌 token_regenerated: 访问令牌重置成功 warning: 一定小心,千万不要把它分享给任何人! @@ -972,7 +978,7 @@ zh-CN: link_to_webauth: 使用你的安全密钥设备 log_in_with: 通过外部服务登录 login: 登录 - logout: 登出 + logout: 退出登录 migrate_account: 迁移到另一个账户 migrate_account_html: 如果你希望引导他人关注另一个账号,请点击这里进行设置。 or_log_in_with: 或通过外部服务登录 @@ -999,7 +1005,7 @@ zh-CN: preamble_html: 使用您在 %{domain} 的账户和密码登录。如果您的账户托管在其他的服务器上,您将无法在此登录。 title: 登录到 %{domain} sign_up: - preamble: 使用此 Mastodon 服务器上的帐号,您将能够关注网络上的任何其他人,无论他们的帐号托管在哪里的主机。 + preamble: 有了这个Mastodon服务器上的账户,您就可以关注Mastodon网络上的任何其他人,无论他们的账户在哪里。 title: 让我们在 %{domain} 上开始。 status: account_status: 账户状态 @@ -1175,8 +1181,6 @@ zh-CN: index: hint: 无论其他条件如何,此过滤器适用于选用个别嘟文。你可以从网页界面中向此过滤器加入更多嘟文。 title: 过滤的嘟文 - footer: - trending_now: 现在流行 generic: all: 全部 all_items_on_page_selected_html: @@ -1381,6 +1385,7 @@ zh-CN: confirm_remove_selected_followers: 您确定想要取关所选的关注者吗? confirm_remove_selected_follows: 您确定要删除选定的关注着吗? dormant: 休眠 + follow_failure: 无法关注选中的部分账户。 follow_selected_followers: 关注选中的关注者 followers: 关注者 following: 正在关注 @@ -1420,6 +1425,7 @@ zh-CN: electron: Electron firefox: 火狐 generic: 未知浏览器 + huawei_browser: 华为浏览器 ie: IE 浏览器 micro_messenger: 微信 nokia: Nokia S40 Ovi 浏览器 @@ -1429,6 +1435,7 @@ zh-CN: qq: QQ浏览器 safari: Safari uc_browser: UC 浏览器 + unknown_browser: 未知浏览器 weibo: 新浪微博 current_session: 当前会话 description: "%{platform} 上的 %{browser}" @@ -1441,9 +1448,10 @@ zh-CN: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: Mac - other: 未知平台 + unknown_platform: 未知平台 windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1650,12 +1658,13 @@ zh-CN: title: "%{name},欢迎你的加入!" users: follow_limit_reached: 你不能关注超过 %{limit} 个人 + go_to_sso_account_settings: 转到您的身份提供商进行账户设置 invalid_otp_token: 输入的双重认证代码无效 otp_lost_help_html: 如果你不慎丢失了所有的代码,请联系 %{email} 寻求帮助 seamless_external_login: 因为你是通过外部服务登录的,所以密码和电子邮件地址设置都不可用。 signed_in_as: 当前登录的账户: verification: - explanation_html: 你可以 验证自己是个人资料元数据中的某个链接的所有者。 为此,被链接网站必须包含一个到你的 Mastodon 主页的链接。链接中 必须 包括 rel="me" 属性。链接的文本内容可以随意填写。例如: + explanation_html: 您可以 验证自己是个人资料元数据中的链接的所有者 。为此,链接的网站必须包含返回到您的 Mastodon 个人资料的链接。添加链接后,您可能需要回到这里并重新保存个人资料以使验证生效。 必须 在返回链接上使用 rel="me" 属性。 链接的文本内容无关紧要。以下是一个示例: verification: 验证 webauthn_credentials: add: 添加新的安全密钥 diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index 6538e34590..566156620d 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -798,6 +798,12 @@ zh-HK: message_html: 您尚未定義任何伺服器規則 sidekiq_process_check: message_html: 沒有 %{value} 佇列的 Sidekiq 處理程序。請檢查 Sidekiq 設定檔案 + upload_check_privacy_error: + action: 在此查看更多資訊 + message_html: "你的網絡伺服器配置錯誤。你的使用者的私隱有危險。" + upload_check_privacy_error_object_storage: + action: 在此查看更多資訊 + message_html: "你的對象儲存配置錯誤。你的使用者的私隱有危險。" tags: review: 審核文章 updated_msg: 成功更新主題標籤設定 @@ -1175,8 +1181,6 @@ zh-HK: index: hint: 不管其他條件如何,此篩選器會套用於所選的個別帖文。你可以在網頁介面上加入更多帖文到此篩選器。 title: 篩選帖文 - footer: - trending_now: 今期流行 generic: all: 全部 all_items_on_page_selected_html: @@ -1381,6 +1385,7 @@ zh-HK: confirm_remove_selected_followers: 你確定要移除選取的追蹤者嗎? confirm_remove_selected_follows: 你確定要移除選取的追蹤者嗎? dormant: 潛在 + follow_failure: 無法追蹤部份已選的帳號。 follow_selected_followers: 關注所選的追隨者 followers: 追隨者 following: 正在關注 @@ -1420,6 +1425,7 @@ zh-HK: electron: Electron 瀏覽器 firefox: Firefox 瀏覽器 generic: 未知的瀏覽器 + huawei_browser: 華為瀏覽器 ie: Internet Explorer 瀏覽器 micro_messenger: 微信 nokia: Nokia S40 Ovi 瀏覽器 @@ -1429,6 +1435,7 @@ zh-HK: qq: QQ瀏覽器 safari: Safari 瀏覽器 uc_browser: UC 瀏覽器 + unknown_browser: 未知的瀏覽器 weibo: 新浪微博 current_session: 目前的作業階段 description: "%{platform} 上的 %{browser}" @@ -1441,9 +1448,10 @@ zh-HK: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: Mac - other: 未知平台 + unknown_platform: 未知平台 windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1650,12 +1658,13 @@ zh-HK: title: 歡迎 %{name} 加入! users: follow_limit_reached: 你不能關注多於%{limit} 人 + go_to_sso_account_settings: 前往你身份提供者的帳號設定 invalid_otp_token: 雙重認證碼不正確 otp_lost_help_html: 如果這兩者你均無法登入,你可以聯繫 %{email} seamless_external_login: 因為你正在使用第三方服務登入,所以不能設定密碼和電郵。 signed_in_as: 目前登入的帳戶: verification: - explanation_html: 你可以認證個人資料頁面的元數據 (Metadata) 連結是屬於你的。要認證,那些連結的目的地網站必須有一條回到你 Mastodon 個人頁面的連結,而且連結必須具有rel="me"屬性。連結的文字內容都不會影響認證。這裏有一個例子: + explanation_html: 你可以在你的個人檔案元數據中驗證自己是連結的擁有者。為此,連接的網站必須包含一條回到你 Mastodon 個人檔案的連結。加入連結後,你可能需要回到這裏,再次儲存你的個人檔案以便驗證生效。返回的連結必須有一個rel="me"的屬性。當中的文字內容並不重要。以下有一個例子: verification: 驗證 webauthn_credentials: add: 新增安全密鑰裝置 diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index a25818bca6..ef027e8f2a 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -800,6 +800,12 @@ zh-TW: message_html: 您尚未定義任何伺服器規則。 sidekiq_process_check: message_html: 沒有佇列 %{value} 的 Sidekiq 行程,請檢查您的 Sidekiq 設定組態 + upload_check_privacy_error: + action: 檢查這裡以取得更多資訊 + message_html: "您的網頁伺服器設定錯誤。您的使用者隱私正暴露於風險之中。" + upload_check_privacy_error_object_storage: + action: 檢查這裡以取得更多資訊 + message_html: "您的物件資料儲存空間 (object storage) 設定錯誤。您的使用者隱私正暴露於風險之中。" tags: review: 審核嘟文 updated_msg: 成功更新主題標籤設定 @@ -964,7 +970,7 @@ zh-TW: delete_account_html: 如果您欲刪除您的帳號,請點擊這裡繼續。您需要再三確認您的操作。 description: prefix_invited_by_user: "@%{name} 邀請您加入這個 Mastodon 伺服器!" - prefix_sign_up: 現在就註冊 Mastodon 帳號吧! + prefix_sign_up: 馬上註冊 Mastodon 帳號吧! suffix: 有了帳號,就可以從任何 Mastodon 伺服器跟隨任何人、發發廢嘟,並且與任何 Mastodon 伺服器的使用者交流,以及更多! didnt_get_confirmation: 沒有收到驗證信? dont_have_your_security_key: 找不到您的安全金鑰? @@ -1007,7 +1013,7 @@ zh-TW: account_status: 帳號狀態 confirming: 等待電子郵件確認完成。 functional: 您的帳號可以正常使用了。 - pending: 管管們正在處理您的申請,這可能需要一點時間處理。我們將在申請通過後以電子郵件方式通知您。 + pending: 管管們正在處理您的申請,這可能需要一點時間處理。我們將於申請通過後以電子郵件方式通知您。 redirecting_to: 您的帳號因目前重定向至 %{acct} 而被停用。 view_strikes: 檢視針對您帳號過去的警示 too_fast: 送出表單的速度太快跟不上,請稍後再試。 @@ -1132,7 +1138,7 @@ zh-TW: domain_blocks: 網域封鎖 lists: 列表 mutes: 您靜音的使用者 - storage: 儲存空間大小 + storage: 匯出檔案大小 featured_tags: add_new: 新增 errors: @@ -1177,8 +1183,6 @@ zh-TW: index: hint: 此過濾器會套用至所選之各別嘟文,不管它們有無符合其他條件。您可以從網頁介面中將更多嘟文加入至此過濾器。 title: 已過濾之嘟文 - footer: - trending_now: 現正熱門 generic: all: 全部 all_items_on_page_selected_html: @@ -1271,7 +1275,7 @@ zh-TW: incoming_migrations_html: 要從其他帳號移動到此帳號的話,首先您必須建立帳號別名。 moved_msg: 您的帳號正被重新導向到 %{acct},您的跟隨者也會同步轉移至該帳號。 not_redirecting: 您的帳號目前尚未重新導向到任何其他帳號。 - on_cooldown: 您最近已轉移過您的帳號。此功能將在 %{count} 天後可再度使用。 + on_cooldown: 您最近已轉移過您的帳號。此功能將於 %{count} 天後可再度使用。 past_migrations: 以往的轉移紀錄 proceed_with_move: 移動跟隨者 redirected_msg: 您的帳號現在指向 %{acct} @@ -1383,6 +1387,7 @@ zh-TW: confirm_remove_selected_followers: 您確定要移除選取的跟隨者嗎? confirm_remove_selected_follows: 您確定要取消跟隨這些選取的使用者嗎? dormant: 潛水中 + follow_failure: 無法跟隨某些所選取的帳號。 follow_selected_followers: 跟隨選取的跟隨者 followers: 跟隨者 following: 跟隨中 @@ -1422,6 +1427,7 @@ zh-TW: electron: Electron 瀏覽器 firefox: Firefox 瀏覽器 generic: 未知的瀏覽器 + huawei_browser: 華為瀏覽器 ie: Internet Explorer 瀏覽器 micro_messenger: 微信 nokia: Nokia S40 Ovi 瀏覽器 @@ -1431,6 +1437,7 @@ zh-TW: qq: QQ 瀏覽器 safari: Safari 瀏覽器 uc_browser: UC 瀏覽器 + unknown_browser: 未知的瀏覽器 weibo: 新浪微博 current_session: 目前的 session description: "%{platform} 上的 %{browser}" @@ -1443,9 +1450,10 @@ zh-TW: chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS + kai_os: KaiOS linux: Linux mac: Mac - other: 不明平台 + unknown_platform: 未知的平台 windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1525,8 +1533,8 @@ zh-TW: enabled_hint: 一旦達到指定的保存期限,就會自動刪除您的嘟文,除非該嘟文符合下列例外 exceptions: 例外 explanation: 因為刪除嘟文是耗費資源的操作,當伺服器不那麼忙碌時才會慢慢完成。因此,您的嘟文會在到達保存期限後一段時間才會被刪除。 - ignore_favs: 忽略最愛 - ignore_reblogs: 忽略轉嘟 + ignore_favs: 忽略最愛數 + ignore_reblogs: 忽略轉嘟數 interaction_exceptions: 基於互動的例外規則 interaction_exceptions_explanation: 請注意嘟文是無法保證被刪除的,如果在一次處理過後嘟文低於最愛或轉嘟的門檻。 keep_direct: 保留私訊 @@ -1647,17 +1655,18 @@ zh-TW: final_action: 開始嘟嘟 final_step: '開始嘟嘟吧!即使您現在沒有跟隨者,其他人仍然能在本站時間軸、主題標籤等地方,看到您的公開嘟文。試著用 #introductions 這個主題標籤介紹一下自己吧。' full_handle: 您的完整帳號名稱 - full_handle_hint: 您需要把這告訴您的朋友們,這樣他們就能從另一個伺服器向您發送訊息或跟隨您。 + full_handle_hint: 您需要將這告訴您的朋友們,這樣他們就能從另一個伺服器向您發送訊息或跟隨您。 subject: 歡迎來到 Mastodon title: "%{name} 誠摯歡迎您的加入!" users: follow_limit_reached: 您無法跟隨多於 %{limit} 個人 + go_to_sso_account_settings: 前往您的身分提供商 (identity provider) 之帳號設定 invalid_otp_token: 兩階段認證碼不正確 otp_lost_help_html: 如果您無法訪問這兩者,可以透過 %{email} 與我們聯繫 seamless_external_login: 由於您是由外部系統登入,所以不能設定密碼與電子郵件。 signed_in_as: 目前登入的帳號: verification: - explanation_html: 您在 Mastodon 個人檔案頁上所列出的連結,可以用此方式驗證您確實掌控該連結網頁的內容。您可以在連結的網頁上加上一個連回 Mastodon 個人檔案頁面的連結,該連結的原始碼 必須包含rel="me"屬性。連結的顯示文字可自由發揮,以下為範例: + explanation_html: 您可以透過以個人檔案頁上列出連結的方式,驗證您確實掌控該連結網頁的內容。為此,您可以在連結的網頁中加入一個連回 Mastodon 個人檔案頁面的連結。新增此連結之後,您可能要回到這裡並重新儲存您的個人檔案以使該驗證生效。該連結的原始碼 必須包含rel="me"屬性。連結的顯示文字則可自由發揮,以下為範例: verification: 驗證連結 webauthn_credentials: add: 新增安全金鑰 @@ -1666,7 +1675,7 @@ zh-TW: success: 您已成功加入安全金鑰。 delete: 刪除 delete_confirmation: 您確定要移除這把安全金鑰嗎? - description_html: 如果您啟用安全金鑰驗證的話,您將在登入時需要使用其中一把安全金鑰。 + description_html: 如果您啟用安全金鑰驗證的話,您將於登入時需要使用其中一把安全金鑰。 destroy: error: 移除安全金鑰時出現了問題。請再試一次。 success: 您已成功將安全金鑰移除。 diff --git a/config/puma.rb b/config/puma.rb index e592954458..c4e2b0b85c 100644 --- a/config/puma.rb +++ b/config/puma.rb @@ -22,3 +22,5 @@ on_worker_boot do end plugin :tmp_restart + +set_remote_address(proxy_protocol: :v1) if ENV['PROXY_PROTO_V1'] == 'true' diff --git a/config/routes.rb b/config/routes.rb index 37d8dcd2e7..0999331165 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -8,6 +8,7 @@ Rails.application.routes.draw do # have alternative format representations requiring separate controllers web_app_paths = %w( /getting-started + /getting-started-misc /keyboard-shortcuts /home /public @@ -223,6 +224,7 @@ Rails.application.routes.draw do resource :statuses_cleanup, controller: :statuses_cleanup, only: [:show, :update] get '/media_proxy/:id/(*any)', to: 'media_proxy#show', as: :media_proxy, format: false + get '/backups/:id/download', to: 'backups#download', as: :download_backup, format: false resource :authorize_interaction, only: [:show, :create] resource :share, only: [:show, :create] @@ -231,7 +233,7 @@ Rails.application.routes.draw do get '/dashboard', to: 'dashboard#index' resources :domain_allows, only: [:new, :create, :show, :destroy] - resources :domain_blocks, only: [:new, :create, :show, :destroy, :update, :edit] do + resources :domain_blocks, only: [:new, :create, :destroy, :update, :edit] do collection do post :batch end @@ -477,7 +479,9 @@ Rails.application.routes.draw do resources :list, only: :show end - resources :streaming, only: [:index] + get '/streaming', to: 'streaming#index' + get '/streaming/(*any)', to: 'streaming#index' + resources :custom_emojis, only: [:index] resources :suggestions, only: [:index, :destroy] resources :scheduled_statuses, only: [:index, :show, :update, :destroy] @@ -549,6 +553,7 @@ Rails.application.routes.draw do resources :domain_blocks, only: [:index], controller: 'instances/domain_blocks' resource :privacy_policy, only: [:show], controller: 'instances/privacy_policies' resource :extended_description, only: [:show], controller: 'instances/extended_descriptions' + resource :translation_languages, only: [:show], controller: 'instances/translation_languages' resource :activity, only: [:show], controller: 'instances/activity' end diff --git a/config/settings.yml b/config/settings.yml index c8d37a678b..65eee75168 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -12,55 +12,17 @@ defaults: &defaults registrations_mode: 'open' profile_directory: true closed_registrations_message: '' - open_deletion: true timeline_preview: false - min_invite_role: 'admin' show_staff_badge: true - default_sensitive: false - unfollow_modal: false - boost_modal: false - favourite_modal: false - delete_modal: true - auto_play_gif: false - display_media: 'default' - expand_spoilers: false preview_sensitive_media: false - reduce_motion: false - disable_swiping: false - show_application: false - system_font_ui: false - system_emoji_font: false noindex: false - hide_followers_count: false flavour: 'glitch' skin: 'default' - aggregate_reblogs: true - advanced_layout: false - use_blurhash: true - use_pending_items: false trends: true trends_as_landing_page: true trendable_by_default: false trending_status_cw: true - crop_images: true - notification_emails: - follow: true - reblog: false - favourite: false - mention: true - follow_request: true - digest: true - report: true - pending_account: true - trending_tag: true - trending_link: false - trending_status: false - appeal: true - always_send_emails: false - interactions: - must_be_follower: false - must_be_following: false - must_be_following_dm: false + hide_followers_count: false reserved_usernames: - admin - support diff --git a/config/webpack/generateLocalePacks.js b/config/webpack/generateLocalePacks.js index b1b8181591..fedf0c7a15 100644 --- a/config/webpack/generateLocalePacks.js +++ b/config/webpack/generateLocalePacks.js @@ -13,7 +13,7 @@ const { existsSync, readdirSync, writeFileSync } = require('fs'); const { join, resolve } = require('path'); const rimraf = require('rimraf'); const mkdirp = require('mkdirp'); -const { flavours } = require('./configuration.js'); +const { flavours } = require('./configuration'); module.exports = Object.keys(flavours).reduce(function (map, entry) { const flavour = flavours[entry]; @@ -43,13 +43,13 @@ module.exports = Object.keys(flavours).reduce(function (map, entry) { // first try react-intl `node_modules/react-intl/locale-data/${baseLocale}.js`, // then check locales/locale-data - `app/javascript/locales/locale-data/${baseLocale}.js`, + `app/javascript/mastodon/locales/locale-data/${baseLocale}.js`, // fall back to English (this is what react-intl does anyway) 'node_modules/react-intl/locale-data/en.js', ].filter( - filename => existsSync(filename) + filename => existsSync(filename), ).map( - filename => filename.replace(/(?:node_modules|app\/javascript)\//, '') + filename => filename.replace(/(?:node_modules|app\/javascript)\//, ''), )[0]; const localeContent = `// // locales/${entry}/${locale}.js diff --git a/config/webpack/rules/babel.js b/config/webpack/rules/babel.js index 4d25748ee3..8b6205a5ca 100644 --- a/config/webpack/rules/babel.js +++ b/config/webpack/rules/babel.js @@ -2,7 +2,7 @@ const { join, resolve } = require('path'); const { env, settings } = require('../configuration'); module.exports = { - test: /\.(js|jsx|mjs)$/, + test: /\.(js|jsx|mjs|ts|tsx)$/, include: [ settings.source_path, ...settings.resolved_paths, diff --git a/config/webpacker.yml b/config/webpacker.yml index e4bcfe8d4f..f5c93a6840 100644 --- a/config/webpacker.yml +++ b/config/webpacker.yml @@ -37,6 +37,8 @@ default: &default - .mjs - .js - .jsx + - .ts + - .tsx - .sass - .scss - .css @@ -76,7 +78,7 @@ development: test: <<: *default - # CircleCI precompiles packs prior to running the tests. + # CI precompiles packs prior to running the tests. # Also avoids race conditions in parallel_tests. compile: false diff --git a/db/migrate/20170716191202_add_hide_notifications_to_mute.rb b/db/migrate/20170716191202_add_hide_notifications_to_mute.rb index de7d2a4a21..a498396b75 100644 --- a/db/migrate/20170716191202_add_hide_notifications_to_mute.rb +++ b/db/migrate/20170716191202_add_hide_notifications_to_mute.rb @@ -1,5 +1,15 @@ +require Rails.root.join('lib', 'mastodon', 'migration_helpers') + class AddHideNotificationsToMute < ActiveRecord::Migration[5.1] - def change - add_column :mutes, :hide_notifications, :boolean, default: false, null: false + include Mastodon::MigrationHelpers + + disable_ddl_transaction! + + def up + add_column_with_default :mutes, :hide_notifications, :boolean, default: true, allow_null: false + end + + def down + remove_column :mutes, :hide_notifications end end diff --git a/db/migrate/20170914032032_default_existing_mutes_to_hiding_notifications.rb b/db/migrate/20170914032032_default_existing_mutes_to_hiding_notifications.rb index 8e6cac4559..d9866dfdee 100644 --- a/db/migrate/20170914032032_default_existing_mutes_to_hiding_notifications.rb +++ b/db/migrate/20170914032032_default_existing_mutes_to_hiding_notifications.rb @@ -1,8 +1,13 @@ +# frozen_string_literal: true + +# This migration is glitch-soc-only because mutes were originally developed in +# glitch-soc and the default value changed when submitting the code upstream. + +# This migration originally changed existing values to `true`, but this has +# been dropped as to not cause issues when migrating from upstream. + class DefaultExistingMutesToHidingNotifications < ActiveRecord::Migration[5.1] def up change_column_default :mutes, :hide_notifications, from: false, to: true - - # Unfortunately if this is applied sometime after the one to add the table we lose some data, so this is irreversible. - Mute.update_all(hide_notifications: true) end end diff --git a/db/migrate/20170918125918_ids_to_bigints.rb b/db/migrate/20170918125918_ids_to_bigints.rb index bf875e4e59..e3fc34a517 100644 --- a/db/migrate/20170918125918_ids_to_bigints.rb +++ b/db/migrate/20170918125918_ids_to_bigints.rb @@ -1,7 +1,9 @@ -require Rails.root.join('lib', 'mastodon', 'migration_helpers') +require_relative '../../lib/mastodon/migration_helpers' +require_relative '../../lib/mastodon/migration_warning' class IdsToBigints < ActiveRecord::Migration[5.1] include Mastodon::MigrationHelpers + include Mastodon::MigrationWarning disable_ddl_transaction! @@ -69,24 +71,12 @@ class IdsToBigints < ActiveRecord::Migration[5.1] ] included_columns << [:deprecated_preview_cards, :id] if table_exists?(:deprecated_preview_cards) - # Print out a warning that this will probably take a while. - if $stdout.isatty - say '' - say 'WARNING: This migration may take a *long* time for large instances' - say 'It will *not* lock tables for any significant time, but it may run' - say 'for a very long time. We will pause for 10 seconds to allow you to' - say 'interrupt this migration if you are not ready.' - say '' - say 'This migration has some sections that can be safely interrupted' - say 'and restarted later, and will tell you when those are occurring.' - say '' - say 'For more information, see https://github.com/mastodon/mastodon/pull/5088' + migration_duration_warning(<<~EXPLANATION) + This migration has some sections that can be safely interrupted + and restarted later, and will tell you when those are occurring. - 10.downto(1) do |i| - say "Continuing in #{i} second#{i == 1 ? '' : 's'}...", true - sleep 1 - end - end + For more information, see https://github.com/mastodon/mastodon/pull/5088 + EXPLANATION tables = included_columns.map(&:first).uniq table_sizes = {} diff --git a/db/migrate/20170920032311_fix_reblogs_in_feeds.rb b/db/migrate/20170920032311_fix_reblogs_in_feeds.rb index 4ab68e8f32..7e2db0ff3e 100644 --- a/db/migrate/20170920032311_fix_reblogs_in_feeds.rb +++ b/db/migrate/20170920032311_fix_reblogs_in_feeds.rb @@ -1,6 +1,6 @@ class FixReblogsInFeeds < ActiveRecord::Migration[5.1] def up - redis = Redis.current + redis = RedisConfiguration.pool.checkout fm = FeedManager.instance # Old scheme: diff --git a/db/migrate/20170927215609_add_description_to_media_attachments.rb b/db/migrate/20170927215609_add_description_to_media_attachments.rb index db8d765664..9c3312373b 100644 --- a/db/migrate/20170927215609_add_description_to_media_attachments.rb +++ b/db/migrate/20170927215609_add_description_to_media_attachments.rb @@ -1,4 +1,4 @@ -class AddDescriptionToMediaAttachments < ActiveRecord::Migration[5.1] +class AddDescriptionToMediaAttachments < ActiveRecord::Migration[5.2] def change add_column :media_attachments, :description, :text end diff --git a/db/migrate/20170928082043_create_email_domain_blocks.rb b/db/migrate/20170928082043_create_email_domain_blocks.rb index 1f0fb75875..2baed54ef6 100644 --- a/db/migrate/20170928082043_create_email_domain_blocks.rb +++ b/db/migrate/20170928082043_create_email_domain_blocks.rb @@ -1,4 +1,4 @@ -class CreateEmailDomainBlocks < ActiveRecord::Migration[5.1] +class CreateEmailDomainBlocks < ActiveRecord::Migration[5.2] def change create_table :email_domain_blocks do |t| t.string :domain, null: false diff --git a/db/migrate/20171005102658_create_account_moderation_notes.rb b/db/migrate/20171005102658_create_account_moderation_notes.rb index 010b94586e..afa2f5f253 100644 --- a/db/migrate/20171005102658_create_account_moderation_notes.rb +++ b/db/migrate/20171005102658_create_account_moderation_notes.rb @@ -1,4 +1,4 @@ -class CreateAccountModerationNotes < ActiveRecord::Migration[5.1] +class CreateAccountModerationNotes < ActiveRecord::Migration[5.2] def change create_table :account_moderation_notes do |t| t.text :content, null: false diff --git a/db/migrate/20171005171936_add_disabled_to_custom_emojis.rb b/db/migrate/20171005171936_add_disabled_to_custom_emojis.rb index 067a7bee0c..7cf007ae9e 100644 --- a/db/migrate/20171005171936_add_disabled_to_custom_emojis.rb +++ b/db/migrate/20171005171936_add_disabled_to_custom_emojis.rb @@ -1,6 +1,6 @@ require Rails.root.join('lib', 'mastodon', 'migration_helpers') -class AddDisabledToCustomEmojis < ActiveRecord::Migration[5.1] +class AddDisabledToCustomEmojis < ActiveRecord::Migration[5.2] include Mastodon::MigrationHelpers disable_ddl_transaction! diff --git a/db/migrate/20171006142024_add_uri_to_custom_emojis.rb b/db/migrate/20171006142024_add_uri_to_custom_emojis.rb index 04dfcf397c..ff62aed20d 100644 --- a/db/migrate/20171006142024_add_uri_to_custom_emojis.rb +++ b/db/migrate/20171006142024_add_uri_to_custom_emojis.rb @@ -1,4 +1,4 @@ -class AddUriToCustomEmojis < ActiveRecord::Migration[5.1] +class AddUriToCustomEmojis < ActiveRecord::Migration[5.2] def change add_column :custom_emojis, :uri, :string add_column :custom_emojis, :image_remote_url, :string diff --git a/db/migrate/20171009222537_create_keyword_mutes.rb b/db/migrate/20171009222537_create_keyword_mutes.rb index 66411ba1d9..77c88b0a53 100644 --- a/db/migrate/20171009222537_create_keyword_mutes.rb +++ b/db/migrate/20171009222537_create_keyword_mutes.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + class CreateKeywordMutes < ActiveRecord::Migration[5.1] def change create_table :keyword_mutes do |t| diff --git a/db/migrate/20171010023049_add_foreign_key_to_account_moderation_notes.rb b/db/migrate/20171010023049_add_foreign_key_to_account_moderation_notes.rb index cdcd159349..a2c0fbcc41 100644 --- a/db/migrate/20171010023049_add_foreign_key_to_account_moderation_notes.rb +++ b/db/migrate/20171010023049_add_foreign_key_to_account_moderation_notes.rb @@ -1,4 +1,4 @@ -class AddForeignKeyToAccountModerationNotes < ActiveRecord::Migration[5.1] +class AddForeignKeyToAccountModerationNotes < ActiveRecord::Migration[5.2] def change safety_assured { add_foreign_key :account_moderation_notes, :accounts } end diff --git a/db/migrate/20171010025614_change_accounts_nonnullable_in_account_moderation_notes.rb b/db/migrate/20171010025614_change_accounts_nonnullable_in_account_moderation_notes.rb index 1d7a0086c2..62725c88df 100644 --- a/db/migrate/20171010025614_change_accounts_nonnullable_in_account_moderation_notes.rb +++ b/db/migrate/20171010025614_change_accounts_nonnullable_in_account_moderation_notes.rb @@ -1,4 +1,4 @@ -class ChangeAccountsNonnullableInAccountModerationNotes < ActiveRecord::Migration[5.1] +class ChangeAccountsNonnullableInAccountModerationNotes < ActiveRecord::Migration[5.2] def change safety_assured do change_column_null :account_moderation_notes, :account_id, false diff --git a/db/migrate/20171020084748_add_visible_in_picker_to_custom_emoji.rb b/db/migrate/20171020084748_add_visible_in_picker_to_custom_emoji.rb index 946e26ff2c..5f7c60a3eb 100644 --- a/db/migrate/20171020084748_add_visible_in_picker_to_custom_emoji.rb +++ b/db/migrate/20171020084748_add_visible_in_picker_to_custom_emoji.rb @@ -1,4 +1,4 @@ -class AddVisibleInPickerToCustomEmoji < ActiveRecord::Migration[5.1] +class AddVisibleInPickerToCustomEmoji < ActiveRecord::Migration[5.2] def change safety_assured do add_column :custom_emojis, :visible_in_picker, :boolean, default: true, null: false diff --git a/db/migrate/20171021191900_move_keyword_mutes_into_glitch_namespace.rb b/db/migrate/20171021191900_move_keyword_mutes_into_glitch_namespace.rb index 269bb49d64..b6ea537c2c 100644 --- a/db/migrate/20171021191900_move_keyword_mutes_into_glitch_namespace.rb +++ b/db/migrate/20171021191900_move_keyword_mutes_into_glitch_namespace.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + class MoveKeywordMutesIntoGlitchNamespace < ActiveRecord::Migration[5.1] def change safety_assured do diff --git a/db/migrate/20171028221157_add_reblogs_to_follows.rb b/db/migrate/20171028221157_add_reblogs_to_follows.rb index 3b2e46ed8a..773904249d 100644 --- a/db/migrate/20171028221157_add_reblogs_to_follows.rb +++ b/db/migrate/20171028221157_add_reblogs_to_follows.rb @@ -1,6 +1,6 @@ require Rails.root.join('lib', 'mastodon', 'migration_helpers') -class AddReblogsToFollows < ActiveRecord::Migration[5.1] +class AddReblogsToFollows < ActiveRecord::Migration[5.2] include Mastodon::MigrationHelpers disable_ddl_transaction! diff --git a/db/migrate/20171107143332_add_memorial_to_accounts.rb b/db/migrate/20171107143332_add_memorial_to_accounts.rb index f3e012ce8b..4fb1216a14 100644 --- a/db/migrate/20171107143332_add_memorial_to_accounts.rb +++ b/db/migrate/20171107143332_add_memorial_to_accounts.rb @@ -1,6 +1,6 @@ require Rails.root.join('lib', 'mastodon', 'migration_helpers') -class AddMemorialToAccounts < ActiveRecord::Migration[5.1] +class AddMemorialToAccounts < ActiveRecord::Migration[5.2] include Mastodon::MigrationHelpers disable_ddl_transaction! diff --git a/db/migrate/20171107143624_add_disabled_to_users.rb b/db/migrate/20171107143624_add_disabled_to_users.rb index a71cac1c61..fb736786d5 100644 --- a/db/migrate/20171107143624_add_disabled_to_users.rb +++ b/db/migrate/20171107143624_add_disabled_to_users.rb @@ -1,6 +1,6 @@ require Rails.root.join('lib', 'mastodon', 'migration_helpers') -class AddDisabledToUsers < ActiveRecord::Migration[5.1] +class AddDisabledToUsers < ActiveRecord::Migration[5.2] include Mastodon::MigrationHelpers disable_ddl_transaction! diff --git a/db/migrate/20171109012327_add_moderator_to_accounts.rb b/db/migrate/20171109012327_add_moderator_to_accounts.rb index ddd87583a7..70b0b598c2 100644 --- a/db/migrate/20171109012327_add_moderator_to_accounts.rb +++ b/db/migrate/20171109012327_add_moderator_to_accounts.rb @@ -1,6 +1,6 @@ require Rails.root.join('lib', 'mastodon', 'migration_helpers') -class AddModeratorToAccounts < ActiveRecord::Migration[5.1] +class AddModeratorToAccounts < ActiveRecord::Migration[5.2] include Mastodon::MigrationHelpers disable_ddl_transaction! diff --git a/db/migrate/20171114080328_add_index_domain_to_email_domain_blocks.rb b/db/migrate/20171114080328_add_index_domain_to_email_domain_blocks.rb index 84a341510a..34dc6ff004 100644 --- a/db/migrate/20171114080328_add_index_domain_to_email_domain_blocks.rb +++ b/db/migrate/20171114080328_add_index_domain_to_email_domain_blocks.rb @@ -1,4 +1,4 @@ -class AddIndexDomainToEmailDomainBlocks < ActiveRecord::Migration[5.1] +class AddIndexDomainToEmailDomainBlocks < ActiveRecord::Migration[5.2] disable_ddl_transaction! def change diff --git a/db/migrate/20171114231651_create_lists.rb b/db/migrate/20171114231651_create_lists.rb index 21285e9016..b7761abe49 100644 --- a/db/migrate/20171114231651_create_lists.rb +++ b/db/migrate/20171114231651_create_lists.rb @@ -1,4 +1,4 @@ -class CreateLists < ActiveRecord::Migration[5.1] +class CreateLists < ActiveRecord::Migration[5.2] def change create_table :lists do |t| t.references :account, foreign_key: { on_delete: :cascade } diff --git a/db/migrate/20171116161857_create_list_accounts.rb b/db/migrate/20171116161857_create_list_accounts.rb index b76c906511..7dbb78d8d5 100644 --- a/db/migrate/20171116161857_create_list_accounts.rb +++ b/db/migrate/20171116161857_create_list_accounts.rb @@ -1,4 +1,4 @@ -class CreateListAccounts < ActiveRecord::Migration[5.1] +class CreateListAccounts < ActiveRecord::Migration[5.2] def change create_table :list_accounts do |t| t.belongs_to :list, foreign_key: { on_delete: :cascade }, null: false diff --git a/db/migrate/20171118012443_add_moved_to_account_id_to_accounts.rb b/db/migrate/20171118012443_add_moved_to_account_id_to_accounts.rb index 586ef6f02d..893972848a 100644 --- a/db/migrate/20171118012443_add_moved_to_account_id_to_accounts.rb +++ b/db/migrate/20171118012443_add_moved_to_account_id_to_accounts.rb @@ -1,4 +1,4 @@ -class AddMovedToAccountIdToAccounts < ActiveRecord::Migration[5.1] +class AddMovedToAccountIdToAccounts < ActiveRecord::Migration[5.2] def change add_column :accounts, :moved_to_account_id, :bigint, null: true, default: nil safety_assured { add_foreign_key :accounts, :accounts, column: :moved_to_account_id, on_delete: :nullify } diff --git a/db/migrate/20171119172437_create_admin_action_logs.rb b/db/migrate/20171119172437_create_admin_action_logs.rb index b690735d26..80d5a3dba7 100644 --- a/db/migrate/20171119172437_create_admin_action_logs.rb +++ b/db/migrate/20171119172437_create_admin_action_logs.rb @@ -1,4 +1,4 @@ -class CreateAdminActionLogs < ActiveRecord::Migration[5.1] +class CreateAdminActionLogs < ActiveRecord::Migration[5.2] def change create_table :admin_action_logs do |t| t.belongs_to :account, foreign_key: { on_delete: :cascade } diff --git a/db/migrate/20171122120436_add_index_account_and_reblog_of_id_to_statuses.rb b/db/migrate/20171122120436_add_index_account_and_reblog_of_id_to_statuses.rb index 131e54b72e..a02ffe09d6 100644 --- a/db/migrate/20171122120436_add_index_account_and_reblog_of_id_to_statuses.rb +++ b/db/migrate/20171122120436_add_index_account_and_reblog_of_id_to_statuses.rb @@ -1,4 +1,4 @@ -class AddIndexAccountAndReblogOfIdToStatuses < ActiveRecord::Migration[5.1] +class AddIndexAccountAndReblogOfIdToStatuses < ActiveRecord::Migration[5.2] disable_ddl_transaction! def up diff --git a/db/migrate/20171125024930_create_invites.rb b/db/migrate/20171125024930_create_invites.rb index bcf03bd723..2e814babfc 100644 --- a/db/migrate/20171125024930_create_invites.rb +++ b/db/migrate/20171125024930_create_invites.rb @@ -1,4 +1,4 @@ -class CreateInvites < ActiveRecord::Migration[5.1] +class CreateInvites < ActiveRecord::Migration[5.2] def change create_table :invites do |t| t.belongs_to :user, foreign_key: { on_delete: :cascade } diff --git a/db/migrate/20171125031751_add_invite_id_to_users.rb b/db/migrate/20171125031751_add_invite_id_to_users.rb index 9cfb0c542c..2ff6c34308 100644 --- a/db/migrate/20171125031751_add_invite_id_to_users.rb +++ b/db/migrate/20171125031751_add_invite_id_to_users.rb @@ -1,4 +1,4 @@ -class AddInviteIdToUsers < ActiveRecord::Migration[5.1] +class AddInviteIdToUsers < ActiveRecord::Migration[5.2] def change safety_assured { add_reference :users, :invite, null: true, default: nil, foreign_key: { on_delete: :nullify }, index: false } end diff --git a/db/migrate/20171125185353_add_index_reblog_of_id_and_account_to_statuses.rb b/db/migrate/20171125185353_add_index_reblog_of_id_and_account_to_statuses.rb index 37662eaa5d..8952387b59 100644 --- a/db/migrate/20171125185353_add_index_reblog_of_id_and_account_to_statuses.rb +++ b/db/migrate/20171125185353_add_index_reblog_of_id_and_account_to_statuses.rb @@ -1,4 +1,4 @@ -class AddIndexReblogOfIdAndAccountToStatuses < ActiveRecord::Migration[5.1] +class AddIndexReblogOfIdAndAccountToStatuses < ActiveRecord::Migration[5.2] disable_ddl_transaction! def change diff --git a/db/migrate/20171125190735_remove_old_reblog_index_on_statuses.rb b/db/migrate/20171125190735_remove_old_reblog_index_on_statuses.rb index 68146c5ce0..dc7e09a25c 100644 --- a/db/migrate/20171125190735_remove_old_reblog_index_on_statuses.rb +++ b/db/migrate/20171125190735_remove_old_reblog_index_on_statuses.rb @@ -1,4 +1,4 @@ -class RemoveOldReblogIndexOnStatuses < ActiveRecord::Migration[5.1] +class RemoveOldReblogIndexOnStatuses < ActiveRecord::Migration[5.2] disable_ddl_transaction! def up diff --git a/db/migrate/20171129172043_add_index_on_stream_entries.rb b/db/migrate/20171129172043_add_index_on_stream_entries.rb index 181c4f2882..4580fb42f6 100644 --- a/db/migrate/20171129172043_add_index_on_stream_entries.rb +++ b/db/migrate/20171129172043_add_index_on_stream_entries.rb @@ -1,4 +1,4 @@ -class AddIndexOnStreamEntries < ActiveRecord::Migration[5.1] +class AddIndexOnStreamEntries < ActiveRecord::Migration[5.2] disable_ddl_transaction! def change diff --git a/db/migrate/20171130000000_add_embed_url_to_preview_cards.rb b/db/migrate/20171130000000_add_embed_url_to_preview_cards.rb index 8fcabef9fd..811f6ceae6 100644 --- a/db/migrate/20171130000000_add_embed_url_to_preview_cards.rb +++ b/db/migrate/20171130000000_add_embed_url_to_preview_cards.rb @@ -1,6 +1,6 @@ require Rails.root.join('lib', 'mastodon', 'migration_helpers') -class AddEmbedURLToPreviewCards < ActiveRecord::Migration[5.1] +class AddEmbedURLToPreviewCards < ActiveRecord::Migration[5.2] include Mastodon::MigrationHelpers disable_ddl_transaction! diff --git a/db/migrate/20171201000000_change_account_id_nonnullable_in_lists.rb b/db/migrate/20171201000000_change_account_id_nonnullable_in_lists.rb index ac86c9e777..e8e8786112 100644 --- a/db/migrate/20171201000000_change_account_id_nonnullable_in_lists.rb +++ b/db/migrate/20171201000000_change_account_id_nonnullable_in_lists.rb @@ -1,4 +1,4 @@ -class ChangeAccountIdNonnullableInLists < ActiveRecord::Migration[5.1] +class ChangeAccountIdNonnullableInLists < ActiveRecord::Migration[5.2] def change safety_assured do change_column_null :lists, :account_id, false diff --git a/db/migrate/20171210213213_add_local_only_flag_to_statuses.rb b/db/migrate/20171210213213_add_local_only_flag_to_statuses.rb index af1e29d6a1..010503b10f 100644 --- a/db/migrate/20171210213213_add_local_only_flag_to_statuses.rb +++ b/db/migrate/20171210213213_add_local_only_flag_to_statuses.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + class AddLocalOnlyFlagToStatuses < ActiveRecord::Migration[5.1] def change add_column :statuses, :local_only, :boolean diff --git a/db/migrate/20171212195226_remove_duplicate_indexes_in_lists.rb b/db/migrate/20171212195226_remove_duplicate_indexes_in_lists.rb index ba67eee86e..f3007c77c7 100644 --- a/db/migrate/20171212195226_remove_duplicate_indexes_in_lists.rb +++ b/db/migrate/20171212195226_remove_duplicate_indexes_in_lists.rb @@ -1,4 +1,4 @@ -class RemoveDuplicateIndexesInLists < ActiveRecord::Migration[5.1] +class RemoveDuplicateIndexesInLists < ActiveRecord::Migration[5.2] def change remove_index :list_accounts, name: 'index_list_accounts_on_account_id' remove_index :list_accounts, name: 'index_list_accounts_on_list_id' diff --git a/db/migrate/20171226094803_more_faster_index_on_notifications.rb b/db/migrate/20171226094803_more_faster_index_on_notifications.rb index 0273a4e7c1..e0e73b27ab 100644 --- a/db/migrate/20171226094803_more_faster_index_on_notifications.rb +++ b/db/migrate/20171226094803_more_faster_index_on_notifications.rb @@ -1,4 +1,4 @@ -class MoreFasterIndexOnNotifications < ActiveRecord::Migration[5.1] +class MoreFasterIndexOnNotifications < ActiveRecord::Migration[5.2] disable_ddl_transaction! def change diff --git a/db/migrate/20180106000232_add_index_on_statuses_for_api_v1_accounts_account_id_statuses.rb b/db/migrate/20180106000232_add_index_on_statuses_for_api_v1_accounts_account_id_statuses.rb index 401fc5e62e..eb277d3bc7 100644 --- a/db/migrate/20180106000232_add_index_on_statuses_for_api_v1_accounts_account_id_statuses.rb +++ b/db/migrate/20180106000232_add_index_on_statuses_for_api_v1_accounts_account_id_statuses.rb @@ -1,4 +1,4 @@ -class AddIndexOnStatusesForApiV1AccountsAccountIdStatuses < ActiveRecord::Migration[5.1] +class AddIndexOnStatusesForApiV1AccountsAccountIdStatuses < ActiveRecord::Migration[5.2] disable_ddl_transaction! def change diff --git a/db/migrate/20180109143959_add_remember_token_to_users.rb b/db/migrate/20180109143959_add_remember_token_to_users.rb index 662905bcbb..f244fc6f62 100644 --- a/db/migrate/20180109143959_add_remember_token_to_users.rb +++ b/db/migrate/20180109143959_add_remember_token_to_users.rb @@ -1,4 +1,4 @@ -class AddRememberTokenToUsers < ActiveRecord::Migration[5.1] +class AddRememberTokenToUsers < ActiveRecord::Migration[5.2] def change add_column :users, :remember_token, :string, null: true end diff --git a/db/migrate/20180204034416_create_identities.rb b/db/migrate/20180204034416_create_identities.rb index f6f5da910b..68288aadfa 100644 --- a/db/migrate/20180204034416_create_identities.rb +++ b/db/migrate/20180204034416_create_identities.rb @@ -1,7 +1,7 @@ -class CreateIdentities < ActiveRecord::Migration[5.0] +class CreateIdentities < ActiveRecord::Migration[5.2] def change - create_table :identities do |t| - t.references :user, foreign_key: { on_delete: :cascade } + create_table :identities, id: :integer do |t| + t.references :user, type: :integer, foreign_key: { on_delete: :cascade } t.string :provider, null: false, default: '' t.string :uid, null: false, default: '' diff --git a/db/migrate/20180206000000_change_user_id_nonnullable.rb b/db/migrate/20180206000000_change_user_id_nonnullable.rb index 2d2cf20d38..1196383871 100644 --- a/db/migrate/20180206000000_change_user_id_nonnullable.rb +++ b/db/migrate/20180206000000_change_user_id_nonnullable.rb @@ -1,4 +1,4 @@ -class ChangeUserIdNonnullable < ActiveRecord::Migration[5.1] +class ChangeUserIdNonnullable < ActiveRecord::Migration[5.2] def change safety_assured do change_column_null :invites, :user_id, false diff --git a/db/migrate/20180211015820_create_backups.rb b/db/migrate/20180211015820_create_backups.rb index 9725a3e9f3..4aaeed83ba 100644 --- a/db/migrate/20180211015820_create_backups.rb +++ b/db/migrate/20180211015820_create_backups.rb @@ -1,4 +1,4 @@ -class CreateBackups < ActiveRecord::Migration[5.1] +class CreateBackups < ActiveRecord::Migration[5.2] def change create_table :backups do |t| t.references :user, foreign_key: { on_delete: :nullify } diff --git a/db/migrate/20180304013859_add_featured_collection_url_to_accounts.rb b/db/migrate/20180304013859_add_featured_collection_url_to_accounts.rb index 1964b51216..46842a9e36 100644 --- a/db/migrate/20180304013859_add_featured_collection_url_to_accounts.rb +++ b/db/migrate/20180304013859_add_featured_collection_url_to_accounts.rb @@ -1,4 +1,4 @@ -class AddFeaturedCollectionURLToAccounts < ActiveRecord::Migration[5.1] +class AddFeaturedCollectionURLToAccounts < ActiveRecord::Migration[5.2] def change add_column :accounts, :featured_collection_url, :string end diff --git a/db/migrate/20180310000000_change_columns_in_notifications_nonnullable.rb b/db/migrate/20180310000000_change_columns_in_notifications_nonnullable.rb index dba789207d..8577d02356 100644 --- a/db/migrate/20180310000000_change_columns_in_notifications_nonnullable.rb +++ b/db/migrate/20180310000000_change_columns_in_notifications_nonnullable.rb @@ -1,4 +1,4 @@ -class ChangeColumnsInNotificationsNonnullable < ActiveRecord::Migration[5.1] +class ChangeColumnsInNotificationsNonnullable < ActiveRecord::Migration[5.2] def change safety_assured do change_column_null :notifications, :activity_id, false diff --git a/db/migrate/20180402031200_add_assigned_account_id_to_reports.rb b/db/migrate/20180402031200_add_assigned_account_id_to_reports.rb index e2d1371d2d..27cbd6c2a1 100644 --- a/db/migrate/20180402031200_add_assigned_account_id_to_reports.rb +++ b/db/migrate/20180402031200_add_assigned_account_id_to_reports.rb @@ -1,4 +1,4 @@ -class AddAssignedAccountIdToReports < ActiveRecord::Migration[5.1] +class AddAssignedAccountIdToReports < ActiveRecord::Migration[5.2] def change safety_assured { add_reference :reports, :assigned_account, null: true, default: nil, foreign_key: { on_delete: :nullify, to_table: :accounts }, index: false } end diff --git a/db/migrate/20180402040909_create_report_notes.rb b/db/migrate/20180402040909_create_report_notes.rb index 429cb45349..5d5a336275 100644 --- a/db/migrate/20180402040909_create_report_notes.rb +++ b/db/migrate/20180402040909_create_report_notes.rb @@ -1,4 +1,4 @@ -class CreateReportNotes < ActiveRecord::Migration[5.1] +class CreateReportNotes < ActiveRecord::Migration[5.2] def change create_table :report_notes do |t| t.text :content, null: false diff --git a/db/migrate/20180410204633_add_fields_to_accounts.rb b/db/migrate/20180410204633_add_fields_to_accounts.rb index 5b8c17480f..a1b9504b6a 100644 --- a/db/migrate/20180410204633_add_fields_to_accounts.rb +++ b/db/migrate/20180410204633_add_fields_to_accounts.rb @@ -1,4 +1,4 @@ -class AddFieldsToAccounts < ActiveRecord::Migration[5.1] +class AddFieldsToAccounts < ActiveRecord::Migration[5.2] def change add_column :accounts, :fields, :jsonb end diff --git a/db/migrate/20180410220657_create_bookmarks.rb b/db/migrate/20180410220657_create_bookmarks.rb index bc79022e48..aba21f5eaa 100644 --- a/db/migrate/20180410220657_create_bookmarks.rb +++ b/db/migrate/20180410220657_create_bookmarks.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + # This migration is a duplicate of 20180831171112 and may get ignored, see # config/initializers/0_duplicate_migrations.rb diff --git a/db/migrate/20180514130000_improve_index_on_statuses_for_api_v1_accounts_account_id_statuses.rb b/db/migrate/20180514130000_improve_index_on_statuses_for_api_v1_accounts_account_id_statuses.rb index a3f883fcb6..48d156bef4 100644 --- a/db/migrate/20180514130000_improve_index_on_statuses_for_api_v1_accounts_account_id_statuses.rb +++ b/db/migrate/20180514130000_improve_index_on_statuses_for_api_v1_accounts_account_id_statuses.rb @@ -1,10 +1,10 @@ # frozen_string_literal: true -class ImproveIndexOnStatusesForApiV1AccountsAccountIdStatuses < ActiveRecord::Migration[5.1] +class ImproveIndexOnStatusesForApiV1AccountsAccountIdStatuses < ActiveRecord::Migration[5.2] disable_ddl_transaction! def change - # These changes ware reverted by migration 20180514140000. + # These changes were reverted by migration 20180514140000. # add_index :statuses, [:account_id, :id, :visibility], where: 'visibility IN (0, 1, 2)', algorithm: :concurrently # add_index :statuses, [:account_id, :id], where: 'visibility = 3', algorithm: :concurrently # remove_index :statuses, column: [:account_id, :id, :visibility, :updated_at], order: { id: :desc }, algorithm: :concurrently, name: :index_statuses_20180106 diff --git a/db/migrate/20180514140000_revert_index_change_on_statuses_for_api_v1_accounts_account_id_statuses.rb b/db/migrate/20180514140000_revert_index_change_on_statuses_for_api_v1_accounts_account_id_statuses.rb index c00302804a..242ae74107 100644 --- a/db/migrate/20180514140000_revert_index_change_on_statuses_for_api_v1_accounts_account_id_statuses.rb +++ b/db/migrate/20180514140000_revert_index_change_on_statuses_for_api_v1_accounts_account_id_statuses.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -class RevertIndexChangeOnStatusesForApiV1AccountsAccountIdStatuses < ActiveRecord::Migration[5.1] +class RevertIndexChangeOnStatusesForApiV1AccountsAccountIdStatuses < ActiveRecord::Migration[5.2] disable_ddl_transaction! def change diff --git a/db/migrate/20180528141303_fix_accounts_unique_index.rb b/db/migrate/20180528141303_fix_accounts_unique_index.rb index 0b39f71079..1e67b4bb4d 100644 --- a/db/migrate/20180528141303_fix_accounts_unique_index.rb +++ b/db/migrate/20180528141303_fix_accounts_unique_index.rb @@ -1,4 +1,8 @@ +require_relative '../../lib/mastodon/migration_warning' + class FixAccountsUniqueIndex < ActiveRecord::Migration[5.2] + include Mastodon::MigrationWarning + class Account < ApplicationRecord # Dummy class, to make migration possible across version changes has_one :user, inverse_of: :account @@ -35,22 +39,11 @@ class FixAccountsUniqueIndex < ActiveRecord::Migration[5.2] disable_ddl_transaction! def up - if $stdout.isatty - say '' - say 'WARNING: This migration may take a *long* time for large instances' - say 'It will *not* lock tables for any significant time, but it may run' - say 'for a very long time. We will pause for 10 seconds to allow you to' - say 'interrupt this migration if you are not ready.' - say '' - say 'This migration will irreversibly delete user accounts with duplicate' - say 'usernames. You may use the `rake mastodon:maintenance:find_duplicate_usernames`' - say 'task to manually deal with such accounts before running this migration.' - - 10.downto(1) do |i| - say "Continuing in #{i} second#{i == 1 ? '' : 's'}...", true - sleep 1 - end - end + migration_duration_warning(<<~EXPLANATION) + This migration will irreversibly delete user accounts with duplicate + usernames. You may use the `rake mastodon:maintenance:find_duplicate_usernames` + task to manually deal with such accounts before running this migration. + EXPLANATION duplicates = Account.connection.select_all('SELECT string_agg(id::text, \',\') AS ids FROM accounts GROUP BY lower(username), lower(domain) HAVING count(*) > 1').to_ary diff --git a/db/migrate/20180604000556_add_apply_to_mentions_flag_to_keyword_mutes.rb b/db/migrate/20180604000556_add_apply_to_mentions_flag_to_keyword_mutes.rb index cd97d0f207..8078a07bfc 100644 --- a/db/migrate/20180604000556_add_apply_to_mentions_flag_to_keyword_mutes.rb +++ b/db/migrate/20180604000556_add_apply_to_mentions_flag_to_keyword_mutes.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'mastodon/migration_helpers' class AddApplyToMentionsFlagToKeywordMutes < ActiveRecord::Migration[5.2] diff --git a/db/migrate/20180707193142_migrate_filters.rb b/db/migrate/20180707193142_migrate_filters.rb index 067c533579..8f6b3e1bb0 100644 --- a/db/migrate/20180707193142_migrate_filters.rb +++ b/db/migrate/20180707193142_migrate_filters.rb @@ -1,7 +1,9 @@ +# frozen_string_literal: true + class MigrateFilters < ActiveRecord::Migration[5.2] class GlitchKeywordMute < ApplicationRecord # Dummy class, as we removed Glitch::KeywordMute - belongs_to :account, required: true + belongs_to :account, optional: false validates_presence_of :keyword end @@ -15,7 +17,7 @@ class MigrateFilters < ActiveRecord::Migration[5.2] private def clean_up_contexts - self.context = Array(context).map(&:strip).map(&:presence).compact + self.context = Array(context).map(&:strip).filter_map(&:presence) end end @@ -27,7 +29,8 @@ class MigrateFilters < ActiveRecord::Migration[5.2] phrase: filter.keyword, context: filter.apply_to_mentions ? %w(home public notifications) : %w(home public), whole_word: filter.whole_word, - irreversible: true) + irreversible: true + ) end end @@ -48,7 +51,8 @@ class MigrateFilters < ActiveRecord::Migration[5.2] GlitchKeywordMute.where(account: filter.account).create!( keyword: filter.phrase, whole_word: filter.whole_word, - apply_to_mentions: filter.context.include?('notifications')) + apply_to_mentions: filter.context.include?('notifications') + ) end end end diff --git a/db/migrate/20180831171112_create_bookmarks.rb b/db/migrate/20180831171112_create_bookmarks.rb index 5d587b7e9c..9f6bfae57a 100644 --- a/db/migrate/20180831171112_create_bookmarks.rb +++ b/db/migrate/20180831171112_create_bookmarks.rb @@ -1,7 +1,7 @@ # This migration is a duplicate of 20180410220657 and may get ignored, see # config/initializers/0_duplicate_migrations.rb -class CreateBookmarks < ActiveRecord::Migration[5.1] +class CreateBookmarks < ActiveRecord::Migration[5.2] def change create_table :bookmarks do |t| t.references :account, null: false diff --git a/db/migrate/20181024224956_migrate_account_conversations.rb b/db/migrate/20181024224956_migrate_account_conversations.rb index aca6638e18..e4dcdb18b3 100644 --- a/db/migrate/20181024224956_migrate_account_conversations.rb +++ b/db/migrate/20181024224956_migrate_account_conversations.rb @@ -1,4 +1,8 @@ +require_relative '../../lib/mastodon/migration_warning' + class MigrateAccountConversations < ActiveRecord::Migration[5.2] + include Mastodon::MigrationWarning + disable_ddl_transaction! class Mention < ApplicationRecord @@ -62,19 +66,7 @@ class MigrateAccountConversations < ActiveRecord::Migration[5.2] end def up - if $stdout.isatty - say '' - say 'WARNING: This migration may take a *long* time for large instances' - say 'It will *not* lock tables for any significant time, but it may run' - say 'for a very long time. We will pause for 10 seconds to allow you to' - say 'interrupt this migration if you are not ready.' - say '' - - 10.downto(1) do |i| - say "Continuing in #{i} second#{i == 1 ? '' : 's'}...", true - sleep 1 - end - end + migration_duration_warning migrated = 0 last_time = Time.zone.now diff --git a/db/migrate/20190512200918_add_content_type_to_statuses.rb b/db/migrate/20190512200918_add_content_type_to_statuses.rb index efbe2caa71..31c1a4f174 100644 --- a/db/migrate/20190512200918_add_content_type_to_statuses.rb +++ b/db/migrate/20190512200918_add_content_type_to_statuses.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + class AddContentTypeToStatuses < ActiveRecord::Migration[5.2] def change add_column :statuses, :content_type, :string diff --git a/db/migrate/20191031163205_change_list_account_follow_nullable.rb b/db/migrate/20191031163205_change_list_account_follow_nullable.rb index 65ff933658..43ebfe8922 100644 --- a/db/migrate/20191031163205_change_list_account_follow_nullable.rb +++ b/db/migrate/20191031163205_change_list_account_follow_nullable.rb @@ -1,4 +1,4 @@ -class ChangeListAccountFollowNullable < ActiveRecord::Migration[5.1] +class ChangeListAccountFollowNullable < ActiveRecord::Migration[5.2] def change safety_assured do change_column_null :list_accounts, :follow_id, true diff --git a/db/migrate/20200407202420_migrate_unavailable_inboxes.rb b/db/migrate/20200407202420_migrate_unavailable_inboxes.rb index 92a3acb5d1..8f9c687942 100644 --- a/db/migrate/20200407202420_migrate_unavailable_inboxes.rb +++ b/db/migrate/20200407202420_migrate_unavailable_inboxes.rb @@ -2,7 +2,8 @@ class MigrateUnavailableInboxes < ActiveRecord::Migration[5.2] disable_ddl_transaction! def up - urls = Redis.current.smembers('unavailable_inboxes') + redis = RedisConfiguration.pool.checkout + urls = redis.smembers('unavailable_inboxes') hosts = urls.map do |url| Addressable::URI.parse(url).normalized_host @@ -14,7 +15,7 @@ class MigrateUnavailableInboxes < ActiveRecord::Migration[5.2] UnavailableDomain.create(domain: host) end - Redis.current.del(*(['unavailable_inboxes'] + Redis.current.keys('exhausted_deliveries:*'))) + redis.del(*(['unavailable_inboxes'] + redis.keys('exhausted_deliveries:*'))) end def down; end diff --git a/db/migrate/20200622213645_media_attachment_ids_to_timestamp_ids.rb b/db/migrate/20200622213645_media_attachment_ids_to_timestamp_ids.rb index ccd65bf53f..7c141e7afd 100644 --- a/db/migrate/20200622213645_media_attachment_ids_to_timestamp_ids.rb +++ b/db/migrate/20200622213645_media_attachment_ids_to_timestamp_ids.rb @@ -1,4 +1,4 @@ -class MediaAttachmentIdsToTimestampIds < ActiveRecord::Migration[5.1] +class MediaAttachmentIdsToTimestampIds < ActiveRecord::Migration[5.2] def up # Set up the media_attachments.id column to use our timestamp-based IDs. safety_assured do diff --git a/db/migrate/20200917192924_add_notify_to_follows.rb b/db/migrate/20200917192924_add_notify_to_follows.rb index d27471c447..342eaa38d0 100644 --- a/db/migrate/20200917192924_add_notify_to_follows.rb +++ b/db/migrate/20200917192924_add_notify_to_follows.rb @@ -1,6 +1,6 @@ require Rails.root.join('lib', 'mastodon', 'migration_helpers') -class AddNotifyToFollows < ActiveRecord::Migration[5.1] +class AddNotifyToFollows < ActiveRecord::Migration[5.2] include Mastodon::MigrationHelpers disable_ddl_transaction! diff --git a/db/migrate/20210306164523_account_ids_to_timestamp_ids.rb b/db/migrate/20210306164523_account_ids_to_timestamp_ids.rb index 40c582842b..b287c60dd5 100644 --- a/db/migrate/20210306164523_account_ids_to_timestamp_ids.rb +++ b/db/migrate/20210306164523_account_ids_to_timestamp_ids.rb @@ -1,4 +1,4 @@ -class AccountIdsToTimestampIds < ActiveRecord::Migration[5.1] +class AccountIdsToTimestampIds < ActiveRecord::Migration[5.2] def up # Set up the accounts.id column to use our timestamp-based IDs. safety_assured do diff --git a/db/migrate/20220209175231_add_content_type_to_status_edits.rb b/db/migrate/20220209175231_add_content_type_to_status_edits.rb index 0e4e52fcbb..bb414535dc 100644 --- a/db/migrate/20220209175231_add_content_type_to_status_edits.rb +++ b/db/migrate/20220209175231_add_content_type_to_status_edits.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + class AddContentTypeToStatusEdits < ActiveRecord::Migration[6.1] def change add_column :status_edits, :content_type, :string diff --git a/db/migrate/20230215074327_add_settings_to_users.rb b/db/migrate/20230215074327_add_settings_to_users.rb new file mode 100644 index 0000000000..ff5308f423 --- /dev/null +++ b/db/migrate/20230215074327_add_settings_to_users.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class AddSettingsToUsers < ActiveRecord::Migration[6.1] + def change + add_column :users, :settings, :text + end +end diff --git a/db/migrate/20230215074423_move_user_settings.rb b/db/migrate/20230215074423_move_user_settings.rb new file mode 100644 index 0000000000..8dbca9ecd2 --- /dev/null +++ b/db/migrate/20230215074423_move_user_settings.rb @@ -0,0 +1,84 @@ +# frozen_string_literal: true + +class MoveUserSettings < ActiveRecord::Migration[6.1] + class User < ApplicationRecord; end + + MAPPING = { + default_privacy: 'default_privacy', + default_sensitive: 'web.default_sensitive', + default_language: 'default_language', + noindex: 'noindex', + theme: 'theme', + trends: 'web.trends', + unfollow_modal: 'web.unfollow_modal', + boost_modal: 'web.reblog_modal', + delete_modal: 'web.delete_modal', + auto_play_gif: 'web.auto_play', + display_media: 'web.display_media', + expand_spoilers: 'web.expand_content_warnings', + reduce_motion: 'web.reduce_motion', + disable_swiping: 'web.disable_swiping', + show_application: 'show_application', + system_font_ui: 'web.use_system_font', + aggregate_reblogs: 'aggregate_reblogs', + advanced_layout: 'web.advanced_layout', + use_blurhash: 'web.use_blurhash', + use_pending_items: 'web.use_pending_items', + crop_images: 'web.crop_images', + notification_emails: { + follow: 'notification_emails.follow', + reblog: 'notification_emails.reblog', + favourite: 'notification_emails.favourite', + mention: 'notification_emails.mention', + follow_request: 'notification_emails.follow_request', + report: 'notification_emails.report', + pending_account: 'notification_emails.pending_account', + trending_tag: 'notification_emails.trends', + appeal: 'notification_emails.appeal', + }.freeze, + always_send_emails: 'always_send_emails', + interactions: { + must_be_follower: 'interactions.must_be_follower', + must_be_following: 'interactions.must_be_following', + must_be_following_dm: 'interactions.must_be_following_dm', + }.freeze, + }.freeze + + class LegacySetting < ApplicationRecord + self.table_name = 'settings' + + def var + self[:var]&.to_sym + end + + def value + YAML.safe_load(self[:value], permitted_classes: [ActiveSupport::HashWithIndifferentAccess, Symbol]) if self[:value].present? + end + end + + def up + User.find_each do |user| + previous_settings = LegacySetting.where(thing_type: 'User', thing_id: user.id).index_by(&:var) + + user_settings = {} + + MAPPING.each do |legacy_key, new_key| + value = previous_settings[legacy_key]&.value + + next if value.blank? + + if value.is_a?(Hash) + value.each do |nested_key, nested_value| + user_settings[MAPPING[legacy_key][nested_key.to_sym]] = nested_value + end + else + user_settings[new_key] = value + end + end + + user.update_column('settings', Oj.dump(user_settings)) # rubocop:disable Rails/SkipsModelValidations + end + end + + def down; end +end diff --git a/db/migrate/20230215074424_move_glitch_user_settings.rb b/db/migrate/20230215074424_move_glitch_user_settings.rb new file mode 100644 index 0000000000..76fafdd761 --- /dev/null +++ b/db/migrate/20230215074424_move_glitch_user_settings.rb @@ -0,0 +1,57 @@ +# frozen_string_literal: true + +class MoveGlitchUserSettings < ActiveRecord::Migration[6.1] + class User < ApplicationRecord; end + + MAPPING = { + favourite_modal: 'web.favourite_modal', + system_emoji_font: 'web.use_system_emoji_font', + hide_followers_count: 'hide_followers_count', + default_content_type: 'default_content_type', + flavour: 'flavour', + skin: 'skin', + notification_emails: { + trending_link: 'notification_emails.link_trends', + trending_status: 'notification_emails.status_trends', + }.freeze, + }.freeze + + class LegacySetting < ApplicationRecord + self.table_name = 'settings' + + def var + self[:var]&.to_sym + end + + def value + YAML.safe_load(self[:value], permitted_classes: [ActiveSupport::HashWithIndifferentAccess, Symbol]) if self[:value].present? + end + end + + def up + User.find_each do |user| + previous_settings = LegacySetting.where(thing_type: 'User', thing_id: user.id).index_by(&:var) + + user_settings = Oj.load(user.settings || '{}') + user_settings.delete('theme') + + MAPPING.each do |legacy_key, new_key| + value = previous_settings[legacy_key]&.value + + next if value.blank? + + if value.is_a?(Hash) + value.each do |nested_key, nested_value| + user_settings[MAPPING[legacy_key][nested_key.to_sym]] = nested_value + end + else + user_settings[new_key] = value + end + end + + user.update_column('settings', Oj.dump(user_settings)) # rubocop:disable Rails/SkipsModelValidations + end + end + + def down; end +end diff --git a/db/post_migrate/20180813160548_post_migrate_filters.rb b/db/post_migrate/20180813160548_post_migrate_filters.rb index 588548c1df..82acf13d51 100644 --- a/db/post_migrate/20180813160548_post_migrate_filters.rb +++ b/db/post_migrate/20180813160548_post_migrate_filters.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + class PostMigrateFilters < ActiveRecord::Migration[5.2] disable_ddl_transaction! @@ -5,7 +7,5 @@ class PostMigrateFilters < ActiveRecord::Migration[5.2] drop_table :glitch_keyword_mutes if table_exists? :glitch_keyword_mutes end - def down - end + def down; end end - diff --git a/db/post_migrate/20190511152737_remove_suspended_silenced_account_fields.rb b/db/post_migrate/20190511152737_remove_suspended_silenced_account_fields.rb index a46349cb73..615f35cd0d 100644 --- a/db/post_migrate/20190511152737_remove_suspended_silenced_account_fields.rb +++ b/db/post_migrate/20190511152737_remove_suspended_silenced_account_fields.rb @@ -34,6 +34,7 @@ class RemoveSuspendedSilencedAccountFields < ActiveRecord::Migration[5.2] remove_column :accounts, :suspended, :boolean, null: false, default: false remove_column :accounts, :silenced, :boolean, null: false, default: false end + Account.reset_column_information end def down diff --git a/db/post_migrate/20210308133107_remove_subscription_expires_at_from_accounts.rb b/db/post_migrate/20210308133107_remove_subscription_expires_at_from_accounts.rb index 53e24ef261..511104cef3 100644 --- a/db/post_migrate/20210308133107_remove_subscription_expires_at_from_accounts.rb +++ b/db/post_migrate/20210308133107_remove_subscription_expires_at_from_accounts.rb @@ -1,7 +1,7 @@ -class RemoveSubscriptionExpiresAtFromAccounts < ActiveRecord::Migration[5.0] +class RemoveSubscriptionExpiresAtFromAccounts < ActiveRecord::Migration[5.2] def change safety_assured do - remove_column :accounts, :subscription_expires_at, :datetime, null: true, default: nil + remove_column :accounts, :subscription_expires_at, :datetime, null: true, default: nil, precision: nil end end end diff --git a/db/schema.rb b/db/schema.rb index e37fdfe2d3..d92ecdb054 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2022_12_24_220348) do +ActiveRecord::Schema.define(version: 2023_02_15_074424) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -1065,6 +1065,7 @@ ActiveRecord::Schema.define(version: 2022_12_24_220348) do t.inet "sign_up_ip" t.boolean "skip_sign_in_token" t.bigint "role_id" + t.text "settings" t.index ["account_id"], name: "index_users_on_account_id" t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true t.index ["created_by_application_id"], name: "index_users_on_created_by_application_id", where: "(created_by_application_id IS NOT NULL)" diff --git a/db/seeds.rb b/db/seeds.rb index 1ca300de73..c01e83f1d3 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -1,5 +1,7 @@ # frozen_string_literal: true -Dir[Rails.root.join('db', 'seeds', '*.rb')].sort.each do |seed| - load seed +Chewy.strategy(:mastodon) do + Dir[Rails.root.join('db', 'seeds', '*.rb')].sort.each do |seed| + load seed + end end diff --git a/dist/nginx.conf b/dist/nginx.conf index 5bc960e256..bed4bd3db9 100644 --- a/dist/nginx.conf +++ b/dist/nginx.conf @@ -39,7 +39,7 @@ server { keepalive_timeout 70; sendfile on; - client_max_body_size 80m; + client_max_body_size 99m; root /home/mastodon/live/public; diff --git a/lib/chewy/strategy/bypass_with_warning.rb b/lib/chewy/strategy/bypass_with_warning.rb new file mode 100644 index 0000000000..eb6fbaab16 --- /dev/null +++ b/lib/chewy/strategy/bypass_with_warning.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +module Chewy + class Strategy + class BypassWithWarning < Base + def update(...) + Rails.logger.warn 'Chewy update without a root strategy' unless @warning_issued + @warning_issued = true + end + end + end +end diff --git a/lib/cli.rb b/lib/cli.rb index 157465c4b5..ac235cf039 100644 --- a/lib/cli.rb +++ b/lib/cli.rb @@ -131,7 +131,7 @@ module Mastodon json = Oj.dump(ActivityPub::LinkedDataSignature.new(payload).sign!(account)) unless options[:dry_run] - ActivityPub::DeliveryWorker.push_bulk(inboxes) do |inbox_url| + ActivityPub::DeliveryWorker.push_bulk(inboxes, limit: 1_000) do |inbox_url| [json, account.id, inbox_url] end diff --git a/lib/mastodon/accounts_cli.rb b/lib/mastodon/accounts_cli.rb index db379eb853..a6532541e0 100644 --- a/lib/mastodon/accounts_cli.rb +++ b/lib/mastodon/accounts_cli.rb @@ -372,16 +372,16 @@ module Mastodon option :concurrency, type: :numeric, default: 5, aliases: [:c] option :verbose, type: :boolean, aliases: [:v] option :dry_run, type: :boolean - desc 'refresh [USERNAME]', 'Fetch remote user data and files' + desc 'refresh [USERNAMES]', 'Fetch remote user data and files' long_desc <<-LONG_DESC Fetch remote user data and files for one or multiple accounts. With the --all option, all remote accounts will be processed. Through the --domain option, this can be narrowed down to a - specific domain only. Otherwise, a single remote account must - be specified with USERNAME. + specific domain only. Otherwise, remote accounts must be + specified with space-separated USERNAMES. LONG_DESC - def refresh(username = nil) + def refresh(*usernames) dry_run = options[:dry_run] ? ' (DRY RUN)' : '' if options[:domain] || options[:all] @@ -397,19 +397,25 @@ module Mastodon end say("Refreshed #{processed} accounts#{dry_run}", :green, true) - elsif username.present? - username, domain = username.split('@') - account = Account.find_remote(username, domain) + elsif !usernames.empty? + usernames.each do |user| + user, domain = user.split('@') + account = Account.find_remote(user, domain) - if account.nil? - say('No such account', :red) - exit(1) - end + if account.nil? + say('No such account', :red) + exit(1) + end - unless options[:dry_run] - account.reset_avatar! - account.reset_header! - account.save + next if options[:dry_run] + + begin + account.reset_avatar! + account.reset_header! + account.save + rescue Mastodon::UnexpectedResponseError + say("Account failed: #{user}@#{domain}", :red) + end end say("OK#{dry_run}", :green) @@ -627,7 +633,7 @@ module Mastodon exit(1) end - unless options[:force] || migration.target_acount_id == account.moved_to_account_id + unless options[:force] || migration.target_account_id == account.moved_to_account_id say('The specified account is not redirecting to its last migration target. Use --force if you want to replay the migration anyway', :red) exit(1) end diff --git a/lib/mastodon/cli_helper.rb b/lib/mastodon/cli_helper.rb index 8704edd75e..ab1351ae80 100644 --- a/lib/mastodon/cli_helper.rb +++ b/lib/mastodon/cli_helper.rb @@ -52,14 +52,16 @@ module Mastodon progress.log("Processing #{item.id}") if options[:verbose] - result = ActiveRecord::Base.connection_pool.with_connection do - yield(item) - ensure - RedisConfiguration.pool.checkin if Thread.current[:redis] - Thread.current[:redis] = nil - end + Chewy.strategy(:mastodon) do + result = ActiveRecord::Base.connection_pool.with_connection do + yield(item) + ensure + RedisConfiguration.pool.checkin if Thread.current[:redis] + Thread.current[:redis] = nil + end - aggregate.increment(result) if result.is_a?(Integer) + aggregate.increment(result) if result.is_a?(Integer) + end rescue => e progress.log pastel.red("Error processing #{item.id}: #{e}") ensure diff --git a/lib/mastodon/feeds_cli.rb b/lib/mastodon/feeds_cli.rb index 428d63a446..fcfb487404 100644 --- a/lib/mastodon/feeds_cli.rb +++ b/lib/mastodon/feeds_cli.rb @@ -53,11 +53,7 @@ module Mastodon desc 'clear', 'Remove all home and list feeds from Redis' def clear keys = redis.keys('feed:*') - - redis.pipelined do - keys.each { |key| redis.del(key) } - end - + redis.del(keys) say('OK', :green) end end diff --git a/lib/mastodon/media_cli.rb b/lib/mastodon/media_cli.rb index fc70c8785a..b2dfe58d53 100644 --- a/lib/mastodon/media_cli.rb +++ b/lib/mastodon/media_cli.rb @@ -35,7 +35,6 @@ module Mastodon follow status. By default, only accounts that are not followed by or following anyone locally are pruned. DESC - # rubocop:disable Metrics/PerceivedComplexity def remove if options[:prune_profiles] && options[:remove_headers] say('--prune-profiles and --remove-headers should not be specified simultaneously', :red, true) @@ -224,7 +223,6 @@ module Mastodon say("Removed #{removed} orphans (approx. #{number_to_human_size(reclaimed_bytes)})#{dry_run}", :green, true) end - # rubocop:enable Metrics/PerceivedComplexity option :account, type: :string option :domain, type: :string diff --git a/lib/mastodon/migration_warning.rb b/lib/mastodon/migration_warning.rb new file mode 100644 index 0000000000..227f6705d3 --- /dev/null +++ b/lib/mastodon/migration_warning.rb @@ -0,0 +1,55 @@ +# frozen_string_literal: true + +module Mastodon + module MigrationWarning + WARNING_SECONDS = 10 + + DEFAULT_WARNING = <<~WARNING_MESSAGE + WARNING: This migration may take a *long* time for large instances. + It will *not* lock tables for any significant time, but it may run + for a very long time. We will pause for #{WARNING_SECONDS} seconds to allow you to + interrupt this migration if you are not ready. + WARNING_MESSAGE + + def migration_duration_warning(explanation = nil) + return unless valid_environment? + + announce_warning(explanation) + + announce_countdown + end + + private + + def announce_countdown + WARNING_SECONDS.downto(1) do |i| + say "Continuing in #{i} second#{i == 1 ? '' : 's'}...", true + sleep 1 + end + end + + def valid_environment? + $stdout.isatty && Rails.env.production? + end + + def announce_warning(explanation) + announce_message prepare_message(explanation) + end + + def announce_message(text) + say '' + text.each_line do |line| + say(line) + end + say '' + end + + def prepare_message(explanation) + if explanation.blank? + DEFAULT_WARNING + else + DEFAULT_WARNING + "\n#{explanation}" + end + end + end +end diff --git a/lib/mastodon/redis_config.rb b/lib/mastodon/redis_config.rb index a4ce0ef3c0..9f82999f47 100644 --- a/lib/mastodon/redis_config.rb +++ b/lib/mastodon/redis_config.rb @@ -54,7 +54,7 @@ REDIS_CACHE_PARAMS = { url: ENV['CACHE_REDIS_URL'], expires_in: 10.minutes, namespace: cache_namespace, - pool_size: Sidekiq.server? ? Sidekiq.options[:concurrency] : Integer(ENV['MAX_THREADS'] || 5), + pool_size: Sidekiq.server? ? Sidekiq[:concurrency] : Integer(ENV['MAX_THREADS'] || 5), pool_timeout: 5, connect_timeout: 5, }.freeze diff --git a/lib/mastodon/sidekiq_middleware.rb b/lib/mastodon/sidekiq_middleware.rb index c75e8401f5..9832e1a27c 100644 --- a/lib/mastodon/sidekiq_middleware.rb +++ b/lib/mastodon/sidekiq_middleware.rb @@ -3,8 +3,8 @@ class Mastodon::SidekiqMiddleware BACKTRACE_LIMIT = 3 - def call(*) - yield + def call(*, &block) + Chewy.strategy(:mastodon, &block) rescue Mastodon::HostValidationError # Do not retry rescue => e diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index 52d04961f9..c1c6056d43 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -13,7 +13,7 @@ module Mastodon end def patch - 0 + 2 end def flags diff --git a/lib/public_file_server_middleware.rb b/lib/public_file_server_middleware.rb new file mode 100644 index 0000000000..3799230a22 --- /dev/null +++ b/lib/public_file_server_middleware.rb @@ -0,0 +1,43 @@ +# frozen_string_literal: true + +require 'action_dispatch/middleware/static' + +class PublicFileServerMiddleware + SERVICE_WORKER_TTL = 7.days.to_i + CACHE_TTL = 28.days.to_i + + def initialize(app) + @app = app + @file_handler = ActionDispatch::FileHandler.new(Rails.application.paths['public'].first) + end + + def call(env) + file = @file_handler.attempt(env) + + # If the request is not a static file, move on! + return @app.call(env) if file.nil? + + status, headers, response = file + + # Set cache headers on static files. Some paths require different cache headers + headers['Cache-Control'] = begin + request_path = env['REQUEST_PATH'] + + if request_path.start_with?('/sw.js') + "public, max-age=#{SERVICE_WORKER_TTL}, must-revalidate" + elsif request_path.start_with?(paperclip_root_url) + "public, max-age=#{CACHE_TTL}, immutable" + else + "public, max-age=#{CACHE_TTL}, must-revalidate" + end + end + + [status, headers, response] + end + + private + + def paperclip_root_url + ENV.fetch('PAPERCLIP_ROOT_URL', '/system') + end +end diff --git a/lib/sanitize_ext/sanitize_config.rb b/lib/sanitize_ext/sanitize_config.rb index ab4514ae15..fcbd40d356 100644 --- a/lib/sanitize_ext/sanitize_config.rb +++ b/lib/sanitize_ext/sanitize_config.rb @@ -49,9 +49,9 @@ class Sanitize node.content = "[🖼 #{node['alt']}]" else url = node['href'] - prefix = url.match(/\Ahttps?:\/\/(www\.)?/).to_s + prefix = url.match(%r{\Ahttps?://(www\.)?}).to_s text = url[prefix.length, 30] - text = text + "…" if url[prefix.length..-1].length > 30 + text += '…' if url.length - prefix.length > 30 node.content = "[🖼 #{text}]" end end @@ -74,12 +74,11 @@ class Sanitize elements: %w(p br span a abbr del pre blockquote code b strong u sub sup i em h1 h2 h3 h4 h5 ul ol li), attributes: { - 'a' => %w(href rel class title), - 'span' => %w(class), - 'abbr' => %w(title), + 'a' => %w(href rel class title), + 'span' => %w(class), 'blockquote' => %w(cite), - 'ol' => %w(start reversed), - 'li' => %w(value), + 'ol' => %w(start reversed), + 'li' => %w(value), }, add_attributes: { @@ -90,7 +89,7 @@ class Sanitize }, protocols: { - 'a' => { 'href' => LINK_PROTOCOLS }, + 'a' => { 'href' => LINK_PROTOCOLS }, 'blockquote' => { 'cite' => LINK_PROTOCOLS }, }, @@ -128,7 +127,7 @@ class Sanitize node = env[:node] - rel = (node['rel'] || '').split(' ') & ['tag'] + rel = (node['rel'] || '').split & ['tag'] rel += ['nofollow', 'noopener', 'noreferrer'] unless TagManager.instance.local_url?(node['href']) if rel.empty? diff --git a/lib/tasks/assets.rake b/lib/tasks/assets.rake index e1102af334..76e190f70a 100644 --- a/lib/tasks/assets.rake +++ b/lib/tasks/assets.rake @@ -3,14 +3,14 @@ namespace :assets do desc 'Generate static pages' task generate_static_pages: :environment do - class StaticApplicationController < ApplicationController - def current_user - nil - end - end - def render_static_page(action, dest:, **opts) - html = StaticApplicationController.render(action, opts) + renderer = Class.new(ApplicationController) do + def current_user + nil + end + end + + html = renderer.render(action, opts) File.write(dest, html) end diff --git a/lib/tasks/emojis.rake b/lib/tasks/emojis.rake index c743f8a554..fbb2e8d4f3 100644 --- a/lib/tasks/emojis.rake +++ b/lib/tasks/emojis.rake @@ -6,7 +6,7 @@ def gen_border(codepoint, color) doc = File.open(input) { |f| Nokogiri::XML(f) } svg = doc.at_css('svg') if svg.key?('viewBox') - view_box = svg['viewBox'].split(' ').map(&:to_i) + view_box = svg['viewBox'].split.map(&:to_i) view_box[0] -= 2 view_box[1] -= 2 view_box[2] += 4 @@ -36,7 +36,7 @@ end def codepoints_to_unicode(codepoints) if codepoints.include?(' ') - codepoints.split(' ').map(&:hex).pack('U*') + codepoints.split.map(&:hex).pack('U*') else [codepoints.hex].pack('U') end diff --git a/lib/tasks/glitchsoc.rake b/lib/tasks/glitchsoc.rake index 79e8646484..72558fa190 100644 --- a/lib/tasks/glitchsoc.rake +++ b/lib/tasks/glitchsoc.rake @@ -1,8 +1,12 @@ +# frozen_string_literal: true + namespace :glitchsoc do desc 'Backfill local-only flag on statuses table' task backfill_local_only: :environment do - Status.local.where(local_only: nil).find_each do |st| - ActiveRecord::Base.logger.silence { st.update_attribute(:local_only, st.marked_local_only?) } + Status.local.where(local_only: nil).find_each do |status| + ActiveRecord::Base.logger.silence do + status.update_attribute(:local_only, status.marked_local_only?) # rubocop:disable Rails/SkipsModelValidations + end end end end diff --git a/lib/tasks/repo.rake b/lib/tasks/repo.rake index 5d1b4f7544..888337b4f2 100644 --- a/lib/tasks/repo.rake +++ b/lib/tasks/repo.rake @@ -91,8 +91,8 @@ namespace :repo do missing_json_files = I18n.available_locales.reject { |locale| Rails.root.join('app', 'javascript', 'mastodon', 'locales', "#{locale}.json").exist? } locales_in_files = Dir[Rails.root.join('config', 'locales', '*.yml')].map do |path| - file_name = File.basename(path) - file_name.gsub(/\A(doorkeeper|devise|activerecord|simple_form)\./, '').gsub(/\.yml\z/, '').to_sym + file_name = File.basename(path, '.yml') + file_name.gsub(/\A(doorkeeper|devise|activerecord|simple_form)\./, '').to_sym end.uniq.compact missing_available_locales = locales_in_files - I18n.available_locales diff --git a/lib/tasks/tests.rake b/lib/tasks/tests.rake index 1dd25abb9b..35073b78bb 100644 --- a/lib/tasks/tests.rake +++ b/lib/tasks/tests.rake @@ -53,6 +53,11 @@ namespace :tests do puts 'Admin::ActionLog email domain block records not updated as expected' exit(1) end + + unless User.find(1).settings['notification_emails.favourite'] == true && User.find(1).settings['notification_emails.mention'] == false + puts 'User settings not kept as expected' + exit(1) + end end desc 'Populate the database with test data for 2.4.3' @@ -98,6 +103,11 @@ namespace :tests do (1, 'destroy', 'EmailDomainBlock', 1, now(), now()), (1, 'destroy', 'Status', 1, now(), now()), (1, 'destroy', 'CustomEmoji', 3, now(), now()); + + INSERT INTO "settings" + (id, thing_type, thing_id, var, value, created_at, updated_at) + VALUES + (3, 'User', 1, 'notification_emails', E'--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess\nfollow: false\nreblog: true\nfavourite: true\nmention: false\nfollow_request: true\ndigest: true\nreport: true\npending_account: false\ntrending_tag: true\nappeal: true\n', now(), now()); SQL end diff --git a/package.json b/package.json index 99bd993833..53dfa3e1de 100644 --- a/package.json +++ b/package.json @@ -10,13 +10,15 @@ "build:production": "cross-env RAILS_ENV=production NODE_ENV=production ./bin/webpack", "manage:translations": "node ./config/webpack/translationRunner.js", "start": "node ./streaming/index.js", - "test": "${npm_execpath} run test:lint:js && ${npm_execpath} run test:jest", + "test": "${npm_execpath} run test:lint:js && ${npm_execpath} run test:typecheck && ${npm_execpath} run test:jest", "test:lint": "${npm_execpath} run test:lint:js && ${npm_execpath} run test:lint:sass", - "test:lint:js": "eslint --ext=.js,.jsx . --cache --report-unused-disable-directives", + "test:lint:js": "eslint --ext=.js,.jsx,.ts,.tsx . --cache --report-unused-disable-directives", "test:lint:sass": "stylelint \"**/*.{css,scss}\" && prettier --check \"**/*.{css,scss}\"", + "test:typecheck": "tsc --noEmit", "test:jest": "cross-env NODE_ENV=test jest", "format": "prettier --write .", - "format-check": "prettier --check ." + "format-check": "prettier --check .", + "prepare": "husky install" }, "repository": { "type": "git", @@ -24,12 +26,13 @@ }, "private": true, "dependencies": { - "@babel/core": "^7.21.0", - "@babel/plugin-proposal-decorators": "^7.21.0", + "@babel/core": "^7.21.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", "@babel/plugin-transform-react-inline-elements": "^7.21.0", "@babel/plugin-transform-runtime": "^7.21.0", "@babel/preset-env": "^7.20.2", "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.21.0", "@babel/runtime": "^7.21.0", "@gamestdio/websocket": "^0.3.2", "@github/webauthn-json": "^2.1.1", @@ -38,8 +41,8 @@ "array-includes": "^3.1.6", "arrow-key-navigation": "^1.2.0", "atrament": "0.2.4", - "autoprefixer": "^9.8.8", - "axios": "^1.3.3", + "autoprefixer": "^10.4.14", + "axios": "^1.3.4", "babel-loader": "^8.3.0", "babel-plugin-lodash": "^3.3.4", "babel-plugin-preval": "^5.1.0", @@ -52,7 +55,7 @@ "compression-webpack-plugin": "^6.1.1", "cross-env": "^7.0.3", "css-loader": "^5.2.7", - "cssnano": "^4.1.11", + "cssnano": "^6.0.0", "detect-passive-events": "^2.0.3", "dotenv": "^16.0.3", "emoji-mart": "npm:emoji-mart-lazyload@latest", @@ -64,29 +67,28 @@ "file-loader": "^6.2.0", "font-awesome": "^4.7.0", "fuzzysort": "^2.0.4", - "glob": "^8.1.0", + "glob": "^9.3.4", "history": "^4.10.1", "http-link-header": "^1.1.0", - "immutable": "^4.2.4", + "immutable": "^4.3.0", "imports-loader": "^1.2.0", "intl": "^1.2.5", "intl-messageformat": "^2.2.0", "intl-relativeformat": "^6.4.3", - "is-nan": "^1.3.2", "js-yaml": "^4.1.0", - "jsdom": "^21.1.0", + "jsdom": "^21.1.1", "lodash": "^4.17.21", "mark-loader": "^0.1.6", - "marky": "^1.2.5", "mini-css-extract-plugin": "^1.6.2", - "mkdirp": "^2.1.3", + "mkdirp": "^2.1.6", "npmlog": "^7.0.1", "object-assign": "^4.1.1", "object.values": "^1.1.6", "path-complete-extname": "^1.0.0", "pg": "^8.5.0", + "pg-connection-string": "^2.5.0", "postcss": "^8.4.21", - "postcss-loader": "^3.0.0", + "postcss-loader": "^4.3.0", "promise.prototype.finally": "^3.1.4", "prop-types": "^15.8.1", "punycode": "^2.3.0", @@ -104,20 +106,20 @@ "react-redux-loading-bar": "^5.0.4", "react-router-dom": "^4.1.1", "react-router-scroll-4": "^1.0.0-beta.1", - "react-select": "^5.7.0", + "react-select": "^5.7.2", "react-sparklines": "^1.7.0", "react-swipeable-views": "^0.14.0", - "react-textarea-autosize": "^8.4.0", + "react-textarea-autosize": "^8.4.1", "react-toggle": "^4.1.3", - "redis": "^4.0.6 <4.1.0", + "redis": "^4.6.5", "redux": "^4.2.1", "redux-immutable": "^4.0.0", "redux-thunk": "^2.4.2", "regenerator-runtime": "^0.13.11", "requestidlecallback": "^0.3.0", "reselect": "^4.1.7", - "rimraf": "^4.1.2", - "sass": "^1.58.3", + "rimraf": "^4.4.1", + "sass": "^1.60.0", "sass-loader": "^10.2.0", "stacktrace-js": "^2.0.2", "stringz": "^2.1.0", @@ -143,33 +145,80 @@ "ws": "^8.12.1" }, "devDependencies": { - "@babel/eslint-parser": "^7.19.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^12.1.5", - "babel-jest": "^29.4.3", - "eslint": "^8.33.0", + "@types/babel__core": "^7.20.0", + "@types/emoji-mart": "^3.0.9", + "@types/escape-html": "^1.0.2", + "@types/express": "^4.17.17", + "@types/http-link-header": "^1.0.3", + "@types/intl": "^1.2.0", + "@types/jest": "^29.4.2", + "@types/js-yaml": "^4.0.5", + "@types/lodash": "^4.14.191", + "@types/npmlog": "^4.1.4", + "@types/object-assign": "^4.0.30", + "@types/pg": "^8.6.6", + "@types/prop-types": "^15.7.5", + "@types/punycode": "^2.1.0", + "@types/raf": "^3.4.0", + "@types/react": "^16.14.38", + "@types/react-dom": "^16.9.18", + "@types/react-helmet": "^6.1.6", + "@types/react-immutable-proptypes": "^2.1.0", + "@types/react-intl": "2.3.18", + "@types/react-motion": "^0.0.33", + "@types/react-overlays": "^3.1.0", + "@types/react-redux": "^7.1.25", + "@types/react-router-dom": "^5.3.3", + "@types/react-select": "^5.0.1", + "@types/react-sparklines": "^1.7.2", + "@types/react-swipeable-views": "^0.13.1", + "@types/react-test-renderer": "^18.0.0", + "@types/react-textarea-autosize": "^8.0.0", + "@types/react-toggle": "^4.0.3", + "@types/redux-immutable": "^4.0.3", + "@types/requestidlecallback": "^0.3.5", + "@types/throng": "^4.0.2", + "@types/uuid": "^8.3.4", + "@types/webpack": "^4.41.33", + "@types/yargs": "^17.0.22", + "@typescript-eslint/eslint-plugin": "^5.55.0", + "@typescript-eslint/parser": "^5.55.0", + "babel-jest": "^29.5.0", + "eslint": "^8.36.0", "eslint-plugin-import": "~2.27.5", "eslint-plugin-jsx-a11y": "~6.7.1", "eslint-plugin-promise": "~6.1.1", "eslint-plugin-react": "~7.32.2", - "jest": "^29.4.3", - "jest-environment-jsdom": "^29.4.3", + "husky": "^8.0.3", + "jest": "^29.5.0", + "jest-environment-jsdom": "^29.5.0", + "lint-staged": "^13.1.2", + "marky": "^1.2.5", "postcss-scss": "^4.0.6", - "prettier": "^2.8.4", + "prettier": "^2.8.7", "raf": "^3.4.1", "react-intl-translations-manager": "^5.0.3", "react-test-renderer": "^16.14.0", - "stylelint": "^15.2.0", + "stylelint": "^15.3.0", "stylelint-config-standard-scss": "^7.0.1", + "typescript": "^5.0.3", "webpack-dev-server": "^3.11.3", - "yargs": "^17.7.0" + "yargs": "^17.7.1" }, "resolutions": { + "@babel/types": "^7.21.3", "kind-of": "^6.0.3", - "@babel/types": "^7.21.3" + "webpack/terser-webpack-plugin": "^4.2.3" }, "optionalDependencies": { "bufferutil": "^4.0.7", - "utf-8-validate": "^6.0.2" + "utf-8-validate": "^6.0.3" + }, + "lint-staged": { + "*": "prettier --ignore-unknown --write", + "*.{js,jsx,ts,tsx}": "eslint --fix", + "*.{css,scss}": "stylelint --fix" } } diff --git a/postcss.config.js b/postcss.config.js index e7749a219d..5d58d74e34 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -1,6 +1,6 @@ module.exports = ({ env }) => ({ - plugins: { - autoprefixer: {}, - cssnano: env === 'production' ? {} : false, - }, + plugins: [ + 'autoprefixer', + env === 'production' ? 'cssnano' : '', + ], }); diff --git a/spec/chewy/accounts_index_spec.rb b/spec/chewy/accounts_index_spec.rb new file mode 100644 index 0000000000..f9c5922c76 --- /dev/null +++ b/spec/chewy/accounts_index_spec.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe AccountsIndex do + describe 'Searching the index' do + before do + mock_elasticsearch_response(described_class, raw_response) + end + + it 'returns results from a query' do + results = described_class.query(match: { name: 'account' }) + + expect(results).to eq [] + end + end + + def raw_response + { + took: 3, + hits: { + hits: [ + { + _id: '0', + _score: 1.6375021, + }, + ], + }, + } + end +end diff --git a/spec/chewy/statuses_index_spec.rb b/spec/chewy/statuses_index_spec.rb new file mode 100644 index 0000000000..768e9415fc --- /dev/null +++ b/spec/chewy/statuses_index_spec.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe StatusesIndex do + describe 'Searching the index' do + before do + mock_elasticsearch_response(described_class, raw_response) + end + + it 'returns results from a query' do + results = described_class.query(match: { name: 'status' }) + + expect(results).to eq [] + end + end + + def raw_response + { + took: 3, + hits: { + hits: [ + { + _id: '0', + _score: 1.6375021, + }, + ], + }, + } + end +end diff --git a/spec/chewy/tags_index_spec.rb b/spec/chewy/tags_index_spec.rb new file mode 100644 index 0000000000..054589bdfb --- /dev/null +++ b/spec/chewy/tags_index_spec.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe TagsIndex do + describe 'Searching the index' do + before do + mock_elasticsearch_response(described_class, raw_response) + end + + it 'returns results from a query' do + results = described_class.query(match: { name: 'tag' }) + + expect(results).to eq [] + end + end + + def raw_response + { + took: 3, + hits: { + hits: [ + { + _id: '0', + _score: 1.6375021, + }, + ], + }, + } + end +end diff --git a/spec/controllers/activitypub/claims_controller_spec.rb b/spec/controllers/activitypub/claims_controller_spec.rb new file mode 100644 index 0000000000..f00eeb732a --- /dev/null +++ b/spec/controllers/activitypub/claims_controller_spec.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe ActivityPub::ClaimsController do + let(:account) { Fabricate(:account) } + + describe 'POST #create' do + context 'without signature' do + before do + post :create, params: { account_username: account.username }, body: '{}' + end + + it 'returns http not authorized' do + expect(response).to have_http_status(401) + end + end + end +end diff --git a/spec/controllers/admin/account_actions_controller_spec.rb b/spec/controllers/admin/account_actions_controller_spec.rb new file mode 100644 index 0000000000..4eae51c7b5 --- /dev/null +++ b/spec/controllers/admin/account_actions_controller_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::AccountActionsController do + render_views + + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + + before do + sign_in user, scope: :user + end + + describe 'GET #new' do + let(:account) { Fabricate(:account) } + + it 'returns http success' do + get :new, params: { account_id: account.id } + + expect(response).to have_http_status(:success) + end + end +end diff --git a/spec/controllers/admin/announcements_controller_spec.rb b/spec/controllers/admin/announcements_controller_spec.rb new file mode 100644 index 0000000000..288ac1d713 --- /dev/null +++ b/spec/controllers/admin/announcements_controller_spec.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::AnnouncementsController do + render_views + + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + + before do + sign_in user, scope: :user + end + + describe 'GET #index' do + it 'returns http success' do + get :index + + expect(response).to have_http_status(:success) + end + end +end diff --git a/spec/controllers/admin/follow_recommendations_controller_spec.rb b/spec/controllers/admin/follow_recommendations_controller_spec.rb new file mode 100644 index 0000000000..f62aa6e4b2 --- /dev/null +++ b/spec/controllers/admin/follow_recommendations_controller_spec.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::FollowRecommendationsController do + render_views + + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + + before do + sign_in user, scope: :user + end + + describe 'GET #show' do + it 'returns http success' do + get :show + + expect(response).to have_http_status(:success) + end + end +end diff --git a/spec/controllers/admin/ip_blocks_controller_spec.rb b/spec/controllers/admin/ip_blocks_controller_spec.rb new file mode 100644 index 0000000000..873888afc7 --- /dev/null +++ b/spec/controllers/admin/ip_blocks_controller_spec.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::IpBlocksController do + render_views + + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + + before do + sign_in user, scope: :user + end + + describe 'GET #index' do + it 'returns http success' do + get :index + + expect(response).to have_http_status(:success) + end + end +end diff --git a/spec/controllers/admin/relationships_controller_spec.rb b/spec/controllers/admin/relationships_controller_spec.rb new file mode 100644 index 0000000000..1099a37a3b --- /dev/null +++ b/spec/controllers/admin/relationships_controller_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::RelationshipsController do + render_views + + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + + before do + sign_in user, scope: :user + end + + describe 'GET #index' do + let(:account) { Fabricate(:account) } + + it 'returns http success' do + get :index, params: { account_id: account.id } + + expect(response).to have_http_status(:success) + end + end +end diff --git a/spec/controllers/admin/relays_controller_spec.rb b/spec/controllers/admin/relays_controller_spec.rb new file mode 100644 index 0000000000..dfb9f3c048 --- /dev/null +++ b/spec/controllers/admin/relays_controller_spec.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::RelaysController do + render_views + + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + + before do + sign_in user, scope: :user + end + + describe 'GET #index' do + it 'returns http success' do + get :index + + expect(response).to have_http_status(:success) + end + end +end diff --git a/spec/controllers/admin/reports/actions_controller_spec.rb b/spec/controllers/admin/reports/actions_controller_spec.rb index 3e42e4cb19..4c2624a408 100644 --- a/spec/controllers/admin/reports/actions_controller_spec.rb +++ b/spec/controllers/admin/reports/actions_controller_spec.rb @@ -57,6 +57,9 @@ describe Admin::Reports::ActionsController do let!(:media) { Fabricate(:media_attachment, account: target_account, status: statuses[0]) } let(:report) { Fabricate(:report, target_account: target_account, status_ids: statuses.map(&:id)) } let(:text) { 'hello' } + let(:common_params) do + { report_id: report.id, text: text } + end shared_examples 'common behavior' do it 'closes the report' do @@ -72,6 +75,26 @@ describe Admin::Reports::ActionsController do subject expect(response).to redirect_to(admin_reports_path) end + + context 'when text is unset' do + let(:common_params) do + { report_id: report.id } + end + + it 'closes the report' do + expect { subject }.to change { report.reload.action_taken? }.from(false).to(true) + end + + it 'creates a strike with the expected text' do + expect { subject }.to change { report.target_account.strikes.count }.by(1) + expect(report.target_account.strikes.last.text).to eq '' + end + + it 'redirects' do + subject + expect(response).to redirect_to(admin_reports_path) + end + end end shared_examples 'all action types' do @@ -124,13 +147,13 @@ describe Admin::Reports::ActionsController do end context 'action as submit button' do - subject { post :create, params: { report_id: report.id, text: text, action => '' } } + subject { post :create, params: common_params.merge({ action => '' }) } it_behaves_like 'all action types' end context 'action as submit button' do - subject { post :create, params: { report_id: report.id, text: text, moderation_action: action } } + subject { post :create, params: common_params.merge({ moderation_action: action }) } it_behaves_like 'all action types' end diff --git a/spec/controllers/admin/rules_controller_spec.rb b/spec/controllers/admin/rules_controller_spec.rb new file mode 100644 index 0000000000..d7b633c049 --- /dev/null +++ b/spec/controllers/admin/rules_controller_spec.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::RulesController do + render_views + + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + + before do + sign_in user, scope: :user + end + + describe 'GET #index' do + it 'returns http success' do + get :index + + expect(response).to have_http_status(:success) + end + end +end diff --git a/spec/controllers/admin/settings/about_controller_spec.rb b/spec/controllers/admin/settings/about_controller_spec.rb new file mode 100644 index 0000000000..2ae26090b6 --- /dev/null +++ b/spec/controllers/admin/settings/about_controller_spec.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::Settings::AboutController do + render_views + + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + + before do + sign_in user, scope: :user + end + + describe 'GET #show' do + it 'returns http success' do + get :show + + expect(response).to have_http_status(:success) + end + end +end diff --git a/spec/controllers/admin/settings/appearance_controller_spec.rb b/spec/controllers/admin/settings/appearance_controller_spec.rb new file mode 100644 index 0000000000..65b29acc3e --- /dev/null +++ b/spec/controllers/admin/settings/appearance_controller_spec.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::Settings::AppearanceController do + render_views + + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + + before do + sign_in user, scope: :user + end + + describe 'GET #show' do + it 'returns http success' do + get :show + + expect(response).to have_http_status(:success) + end + end +end diff --git a/spec/controllers/admin/settings/content_retention_controller_spec.rb b/spec/controllers/admin/settings/content_retention_controller_spec.rb new file mode 100644 index 0000000000..53ce84d189 --- /dev/null +++ b/spec/controllers/admin/settings/content_retention_controller_spec.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::Settings::ContentRetentionController do + render_views + + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + + before do + sign_in user, scope: :user + end + + describe 'GET #show' do + it 'returns http success' do + get :show + + expect(response).to have_http_status(:success) + end + end +end diff --git a/spec/controllers/admin/settings/discovery_controller_spec.rb b/spec/controllers/admin/settings/discovery_controller_spec.rb new file mode 100644 index 0000000000..c7307ffc88 --- /dev/null +++ b/spec/controllers/admin/settings/discovery_controller_spec.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::Settings::DiscoveryController do + render_views + + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + + before do + sign_in user, scope: :user + end + + describe 'GET #show' do + it 'returns http success' do + get :show + + expect(response).to have_http_status(:success) + end + end +end diff --git a/spec/controllers/admin/settings/registrations_controller_spec.rb b/spec/controllers/admin/settings/registrations_controller_spec.rb new file mode 100644 index 0000000000..3fc1f9d132 --- /dev/null +++ b/spec/controllers/admin/settings/registrations_controller_spec.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::Settings::RegistrationsController do + render_views + + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + + before do + sign_in user, scope: :user + end + + describe 'GET #show' do + it 'returns http success' do + get :show + + expect(response).to have_http_status(:success) + end + end +end diff --git a/spec/controllers/admin/site_uploads_controller_spec.rb b/spec/controllers/admin/site_uploads_controller_spec.rb new file mode 100644 index 0000000000..4ea37f396a --- /dev/null +++ b/spec/controllers/admin/site_uploads_controller_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::SiteUploadsController do + render_views + + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + + before do + sign_in user, scope: :user + end + + describe 'DELETE #destroy' do + let(:site_upload) { Fabricate(:site_upload, var: 'thumbnail') } + + it 'returns http success' do + delete :destroy, params: { id: site_upload.id } + + expect(response).to redirect_to(admin_settings_path) + end + end +end diff --git a/spec/controllers/admin/trends/links/preview_card_providers_controller_spec.rb b/spec/controllers/admin/trends/links/preview_card_providers_controller_spec.rb new file mode 100644 index 0000000000..95ed38d6b1 --- /dev/null +++ b/spec/controllers/admin/trends/links/preview_card_providers_controller_spec.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::Trends::Links::PreviewCardProvidersController do + render_views + + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + + before do + sign_in user, scope: :user + end + + describe 'GET #index' do + it 'returns http success' do + get :index + + expect(response).to have_http_status(:success) + end + end +end diff --git a/spec/controllers/admin/trends/links_controller_spec.rb b/spec/controllers/admin/trends/links_controller_spec.rb new file mode 100644 index 0000000000..7c67f5e5aa --- /dev/null +++ b/spec/controllers/admin/trends/links_controller_spec.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::Trends::LinksController do + render_views + + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + + before do + sign_in user, scope: :user + end + + describe 'GET #index' do + it 'returns http success' do + get :index + + expect(response).to have_http_status(:success) + end + end +end diff --git a/spec/controllers/admin/trends/statuses_controller_spec.rb b/spec/controllers/admin/trends/statuses_controller_spec.rb new file mode 100644 index 0000000000..b752234d3c --- /dev/null +++ b/spec/controllers/admin/trends/statuses_controller_spec.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::Trends::StatusesController do + render_views + + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + + before do + sign_in user, scope: :user + end + + describe 'GET #index' do + it 'returns http success' do + get :index + + expect(response).to have_http_status(:success) + end + end +end diff --git a/spec/controllers/admin/trends/tags_controller_spec.rb b/spec/controllers/admin/trends/tags_controller_spec.rb new file mode 100644 index 0000000000..4f74a55455 --- /dev/null +++ b/spec/controllers/admin/trends/tags_controller_spec.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::Trends::TagsController do + render_views + + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + + before do + sign_in user, scope: :user + end + + describe 'GET #index' do + it 'returns http success' do + get :index + + expect(response).to have_http_status(:success) + end + end +end diff --git a/spec/controllers/admin/warning_presets_controller_spec.rb b/spec/controllers/admin/warning_presets_controller_spec.rb new file mode 100644 index 0000000000..6b48fc28bb --- /dev/null +++ b/spec/controllers/admin/warning_presets_controller_spec.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::WarningPresetsController do + render_views + + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + + before do + sign_in user, scope: :user + end + + describe 'GET #index' do + it 'returns http success' do + get :index + + expect(response).to have_http_status(:success) + end + end +end diff --git a/spec/controllers/admin/webhooks/secrets_controller_spec.rb b/spec/controllers/admin/webhooks/secrets_controller_spec.rb new file mode 100644 index 0000000000..291a10fba5 --- /dev/null +++ b/spec/controllers/admin/webhooks/secrets_controller_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::Webhooks::SecretsController do + render_views + + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + + before do + sign_in user, scope: :user + end + + describe 'POST #rotate' do + let(:webhook) { Fabricate(:webhook) } + + it 'returns http success' do + post :rotate, params: { webhook_id: webhook.id } + + expect(response).to redirect_to(admin_webhook_path(webhook)) + end + end +end diff --git a/spec/controllers/admin/webhooks_controller_spec.rb b/spec/controllers/admin/webhooks_controller_spec.rb new file mode 100644 index 0000000000..12727e142b --- /dev/null +++ b/spec/controllers/admin/webhooks_controller_spec.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::WebhooksController do + render_views + + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + + before do + sign_in user, scope: :user + end + + describe 'GET #index' do + it 'returns http success' do + get :index + + expect(response).to have_http_status(:success) + end + end +end diff --git a/spec/controllers/api/v1/accounts/credentials_controller_spec.rb b/spec/controllers/api/v1/accounts/credentials_controller_spec.rb index e42f1de320..a677aaad0e 100644 --- a/spec/controllers/api/v1/accounts/credentials_controller_spec.rb +++ b/spec/controllers/api/v1/accounts/credentials_controller_spec.rb @@ -46,6 +46,7 @@ describe Api::V1::Accounts::CredentialsController do end it 'updates account info' do + user.reload user.account.reload expect(user.account.display_name).to eq("Alice Isn't Dead") @@ -74,10 +75,10 @@ describe Api::V1::Accounts::CredentialsController do end end - describe 'with invalid data' do + describe 'with a too long profile bio' do before do note = 'This is too long. ' - note = note + 'a' * (Account::MAX_NOTE_LENGTH - note.length + 1) + note += 'a' * (Account::MAX_NOTE_LENGTH - note.length + 1) patch :update, params: { note: note } end diff --git a/spec/controllers/api/v1/accounts/familiar_followers_controller_spec.rb b/spec/controllers/api/v1/accounts/familiar_followers_controller_spec.rb new file mode 100644 index 0000000000..bb075261f3 --- /dev/null +++ b/spec/controllers/api/v1/accounts/familiar_followers_controller_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Api::V1::Accounts::FamiliarFollowersController do + render_views + + let(:user) { Fabricate(:user) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:follows') } + let(:account) { Fabricate(:account) } + + before do + allow(controller).to receive(:doorkeeper_token) { token } + end + + describe 'GET #index' do + it 'returns http success' do + get :index, params: { account_id: account.id, limit: 2 } + + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/api/v1/accounts/featured_tags_controller_spec.rb b/spec/controllers/api/v1/accounts/featured_tags_controller_spec.rb new file mode 100644 index 0000000000..53ac1e2a7a --- /dev/null +++ b/spec/controllers/api/v1/accounts/featured_tags_controller_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Api::V1::Accounts::FeaturedTagsController do + render_views + + let(:user) { Fabricate(:user) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:accounts') } + let(:account) { Fabricate(:account) } + + before do + allow(controller).to receive(:doorkeeper_token) { token } + end + + describe 'GET #index' do + it 'returns http success' do + get :index, params: { account_id: account.id, limit: 2 } + + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/api/v1/accounts/identity_proofs_controller_spec.rb b/spec/controllers/api/v1/accounts/identity_proofs_controller_spec.rb new file mode 100644 index 0000000000..6351de7616 --- /dev/null +++ b/spec/controllers/api/v1/accounts/identity_proofs_controller_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Api::V1::Accounts::IdentityProofsController do + render_views + + let(:user) { Fabricate(:user) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:accounts') } + let(:account) { Fabricate(:account) } + + before do + allow(controller).to receive(:doorkeeper_token) { token } + end + + describe 'GET #index' do + it 'returns http success' do + get :index, params: { account_id: account.id, limit: 2 } + + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/api/v1/accounts/lookup_controller_spec.rb b/spec/controllers/api/v1/accounts/lookup_controller_spec.rb new file mode 100644 index 0000000000..37407766f2 --- /dev/null +++ b/spec/controllers/api/v1/accounts/lookup_controller_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Api::V1::Accounts::LookupController do + render_views + + let(:user) { Fabricate(:user) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:accounts') } + let(:account) { Fabricate(:account) } + + before do + allow(controller).to receive(:doorkeeper_token) { token } + end + + describe 'GET #show' do + it 'returns http success' do + get :show, params: { account_id: account.id, acct: account.acct } + + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/api/v1/admin/canonical_email_blocks_controller_spec.rb b/spec/controllers/api/v1/admin/canonical_email_blocks_controller_spec.rb new file mode 100644 index 0000000000..3acae843ad --- /dev/null +++ b/spec/controllers/api/v1/admin/canonical_email_blocks_controller_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Api::V1::Admin::CanonicalEmailBlocksController do + render_views + + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'admin:read') } + let(:account) { Fabricate(:account) } + + before do + allow(controller).to receive(:doorkeeper_token) { token } + end + + describe 'GET #index' do + it 'returns http success' do + get :index, params: { account_id: account.id, limit: 2 } + + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/api/v1/admin/dimensions_controller_spec.rb b/spec/controllers/api/v1/admin/dimensions_controller_spec.rb new file mode 100644 index 0000000000..ea18efe383 --- /dev/null +++ b/spec/controllers/api/v1/admin/dimensions_controller_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Api::V1::Admin::DimensionsController do + render_views + + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'admin:read') } + let(:account) { Fabricate(:account) } + + before do + allow(controller).to receive(:doorkeeper_token) { token } + end + + describe 'POST #create' do + it 'returns http success' do + post :create, params: { account_id: account.id, limit: 2 } + + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/api/v1/admin/email_domain_blocks_controller_spec.rb b/spec/controllers/api/v1/admin/email_domain_blocks_controller_spec.rb new file mode 100644 index 0000000000..a92a298699 --- /dev/null +++ b/spec/controllers/api/v1/admin/email_domain_blocks_controller_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Api::V1::Admin::EmailDomainBlocksController do + render_views + + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'admin:read') } + let(:account) { Fabricate(:account) } + + before do + allow(controller).to receive(:doorkeeper_token) { token } + end + + describe 'GET #index' do + it 'returns http success' do + get :index, params: { account_id: account.id, limit: 2 } + + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/api/v1/admin/ip_blocks_controller_spec.rb b/spec/controllers/api/v1/admin/ip_blocks_controller_spec.rb new file mode 100644 index 0000000000..50e2ae9687 --- /dev/null +++ b/spec/controllers/api/v1/admin/ip_blocks_controller_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Api::V1::Admin::IpBlocksController do + render_views + + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'admin:read') } + let(:account) { Fabricate(:account) } + + before do + allow(controller).to receive(:doorkeeper_token) { token } + end + + describe 'GET #index' do + it 'returns http success' do + get :index, params: { account_id: account.id, limit: 2 } + + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/api/v1/admin/measures_controller_spec.rb b/spec/controllers/api/v1/admin/measures_controller_spec.rb new file mode 100644 index 0000000000..03727a6329 --- /dev/null +++ b/spec/controllers/api/v1/admin/measures_controller_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Api::V1::Admin::MeasuresController do + render_views + + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'admin:read') } + let(:account) { Fabricate(:account) } + + before do + allow(controller).to receive(:doorkeeper_token) { token } + end + + describe 'POST #create' do + it 'returns http success' do + post :create, params: { account_id: account.id, limit: 2 } + + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/api/v1/admin/retention_controller_spec.rb b/spec/controllers/api/v1/admin/retention_controller_spec.rb new file mode 100644 index 0000000000..2381dbcb48 --- /dev/null +++ b/spec/controllers/api/v1/admin/retention_controller_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Api::V1::Admin::RetentionController do + render_views + + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'admin:read') } + let(:account) { Fabricate(:account) } + + before do + allow(controller).to receive(:doorkeeper_token) { token } + end + + describe 'POST #create' do + it 'returns http success' do + post :create, params: { account_id: account.id, limit: 2 } + + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/api/v1/admin/trends/links_controller_spec.rb b/spec/controllers/api/v1/admin/trends/links_controller_spec.rb new file mode 100644 index 0000000000..a64292f067 --- /dev/null +++ b/spec/controllers/api/v1/admin/trends/links_controller_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Api::V1::Admin::Trends::LinksController do + render_views + + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'admin:read') } + let(:account) { Fabricate(:account) } + + before do + allow(controller).to receive(:doorkeeper_token) { token } + end + + describe 'GET #index' do + it 'returns http success' do + get :index, params: { account_id: account.id, limit: 2 } + + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/api/v1/admin/trends/statuses_controller_spec.rb b/spec/controllers/api/v1/admin/trends/statuses_controller_spec.rb new file mode 100644 index 0000000000..821cc499f4 --- /dev/null +++ b/spec/controllers/api/v1/admin/trends/statuses_controller_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Api::V1::Admin::Trends::StatusesController do + render_views + + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'admin:read') } + let(:account) { Fabricate(:account) } + + before do + allow(controller).to receive(:doorkeeper_token) { token } + end + + describe 'GET #index' do + it 'returns http success' do + get :index, params: { account_id: account.id, limit: 2 } + + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/api/v1/admin/trends/tags_controller_spec.rb b/spec/controllers/api/v1/admin/trends/tags_controller_spec.rb new file mode 100644 index 0000000000..480306ce7e --- /dev/null +++ b/spec/controllers/api/v1/admin/trends/tags_controller_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Api::V1::Admin::Trends::TagsController do + render_views + + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'admin:read') } + let(:account) { Fabricate(:account) } + + before do + allow(controller).to receive(:doorkeeper_token) { token } + end + + describe 'GET #index' do + it 'returns http success' do + get :index, params: { account_id: account.id, limit: 2 } + + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/api/v1/directories_controller_spec.rb b/spec/controllers/api/v1/directories_controller_spec.rb new file mode 100644 index 0000000000..b18aedc4d1 --- /dev/null +++ b/spec/controllers/api/v1/directories_controller_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Api::V1::DirectoriesController do + render_views + + let(:user) { Fabricate(:user) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:follows') } + let(:account) { Fabricate(:account) } + + before do + allow(controller).to receive(:doorkeeper_token) { token } + end + + describe 'GET #show' do + it 'returns http success' do + get :show + + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/api/v1/featured_tags/suggestions_controller_spec.rb b/spec/controllers/api/v1/featured_tags/suggestions_controller_spec.rb new file mode 100644 index 0000000000..54c63dcc6f --- /dev/null +++ b/spec/controllers/api/v1/featured_tags/suggestions_controller_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Api::V1::FeaturedTags::SuggestionsController do + render_views + + let(:user) { Fabricate(:user) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:accounts') } + let(:account) { Fabricate(:account) } + + before do + allow(controller).to receive(:doorkeeper_token) { token } + end + + describe 'GET #index' do + it 'returns http success' do + get :index, params: { account_id: account.id, limit: 2 } + + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/api/v1/featured_tags_controller_spec.rb b/spec/controllers/api/v1/featured_tags_controller_spec.rb new file mode 100644 index 0000000000..aac9429015 --- /dev/null +++ b/spec/controllers/api/v1/featured_tags_controller_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Api::V1::FeaturedTagsController do + render_views + + let(:user) { Fabricate(:user) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:accounts') } + let(:account) { Fabricate(:account) } + + before do + allow(controller).to receive(:doorkeeper_token) { token } + end + + describe 'GET #index' do + it 'returns http success' do + get :index, params: { account_id: account.id, limit: 2 } + + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/api/v1/instances/domain_blocks_controller_spec.rb b/spec/controllers/api/v1/instances/domain_blocks_controller_spec.rb new file mode 100644 index 0000000000..08f505c3d4 --- /dev/null +++ b/spec/controllers/api/v1/instances/domain_blocks_controller_spec.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Api::V1::Instances::DomainBlocksController do + render_views + + describe 'GET #index' do + it 'returns http success' do + Setting.show_domain_blocks = 'all' + get :index + + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/api/v1/instances/extended_descriptions_controller_spec.rb b/spec/controllers/api/v1/instances/extended_descriptions_controller_spec.rb new file mode 100644 index 0000000000..58c0d4b8f1 --- /dev/null +++ b/spec/controllers/api/v1/instances/extended_descriptions_controller_spec.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Api::V1::Instances::ExtendedDescriptionsController do + render_views + + describe 'GET #show' do + it 'returns http success' do + get :show + + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/api/v1/instances/privacy_policies_controller_spec.rb b/spec/controllers/api/v1/instances/privacy_policies_controller_spec.rb new file mode 100644 index 0000000000..ac0bed9dc6 --- /dev/null +++ b/spec/controllers/api/v1/instances/privacy_policies_controller_spec.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Api::V1::Instances::PrivacyPoliciesController do + render_views + + describe 'GET #show' do + it 'returns http success' do + get :show + + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/api/v1/instances/rules_controller_spec.rb b/spec/controllers/api/v1/instances/rules_controller_spec.rb new file mode 100644 index 0000000000..5af50239b0 --- /dev/null +++ b/spec/controllers/api/v1/instances/rules_controller_spec.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Api::V1::Instances::RulesController do + render_views + + describe 'GET #index' do + it 'returns http success' do + get :index + + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/api/v1/instances/translation_languages_controller_spec.rb b/spec/controllers/api/v1/instances/translation_languages_controller_spec.rb new file mode 100644 index 0000000000..5b7e4abb6f --- /dev/null +++ b/spec/controllers/api/v1/instances/translation_languages_controller_spec.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Api::V1::Instances::TranslationLanguagesController do + describe 'GET #show' do + context 'when no translation service is configured' do + it 'returns empty language matrix' do + get :show + + expect(response).to have_http_status(200) + expect(body_as_json).to eq({}) + end + end + + context 'when a translation service is configured' do + before do + service = instance_double(TranslationService::DeepL, languages: { nil => %w(en de), 'en' => ['de'] }) + allow(TranslationService).to receive(:configured?).and_return(true) + allow(TranslationService).to receive(:configured).and_return(service) + end + + it 'returns language matrix' do + get :show + + expect(response).to have_http_status(200) + expect(body_as_json).to eq({ und: %w(en de), en: ['de'] }) + end + end + end +end diff --git a/spec/controllers/api/v1/preferences_controller_spec.rb b/spec/controllers/api/v1/preferences_controller_spec.rb new file mode 100644 index 0000000000..79cc3066e1 --- /dev/null +++ b/spec/controllers/api/v1/preferences_controller_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Api::V1::PreferencesController do + render_views + + let(:user) { Fabricate(:user) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:accounts') } + let(:account) { Fabricate(:account) } + + before do + allow(controller).to receive(:doorkeeper_token) { token } + end + + describe 'GET #index' do + it 'returns http success' do + get :index + + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/api/v1/scheduled_statuses_controller_spec.rb b/spec/controllers/api/v1/scheduled_statuses_controller_spec.rb new file mode 100644 index 0000000000..256c4b272a --- /dev/null +++ b/spec/controllers/api/v1/scheduled_statuses_controller_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Api::V1::ScheduledStatusesController do + render_views + + let(:user) { Fabricate(:user) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:statuses') } + let(:account) { Fabricate(:account) } + + before do + allow(controller).to receive(:doorkeeper_token) { token } + end + + describe 'GET #index' do + it 'returns http success' do + get :index + + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/api/v1/statuses/translations_controller_spec.rb b/spec/controllers/api/v1/statuses/translations_controller_spec.rb new file mode 100644 index 0000000000..8495779bf3 --- /dev/null +++ b/spec/controllers/api/v1/statuses/translations_controller_spec.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Api::V1::Statuses::TranslationsController do + render_views + + let(:user) { Fabricate(:user) } + let(:app) { Fabricate(:application, name: 'Test app', website: 'http://testapp.com') } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:statuses', application: app) } + + context 'with an oauth token' do + before do + allow(controller).to receive(:doorkeeper_token) { token } + end + + describe 'POST #create' do + let(:status) { Fabricate(:status, account: user.account, text: 'Hola', language: 'es') } + + before do + translation = TranslationService::Translation.new(text: 'Hello') + service = instance_double(TranslationService::DeepL, translate: translation) + allow(TranslationService).to receive(:configured?).and_return(true) + allow(TranslationService).to receive(:configured).and_return(service) + Rails.cache.write('translation_service/languages', { 'es' => ['en'] }) + post :create, params: { status_id: status.id } + end + + it 'returns http success' do + expect(response).to have_http_status(200) + end + end + end +end diff --git a/spec/controllers/api/v1/timelines/direct_controller_spec.rb b/spec/controllers/api/v1/timelines/direct_controller_spec.rb index a22c2cbea5..def67a0fea 100644 --- a/spec/controllers/api/v1/timelines/direct_controller_spec.rb +++ b/spec/controllers/api/v1/timelines/direct_controller_spec.rb @@ -2,7 +2,7 @@ require 'rails_helper' -RSpec.describe Api::V1::Timelines::DirectController, type: :controller do +RSpec.describe Api::V1::Timelines::DirectController do let(:user) { Fabricate(:user) } let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:statuses') } diff --git a/spec/controllers/api/v1/trends/links_controller_spec.rb b/spec/controllers/api/v1/trends/links_controller_spec.rb new file mode 100644 index 0000000000..71a7e2e477 --- /dev/null +++ b/spec/controllers/api/v1/trends/links_controller_spec.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Api::V1::Trends::LinksController do + render_views + + describe 'GET #index' do + it 'returns http success' do + get :index + + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/api/v1/trends/statuses_controller_spec.rb b/spec/controllers/api/v1/trends/statuses_controller_spec.rb new file mode 100644 index 0000000000..e9892bb140 --- /dev/null +++ b/spec/controllers/api/v1/trends/statuses_controller_spec.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Api::V1::Trends::StatusesController do + render_views + + describe 'GET #index' do + it 'returns http success' do + get :index + + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/api/v2/instances_controller_spec.rb b/spec/controllers/api/v2/instances_controller_spec.rb new file mode 100644 index 0000000000..b7206da0a2 --- /dev/null +++ b/spec/controllers/api/v2/instances_controller_spec.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Api::V2::InstancesController do + render_views + + let(:user) { Fabricate(:user) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id) } + + before do + allow(controller).to receive(:doorkeeper_token) { token } + end + + describe 'GET #show' do + it 'returns http success' do + get :show + + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/api/v2/suggestions_controller_spec.rb b/spec/controllers/api/v2/suggestions_controller_spec.rb new file mode 100644 index 0000000000..5e6508bfda --- /dev/null +++ b/spec/controllers/api/v2/suggestions_controller_spec.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Api::V2::SuggestionsController do + render_views + + let(:user) { Fabricate(:user) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read') } + + before do + allow(controller).to receive(:doorkeeper_token) { token } + end + + describe 'GET #index' do + it 'returns http success' do + get :index + + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb index dc742074cd..82455d8749 100644 --- a/spec/controllers/application_controller_spec.rb +++ b/spec/controllers/application_controller_spec.rb @@ -75,8 +75,8 @@ describe ApplicationController, type: :controller do describe 'helper_method :current_flavour' do it 'returns "glitch" when theme wasn\'t changed in admin settings' do - allow(Setting).to receive(:default_settings).and_return({'skin' => 'default'}) - allow(Setting).to receive(:default_settings).and_return({'flavour' => 'glitch'}) + allow(Setting).to receive(:default_settings).and_return({ 'skin' => 'default' }) + allow(Setting).to receive(:default_settings).and_return({ 'flavour' => 'glitch' }) expect(controller.view_context.current_flavour).to eq 'glitch' end @@ -101,7 +101,8 @@ describe ApplicationController, type: :controller do it 'returns user\'s flavour when it is set' do current_user = Fabricate(:user) - current_user.settings['flavour'] = 'glitch' + current_user.settings.update(flavour: 'glitch') + current_user.save sign_in current_user allow(Setting).to receive(:[]).with('skin').and_return 'default' diff --git a/spec/controllers/auth/setup_controller_spec.rb b/spec/controllers/auth/setup_controller_spec.rb new file mode 100644 index 0000000000..75e42aaf96 --- /dev/null +++ b/spec/controllers/auth/setup_controller_spec.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Auth::SetupController do + render_views + + describe 'GET #show' do + context 'with a signed out request' do + it 'returns http redirect' do + get :show + expect(response).to be_redirect + end + end + + context 'with an unconfirmed signed in user' do + before { sign_in Fabricate(:user, confirmed_at: nil) } + + it 'returns http success' do + get :show + expect(response).to have_http_status(200) + end + end + end +end diff --git a/spec/controllers/custom_css_controller_spec.rb b/spec/controllers/custom_css_controller_spec.rb new file mode 100644 index 0000000000..47fe6031fa --- /dev/null +++ b/spec/controllers/custom_css_controller_spec.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe CustomCssController do + render_views + + describe 'GET #show' do + it 'returns http success' do + get :show + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/filters/statuses_controller_spec.rb b/spec/controllers/filters/statuses_controller_spec.rb new file mode 100644 index 0000000000..492361188b --- /dev/null +++ b/spec/controllers/filters/statuses_controller_spec.rb @@ -0,0 +1,41 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Filters::StatusesController do + render_views + + describe 'GET #index' do + let(:filter) { Fabricate(:custom_filter) } + + context 'with signed out user' do + it 'redirects' do + get :index, params: { filter_id: filter } + + expect(response).to be_redirect + end + end + + context 'with a signed in user' do + context 'with the filter user signed in' do + before { sign_in(filter.account.user) } + + it 'returns http success' do + get :index, params: { filter_id: filter } + + expect(response).to have_http_status(200) + end + end + + context 'with another user signed in' do + before { sign_in(Fabricate(:user)) } + + it 'returns http not found' do + get :index, params: { filter_id: filter } + + expect(response).to have_http_status(404) + end + end + end + end +end diff --git a/spec/controllers/filters_controller_spec.rb b/spec/controllers/filters_controller_spec.rb new file mode 100644 index 0000000000..f68f87ba7a --- /dev/null +++ b/spec/controllers/filters_controller_spec.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe FiltersController do + render_views + + describe 'GET #index' do + context 'with signed out user' do + it 'redirects' do + get :index + + expect(response).to be_redirect + end + end + + context 'with a signed in user' do + before { sign_in(Fabricate(:user)) } + + it 'returns http success' do + get :index + + expect(response).to have_http_status(200) + end + end + end +end diff --git a/spec/controllers/health_controller_spec.rb b/spec/controllers/health_controller_spec.rb index 1e41f6ed74..282b664199 100644 --- a/spec/controllers/health_controller_spec.rb +++ b/spec/controllers/health_controller_spec.rb @@ -1,13 +1,14 @@ +# frozen_string_literal: true + require 'rails_helper' describe HealthController do render_views describe 'GET #show' do - subject(:response) { get :show, params: { format: :json } } - - it 'returns the right response' do - expect(response).to have_http_status 200 + it 'returns http success' do + get :show + expect(response).to have_http_status(200) end end end diff --git a/spec/controllers/privacy_controller_spec.rb b/spec/controllers/privacy_controller_spec.rb new file mode 100644 index 0000000000..c92c71ea64 --- /dev/null +++ b/spec/controllers/privacy_controller_spec.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe PrivacyController do + render_views + + describe 'GET #show' do + it 'returns http success' do + get :show + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/relationships_controller_spec.rb b/spec/controllers/relationships_controller_spec.rb index 39f455e038..53a5daa517 100644 --- a/spec/controllers/relationships_controller_spec.rb +++ b/spec/controllers/relationships_controller_spec.rb @@ -58,7 +58,7 @@ describe RelationshipsController do end context 'when select parameter is provided' do - subject { patch :update, params: { form_account_batch: { account_ids: [poopfeast.id] }, block_domains: '' } } + subject { patch :update, params: { form_account_batch: { account_ids: [poopfeast.id] }, remove_domains_from_followers: '' } } it 'soft-blocks followers from selected domains' do poopfeast.follow!(user.account) @@ -69,6 +69,15 @@ describe RelationshipsController do expect(poopfeast.following?(user.account)).to be false end + it 'does not unfollow users from selected domains' do + user.account.follow!(poopfeast) + + sign_in user, scope: :user + subject + + expect(user.account.following?(poopfeast)).to be true + end + include_examples 'authenticate user' include_examples 'redirects back to followers page' end diff --git a/spec/controllers/settings/aliases_controller_spec.rb b/spec/controllers/settings/aliases_controller_spec.rb new file mode 100644 index 0000000000..805f659886 --- /dev/null +++ b/spec/controllers/settings/aliases_controller_spec.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Settings::AliasesController do + render_views + + let!(:user) { Fabricate(:user) } + let(:account) { user.account } + + before do + sign_in user, scope: :user + end + + describe 'GET #index' do + it 'returns http success' do + get :index + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/settings/exports/blocked_domains_controller_spec.rb b/spec/controllers/settings/exports/blocked_domains_controller_spec.rb new file mode 100644 index 0000000000..ac72fd9dd7 --- /dev/null +++ b/spec/controllers/settings/exports/blocked_domains_controller_spec.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Settings::Exports::BlockedDomainsController do + render_views + + describe 'GET #index' do + it 'returns a csv of the domains' do + account = Fabricate(:account, domain: 'example.com') + user = Fabricate(:user, account: account) + Fabricate(:account_domain_block, domain: 'example.com', account: account) + + sign_in user, scope: :user + get :index, format: :csv + + expect(response.body).to eq "example.com\n" + end + end +end diff --git a/spec/controllers/settings/exports/lists_controller_spec.rb b/spec/controllers/settings/exports/lists_controller_spec.rb new file mode 100644 index 0000000000..29623ba499 --- /dev/null +++ b/spec/controllers/settings/exports/lists_controller_spec.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Settings::Exports::ListsController do + render_views + + describe 'GET #index' do + it 'returns a csv of the domains' do + account = Fabricate(:account) + user = Fabricate(:user, account: account) + list = Fabricate(:list, account: account, title: 'The List') + Fabricate(:list_account, list: list, account: account) + + sign_in user, scope: :user + get :index, format: :csv + + expect(response.body).to match 'The List' + end + end +end diff --git a/spec/controllers/settings/flavours_controller_spec.rb b/spec/controllers/settings/flavours_controller_spec.rb index f89bde1f96..8c7d4a7688 100644 --- a/spec/controllers/settings/flavours_controller_spec.rb +++ b/spec/controllers/settings/flavours_controller_spec.rb @@ -1,7 +1,8 @@ # frozen_string_literal: true + require 'rails_helper' -RSpec.describe Settings::FlavoursController, type: :controller do +RSpec.describe Settings::FlavoursController do let(:user) { Fabricate(:user) } before do diff --git a/spec/controllers/settings/login_activities_controller_spec.rb b/spec/controllers/settings/login_activities_controller_spec.rb new file mode 100644 index 0000000000..6f1f3de314 --- /dev/null +++ b/spec/controllers/settings/login_activities_controller_spec.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Settings::LoginActivitiesController do + render_views + + let!(:user) { Fabricate(:user) } + + before do + sign_in user, scope: :user + end + + describe 'GET #index' do + it 'returns http success' do + get :index + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/settings/migration/redirects_controller_spec.rb b/spec/controllers/settings/migration/redirects_controller_spec.rb new file mode 100644 index 0000000000..50d9e1927b --- /dev/null +++ b/spec/controllers/settings/migration/redirects_controller_spec.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Settings::Migration::RedirectsController do + render_views + + let!(:user) { Fabricate(:user) } + + before do + sign_in user, scope: :user + end + + describe 'GET #new' do + it 'returns http success' do + get :new + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/settings/pictures_controller_spec.rb b/spec/controllers/settings/pictures_controller_spec.rb new file mode 100644 index 0000000000..2368dc55dd --- /dev/null +++ b/spec/controllers/settings/pictures_controller_spec.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Settings::PicturesController do + render_views + + let!(:user) { Fabricate(:user) } + + before do + sign_in user, scope: :user + end + + describe 'DELETE #destroy' do + context 'with invalid picture id' do + it 'returns http bad request' do + delete :destroy, params: { id: 'invalid' } + expect(response).to have_http_status(400) + end + end + end +end diff --git a/spec/controllers/settings/preferences/appearance_controller_spec.rb b/spec/controllers/settings/preferences/appearance_controller_spec.rb new file mode 100644 index 0000000000..7c7f716b71 --- /dev/null +++ b/spec/controllers/settings/preferences/appearance_controller_spec.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Settings::Preferences::AppearanceController do + render_views + + let!(:user) { Fabricate(:user) } + + before do + sign_in user, scope: :user + end + + describe 'GET #show' do + it 'returns http success' do + get :show + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/settings/preferences/notifications_controller_spec.rb b/spec/controllers/settings/preferences/notifications_controller_spec.rb index 66fb8c5eb9..29b7b6aec5 100644 --- a/spec/controllers/settings/preferences/notifications_controller_spec.rb +++ b/spec/controllers/settings/preferences/notifications_controller_spec.rb @@ -20,20 +20,22 @@ describe Settings::Preferences::NotificationsController do describe 'PUT #update' do it 'updates notifications settings' do - user.settings['notification_emails'] = user.settings['notification_emails'].merge('follow' => false) - user.settings['interactions'] = user.settings['interactions'].merge('must_be_follower' => true) + user.settings.update('notification_emails.follow': false, 'interactions.must_be_follower': true) + user.save put :update, params: { user: { - notification_emails: { follow: '1' }, - interactions: { must_be_follower: '0' }, + settings_attributes: { + 'notification_emails.follow': '1', + 'interactions.must_be_follower': '0', + }, }, } expect(response).to redirect_to(settings_preferences_notifications_path) user.reload - expect(user.settings['notification_emails']['follow']).to be true - expect(user.settings['interactions']['must_be_follower']).to be false + expect(user.settings['notification_emails.follow']).to be true + expect(user.settings['interactions.must_be_follower']).to be false end end end diff --git a/spec/controllers/settings/preferences/other_controller_spec.rb b/spec/controllers/settings/preferences/other_controller_spec.rb index 63eeefaf0f..249d1b5b59 100644 --- a/spec/controllers/settings/preferences/other_controller_spec.rb +++ b/spec/controllers/settings/preferences/other_controller_spec.rb @@ -29,20 +29,22 @@ describe Settings::Preferences::OtherController do end it 'updates user settings' do - user.settings['boost_modal'] = false - user.settings['delete_modal'] = true + user.settings.update('web.reblog_modal': false, 'web.delete_modal': true) + user.save put :update, params: { user: { - setting_boost_modal: '1', - setting_delete_modal: '0', + settings_attributes: { + 'web.reblog_modal': '1', + 'web.delete_modal': '0', + }, }, } expect(response).to redirect_to(settings_preferences_other_path) user.reload - expect(user.settings['boost_modal']).to be true - expect(user.settings['delete_modal']).to be false + expect(user.settings['web.reblog_modal']).to be true + expect(user.settings['web.delete_modal']).to be false end end end diff --git a/spec/controllers/settings/profiles_controller_spec.rb b/spec/controllers/settings/profiles_controller_spec.rb index e45596b1af..563e60271f 100644 --- a/spec/controllers/settings/profiles_controller_spec.rb +++ b/spec/controllers/settings/profiles_controller_spec.rb @@ -44,12 +44,4 @@ RSpec.describe Settings::ProfilesController, type: :controller do expect(ActivityPub::UpdateDistributionWorker).to have_received(:perform_async).with(account.id) end end - - describe 'PUT #update with oversized image' do - it 'gives the user an error message' do - allow(ActivityPub::UpdateDistributionWorker).to receive(:perform_async) - put :update, params: { account: { avatar: fixture_file_upload('4096x4097.png', 'image/png') } } - expect(response.body).to include('images are not supported') - end - end end diff --git a/spec/controllers/settings/two_factor_authentication/webauthn_credentials_controller_spec.rb b/spec/controllers/settings/two_factor_authentication/webauthn_credentials_controller_spec.rb index f060c3a4bd..a95521c94a 100644 --- a/spec/controllers/settings/two_factor_authentication/webauthn_credentials_controller_spec.rb +++ b/spec/controllers/settings/two_factor_authentication/webauthn_credentials_controller_spec.rb @@ -248,7 +248,7 @@ describe Settings::TwoFactorAuthentication::WebauthnCredentialsController do post :create, params: { credential: new_webauthn_credential, nickname: 'USB Key' } - expect(response).to have_http_status(500) + expect(response).to have_http_status(422) expect(flash[:error]).to be_present end end @@ -268,7 +268,7 @@ describe Settings::TwoFactorAuthentication::WebauthnCredentialsController do post :create, params: { credential: new_webauthn_credential, nickname: nickname } - expect(response).to have_http_status(500) + expect(response).to have_http_status(422) expect(flash[:error]).to be_present end end diff --git a/spec/fabricators/account_alias_fabricator.rb b/spec/fabricators/account_alias_fabricator.rb deleted file mode 100644 index 4f434c078a..0000000000 --- a/spec/fabricators/account_alias_fabricator.rb +++ /dev/null @@ -1,7 +0,0 @@ -# frozen_string_literal: true - -Fabricator(:account_alias) do - account - acct 'test@example.com' - uri 'https://example.com/users/test' -end diff --git a/spec/fabricators/account_deletion_request_fabricator.rb b/spec/fabricators/account_deletion_request_fabricator.rb deleted file mode 100644 index 3d3d373988..0000000000 --- a/spec/fabricators/account_deletion_request_fabricator.rb +++ /dev/null @@ -1,5 +0,0 @@ -# frozen_string_literal: true - -Fabricator(:account_deletion_request) do - account -end diff --git a/spec/fabricators/account_migration_fabricator.rb b/spec/fabricators/account_migration_fabricator.rb index fd453f6d2a..ae6143a65c 100644 --- a/spec/fabricators/account_migration_fabricator.rb +++ b/spec/fabricators/account_migration_fabricator.rb @@ -5,4 +5,5 @@ Fabricator(:account_migration) do target_account { |attrs| Fabricate(:account, also_known_as: [ActivityPub::TagManager.instance.uri_for(attrs[:account])]) } acct { |attrs| attrs[:target_account].acct } followers_count 1234 + created_at { 60.days.ago } end diff --git a/spec/fabricators/account_moderation_note_fabricator.rb b/spec/fabricators/account_moderation_note_fabricator.rb index 403870db6d..341a24dea0 100644 --- a/spec/fabricators/account_moderation_note_fabricator.rb +++ b/spec/fabricators/account_moderation_note_fabricator.rb @@ -2,5 +2,6 @@ Fabricator(:account_moderation_note) do content 'MyText' - account nil + account + target_account { Fabricate(:account) } end diff --git a/spec/fabricators/account_pin_fabricator.rb b/spec/fabricators/account_pin_fabricator.rb index 7d8a77bb54..32a5f3bdb8 100644 --- a/spec/fabricators/account_pin_fabricator.rb +++ b/spec/fabricators/account_pin_fabricator.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true Fabricator(:account_pin) do - account nil - target_account nil + account + target_account(fabricator: :account) + before_create { |account_pin, _| account_pin.account.follow!(account_pin.target_account) } end diff --git a/spec/fabricators/account_stat_fabricator.rb b/spec/fabricators/account_stat_fabricator.rb index 45b1524ef3..e6085c5f2b 100644 --- a/spec/fabricators/account_stat_fabricator.rb +++ b/spec/fabricators/account_stat_fabricator.rb @@ -1,8 +1,8 @@ # frozen_string_literal: true Fabricator(:account_stat) do - account nil - statuses_count '' - following_count '' - followers_count '' + account + statuses_count '123' + following_count '456' + followers_count '789' end diff --git a/spec/fabricators/account_tag_stat_fabricator.rb b/spec/fabricators/account_tag_stat_fabricator.rb deleted file mode 100644 index 769015bd02..0000000000 --- a/spec/fabricators/account_tag_stat_fabricator.rb +++ /dev/null @@ -1,5 +0,0 @@ -# frozen_string_literal: true - -Fabricator(:account_tag_stat) do - accounts_count '' -end diff --git a/spec/fabricators/account_warning_preset_fabricator.rb b/spec/fabricators/account_warning_preset_fabricator.rb index 7588e7f9cf..c50e08bf4f 100644 --- a/spec/fabricators/account_warning_preset_fabricator.rb +++ b/spec/fabricators/account_warning_preset_fabricator.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true Fabricator(:account_warning_preset) do - text 'MyText' + text { Faker::Lorem.paragraph } end diff --git a/spec/fabricators/admin_action_log_fabricator.rb b/spec/fabricators/admin_action_log_fabricator.rb index eb738c01c0..a259644bdc 100644 --- a/spec/fabricators/admin_action_log_fabricator.rb +++ b/spec/fabricators/admin_action_log_fabricator.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true Fabricator('Admin::ActionLog') do - account nil + account action 'MyString' target nil end diff --git a/spec/fabricators/announcement_mute_fabricator.rb b/spec/fabricators/announcement_mute_fabricator.rb deleted file mode 100644 index 109fec0412..0000000000 --- a/spec/fabricators/announcement_mute_fabricator.rb +++ /dev/null @@ -1,6 +0,0 @@ -# frozen_string_literal: true - -Fabricator(:announcement_mute) do - account - announcement -end diff --git a/spec/fabricators/announcement_reaction_fabricator.rb b/spec/fabricators/announcement_reaction_fabricator.rb deleted file mode 100644 index 5da51caaa3..0000000000 --- a/spec/fabricators/announcement_reaction_fabricator.rb +++ /dev/null @@ -1,7 +0,0 @@ -# frozen_string_literal: true - -Fabricator(:announcement_reaction) do - account - announcement - name '🌿' -end diff --git a/spec/fabricators/conversation_account_fabricator.rb b/spec/fabricators/conversation_account_fabricator.rb deleted file mode 100644 index f69d36855e..0000000000 --- a/spec/fabricators/conversation_account_fabricator.rb +++ /dev/null @@ -1,8 +0,0 @@ -# frozen_string_literal: true - -Fabricator(:conversation_account) do - account nil - conversation nil - participant_account_ids '' - last_status nil -end diff --git a/spec/fabricators/conversation_mute_fabricator.rb b/spec/fabricators/conversation_mute_fabricator.rb deleted file mode 100644 index 5cf4dd3d59..0000000000 --- a/spec/fabricators/conversation_mute_fabricator.rb +++ /dev/null @@ -1,4 +0,0 @@ -# frozen_string_literal: true - -Fabricator(:conversation_mute) do -end diff --git a/spec/fabricators/custom_emoji_category_fabricator.rb b/spec/fabricators/custom_emoji_category_fabricator.rb deleted file mode 100644 index 6019baba21..0000000000 --- a/spec/fabricators/custom_emoji_category_fabricator.rb +++ /dev/null @@ -1,5 +0,0 @@ -# frozen_string_literal: true - -Fabricator(:custom_emoji_category) do - name 'MyString' -end diff --git a/spec/fabricators/encrypted_message_fabricator.rb b/spec/fabricators/encrypted_message_fabricator.rb index 2898827549..43b3105146 100644 --- a/spec/fabricators/encrypted_message_fabricator.rb +++ b/spec/fabricators/encrypted_message_fabricator.rb @@ -2,9 +2,6 @@ Fabricator(:encrypted_message) do device - from_account - from_device_id { Faker::Number.number(digits: 5) } - type 0 - body '' - message_franking '' + from_account { Fabricate(:account) } + from_device_id { Faker::Number.number(digits: 5) } end diff --git a/spec/fabricators/featured_tag_fabricator.rb b/spec/fabricators/featured_tag_fabricator.rb deleted file mode 100644 index 4bfa3e924e..0000000000 --- a/spec/fabricators/featured_tag_fabricator.rb +++ /dev/null @@ -1,8 +0,0 @@ -# frozen_string_literal: true - -Fabricator(:featured_tag) do - account - tag - statuses_count 1_337 - last_status_at Time.now.utc -end diff --git a/spec/fabricators/follow_recommendation_suppression_fabricator.rb b/spec/fabricators/follow_recommendation_suppression_fabricator.rb deleted file mode 100644 index 6477baee11..0000000000 --- a/spec/fabricators/follow_recommendation_suppression_fabricator.rb +++ /dev/null @@ -1,5 +0,0 @@ -# frozen_string_literal: true - -Fabricator(:follow_recommendation_suppression) do - account -end diff --git a/spec/fabricators/identity_fabricator.rb b/spec/fabricators/identity_fabricator.rb index b830101117..58072c0d65 100644 --- a/spec/fabricators/identity_fabricator.rb +++ b/spec/fabricators/identity_fabricator.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true Fabricator(:identity) do - user nil + user provider 'MyString' uid 'MyString' end diff --git a/spec/fabricators/import_fabricator.rb b/spec/fabricators/import_fabricator.rb deleted file mode 100644 index 11602f407f..0000000000 --- a/spec/fabricators/import_fabricator.rb +++ /dev/null @@ -1,4 +0,0 @@ -# frozen_string_literal: true - -Fabricator(:import) do -end diff --git a/spec/fabricators/ip_block_fabricator.rb b/spec/fabricators/ip_block_fabricator.rb deleted file mode 100644 index a5da3f7065..0000000000 --- a/spec/fabricators/ip_block_fabricator.rb +++ /dev/null @@ -1,8 +0,0 @@ -# frozen_string_literal: true - -Fabricator(:ip_block) do - ip '' - severity '' - expires_at '2020-10-08 22:20:37' - comment 'MyText' -end diff --git a/spec/fabricators/list_account_fabricator.rb b/spec/fabricators/list_account_fabricator.rb index b0af29e6fa..00dde83cdf 100644 --- a/spec/fabricators/list_account_fabricator.rb +++ b/spec/fabricators/list_account_fabricator.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true Fabricator(:list_account) do - list nil - account nil - follow nil + list + account + before_create { |list_account, _| list_account.list.account.follow!(account) } end diff --git a/spec/fabricators/one_time_key_fabricator.rb b/spec/fabricators/one_time_key_fabricator.rb index e317c28bd1..cfb365cabb 100644 --- a/spec/fabricators/one_time_key_fabricator.rb +++ b/spec/fabricators/one_time_key_fabricator.rb @@ -3,7 +3,7 @@ Fabricator(:one_time_key) do device key_id { Faker::Alphanumeric.alphanumeric(number: 10) } - key { Base64.strict_encode64(Ed25519::SigningKey.generate.verify_key.to_bytes) } + key { Base64.strict_encode64(Ed25519::SigningKey.generate.verify_key.to_bytes) } signature do |attrs| signing_key = Ed25519::SigningKey.generate diff --git a/spec/fabricators/preview_card_provider_fabricator.rb b/spec/fabricators/preview_card_provider_fabricator.rb new file mode 100644 index 0000000000..78db710003 --- /dev/null +++ b/spec/fabricators/preview_card_provider_fabricator.rb @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +Fabricator(:preview_card_provider) do + domain { Faker::Internet.domain_name } +end diff --git a/spec/fabricators/setting_fabricator.rb b/spec/fabricators/setting_fabricator.rb index 336d7c3551..ce9a48e901 100644 --- a/spec/fabricators/setting_fabricator.rb +++ b/spec/fabricators/setting_fabricator.rb @@ -1,4 +1,5 @@ # frozen_string_literal: true Fabricator(:setting) do + var 'var' end diff --git a/spec/fabricators/site_upload_fabricator.rb b/spec/fabricators/site_upload_fabricator.rb index ad1b777cc4..87553ccb8a 100644 --- a/spec/fabricators/site_upload_fabricator.rb +++ b/spec/fabricators/site_upload_fabricator.rb @@ -2,4 +2,5 @@ Fabricator(:site_upload) do file { Rails.root.join('spec', 'fabricators', 'assets', 'utah_teapot.png').open } + var 'thumbnail' end diff --git a/spec/fabricators/status_edit_fabricator.rb b/spec/fabricators/status_edit_fabricator.rb deleted file mode 100644 index 33735a4592..0000000000 --- a/spec/fabricators/status_edit_fabricator.rb +++ /dev/null @@ -1,9 +0,0 @@ -# frozen_string_literal: true - -Fabricator(:status_edit) do - status nil - account nil - text 'MyText' - spoiler_text 'MyText' - media_attachments_changed false -end diff --git a/spec/fabricators/status_stat_fabricator.rb b/spec/fabricators/status_stat_fabricator.rb deleted file mode 100644 index 8a358c51a9..0000000000 --- a/spec/fabricators/status_stat_fabricator.rb +++ /dev/null @@ -1,8 +0,0 @@ -# frozen_string_literal: true - -Fabricator(:status_stat) do - status_id nil - replies_count '' - reblogs_count '' - favourites_count '' -end diff --git a/spec/fabricators/unavailable_domain_fabricator.rb b/spec/fabricators/unavailable_domain_fabricator.rb index 300a9e7a14..cb9707020a 100644 --- a/spec/fabricators/unavailable_domain_fabricator.rb +++ b/spec/fabricators/unavailable_domain_fabricator.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true Fabricator(:unavailable_domain) do - domain { Faker::Internet.domain } + domain { Faker::Internet.domain_name } end diff --git a/spec/fabricators/user_invite_request_fabricator.rb b/spec/fabricators/user_invite_request_fabricator.rb deleted file mode 100644 index 7736263e45..0000000000 --- a/spec/fabricators/user_invite_request_fabricator.rb +++ /dev/null @@ -1,6 +0,0 @@ -# frozen_string_literal: true - -Fabricator(:user_invite_request) do - user - text { Faker::Lorem.sentence } -end diff --git a/spec/fabricators/web_setting_fabricator.rb b/spec/fabricators/web_setting_fabricator.rb deleted file mode 100644 index 7c9f300798..0000000000 --- a/spec/fabricators/web_setting_fabricator.rb +++ /dev/null @@ -1,4 +0,0 @@ -# frozen_string_literal: true - -Fabricator(:web_setting, from: Web::Setting) do -end diff --git a/spec/fabricators_spec.rb b/spec/fabricators_spec.rb new file mode 100644 index 0000000000..3b76c56ce6 --- /dev/null +++ b/spec/fabricators_spec.rb @@ -0,0 +1,12 @@ +require 'rails_helper' + +Fabrication.manager.load_definitions if Fabrication.manager.empty? + +Fabrication.manager.schematics.map(&:first).each do |factory_name| + describe "The #{factory_name} factory" do + it 'is valid' do + factory = Fabricate(factory_name) + expect(factory).to be_valid + end + end +end diff --git a/spec/helpers/admin/account_moderation_notes_helper_spec.rb b/spec/helpers/admin/account_moderation_notes_helper_spec.rb index 622ce88065..e01eba51da 100644 --- a/spec/helpers/admin/account_moderation_notes_helper_spec.rb +++ b/spec/helpers/admin/account_moderation_notes_helper_spec.rb @@ -42,13 +42,11 @@ RSpec.describe Admin::AccountModerationNotesHelper, type: :helper do let(:account) { Fabricate(:account) } it 'calls #link_to' do - expect(helper).to receive(:link_to).with( - admin_account_path(account.id), - class: name_tag_classes(account, true), - title: account.acct - ) + result = helper.admin_account_inline_link_to(account) - helper.admin_account_inline_link_to(account) + expect(result).to match(name_tag_classes(account, true)) + expect(result).to match(account.acct) + expect(result).to match(admin_account_path(account.id)) end end end diff --git a/spec/helpers/admin/dashboard_helper_spec.rb b/spec/helpers/admin/dashboard_helper_spec.rb new file mode 100644 index 0000000000..59062e4839 --- /dev/null +++ b/spec/helpers/admin/dashboard_helper_spec.rb @@ -0,0 +1,69 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::DashboardHelper do + describe 'relevant_account_timestamp' do + context 'with an account with older sign in' do + let(:account) { Fabricate(:account) } + let(:stamp) { 10.days.ago } + + it 'returns a time element' do + account.user.update(current_sign_in_at: stamp) + result = helper.relevant_account_timestamp(account) + + expect(result).to match('time-ago') + expect(result).to match(I18n.l(stamp)) + end + end + + context 'with an account with newer sign in' do + let(:account) { Fabricate(:account) } + + it 'returns a time element' do + account.user.update(current_sign_in_at: 10.hours.ago) + result = helper.relevant_account_timestamp(account) + + expect(result).to eq(I18n.t('generic.today')) + end + end + + context 'with an account where the user is pending' do + let(:account) { Fabricate(:account) } + + it 'returns a time element' do + account.user.update(current_sign_in_at: nil) + account.user.update(approved: false) + result = helper.relevant_account_timestamp(account) + + expect(result).to match('time-ago') + expect(result).to match(I18n.l(account.user.created_at)) + end + end + + context 'with an account with a last status value' do + let(:account) { Fabricate(:account) } + let(:stamp) { 5.minutes.ago } + + it 'returns a time element' do + account.user.update(current_sign_in_at: nil) + account.account_stat.update(last_status_at: stamp) + result = helper.relevant_account_timestamp(account) + + expect(result).to match('time-ago') + expect(result).to match(I18n.l(stamp)) + end + end + + context 'with an account without sign in or last status or pending' do + let(:account) { Fabricate(:account) } + + it 'returns a time element' do + account.user.update(current_sign_in_at: nil) + result = helper.relevant_account_timestamp(account) + + expect(result).to eq('-') + end + end + end +end diff --git a/spec/helpers/languages_helper_spec.rb b/spec/helpers/languages_helper_spec.rb index 217c9b2397..98c8064a33 100644 --- a/spec/helpers/languages_helper_spec.rb +++ b/spec/helpers/languages_helper_spec.rb @@ -10,14 +10,54 @@ describe LanguagesHelper do end describe 'native_locale_name' do - it 'finds the human readable native name from a key' do - expect(helper.native_locale_name(:de)).to eq('Deutsch') + context 'with a blank locale' do + it 'defaults to a generic value' do + expect(helper.native_locale_name(nil)).to eq(I18n.t('generic.none')) + end + end + + context 'with a locale of `und`' do + it 'defaults to a generic value' do + expect(helper.native_locale_name('und')).to eq(I18n.t('generic.none')) + end + end + + context 'with a supported locale' do + it 'finds the human readable native name from a key' do + expect(helper.native_locale_name(:de)).to eq('Deutsch') + end + end + + context 'with a regional locale' do + it 'finds the human readable regional name from a key' do + expect(helper.native_locale_name('en-GB')).to eq('English (British)') + end + end + + context 'with a non-existent locale' do + it 'returns the supplied locale value' do + expect(helper.native_locale_name(:xxx)).to eq(:xxx) + end end end describe 'standard_locale_name' do - it 'finds the human readable standard name from a key' do - expect(helper.standard_locale_name(:de)).to eq('German') + context 'with a blank locale' do + it 'defaults to a generic value' do + expect(helper.standard_locale_name(nil)).to eq(I18n.t('generic.none')) + end + end + + context 'with a non-existent locale' do + it 'returns the supplied locale value' do + expect(helper.standard_locale_name(:xxx)).to eq(:xxx) + end + end + + context 'with a supported locale' do + it 'finds the human readable standard name from a key' do + expect(helper.standard_locale_name(:de)).to eq('German') + end end end end diff --git a/spec/helpers/settings_helper_spec.rb b/spec/helpers/settings_helper_spec.rb new file mode 100644 index 0000000000..cba5c6ee89 --- /dev/null +++ b/spec/helpers/settings_helper_spec.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe SettingsHelper do + describe 'session_device_icon' do + context 'with a mobile device' do + let(:session) { SessionActivation.new(user_agent: 'Mozilla/5.0 (iPhone)') } + + it 'detects the device and returns a descriptive string' do + result = helper.session_device_icon(session) + + expect(result).to eq('mobile') + end + end + + context 'with a tablet device' do + let(:session) { SessionActivation.new(user_agent: 'Mozilla/5.0 (iPad)') } + + it 'detects the device and returns a descriptive string' do + result = helper.session_device_icon(session) + + expect(result).to eq('tablet') + end + end + + context 'with a desktop device' do + let(:session) { SessionActivation.new(user_agent: 'Mozilla/5.0 (Macintosh)') } + + it 'detects the device and returns a descriptive string' do + result = helper.session_device_icon(session) + + expect(result).to eq('desktop') + end + end + end +end diff --git a/spec/helpers/statuses_helper_spec.rb b/spec/helpers/statuses_helper_spec.rb index ce2a4680e0..105da7e1b1 100644 --- a/spec/helpers/statuses_helper_spec.rb +++ b/spec/helpers/statuses_helper_spec.rb @@ -2,7 +2,95 @@ require 'rails_helper' -RSpec.describe StatusesHelper, type: :helper do +describe StatusesHelper do + describe 'status_text_summary' do + context 'with blank text' do + let(:status) { Status.new(spoiler_text: '') } + + it 'returns immediately with nil' do + result = helper.status_text_summary(status) + expect(result).to be_nil + end + end + + context 'with present text' do + let(:status) { Status.new(spoiler_text: 'SPOILERS!!!') } + + it 'returns the content warning' do + result = helper.status_text_summary(status) + expect(result).to eq(I18n.t('statuses.content_warning', warning: 'SPOILERS!!!')) + end + end + end + + def status_text_summary(status) + return if status.spoiler_text.blank? + + I18n.t('statuses.content_warning', warning: status.spoiler_text) + end + + describe 'link_to_newer' do + it 'returns a link to newer content' do + url = 'https://example.com' + result = helper.link_to_newer(url) + + expect(result).to match('load-more') + expect(result).to match(I18n.t('statuses.show_newer')) + end + end + + describe 'link_to_older' do + it 'returns a link to older content' do + url = 'https://example.com' + result = helper.link_to_older(url) + + expect(result).to match('load-more') + expect(result).to match(I18n.t('statuses.show_older')) + end + end + + describe 'fa_visibility_icon' do + context 'with a status that is public' do + let(:status) { Status.new(visibility: 'public') } + + it 'returns the correct fa icon' do + result = helper.fa_visibility_icon(status) + + expect(result).to match('fa-globe') + end + end + + context 'with a status that is unlisted' do + let(:status) { Status.new(visibility: 'unlisted') } + + it 'returns the correct fa icon' do + result = helper.fa_visibility_icon(status) + + expect(result).to match('fa-unlock') + end + end + + context 'with a status that is private' do + let(:status) { Status.new(visibility: 'private') } + + it 'returns the correct fa icon' do + result = helper.fa_visibility_icon(status) + + expect(result).to match('fa-lock') + end + end + + context 'with a status that is direct' do + let(:status) { Status.new(visibility: 'direct') } + + it 'returns the correct fa icon' do + result = helper.fa_visibility_icon(status) + + expect(result).to match('fa-at') + end + end + end + describe '#stream_link_target' do it 'returns nil if it is not an embedded view' do set_not_embedded_view diff --git a/spec/lib/admin/system_check/base_check_spec.rb b/spec/lib/admin/system_check/base_check_spec.rb new file mode 100644 index 0000000000..fdd9f6b6c4 --- /dev/null +++ b/spec/lib/admin/system_check/base_check_spec.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::SystemCheck::BaseCheck do + subject(:check) { described_class.new(user) } + + let(:user) { Fabricate(:user) } + + describe 'skip?' do + it 'returns false' do + expect(check.skip?).to be false + end + end + + describe 'pass?' do + it 'raises not implemented error' do + expect { check.pass? }.to raise_error(NotImplementedError) + end + end + + describe 'message' do + it 'raises not implemented error' do + expect { check.message }.to raise_error(NotImplementedError) + end + end +end diff --git a/spec/lib/admin/system_check/database_schema_check_spec.rb b/spec/lib/admin/system_check/database_schema_check_spec.rb new file mode 100644 index 0000000000..db1dcb52fa --- /dev/null +++ b/spec/lib/admin/system_check/database_schema_check_spec.rb @@ -0,0 +1,45 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::SystemCheck::DatabaseSchemaCheck do + subject(:check) { described_class.new(user) } + + let(:user) { Fabricate(:user) } + + it_behaves_like 'a check available to devops users' + + describe 'pass?' do + context 'when database needs migration' do + before do + context = instance_double(ActiveRecord::MigrationContext, needs_migration?: true) + allow(ActiveRecord::Base.connection).to receive(:migration_context).and_return(context) + end + + it 'returns false' do + expect(check.pass?).to be false + end + end + + context 'when database does not need migration' do + before do + context = instance_double(ActiveRecord::MigrationContext, needs_migration?: false) + allow(ActiveRecord::Base.connection).to receive(:migration_context).and_return(context) + end + + it 'returns true' do + expect(check.pass?).to be true + end + end + end + + describe 'message' do + it 'sends class name symbol to message instance' do + allow(Admin::SystemCheck::Message).to receive(:new).with(:database_schema_check) + + check.message + + expect(Admin::SystemCheck::Message).to have_received(:new).with(:database_schema_check) + end + end +end diff --git a/spec/lib/admin/system_check/elasticsearch_check_spec.rb b/spec/lib/admin/system_check/elasticsearch_check_spec.rb new file mode 100644 index 0000000000..1ffac89ee4 --- /dev/null +++ b/spec/lib/admin/system_check/elasticsearch_check_spec.rb @@ -0,0 +1,100 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::SystemCheck::ElasticsearchCheck do + subject(:check) { described_class.new(user) } + + let(:user) { Fabricate(:user) } + + it_behaves_like 'a check available to devops users' + + describe 'pass?' do + context 'when chewy is enabled' do + before { allow(Chewy).to receive(:enabled?).and_return(true) } + + context 'when running version is present and high enough' do + before do + allow(Chewy.client).to receive(:info) + .and_return({ 'version' => { 'number' => '999.99.9' } }) + end + + it 'returns true' do + expect(check.pass?).to be true + end + end + + context 'when running version is present and too low' do + context 'when compatible version is too low' do + before do + allow(Chewy.client).to receive(:info) + .and_return({ 'version' => { 'number' => '1.2.3', 'minimum_wire_compatibility_version' => '1.0' } }) + end + + it 'returns false' do + expect(check.pass?).to be false + end + end + + context 'when compatible version is high enough' do + before do + allow(Chewy.client).to receive(:info) + .and_return({ 'version' => { 'number' => '1.2.3', 'minimum_wire_compatibility_version' => '99.9' } }) + end + + it 'returns true' do + expect(check.pass?).to be true + end + end + end + + context 'when running version is missing' do + before do + client = instance_double(Elasticsearch::Transport::Client) + allow(client).to receive(:info).and_raise(Elasticsearch::Transport::Transport::Error) + allow(Chewy).to receive(:client).and_return(client) + end + + it 'returns false' do + expect(check.pass?).to be false + end + end + end + + context 'when chewy is not enabled' do + before { allow(Chewy).to receive(:enabled?).and_return(false) } + + it 'returns true' do + expect(check.pass?).to be true + end + end + end + + describe 'message' do + context 'when running version is present' do + before { allow(Chewy.client).to receive(:info).and_return({ 'version' => { 'number' => '999.99.9' } }) } + + it 'sends class name symbol to message instance' do + allow(Admin::SystemCheck::Message).to receive(:new) + .with(:elasticsearch_version_check, anything) + + check.message + + expect(Admin::SystemCheck::Message).to have_received(:new) + .with(:elasticsearch_version_check, 'Elasticsearch 999.99.9 is running while 7.x is required') + end + end + + context 'when running version is missing' do + it 'sends class name symbol to message instance' do + allow(Admin::SystemCheck::Message).to receive(:new) + .with(:elasticsearch_running_check) + + check.message + + expect(Admin::SystemCheck::Message).to have_received(:new) + .with(:elasticsearch_running_check) + end + end + end +end diff --git a/spec/lib/admin/system_check/media_privacy_check_spec.rb b/spec/lib/admin/system_check/media_privacy_check_spec.rb new file mode 100644 index 0000000000..316bf12156 --- /dev/null +++ b/spec/lib/admin/system_check/media_privacy_check_spec.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::SystemCheck::MediaPrivacyCheck do + subject(:check) { described_class.new(user) } + + let(:user) { Fabricate(:user) } + + it_behaves_like 'a check available to devops users' + + describe 'pass?' do + context 'when the media cannot be listed' do + before do + stub_request(:get, /ngrok.io/).to_return(status: 200, body: 'a list of no files') + end + + it 'returns true' do + expect(check.pass?).to be true + end + end + end + + describe 'message' do + it 'sends values to message instance' do + allow(Admin::SystemCheck::Message).to receive(:new).with(nil, nil, nil, true) + + check.message + + expect(Admin::SystemCheck::Message).to have_received(:new).with(nil, nil, nil, true) + end + end +end diff --git a/spec/lib/admin/system_check/message_spec.rb b/spec/lib/admin/system_check/message_spec.rb new file mode 100644 index 0000000000..c0671f3452 --- /dev/null +++ b/spec/lib/admin/system_check/message_spec.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::SystemCheck::Message do + subject(:check) { described_class.new(:key_value, :value_value, :action_value, :critical_value) } + + it 'providers readers when initialized' do + expect(check.key).to eq :key_value + expect(check.value).to eq :value_value + expect(check.action).to eq :action_value + expect(check.critical).to eq :critical_value + end +end diff --git a/spec/lib/admin/system_check/rules_check_spec.rb b/spec/lib/admin/system_check/rules_check_spec.rb new file mode 100644 index 0000000000..fb3293fb2d --- /dev/null +++ b/spec/lib/admin/system_check/rules_check_spec.rb @@ -0,0 +1,53 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::SystemCheck::RulesCheck do + subject(:check) { described_class.new(user) } + + let(:user) { Fabricate(:user) } + + describe 'skip?' do + context 'when user can manage rules' do + before { allow(user).to receive(:can?).with(:manage_rules).and_return(true) } + + it 'returns false' do + expect(check.skip?).to be false + end + end + + context 'when user cannot manage rules' do + before { allow(user).to receive(:can?).with(:manage_rules).and_return(false) } + + it 'returns true' do + expect(check.skip?).to be true + end + end + end + + describe 'pass?' do + context 'when there is not a kept rule' do + it 'returns false' do + expect(check.pass?).to be false + end + end + + context 'when there is a kept rule' do + before { Fabricate(:rule) } + + it 'returns true' do + expect(check.pass?).to be true + end + end + end + + describe 'message' do + it 'sends class name symbol to message instance' do + allow(Admin::SystemCheck::Message).to receive(:new).with(:rules_check, nil, '/admin/rules') + + check.message + + expect(Admin::SystemCheck::Message).to have_received(:new).with(:rules_check, nil, '/admin/rules') + end + end +end diff --git a/spec/lib/admin/system_check/sidekiq_process_check_spec.rb b/spec/lib/admin/system_check/sidekiq_process_check_spec.rb new file mode 100644 index 0000000000..9bd9daddf6 --- /dev/null +++ b/spec/lib/admin/system_check/sidekiq_process_check_spec.rb @@ -0,0 +1,45 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::SystemCheck::SidekiqProcessCheck do + subject(:check) { described_class.new(user) } + + let(:user) { Fabricate(:user) } + + it_behaves_like 'a check available to devops users' + + describe 'pass?' do + context 'when missing queues is empty' do + before do + process_set = instance_double(Sidekiq::ProcessSet, reduce: []) + allow(Sidekiq::ProcessSet).to receive(:new).and_return(process_set) + end + + it 'returns true' do + expect(check.pass?).to be true + end + end + + context 'when missing queues is not empty' do + before do + process_set = instance_double(Sidekiq::ProcessSet, reduce: [:something]) + allow(Sidekiq::ProcessSet).to receive(:new).and_return(process_set) + end + + it 'returns false' do + expect(check.pass?).to be false + end + end + end + + describe 'message' do + it 'sends values to message instance' do + allow(Admin::SystemCheck::Message).to receive(:new).with(:sidekiq_process_check, 'default, push, mailers, pull, scheduler, ingress') + + check.message + + expect(Admin::SystemCheck::Message).to have_received(:new).with(:sidekiq_process_check, 'default, push, mailers, pull, scheduler, ingress') + end + end +end diff --git a/spec/lib/admin/system_check_spec.rb b/spec/lib/admin/system_check_spec.rb new file mode 100644 index 0000000000..30048fd3ad --- /dev/null +++ b/spec/lib/admin/system_check_spec.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::SystemCheck do + let(:user) { Fabricate(:user) } + + describe 'perform' do + let(:result) { described_class.perform(user) } + + it 'runs all the checks' do + expect(result).to be_an(Array) + end + end +end diff --git a/spec/lib/advanced_text_formatter_spec.rb b/spec/lib/advanced_text_formatter_spec.rb index c1e4696061..8b27b56a15 100644 --- a/spec/lib/advanced_text_formatter_spec.rb +++ b/spec/lib/advanced_text_formatter_spec.rb @@ -1,12 +1,14 @@ +# frozen_string_literal: true + require 'rails_helper' RSpec.describe AdvancedTextFormatter do describe '#to_s' do + subject { described_class.new(text, preloaded_accounts: preloaded_accounts, content_type: content_type).to_s } + let(:preloaded_accounts) { nil } let(:content_type) { 'text/markdown' } - subject { described_class.new(text, preloaded_accounts: preloaded_accounts, content_type: content_type).to_s } - context 'given a markdown source' do let(:content_type) { 'text/markdown' } @@ -14,7 +16,7 @@ RSpec.describe AdvancedTextFormatter do let(:text) { 'text' } it 'paragraphizes the text' do - is_expected.to eq '

    text

    ' + expect(subject).to eq '

    text

    ' end end @@ -22,7 +24,7 @@ RSpec.describe AdvancedTextFormatter do let(:text) { "line\nfeed" } it 'removes line feeds' do - is_expected.not_to include "\n" + expect(subject).to_not include "\n" end end @@ -30,7 +32,7 @@ RSpec.describe AdvancedTextFormatter do let(:text) { 'test `foo` bar' } it 'formats code using ' do - is_expected.to include 'test foo bar' + expect(subject).to include 'test foo bar' end end @@ -38,15 +40,15 @@ RSpec.describe AdvancedTextFormatter do let(:text) { "test\n\n```\nint main(void) {\n return 0; // https://joinmastodon.org/foo\n}\n```\n" } it 'formats code using
     and ' do
    -          is_expected.to include '
    int main'
    +          expect(subject).to include '
    int main'
             end
     
             it 'does not strip leading spaces' do
    -          is_expected.to include '>  return 0'
    +          expect(subject).to include '>  return 0'
             end
     
             it 'does not format links' do
    -          is_expected.to include 'return 0; // https://joinmastodon.org/foo'
    +          expect(subject).to include 'return 0; // https://joinmastodon.org/foo'
             end
           end
     
    @@ -54,7 +56,7 @@ RSpec.describe AdvancedTextFormatter do
             let(:text) { 'test `https://foo.bar/bar` bar' }
     
             it 'does not rewrite the link' do
    -          is_expected.to include 'test https://foo.bar/bar bar'
    +          expect(subject).to include 'test https://foo.bar/bar bar'
             end
           end
     
    @@ -62,7 +64,7 @@ RSpec.describe AdvancedTextFormatter do
             let(:text) { 'foo https://cb6e6126.ngrok.io/about/more' }
     
             it 'creates a link' do
    -          is_expected.to include '@alice'
    +          expect(subject).to include '@alice'
             end
           end
     
    @@ -80,7 +82,7 @@ RSpec.describe AdvancedTextFormatter do
             let(:text) { '@alice' }
     
             it 'does not create a mention link' do
    -          is_expected.to include '@alice'
    +          expect(subject).to include '@alice'
             end
           end
     
    @@ -88,7 +90,7 @@ RSpec.describe AdvancedTextFormatter 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"'
    +          expect(subject).to include 'href="https://hackernoon.com/the-power-to-build-communities-a-response-to-mark-zuckerberg-3f2cac9148a4"'
             end
           end
     
    @@ -96,7 +98,7 @@ RSpec.describe AdvancedTextFormatter do
             let(:text) { 'http://google.com' }
     
             it 'matches the full URL' do
    -          is_expected.to include 'href="http://google.com"'
    +          expect(subject).to include 'href="http://google.com"'
             end
           end
     
    @@ -104,7 +106,7 @@ RSpec.describe AdvancedTextFormatter do
             let(:text) { 'http://example.gay' }
     
             it 'matches the full URL' do
    -          is_expected.to include 'href="http://example.gay"'
    +          expect(subject).to include 'href="http://example.gay"'
             end
           end
     
    @@ -112,11 +114,11 @@ RSpec.describe AdvancedTextFormatter do
             let(:text) { 'https://nic.みんな/' }
     
             it 'matches the full URL' do
    -          is_expected.to include 'href="https://nic.みんな/"'
    +          expect(subject).to include 'href="https://nic.みんな/"'
             end
     
             it 'has display URL' do
    -          is_expected.to include 'nic.みんな/'
    +          expect(subject).to include 'nic.みんな/'
             end
           end
     
    @@ -124,7 +126,7 @@ RSpec.describe AdvancedTextFormatter 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"'
    +          expect(subject).to include 'href="http://www.mcmansionhell.com/post/156408871451/50-states-of-mcmansion-hell-scottsdale-arizona"'
             end
           end
     
    @@ -132,7 +134,7 @@ RSpec.describe AdvancedTextFormatter do
             let(:text) { '(http://google.com/)' }
     
             it 'matches the full URL but not the parentheses' do
    -          is_expected.to include 'href="http://google.com/"'
    +          expect(subject).to include 'href="http://google.com/"'
             end
           end
     
    @@ -140,7 +142,7 @@ RSpec.describe AdvancedTextFormatter 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"'
    +          expect(subject).to include 'href="http://www.google.com"'
             end
           end
     
    @@ -148,7 +150,7 @@ RSpec.describe AdvancedTextFormatter 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"'
    +          expect(subject).to include 'href="http://www.google.com"'
             end
           end
         end
    @@ -157,7 +159,7 @@ RSpec.describe AdvancedTextFormatter 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"'
    +        expect(subject).to include 'href="http://www.google.com"'
           end
         end
     
    @@ -166,7 +168,7 @@ RSpec.describe AdvancedTextFormatter 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"'
    +          expect(subject).to include 'href="https://www.ruby-toolbox.com/search?utf8=%E2%9C%93&q=autolink"'
             end
           end
     
    @@ -174,7 +176,7 @@ RSpec.describe AdvancedTextFormatter 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"'
    +          expect(subject).to include 'href="https://www.ruby-toolbox.com/search?utf8=✓&q=autolink"'
             end
           end
     
    @@ -182,7 +184,7 @@ RSpec.describe AdvancedTextFormatter 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=✓"'
    +          expect(subject).to include 'href="https://www.ruby-toolbox.com/search?utf8=✓"'
             end
           end
     
    @@ -190,7 +192,7 @@ RSpec.describe AdvancedTextFormatter 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"'
    +          expect(subject).to include 'href="https://www.ruby-toolbox.com/search?utf8=%E2%9C%93&utf81=✓&q=autolink"'
             end
           end
     
    @@ -198,7 +200,7 @@ RSpec.describe AdvancedTextFormatter 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)"'
    +          expect(subject).to include 'href="https://en.wikipedia.org/wiki/Diaspora_(software)"'
             end
           end
     
    @@ -206,7 +208,7 @@ RSpec.describe AdvancedTextFormatter do
             let(:text) { '"https://example.com/"' }
     
             it 'does not match the quotation marks' do
    -          is_expected.to include 'href="https://example.com/"'
    +          expect(subject).to include 'href="https://example.com/"'
             end
           end
     
    @@ -214,19 +216,19 @@ RSpec.describe AdvancedTextFormatter do
             let(:text) { '' }
     
             it 'does not match the angle brackets' do
    -          is_expected.to include 'href="https://example.com/"'
    +          expect(subject).to include 'href="https://example.com/"'
             end
           end
     
           context 'given a URL containing unsafe code (XSS attack, invisible part)' do
    -        let(:text) { %q{http://example.com/blahblahblahblah/a} }
    +        let(:text) { 'http://example.com/blahblahblahblah/a' }
     
             it 'does not include the HTML in the URL' do
    -          is_expected.to include '"http://example.com/blahblahblahblah/a"'
    +          expect(subject).to include '"http://example.com/blahblahblahblah/a"'
             end
     
             it 'does not include a script tag' do
    -          is_expected.to_not include '' }
     
             it 'does not include a script tag' do
    -          is_expected.to_not include '') }
     
    -      it 'returns tag-stripped text' do
    -        expect(subject).to eq 'Hello'
    +      context 'when text contains inline HTML tags' do
    +        let(:status) { Fabricate(:status, account: remote_account, text: 'Lorem ipsum') }
    +
    +        it 'strips the tags' do
    +          expect(subject).to eq 'Lorem ipsum'
    +        end
    +      end
    +
    +      context 'when text contains 

    tags' do + let(:status) { Fabricate(:status, account: remote_account, text: '

    Lorem

    ipsum

    ') } + + it 'inserts a newline' do + expect(subject).to eq "Lorem\nipsum" + end + end + + context 'when text contains a single
    tag' do + let(:status) { Fabricate(:status, account: remote_account, text: 'Lorem
    ipsum') } + + it 'inserts a newline' do + expect(subject).to eq "Lorem\nipsum" + end + end + + context 'when text contains consecutive
    tag' do + let(:status) { Fabricate(:status, account: remote_account, text: 'Lorem


    ipsum') } + + it 'inserts a single newline' do + expect(subject).to eq "Lorem\nipsum" + end + end + + context 'when text contains HTML entity' do + let(:status) { Fabricate(:status, account: remote_account, text: 'Lorem & ipsum ❤') } + + it 'unescapes the entity' do + expect(subject).to eq 'Lorem & ipsum ❤' + end + end + + context 'when text contains ipsum') } + + it 'strips the tag and its contents' do + expect(subject).to eq 'Lorem ipsum' + end + end + + context 'when text contains an HTML comment tags' do + let(:status) { Fabricate(:status, account: remote_account, text: 'Lorem ipsum') } + + it 'strips the comment' do + expect(subject).to eq 'Lorem ipsum' + end end end end diff --git a/spec/lib/search_query_transformer_spec.rb b/spec/lib/search_query_transformer_spec.rb new file mode 100644 index 0000000000..1095334695 --- /dev/null +++ b/spec/lib/search_query_transformer_spec.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe SearchQueryTransformer do + describe 'initialization' do + let(:parser) { SearchQueryParser.new.parse('query') } + + it 'sets attributes' do + transformer = described_class.new.apply(parser) + + expect(transformer.should_clauses.first).to be_a(SearchQueryTransformer::TermClause) + expect(transformer.must_clauses.first).to be_nil + expect(transformer.must_not_clauses.first).to be_nil + expect(transformer.filter_clauses.first).to be_nil + end + end +end diff --git a/spec/lib/settings/extend_spec.rb b/spec/lib/settings/extend_spec.rb deleted file mode 100644 index ea623137b4..0000000000 --- a/spec/lib/settings/extend_spec.rb +++ /dev/null @@ -1,16 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -RSpec.describe Settings::Extend do - class User - include Settings::Extend - end - - describe '#settings' do - it 'sets @settings as an instance of Settings::ScopedSettings' do - user = Fabricate(:user) - expect(user.settings).to be_a Settings::ScopedSettings - end - end -end diff --git a/spec/lib/settings/scoped_settings_spec.rb b/spec/lib/settings/scoped_settings_spec.rb deleted file mode 100644 index 7566685b4a..0000000000 --- a/spec/lib/settings/scoped_settings_spec.rb +++ /dev/null @@ -1,35 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -RSpec.describe Settings::ScopedSettings do - let(:object) { Fabricate(:user) } - let(:scoped_setting) { described_class.new(object) } - let(:val) { 'whatever' } - let(:methods) { %i(auto_play_gif default_sensitive unfollow_modal boost_modal delete_modal reduce_motion system_font_ui noindex theme) } - - describe '.initialize' do - it 'sets @object' do - scoped_setting = described_class.new(object) - expect(scoped_setting.instance_variable_get(:@object)).to be object - end - end - - describe '#method_missing' do - it 'sets scoped_setting.method_name = val' do - methods.each do |key| - scoped_setting.send("#{key}=", val) - expect(scoped_setting.send(key)).to eq val - end - end - end - - describe '#[]= and #[]' do - it 'sets [key] = val' do - methods.each do |key| - scoped_setting[key] = val - expect(scoped_setting[key]).to eq val - end - end - end -end diff --git a/spec/lib/translation_service/deepl_spec.rb b/spec/lib/translation_service/deepl_spec.rb new file mode 100644 index 0000000000..2363f8f139 --- /dev/null +++ b/spec/lib/translation_service/deepl_spec.rb @@ -0,0 +1,82 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe TranslationService::DeepL do + subject(:service) { described_class.new(plan, 'my-api-key') } + + let(:plan) { 'advanced' } + + before do + stub_request(:get, 'https://api.deepl.com/v2/languages?type=source').to_return( + body: '[{"language":"EN","name":"English"},{"language":"UK","name":"Ukrainian"}]' + ) + stub_request(:get, 'https://api.deepl.com/v2/languages?type=target').to_return( + body: '[{"language":"EN-GB","name":"English (British)"},{"language":"ZH","name":"Chinese"}]' + ) + end + + describe '#translate' do + it 'returns translation with specified source language' do + stub_request(:post, 'https://api.deepl.com/v2/translate') + .with(body: 'text=Hasta+la+vista&source_lang=ES&target_lang=en&tag_handling=html') + .to_return(body: '{"translations":[{"detected_source_language":"ES","text":"See you soon"}]}') + + translation = service.translate('Hasta la vista', 'es', 'en') + expect(translation.detected_source_language).to eq 'es' + expect(translation.provider).to eq 'DeepL.com' + expect(translation.text).to eq 'See you soon' + end + + it 'returns translation with auto-detected source language' do + stub_request(:post, 'https://api.deepl.com/v2/translate') + .with(body: 'text=Guten+Tag&source_lang&target_lang=en&tag_handling=html') + .to_return(body: '{"translations":[{"detected_source_language":"DE","text":"Good Morning"}]}') + + translation = service.translate('Guten Tag', nil, 'en') + expect(translation.detected_source_language).to eq 'de' + expect(translation.provider).to eq 'DeepL.com' + expect(translation.text).to eq 'Good Morning' + end + end + + describe '#languages' do + it 'returns source languages' do + expect(service.languages.keys).to eq [nil, 'en', 'uk'] + end + + it 'returns target languages for each source language' do + expect(service.languages['en']).to eq %w(pt en-GB zh) + expect(service.languages['uk']).to eq %w(en pt en-GB zh) + end + + it 'returns target languages for auto-detection' do + expect(service.languages[nil]).to eq %w(en pt en-GB zh) + end + end + + describe '#request' do + before do + stub_request(:any, //) + # rubocop:disable Lint/EmptyBlock + service.send(:request, :get, '/v2/languages') { |res| } + # rubocop:enable Lint/EmptyBlock + end + + it 'uses paid plan base URL' do + expect(a_request(:get, 'https://api.deepl.com/v2/languages')).to have_been_made.once + end + + context 'with free plan' do + let(:plan) { 'free' } + + it 'uses free plan base URL' do + expect(a_request(:get, 'https://api-free.deepl.com/v2/languages')).to have_been_made.once + end + end + + it 'sends API key' do + expect(a_request(:get, 'https://api.deepl.com/v2/languages').with(headers: { Authorization: 'DeepL-Auth-Key my-api-key' })).to have_been_made.once + end + end +end diff --git a/spec/lib/translation_service/libre_translate_spec.rb b/spec/lib/translation_service/libre_translate_spec.rb new file mode 100644 index 0000000000..fbd726a7ea --- /dev/null +++ b/spec/lib/translation_service/libre_translate_spec.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe TranslationService::LibreTranslate do + subject(:service) { described_class.new('https://libretranslate.example.com', 'my-api-key') } + + before do + stub_request(:get, 'https://libretranslate.example.com/languages').to_return( + body: '[{"code": "en","name": "English","targets": ["de","en","es"]},{"code": "da","name": "Danish","targets": ["en","pt"]}]' + ) + end + + describe '#languages' do + subject(:languages) { service.languages } + + it 'returns source languages' do + expect(languages.keys).to eq ['en', 'da', nil] + end + + it 'returns target languages for each source language' do + expect(languages['en']).to eq %w(de es) + expect(languages['da']).to eq %w(en pt) + end + + it 'returns target languages for auto-detected language' do + expect(languages[nil]).to eq %w(de en es pt) + end + end + + describe '#translate' do + it 'returns translation with specified source language' do + stub_request(:post, 'https://libretranslate.example.com/translate') + .with(body: '{"q":"Hasta la vista","source":"es","target":"en","format":"html","api_key":"my-api-key"}') + .to_return(body: '{"translatedText": "See you"}') + + translation = service.translate('Hasta la vista', 'es', 'en') + expect(translation.detected_source_language).to eq 'es' + expect(translation.provider).to eq 'LibreTranslate' + expect(translation.text).to eq 'See you' + end + + it 'returns translation with auto-detected source language' do + stub_request(:post, 'https://libretranslate.example.com/translate') + .with(body: '{"q":"Guten Morgen","source":"auto","target":"en","format":"html","api_key":"my-api-key"}') + .to_return(body: '{"detectedLanguage":{"confidence":92,"language":"de"},"translatedText":"Good morning"}') + + translation = service.translate('Guten Morgen', nil, 'en') + expect(translation.detected_source_language).to be_nil + expect(translation.provider).to eq 'LibreTranslate' + expect(translation.text).to eq 'Good morning' + end + end +end diff --git a/spec/lib/user_settings_decorator_spec.rb b/spec/lib/user_settings_decorator_spec.rb deleted file mode 100644 index 3b9b7ee2b2..0000000000 --- a/spec/lib/user_settings_decorator_spec.rb +++ /dev/null @@ -1,84 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -describe UserSettingsDecorator do - describe 'update' do - let(:user) { Fabricate(:user) } - let(:settings) { described_class.new(user) } - - it 'updates the user settings value for email notifications' do - values = { 'notification_emails' => { 'follow' => '1' } } - - settings.update(values) - expect(user.settings['notification_emails']['follow']).to be true - end - - it 'updates the user settings value for interactions' do - values = { 'interactions' => { 'must_be_follower' => '0' } } - - settings.update(values) - expect(user.settings['interactions']['must_be_follower']).to be false - end - - it 'updates the user settings value for privacy' do - values = { 'setting_default_privacy' => 'public' } - - settings.update(values) - expect(user.settings['default_privacy']).to eq 'public' - end - - it 'updates the user settings value for sensitive' do - values = { 'setting_default_sensitive' => '1' } - - settings.update(values) - expect(user.settings['default_sensitive']).to be true - end - - it 'updates the user settings value for unfollow modal' do - values = { 'setting_unfollow_modal' => '0' } - - settings.update(values) - expect(user.settings['unfollow_modal']).to be false - end - - it 'updates the user settings value for boost modal' do - values = { 'setting_boost_modal' => '1' } - - settings.update(values) - expect(user.settings['boost_modal']).to be true - end - - it 'updates the user settings value for delete toot modal' do - values = { 'setting_delete_modal' => '0' } - - settings.update(values) - expect(user.settings['delete_modal']).to be false - end - - it 'updates the user settings value for gif auto play' do - values = { 'setting_auto_play_gif' => '0' } - - settings.update(values) - expect(user.settings['auto_play_gif']).to be false - end - - it 'updates the user settings value for system font in UI' do - values = { 'setting_system_font_ui' => '0' } - - settings.update(values) - expect(user.settings['system_font_ui']).to be false - end - - it 'decoerces setting values before applying' do - values = { - 'setting_delete_modal' => 'false', - 'setting_boost_modal' => 'true', - } - - settings.update(values) - expect(user.settings['delete_modal']).to be false - expect(user.settings['boost_modal']).to be true - end - end -end diff --git a/spec/mailers/user_mailer_spec.rb b/spec/mailers/user_mailer_spec.rb index 9c22f60f1d..30824e7b4d 100644 --- a/spec/mailers/user_mailer_spec.rb +++ b/spec/mailers/user_mailer_spec.rb @@ -94,4 +94,52 @@ describe UserMailer, type: :mailer do expect(mail.body.encoded).to include strike.text end end + + describe 'webauthn_credential_deleted' do + let(:credential) { Fabricate(:webauthn_credential, user_id: receiver.id) } + let(:mail) { UserMailer.webauthn_credential_deleted(receiver, credential) } + + it 'renders webauthn credential deleted notification' do + receiver.update!(locale: nil) + expect(mail.body.encoded).to include I18n.t('devise.mailer.webauthn_credential.deleted.title') + end + + include_examples 'localized subject', + 'devise.mailer.webauthn_credential.deleted.subject' + end + + describe 'suspicious_sign_in' do + let(:ip) { '192.168.0.1' } + let(:agent) { 'NCSA_Mosaic/2.0 (Windows 3.1)' } + let(:timestamp) { Time.now.utc } + let(:mail) { UserMailer.suspicious_sign_in(receiver, ip, agent, timestamp) } + + it 'renders suspicious sign in notification' do + receiver.update!(locale: nil) + expect(mail.body.encoded).to include I18n.t('user_mailer.suspicious_sign_in.explanation') + end + + include_examples 'localized subject', + 'user_mailer.suspicious_sign_in.subject' + end + + describe 'appeal_approved' do + let(:appeal) { Fabricate(:appeal, account: receiver.account, approved_at: Time.now.utc) } + let(:mail) { UserMailer.appeal_approved(receiver, appeal) } + + it 'renders appeal_approved notification' do + expect(mail.subject).to eq I18n.t('user_mailer.appeal_approved.subject', date: I18n.l(appeal.created_at)) + expect(mail.body.encoded).to include I18n.t('user_mailer.appeal_approved.title') + end + end + + describe 'appeal_rejected' do + let(:appeal) { Fabricate(:appeal, account: receiver.account, rejected_at: Time.now.utc) } + let(:mail) { UserMailer.appeal_rejected(receiver, appeal) } + + it 'renders appeal_rejected notification' do + expect(mail.subject).to eq I18n.t('user_mailer.appeal_rejected.subject', date: I18n.l(appeal.created_at)) + expect(mail.body.encoded).to include I18n.t('user_mailer.appeal_rejected.title') + end + end end diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index 1e5a80963f..ae4e5ee321 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -704,12 +704,6 @@ RSpec.describe Account, type: :model do end describe 'validations' do - it 'has a valid fabricator' do - account = Fabricate.build(:account) - account.valid? - expect(account).to be_valid - end - it 'is invalid without a username' do account = Fabricate.build(:account, username: nil) account.valid? diff --git a/spec/models/account_warning_preset_spec.rb b/spec/models/account_warning_preset_spec.rb new file mode 100644 index 0000000000..f171df7c97 --- /dev/null +++ b/spec/models/account_warning_preset_spec.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe AccountWarningPreset do + describe 'alphabetical' do + let(:first) { Fabricate(:account_warning_preset, title: 'aaa', text: 'aaa') } + let(:second) { Fabricate(:account_warning_preset, title: 'bbb', text: 'aaa') } + let(:third) { Fabricate(:account_warning_preset, title: 'bbb', text: 'bbb') } + + it 'returns records in order of title and text' do + results = described_class.alphabetic + + expect(results).to eq([first, second, third]) + end + end +end diff --git a/spec/models/admin/appeal_filter_spec.rb b/spec/models/admin/appeal_filter_spec.rb new file mode 100644 index 0000000000..e840bc3bc1 --- /dev/null +++ b/spec/models/admin/appeal_filter_spec.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::AppealFilter do + describe '#results' do + let(:approved_appeal) { Fabricate(:appeal, approved_at: 10.days.ago) } + let(:not_approved_appeal) { Fabricate(:appeal, approved_at: nil) } + + it 'returns filtered appeals' do + filter = described_class.new(status: 'approved') + + expect(filter.results).to eq([approved_appeal]) + end + end +end diff --git a/spec/models/appeal_spec.rb b/spec/models/appeal_spec.rb index 6aa013aba9..12373a9494 100644 --- a/spec/models/appeal_spec.rb +++ b/spec/models/appeal_spec.rb @@ -2,6 +2,37 @@ require 'rails_helper' -RSpec.describe Appeal, type: :model do - pending "add some examples to (or delete) #{__FILE__}" +describe Appeal do + describe 'scopes' do + describe 'approved' do + let(:approved_appeal) { Fabricate(:appeal, approved_at: 10.days.ago) } + let(:not_approved_appeal) { Fabricate(:appeal, approved_at: nil) } + + it 'finds the correct records' do + results = described_class.approved + expect(results).to eq([approved_appeal]) + end + end + + describe 'rejected' do + let(:rejected_appeal) { Fabricate(:appeal, rejected_at: 10.days.ago) } + let(:not_rejected_appeal) { Fabricate(:appeal, rejected_at: nil) } + + it 'finds the correct records' do + results = described_class.rejected + expect(results).to eq([rejected_appeal]) + end + end + + describe 'pending' do + let(:approved_appeal) { Fabricate(:appeal, approved_at: 10.days.ago) } + let(:rejected_appeal) { Fabricate(:appeal, rejected_at: 10.days.ago) } + let(:pending_appeal) { Fabricate(:appeal, rejected_at: nil, approved_at: nil) } + + it 'finds the correct records' do + results = described_class.pending + expect(results).to eq([pending_appeal]) + end + end + end end diff --git a/spec/models/block_spec.rb b/spec/models/block_spec.rb index 64c39fce60..6e31786d04 100644 --- a/spec/models/block_spec.rb +++ b/spec/models/block_spec.rb @@ -4,11 +4,6 @@ require 'rails_helper' RSpec.describe Block, type: :model do describe 'validations' do - it 'has a valid fabricator' do - block = Fabricate.build(:block) - expect(block).to be_valid - end - it 'is invalid without an account' do block = Fabricate.build(:block, account: nil) block.valid? diff --git a/spec/models/concerns/account_interactions_spec.rb b/spec/models/concerns/account_interactions_spec.rb index 863b025afe..32e08d5f7d 100644 --- a/spec/models/concerns/account_interactions_spec.rb +++ b/spec/models/concerns/account_interactions_spec.rb @@ -23,7 +23,7 @@ describe AccountInteractions do context 'account with Follow but with reblogs disabled' do it 'returns { target_account_id => { reblogs: false } }' do Fabricate(:follow, account: account, target_account: target_account, show_reblogs: false) - is_expected.to eq(target_account_id => { reblogs: false, notify: false, languages: nil }) + expect(subject).to eq(target_account_id => { reblogs: false, notify: false, languages: nil }) end end @@ -690,41 +690,4 @@ describe AccountInteractions do end end end - - describe 'ignoring reblogs from an account' do - before do - @me = Fabricate(:account, username: 'Me') - @you = Fabricate(:account, username: 'You') - end - - context 'with the reblogs option unspecified' do - before do - @me.follow!(@you) - end - - it 'defaults to showing reblogs' do - expect(@me.muting_reblogs?(@you)).to be(false) - end - end - - context 'with the reblogs option set to false' do - before do - @me.follow!(@you, reblogs: false) - end - - it 'does mute reblogs' do - expect(@me.muting_reblogs?(@you)).to be(true) - end - end - - context 'with the reblogs option set to true' do - before do - @me.follow!(@you, reblogs: true) - end - - it 'does not mute reblogs' do - expect(@me.muting_reblogs?(@you)).to be(false) - end - end - end end diff --git a/spec/models/custom_emoji_category_spec.rb b/spec/models/custom_emoji_category_spec.rb index 74881b26c2..30de07bd81 100644 --- a/spec/models/custom_emoji_category_spec.rb +++ b/spec/models/custom_emoji_category_spec.rb @@ -2,6 +2,13 @@ require 'rails_helper' -RSpec.describe CustomEmojiCategory, type: :model do - pending "add some examples to (or delete) #{__FILE__}" +describe CustomEmojiCategory do + describe 'validations' do + it 'validates name presence' do + record = described_class.new(name: nil) + + expect(record).to_not be_valid + expect(record).to model_have_error_on_field(:name) + end + end end diff --git a/spec/models/domain_allow_spec.rb b/spec/models/domain_allow_spec.rb index 18cf5fe4c7..49e16376ea 100644 --- a/spec/models/domain_allow_spec.rb +++ b/spec/models/domain_allow_spec.rb @@ -2,6 +2,17 @@ require 'rails_helper' -RSpec.describe DomainAllow, type: :model do - pending "add some examples to (or delete) #{__FILE__}" +describe DomainAllow do + describe 'scopes' do + describe 'matches_domain' do + let(:domain) { Fabricate(:domain_allow, domain: 'example.com') } + let(:other_domain) { Fabricate(:domain_allow, domain: 'example.biz') } + + it 'returns the correct records' do + results = described_class.matches_domain('example.com') + + expect(results).to eq([domain]) + end + end + end end diff --git a/spec/models/domain_block_spec.rb b/spec/models/domain_block_spec.rb index 6a5925b896..9839ee9d4e 100644 --- a/spec/models/domain_block_spec.rb +++ b/spec/models/domain_block_spec.rb @@ -4,11 +4,6 @@ require 'rails_helper' RSpec.describe DomainBlock, type: :model do describe 'validations' do - it 'has a valid fabricator' do - domain_block = Fabricate.build(:domain_block) - expect(domain_block).to be_valid - end - it 'is invalid without a domain' do domain_block = Fabricate.build(:domain_block, domain: nil) domain_block.valid? diff --git a/spec/models/email_domain_block_spec.rb b/spec/models/email_domain_block_spec.rb index 01a7a0f0ed..3321ffc819 100644 --- a/spec/models/email_domain_block_spec.rb +++ b/spec/models/email_domain_block_spec.rb @@ -3,13 +3,6 @@ require 'rails_helper' RSpec.describe EmailDomainBlock, type: :model do - describe 'validations' do - it 'has a valid fabricator' do - email_domain_block = Fabricate.build(:email_domain_block) - expect(email_domain_block).to be_valid - end - end - describe 'block?' do let(:input) { nil } diff --git a/spec/models/extended_description_spec.rb b/spec/models/extended_description_spec.rb new file mode 100644 index 0000000000..ecc27c0f6d --- /dev/null +++ b/spec/models/extended_description_spec.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe ExtendedDescription do + describe '.current' do + context 'with the default values' do + it 'makes a new instance' do + record = described_class.current + + expect(record.text).to be_nil + expect(record.updated_at).to be_nil + end + end + + context 'with a custom setting value' do + before do + setting = instance_double(Setting, value: 'Extended text', updated_at: 10.days.ago) + allow(Setting).to receive(:find_by).with(var: 'site_extended_description').and_return(setting) + end + + it 'has the privacy text' do + record = described_class.current + + expect(record.text).to eq('Extended text') + end + end + end +end diff --git a/spec/models/follow_spec.rb b/spec/models/follow_spec.rb index f49d585329..a9a9af88ad 100644 --- a/spec/models/follow_spec.rb +++ b/spec/models/follow_spec.rb @@ -9,11 +9,6 @@ RSpec.describe Follow, type: :model do describe 'validations' do subject { Follow.new(account: alice, target_account: bob, rate_limit: true) } - it 'has a valid fabricator' do - follow = Fabricate.build(:follow) - expect(follow).to be_valid - end - it 'is invalid without an account' do follow = Fabricate.build(:follow, account: nil) follow.valid? diff --git a/spec/models/form/admin_settings_spec.rb b/spec/models/form/admin_settings_spec.rb new file mode 100644 index 0000000000..0dc2d881ad --- /dev/null +++ b/spec/models/form/admin_settings_spec.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Form::AdminSettings do + describe 'validations' do + describe 'site_contact_username' do + context 'with no accounts' do + it 'is not valid' do + setting = described_class.new(site_contact_username: 'Test') + setting.valid? + + expect(setting).to model_have_error_on_field(:site_contact_username) + end + end + + context 'with an account' do + before { Fabricate(:account, username: 'Glorp') } + + it 'is not valid when account doesnt match' do + setting = described_class.new(site_contact_username: 'Test') + setting.valid? + + expect(setting).to model_have_error_on_field(:site_contact_username) + end + + it 'is valid when account matches' do + setting = described_class.new(site_contact_username: 'Glorp') + setting.valid? + + expect(setting).to_not model_have_error_on_field(:site_contact_username) + end + end + end + end +end diff --git a/spec/models/form/status_filter_batch_action_spec.rb b/spec/models/form/status_filter_batch_action_spec.rb new file mode 100644 index 0000000000..f06a11cc8b --- /dev/null +++ b/spec/models/form/status_filter_batch_action_spec.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Form::StatusFilterBatchAction do + describe '#save!' do + it 'does nothing if status_filter_ids is empty' do + batch_action = described_class.new(status_filter_ids: []) + + expect(batch_action.save!).to be_nil + end + end +end diff --git a/spec/models/import_spec.rb b/spec/models/import_spec.rb index 81c75a9641..1c84744138 100644 --- a/spec/models/import_spec.rb +++ b/spec/models/import_spec.rb @@ -23,6 +23,11 @@ RSpec.describe Import, type: :model do expect(import).to model_have_error_on_field(:data) end + it 'is invalid with malformed data' do + import = Import.create(account: account, type: type, data: StringIO.new('\"test')) + expect(import).to model_have_error_on_field(:data) + end + it 'is invalid with too many rows in data' do import = Import.create(account: account, type: type, data: StringIO.new("foo@bar.com\n" * (ImportService::ROWS_PROCESSING_LIMIT + 10))) expect(import).to model_have_error_on_field(:data) diff --git a/spec/models/ip_block_spec.rb b/spec/models/ip_block_spec.rb index 4c4028576a..ed58826672 100644 --- a/spec/models/ip_block_spec.rb +++ b/spec/models/ip_block_spec.rb @@ -2,6 +2,14 @@ require 'rails_helper' -RSpec.describe IpBlock, type: :model do - pending "add some examples to (or delete) #{__FILE__}" +describe IpBlock do + describe 'to_log_human_identifier' do + let(:ip_block) { described_class.new(ip: '192.168.0.1') } + + it 'combines the IP and prefix into a string' do + result = ip_block.to_log_human_identifier + + expect(result).to eq('192.168.0.1/32') + end + end end diff --git a/spec/models/marker_spec.rb b/spec/models/marker_spec.rb index e8561c4c63..51dd584388 100644 --- a/spec/models/marker_spec.rb +++ b/spec/models/marker_spec.rb @@ -2,6 +2,15 @@ require 'rails_helper' -RSpec.describe Marker, type: :model do - pending "add some examples to (or delete) #{__FILE__}" +describe Marker do + describe 'validations' do + describe 'timeline' do + it 'must be included in valid list' do + record = described_class.new(timeline: 'not real timeline') + + expect(record).to_not be_valid + expect(record).to model_have_error_on_field(:timeline) + end + end + end end diff --git a/spec/models/mention_spec.rb b/spec/models/mention_spec.rb index 3de2b4a072..044bb80cf6 100644 --- a/spec/models/mention_spec.rb +++ b/spec/models/mention_spec.rb @@ -4,11 +4,6 @@ require 'rails_helper' RSpec.describe Mention, type: :model do describe 'validations' do - it 'has a valid fabricator' do - mention = Fabricate.build(:mention) - expect(mention).to be_valid - end - it 'is invalid without an account' do mention = Fabricate.build(:mention, account: nil) mention.valid? diff --git a/spec/models/one_time_key_spec.rb b/spec/models/one_time_key_spec.rb index 2a5fe8a9d9..6ff7ffc5c1 100644 --- a/spec/models/one_time_key_spec.rb +++ b/spec/models/one_time_key_spec.rb @@ -2,5 +2,22 @@ require 'rails_helper' -RSpec.describe OneTimeKey, type: :model do +describe OneTimeKey do + describe 'validations' do + context 'with an invalid signature' do + let(:one_time_key) { Fabricate.build(:one_time_key, signature: 'wrong!') } + + it 'is invalid' do + expect(one_time_key).to_not be_valid + end + end + + context 'with an invalid key' do + let(:one_time_key) { Fabricate.build(:one_time_key, key: 'wrong!') } + + it 'is invalid' do + expect(one_time_key).to_not be_valid + end + end + end end diff --git a/spec/models/poll_spec.rb b/spec/models/poll_spec.rb index 474399bf68..8ae04ca41f 100644 --- a/spec/models/poll_spec.rb +++ b/spec/models/poll_spec.rb @@ -2,6 +2,31 @@ require 'rails_helper' -RSpec.describe Poll, type: :model do - pending "add some examples to (or delete) #{__FILE__}" +describe Poll do + describe 'scopes' do + let(:status) { Fabricate(:status) } + let(:attached_poll) { Fabricate(:poll, status: status) } + let(:not_attached_poll) do + Fabricate(:poll).tap do |poll| + poll.status = nil + poll.save(validate: false) + end + end + + describe 'attached' do + it 'finds the correct records' do + results = described_class.attached + + expect(results).to eq([attached_poll]) + end + end + + describe 'unattached' do + it 'finds the correct records' do + results = described_class.unattached + + expect(results).to eq([not_attached_poll]) + end + end + end end diff --git a/spec/models/preview_card_provider_spec.rb b/spec/models/preview_card_provider_spec.rb new file mode 100644 index 0000000000..7425b93946 --- /dev/null +++ b/spec/models/preview_card_provider_spec.rb @@ -0,0 +1,42 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe PreviewCardProvider do + describe 'scopes' do + let(:trendable_and_reviewed) { Fabricate(:preview_card_provider, trendable: true, reviewed_at: 5.days.ago) } + let(:not_trendable_and_not_reviewed) { Fabricate(:preview_card_provider, trendable: false, reviewed_at: nil) } + + describe 'trendable' do + it 'returns the relevant records' do + results = described_class.trendable + + expect(results).to eq([trendable_and_reviewed]) + end + end + + describe 'not_trendable' do + it 'returns the relevant records' do + results = described_class.not_trendable + + expect(results).to eq([not_trendable_and_not_reviewed]) + end + end + + describe 'reviewed' do + it 'returns the relevant records' do + results = described_class.reviewed + + expect(results).to eq([trendable_and_reviewed]) + end + end + + describe 'pending_review' do + it 'returns the relevant records' do + results = described_class.pending_review + + expect(results).to eq([not_trendable_and_not_reviewed]) + end + end + end +end diff --git a/spec/models/privacy_policy_spec.rb b/spec/models/privacy_policy_spec.rb new file mode 100644 index 0000000000..0d74713755 --- /dev/null +++ b/spec/models/privacy_policy_spec.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe PrivacyPolicy do + describe '.current' do + context 'with the default values' do + it 'has the privacy text' do + policy = described_class.current + + expect(policy.text).to eq(PrivacyPolicy::DEFAULT_PRIVACY_POLICY) + end + end + + context 'with a custom setting value' do + before do + terms_setting = instance_double(Setting, value: 'Terms text', updated_at: 10.days.ago) + allow(Setting).to receive(:find_by).with(var: 'site_terms').and_return(terms_setting) + end + + it 'has the privacy text' do + policy = described_class.current + + expect(policy.text).to eq('Terms text') + end + end + end +end diff --git a/spec/models/public_feed_spec.rb b/spec/models/public_feed_spec.rb index f607f10ec7..d31aba084d 100644 --- a/spec/models/public_feed_spec.rb +++ b/spec/models/public_feed_spec.rb @@ -64,7 +64,7 @@ RSpec.describe PublicFeed, type: :model do end it 'does not include local-only statuses' do - expect(subject).not_to include(local_only_status.id) + expect(subject).to_not include(local_only_status.id) end end @@ -80,12 +80,14 @@ RSpec.describe PublicFeed, type: :model do end it 'does not include local-only statuses' do - expect(subject).not_to include(local_only_status.id) + expect(subject).to_not include(local_only_status.id) end end end context 'without local_only option but allow_local_only' do + subject { described_class.new(viewer, allow_local_only: true).get(20).map(&:id) } + let(:viewer) { nil } let!(:local_account) { Fabricate(:account, domain: nil) } @@ -94,8 +96,6 @@ RSpec.describe PublicFeed, type: :model do let!(:remote_status) { Fabricate(:status, account: remote_account) } let!(:local_only_status) { Fabricate(:status, account: local_account, local_only: true) } - subject { described_class.new(viewer, allow_local_only: true).get(20).map(&:id) } - context 'without a viewer' do let(:viewer) { nil } @@ -108,7 +108,7 @@ RSpec.describe PublicFeed, type: :model do end it 'does not include local-only statuses' do - expect(subject).not_to include(local_only_status.id) + expect(subject).to_not include(local_only_status.id) end end @@ -147,7 +147,7 @@ RSpec.describe PublicFeed, type: :model do end it 'does not include local-only statuses' do - expect(subject).not_to include(local_only_status.id) + expect(subject).to_not include(local_only_status.id) end end diff --git a/spec/models/report_spec.rb b/spec/models/report_spec.rb index d5d40a34f9..20a048c334 100644 --- a/spec/models/report_spec.rb +++ b/spec/models/report_spec.rb @@ -121,12 +121,6 @@ describe Report do end describe 'validations' do - it 'has a valid fabricator' do - report = Fabricate(:report) - report.valid? - expect(report).to be_valid - end - it 'is invalid if comment is longer than 1000 characters' do report = Fabricate.build(:report, comment: Faker::Lorem.characters(number: 1001)) report.valid? diff --git a/spec/models/rule_spec.rb b/spec/models/rule_spec.rb index d5ec13ddf8..c9b9c55028 100644 --- a/spec/models/rule_spec.rb +++ b/spec/models/rule_spec.rb @@ -2,6 +2,18 @@ require 'rails_helper' -RSpec.describe Rule, type: :model do - pending "add some examples to (or delete) #{__FILE__}" +describe Rule do + describe 'scopes' do + describe 'ordered' do + let(:deleted_rule) { Fabricate(:rule, deleted_at: 10.days.ago) } + let(:first_rule) { Fabricate(:rule, deleted_at: nil, priority: 1) } + let(:last_rule) { Fabricate(:rule, deleted_at: nil, priority: 10) } + + it 'finds the correct records' do + results = described_class.ordered + + expect(results).to eq([first_rule, last_rule]) + end + end + end end diff --git a/spec/models/status_edit_spec.rb b/spec/models/status_edit_spec.rb index 0b9fa70873..2d33514522 100644 --- a/spec/models/status_edit_spec.rb +++ b/spec/models/status_edit_spec.rb @@ -2,6 +2,12 @@ require 'rails_helper' -RSpec.describe StatusEdit, type: :model do - pending "add some examples to (or delete) #{__FILE__}" +describe StatusEdit do + describe '#reblog?' do + it 'returns false' do + record = described_class.new + + expect(record).to_not be_a_reblog + end + end end diff --git a/spec/models/status_spec.rb b/spec/models/status_spec.rb index 7022c5f006..04e5c26af0 100644 --- a/spec/models/status_spec.rb +++ b/spec/models/status_spec.rb @@ -206,14 +206,14 @@ RSpec.describe Status, type: :model do end describe 'on create' do + subject { Status.new } + let(:local_account) { Fabricate(:account, username: 'local', domain: nil) } let(:remote_account) { Fabricate(:account, username: 'remote', domain: 'example.com') } - subject { Status.new } - describe 'on a status that ends with the local-only emoji' do before do - subject.text = 'A toot ' + subject.local_only_emoji + subject.text = "A toot #{subject.local_only_emoji}" end context 'if the status originates from this instance' do @@ -291,52 +291,52 @@ RSpec.describe Status, type: :model do end describe '.as_direct_timeline' do + subject(:results) { Status.as_direct_timeline(account) } + let(:account) { Fabricate(:account) } let(:followed) { Fabricate(:account) } let(:not_followed) { Fabricate(:account) } + let!(:self_public_status) { Fabricate(:status, account: account, visibility: :public) } + let!(:self_direct_status) { Fabricate(:status, account: account, visibility: :direct) } + let!(:followed_public_status) { Fabricate(:status, account: followed, visibility: :public) } + let!(:followed_direct_status) { Fabricate(:status, account: followed, visibility: :direct) } + let!(:not_followed_direct_status) { Fabricate(:status, account: not_followed, visibility: :direct) } + before do - Fabricate(:follow, account: account, target_account: followed) - - @self_public_status = Fabricate(:status, account: account, visibility: :public) - @self_direct_status = Fabricate(:status, account: account, visibility: :direct) - @followed_public_status = Fabricate(:status, account: followed, visibility: :public) - @followed_direct_status = Fabricate(:status, account: followed, visibility: :direct) - @not_followed_direct_status = Fabricate(:status, account: not_followed, visibility: :direct) - - @results = Status.as_direct_timeline(account) + account.follow!(followed) end it 'does not include public statuses from self' do - expect(@results).to_not include(@self_public_status) + expect(results).to_not include(self_public_status) end it 'includes direct statuses from self' do - expect(@results).to include(@self_direct_status) + expect(results).to include(self_direct_status) end it 'does not include public statuses from followed' do - expect(@results).to_not include(@followed_public_status) + expect(results).to_not include(followed_public_status) end it 'does not include direct statuses not mentioning recipient from followed' do - expect(@results).to_not include(@followed_direct_status) + expect(results).to_not include(followed_direct_status) end it 'does not include direct statuses not mentioning recipient from non-followed' do - expect(@results).to_not include(@not_followed_direct_status) + expect(results).to_not include(not_followed_direct_status) end it 'includes direct statuses mentioning recipient from followed' do - Fabricate(:mention, account: account, status: @followed_direct_status) + Fabricate(:mention, account: account, status: followed_direct_status) results2 = Status.as_direct_timeline(account) - expect(results2).to include(@followed_direct_status) + expect(results2).to include(followed_direct_status) end it 'includes direct statuses mentioning recipient from non-followed' do - Fabricate(:mention, account: account, status: @not_followed_direct_status) + Fabricate(:mention, account: account, status: not_followed_direct_status) results2 = Status.as_direct_timeline(account) - expect(results2).to include(@not_followed_direct_status) + expect(results2).to include(not_followed_direct_status) end end diff --git a/spec/models/tag_feed_spec.rb b/spec/models/tag_feed_spec.rb index b961481c84..d8683b86f1 100644 --- a/spec/models/tag_feed_spec.rb +++ b/spec/models/tag_feed_spec.rb @@ -67,7 +67,7 @@ describe TagFeed, type: :service do expect(results).to include(status) end - context 'on a local-only status' do + context 'when the feed contains a local-only status' do let!(:status) { Fabricate(:status, tags: [tag1], local_only: true) } it 'does not show local-only statuses without a viewer' do diff --git a/spec/models/trends/tags_spec.rb b/spec/models/trends/tags_spec.rb index a9473e15c4..09ac918d00 100644 --- a/spec/models/trends/tags_spec.rb +++ b/spec/models/trends/tags_spec.rb @@ -24,7 +24,9 @@ RSpec.describe Trends::Tags do end describe '#query' do - pending + it 'returns a composable query scope' do + expect(subject.query).to be_a Trends::Query + end end describe '#refresh' do diff --git a/spec/models/user_settings/namespace_spec.rb b/spec/models/user_settings/namespace_spec.rb new file mode 100644 index 0000000000..ae2fa7b482 --- /dev/null +++ b/spec/models/user_settings/namespace_spec.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe UserSettings::Namespace do + subject { described_class.new(name) } + + let(:name) { :foo } + + describe '#setting' do + before do + subject.setting :bar, default: 'baz' + end + + it 'adds setting to definitions' do + expect(subject.definitions[:'foo.bar']).to have_attributes(name: :bar, namespace: :foo, default_value: 'baz') + end + end + + describe '#definitions' do + it 'returns a hash' do + expect(subject.definitions).to be_a Hash + end + end +end diff --git a/spec/models/user_settings/setting_spec.rb b/spec/models/user_settings/setting_spec.rb new file mode 100644 index 0000000000..9884ae4f89 --- /dev/null +++ b/spec/models/user_settings/setting_spec.rb @@ -0,0 +1,106 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe UserSettings::Setting do + subject { described_class.new(name, options) } + + let(:name) { :foo } + let(:options) { { default: default, namespace: namespace } } + let(:default) { false } + let(:namespace) { nil } + + describe '#default_value' do + context 'when default value is a primitive value' do + it 'returns default value' do + expect(subject.default_value).to eq default + end + end + + context 'when default value is a proc' do + let(:default) { -> { 'bar' } } + + it 'returns value from proc' do + expect(subject.default_value).to eq 'bar' + end + end + end + + describe '#type' do + it 'returns a type' do + expect(subject.type).to be_a ActiveModel::Type::Value + end + + context 'when default value is a boolean' do + let(:default) { false } + + it 'returns boolean' do + expect(subject.type).to be_a ActiveModel::Type::Boolean + end + end + + context 'when default value is a string' do + let(:default) { '' } + + it 'returns string' do + expect(subject.type).to be_a ActiveModel::Type::String + end + end + + context 'when default value is a lambda returning a boolean' do + let(:default) { -> { false } } + + it 'returns boolean' do + expect(subject.type).to be_a ActiveModel::Type::Boolean + end + end + + context 'when default value is a lambda returning a string' do + let(:default) { -> { '' } } + + it 'returns boolean' do + expect(subject.type).to be_a ActiveModel::Type::String + end + end + end + + describe '#type_cast' do + context 'when default value is a boolean' do + let(:default) { false } + + it 'returns boolean' do + expect(subject.type_cast('1')).to be true + end + end + + context 'when default value is a string' do + let(:default) { '' } + + it 'returns string' do + expect(subject.type_cast(1)).to eq '1' + end + end + end + + describe '#to_a' do + it 'returns an array' do + expect(subject.to_a).to eq [name, default] + end + end + + describe '#key' do + context 'when there is no namespace' do + it 'returnsn a symbol' do + expect(subject.key).to eq :foo + end + end + + context 'when there is a namespace' do + let(:namespace) { :bar } + + it 'returns a symbol' do + expect(subject.key).to eq :'bar.foo' + end + end + end +end diff --git a/spec/models/user_settings_spec.rb b/spec/models/user_settings_spec.rb new file mode 100644 index 0000000000..f0e4272fd9 --- /dev/null +++ b/spec/models/user_settings_spec.rb @@ -0,0 +1,110 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe UserSettings do + subject { described_class.new(json) } + + let(:json) { {} } + + describe '#[]' do + context 'when setting is not set' do + it 'returns default value' do + expect(subject[:always_send_emails]).to be false + end + end + + context 'when setting is set' do + let(:json) { { default_language: 'fr' } } + + it 'returns value' do + expect(subject[:default_language]).to eq 'fr' + end + end + + context 'when setting was not defined' do + it 'raises error' do + expect { subject[:foo] }.to raise_error UserSettings::KeyError + end + end + end + + describe '#[]=' do + context 'when value matches type' do + before do + subject[:always_send_emails] = true + end + + it 'updates value' do + expect(subject[:always_send_emails]).to be true + end + end + + context 'when value needs to be type-cast' do + before do + subject[:always_send_emails] = '1' + end + + it 'updates value with a type-cast' do + expect(subject[:always_send_emails]).to be true + end + end + end + + describe '#update' do + before do + subject.update(always_send_emails: true, default_language: 'fr', default_privacy: nil) + end + + it 'updates values' do + expect(subject[:always_send_emails]).to be true + expect(subject[:default_language]).to eq 'fr' + end + + it 'does not set values that are nil' do + expect(subject.as_json).to_not include(default_privacy: nil) + end + end + + describe '#as_json' do + let(:json) { { default_language: 'fr' } } + + it 'returns hash' do + expect(subject.as_json).to eq json + end + end + + describe '.keys' do + it 'returns an array' do + expect(described_class.keys).to be_a Array + end + end + + describe '.definition_for' do + context 'when key is defined' do + it 'returns a setting' do + expect(described_class.definition_for(:always_send_emails)).to be_a UserSettings::Setting + end + end + + context 'when key is not defined' do + it 'returns nil' do + expect(described_class.definition_for(:foo)).to be_nil + end + end + end + + describe '.definition_for?' do + context 'when key is defined' do + it 'returns true' do + expect(described_class.definition_for?(:always_send_emails)).to be true + end + end + + context 'when key is not defined' do + it 'returns false' do + expect(described_class.definition_for?(:foo)).to be false + end + end + end +end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 3e7b59f170..ab883927a5 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -313,9 +313,9 @@ RSpec.describe User, type: :model do end describe 'settings' do - it 'is instance of Settings::ScopedSettings' do + it 'is instance of UserSettings' do user = Fabricate(:user) - expect(user.settings).to be_a Settings::ScopedSettings + expect(user.settings).to be_a UserSettings end end @@ -379,16 +379,6 @@ RSpec.describe User, type: :model do end end - it_behaves_like 'Settings-extended' do - def create! - User.create!(account: Fabricate(:account, user: nil), email: 'foo@mastodon.space', password: 'abcd1234', agreement: true) - end - - def fabricate - Fabricate(:user) - end - end - describe 'token_for_app' do let(:user) { Fabricate(:user) } let(:app) { Fabricate(:application, owner: user) } diff --git a/spec/policies/account_policy_spec.rb b/spec/policies/account_policy_spec.rb index 0f23fd97e2..d961532332 100644 --- a/spec/policies/account_policy_spec.rb +++ b/spec/policies/account_policy_spec.rb @@ -116,4 +116,44 @@ RSpec.describe AccountPolicy do end end end + + permissions :review? do + context 'admin' do + it 'permits' do + expect(subject).to permit(admin) + end + end + + context 'not admin' do + it 'denies' do + expect(subject).to_not permit(john) + end + end + end + + permissions :destroy? do + context 'admin' do + context 'with a temporarily suspended account' do + before { allow(alice).to receive(:suspended_temporarily?).and_return(true) } + + it 'permits' do + expect(subject).to permit(admin, alice) + end + end + + context 'with a not temporarily suspended account' do + before { allow(alice).to receive(:suspended_temporarily?).and_return(false) } + + it 'denies' do + expect(subject).to_not permit(admin, alice) + end + end + end + + context 'not admin' do + it 'denies' do + expect(subject).to_not permit(john, alice) + end + end + end end diff --git a/spec/policies/account_warning_preset_policy_spec.rb b/spec/policies/account_warning_preset_policy_spec.rb new file mode 100644 index 0000000000..63bf33de24 --- /dev/null +++ b/spec/policies/account_warning_preset_policy_spec.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +require 'rails_helper' +require 'pundit/rspec' + +describe AccountWarningPresetPolicy do + let(:policy) { described_class } + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:john) { Fabricate(:account) } + + permissions :index?, :create?, :update?, :destroy? do + context 'with an admin' do + it 'permits' do + expect(policy).to permit(admin, Tag) + end + end + + context 'with a non-admin' do + it 'denies' do + expect(policy).to_not permit(john, Tag) + end + end + end +end diff --git a/spec/policies/admin/status_policy_spec.rb b/spec/policies/admin/status_policy_spec.rb new file mode 100644 index 0000000000..9e81a4f5f1 --- /dev/null +++ b/spec/policies/admin/status_policy_spec.rb @@ -0,0 +1,51 @@ +# frozen_string_literal: true + +require 'rails_helper' +require 'pundit/rspec' + +describe Admin::StatusPolicy do + let(:policy) { described_class } + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:john) { Fabricate(:account) } + let(:status) { Fabricate(:status) } + + permissions :index?, :update?, :review?, :destroy? do + context 'with an admin' do + it 'permits' do + expect(policy).to permit(admin, Tag) + end + end + + context 'with a non-admin' do + it 'denies' do + expect(policy).to_not permit(john, Tag) + end + end + end + + permissions :show? do + context 'with an admin' do + context 'with a public visible status' do + before { allow(status).to receive(:public_visibility?).and_return(true) } + + it 'permits' do + expect(policy).to permit(admin, status) + end + end + + context 'with a not public visible status' do + before { allow(status).to receive(:public_visibility?).and_return(false) } + + it 'denies' do + expect(policy).to_not permit(admin, status) + end + end + end + + context 'with a non admin' do + it 'denies' do + expect(policy).to_not permit(john, status) + end + end + end +end diff --git a/spec/policies/announcement_policy_spec.rb b/spec/policies/announcement_policy_spec.rb new file mode 100644 index 0000000000..3d230b3cb4 --- /dev/null +++ b/spec/policies/announcement_policy_spec.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +require 'rails_helper' +require 'pundit/rspec' + +describe AnnouncementPolicy do + let(:policy) { described_class } + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:john) { Fabricate(:account) } + + permissions :index?, :create?, :update?, :destroy? do + context 'with an admin' do + it 'permits' do + expect(policy).to permit(admin, Tag) + end + end + + context 'with a non-admin' do + it 'denies' do + expect(policy).to_not permit(john, Tag) + end + end + end +end diff --git a/spec/policies/appeal_policy_spec.rb b/spec/policies/appeal_policy_spec.rb new file mode 100644 index 0000000000..d7498eb9f0 --- /dev/null +++ b/spec/policies/appeal_policy_spec.rb @@ -0,0 +1,51 @@ +# frozen_string_literal: true + +require 'rails_helper' +require 'pundit/rspec' + +describe AppealPolicy do + let(:policy) { described_class } + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:john) { Fabricate(:account) } + let(:appeal) { Fabricate(:appeal) } + + permissions :index? do + context 'with an admin' do + it 'permits' do + expect(policy).to permit(admin, Tag) + end + end + + context 'with a non-admin' do + it 'denies' do + expect(policy).to_not permit(john, Tag) + end + end + end + + permissions :reject? do + context 'with an admin' do + context 'with a pending appeal' do + before { allow(appeal).to receive(:pending?).and_return(true) } + + it 'permits' do + expect(policy).to permit(admin, appeal) + end + end + + context 'with a not pending appeal' do + before { allow(appeal).to receive(:pending?).and_return(false) } + + it 'denies' do + expect(policy).to_not permit(admin, appeal) + end + end + end + + context 'with a non admin' do + it 'denies' do + expect(policy).to_not permit(john, appeal) + end + end + end +end diff --git a/spec/policies/canonical_email_block_policy_spec.rb b/spec/policies/canonical_email_block_policy_spec.rb new file mode 100644 index 0000000000..0e55febfa9 --- /dev/null +++ b/spec/policies/canonical_email_block_policy_spec.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +require 'rails_helper' +require 'pundit/rspec' + +describe CanonicalEmailBlockPolicy do + let(:policy) { described_class } + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:john) { Fabricate(:account) } + + permissions :index?, :show?, :test?, :create?, :destroy? do + context 'with an admin' do + it 'permits' do + expect(policy).to permit(admin, Tag) + end + end + + context 'with a non-admin' do + it 'denies' do + expect(policy).to_not permit(john, Tag) + end + end + end +end diff --git a/spec/policies/delivery_policy_spec.rb b/spec/policies/delivery_policy_spec.rb new file mode 100644 index 0000000000..fbcbf390d7 --- /dev/null +++ b/spec/policies/delivery_policy_spec.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +require 'rails_helper' +require 'pundit/rspec' + +describe DeliveryPolicy do + let(:policy) { described_class } + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:john) { Fabricate(:account) } + + permissions :clear_delivery_errors?, :restart_delivery?, :stop_delivery? do + context 'with an admin' do + it 'permits' do + expect(policy).to permit(admin, Tag) + end + end + + context 'with a non-admin' do + it 'denies' do + expect(policy).to_not permit(john, Tag) + end + end + end +end diff --git a/spec/policies/email_domain_block_policy_spec.rb b/spec/policies/email_domain_block_policy_spec.rb index 913075c3d2..e7c455907a 100644 --- a/spec/policies/email_domain_block_policy_spec.rb +++ b/spec/policies/email_domain_block_policy_spec.rb @@ -8,7 +8,7 @@ RSpec.describe EmailDomainBlockPolicy do let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } let(:john) { Fabricate(:account) } - permissions :index?, :create?, :destroy? do + permissions :index?, :show?, :create?, :destroy? do context 'admin' do it 'permits' do expect(subject).to permit(admin, EmailDomainBlock) diff --git a/spec/policies/follow_recommendation_policy_spec.rb b/spec/policies/follow_recommendation_policy_spec.rb new file mode 100644 index 0000000000..01f4da0be2 --- /dev/null +++ b/spec/policies/follow_recommendation_policy_spec.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +require 'rails_helper' +require 'pundit/rspec' + +describe FollowRecommendationPolicy do + let(:policy) { described_class } + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:john) { Fabricate(:account) } + + permissions :show?, :suppress?, :unsuppress? do + context 'with an admin' do + it 'permits' do + expect(policy).to permit(admin, Tag) + end + end + + context 'with a non-admin' do + it 'denies' do + expect(policy).to_not permit(john, Tag) + end + end + end +end diff --git a/spec/policies/ip_block_policy_spec.rb b/spec/policies/ip_block_policy_spec.rb new file mode 100644 index 0000000000..3cfa85863c --- /dev/null +++ b/spec/policies/ip_block_policy_spec.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +require 'rails_helper' +require 'pundit/rspec' + +describe IpBlockPolicy do + let(:policy) { described_class } + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:john) { Fabricate(:account) } + + permissions :index?, :show?, :create?, :update?, :destroy? do + context 'with an admin' do + it 'permits' do + expect(policy).to permit(admin, Tag) + end + end + + context 'with a non-admin' do + it 'denies' do + expect(policy).to_not permit(john, Tag) + end + end + end +end diff --git a/spec/policies/preview_card_policy_spec.rb b/spec/policies/preview_card_policy_spec.rb new file mode 100644 index 0000000000..d6675c5b34 --- /dev/null +++ b/spec/policies/preview_card_policy_spec.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +require 'rails_helper' +require 'pundit/rspec' + +describe PreviewCardPolicy do + let(:policy) { described_class } + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:john) { Fabricate(:account) } + + permissions :index?, :review? do + context 'with an admin' do + it 'permits' do + expect(policy).to permit(admin, Tag) + end + end + + context 'with a non-admin' do + it 'denies' do + expect(policy).to_not permit(john, Tag) + end + end + end +end diff --git a/spec/policies/preview_card_provider_policy_spec.rb b/spec/policies/preview_card_provider_policy_spec.rb new file mode 100644 index 0000000000..8d3715de95 --- /dev/null +++ b/spec/policies/preview_card_provider_policy_spec.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +require 'rails_helper' +require 'pundit/rspec' + +describe PreviewCardProviderPolicy do + let(:policy) { described_class } + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:john) { Fabricate(:account) } + + permissions :index?, :review? do + context 'with an admin' do + it 'permits' do + expect(policy).to permit(admin, Tag) + end + end + + context 'with a non-admin' do + it 'denies' do + expect(policy).to_not permit(john, Tag) + end + end + end +end diff --git a/spec/policies/rule_policy_spec.rb b/spec/policies/rule_policy_spec.rb new file mode 100644 index 0000000000..0e45f6df02 --- /dev/null +++ b/spec/policies/rule_policy_spec.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +require 'rails_helper' +require 'pundit/rspec' + +describe RulePolicy do + let(:policy) { described_class } + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:john) { Fabricate(:account) } + + permissions :index?, :create?, :update?, :destroy? do + context 'with an admin' do + it 'permits' do + expect(policy).to permit(admin, Tag) + end + end + + context 'with a non-admin' do + it 'denies' do + expect(policy).to_not permit(john, Tag) + end + end + end +end diff --git a/spec/policies/settings_policy_spec.rb b/spec/policies/settings_policy_spec.rb index e16ee51a48..3268c16225 100644 --- a/spec/policies/settings_policy_spec.rb +++ b/spec/policies/settings_policy_spec.rb @@ -8,7 +8,7 @@ RSpec.describe SettingsPolicy do let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } let(:john) { Fabricate(:account) } - permissions :update?, :show? do + permissions :update?, :show?, :destroy? do context 'admin?' do it 'permits' do expect(subject).to permit(admin, Settings) diff --git a/spec/policies/status_policy_spec.rb b/spec/policies/status_policy_spec.rb index 2afcfe96e0..38b9c4fdb6 100644 --- a/spec/policies/status_policy_spec.rb +++ b/spec/policies/status_policy_spec.rb @@ -39,6 +39,14 @@ RSpec.describe StatusPolicy, type: :model do expect(subject).to permit(alice, status) end + it 'grants access when direct and non-owner viewer is mentioned and mentions are loaded' do + status.visibility = :direct + status.mentions = [Fabricate(:mention, account: bob)] + status.mentions.load + + expect(subject).to permit(bob, status) + end + it 'denies access when direct and viewer is not mentioned' do viewer = Fabricate(:account) status.visibility = :direct @@ -75,14 +83,14 @@ RSpec.describe StatusPolicy, type: :model do end it 'denies access when local-only and the viewer is not logged in' do - allow(status).to receive(:local_only?) { true } + allow(status).to receive(:local_only?).and_return(true) expect(subject).to_not permit(nil, status) end it 'denies access when local-only and the viewer is from another domain' do viewer = Fabricate(:account, domain: 'remote-domain') - allow(status).to receive(:local_only?) { true } + allow(status).to receive(:local_only?).and_return(true) expect(subject).to_not permit(viewer, status) end end diff --git a/spec/policies/tag_policy_spec.rb b/spec/policies/tag_policy_spec.rb index 9be7140fc2..fb09fdd3be 100644 --- a/spec/policies/tag_policy_spec.rb +++ b/spec/policies/tag_policy_spec.rb @@ -8,7 +8,7 @@ RSpec.describe TagPolicy do let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } let(:john) { Fabricate(:account) } - permissions :index?, :show?, :update? do + permissions :index?, :show?, :update?, :review? do context 'staff?' do it 'permits' do expect(subject).to permit(admin, Tag) diff --git a/spec/policies/webhook_policy_spec.rb b/spec/policies/webhook_policy_spec.rb new file mode 100644 index 0000000000..1eac8932d4 --- /dev/null +++ b/spec/policies/webhook_policy_spec.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +require 'rails_helper' +require 'pundit/rspec' + +describe WebhookPolicy do + let(:policy) { described_class } + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:john) { Fabricate(:account) } + + permissions :index?, :create?, :show?, :update?, :enable?, :disable?, :rotate_secret?, :destroy? do + context 'with an admin' do + it 'permits' do + expect(policy).to permit(admin, Tag) + end + end + + context 'with a non-admin' do + it 'denies' do + expect(policy).to_not permit(john, Tag) + end + end + end +end diff --git a/spec/presenters/instance_presenter_spec.rb b/spec/presenters/instance_presenter_spec.rb index 079b5ad1d4..e6cbb518c1 100644 --- a/spec/presenters/instance_presenter_spec.rb +++ b/spec/presenters/instance_presenter_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' describe InstancePresenter do - let(:instance_presenter) { InstancePresenter.new } + let(:instance_presenter) { described_class.new } describe '#description' do around do |example| @@ -89,8 +89,28 @@ describe InstancePresenter do end describe '#source_url' do - it 'returns the default URL' do - expect(instance_presenter.source_url).to eq('https://gitea.treehouse.systems/treehouse/mastodon') + context 'with the GITHUB_REPOSITORY env variable set' do + around do |example| + ClimateControl.modify GITHUB_REPOSITORY: 'other/repo' do + example.run + end + end + + it 'uses the env variable to build a repo URL' do + expect(instance_presenter.source_url).to eq('https://github.com/other/repo') + end + end + + context 'without the GITHUB_REPOSITORY env variable set' do + around do |example| + ClimateControl.modify GITHUB_REPOSITORY: nil do + example.run + end + end + + it 'defaults to the core glitch-soc repo URL' do + expect(instance_presenter.source_url).to eq('https://gitea.treehouse.systems/treehouse/mastodon') + end end end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 70d3a968ca..c204fcdbd2 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -10,6 +10,7 @@ require 'rspec/rails' require 'webmock/rspec' require 'paperclip/matchers' require 'capybara/rspec' +require 'chewy/rspec' Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f } @@ -45,6 +46,7 @@ RSpec.configure do |config| config.include Devise::Test::ControllerHelpers, type: :view config.include Paperclip::Shoulda::Matchers config.include ActiveSupport::Testing::TimeHelpers + config.include Chewy::Rspec::Helpers config.include Redisable config.before :each, type: :feature do diff --git a/spec/serializers/activitypub/device_serializer_spec.rb b/spec/serializers/activitypub/device_serializer_spec.rb new file mode 100644 index 0000000000..2a3be82121 --- /dev/null +++ b/spec/serializers/activitypub/device_serializer_spec.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe ActivityPub::DeviceSerializer do + let(:serialization) do + JSON.parse( + ActiveModelSerializers::SerializableResource.new( + record, serializer: described_class + ).to_json + ) + end + let(:record) { Fabricate(:device) } + + describe 'type' do + it 'returns correct serialized type' do + expect(serialization['type']).to eq('Device') + end + end +end diff --git a/spec/serializers/activitypub/one_time_key_serializer_spec.rb b/spec/serializers/activitypub/one_time_key_serializer_spec.rb new file mode 100644 index 0000000000..6fe1f06185 --- /dev/null +++ b/spec/serializers/activitypub/one_time_key_serializer_spec.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe ActivityPub::OneTimeKeySerializer do + let(:serialization) do + JSON.parse( + ActiveModelSerializers::SerializableResource.new( + record, serializer: described_class + ).to_json + ) + end + let(:record) { Fabricate(:one_time_key) } + + describe 'type' do + it 'returns correct serialized type' do + expect(serialization['type']).to eq('Curve25519Key') + end + end +end diff --git a/spec/serializers/activitypub/undo_like_serializer_spec.rb b/spec/serializers/activitypub/undo_like_serializer_spec.rb new file mode 100644 index 0000000000..43cf7192e4 --- /dev/null +++ b/spec/serializers/activitypub/undo_like_serializer_spec.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe ActivityPub::UndoLikeSerializer do + let(:serialization) do + JSON.parse( + ActiveModelSerializers::SerializableResource.new( + record, serializer: described_class + ).to_json + ) + end + let(:record) { Fabricate(:favourite) } + + describe 'type' do + it 'returns correct serialized type' do + expect(serialization['type']).to eq('Undo') + end + end +end diff --git a/spec/serializers/activitypub/vote_serializer_spec.rb b/spec/serializers/activitypub/vote_serializer_spec.rb new file mode 100644 index 0000000000..c329542d79 --- /dev/null +++ b/spec/serializers/activitypub/vote_serializer_spec.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe ActivityPub::VoteSerializer do + let(:serialization) do + JSON.parse( + ActiveModelSerializers::SerializableResource.new( + record, serializer: described_class + ).to_json + ) + end + let(:record) { Fabricate(:poll_vote) } + + describe 'type' do + it 'returns correct serialized type' do + expect(serialization['type']).to eq('Create') + end + end +end diff --git a/spec/serializers/rest/encrypted_message_serializer_spec.rb b/spec/serializers/rest/encrypted_message_serializer_spec.rb new file mode 100644 index 0000000000..e0e70a3b84 --- /dev/null +++ b/spec/serializers/rest/encrypted_message_serializer_spec.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe REST::EncryptedMessageSerializer do + let(:serialization) do + JSON.parse( + ActiveModelSerializers::SerializableResource.new( + record, serializer: described_class + ).to_json + ) + end + let(:record) { Fabricate(:encrypted_message) } + + describe 'account' do + it 'returns the associated account' do + expect(serialization['account_id']).to eq(record.from_account.id.to_s) + end + end +end diff --git a/spec/serializers/rest/instance_serializer_spec.rb b/spec/serializers/rest/instance_serializer_spec.rb new file mode 100644 index 0000000000..15a5de18dd --- /dev/null +++ b/spec/serializers/rest/instance_serializer_spec.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe REST::InstanceSerializer do + let(:serialization) do + JSON.parse( + ActiveModelSerializers::SerializableResource.new( + record, serializer: described_class + ).to_json + ) + end + let(:record) { InstancePresenter.new } + + describe 'usage' do + it 'returns recent usage data' do + expect(serialization['usage']).to eq({ 'users' => { 'active_month' => 0 } }) + end + end +end diff --git a/spec/serializers/rest/keys/claim_result_serializer_spec.rb b/spec/serializers/rest/keys/claim_result_serializer_spec.rb new file mode 100644 index 0000000000..cf9416f032 --- /dev/null +++ b/spec/serializers/rest/keys/claim_result_serializer_spec.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe REST::Keys::ClaimResultSerializer do + let(:serialization) do + JSON.parse( + ActiveModelSerializers::SerializableResource.new( + record, serializer: described_class + ).to_json + ) + end + let(:record) { Keys::ClaimService::Result.new(Account.new(id: 123), 456) } + + describe 'account' do + it 'returns the associated account' do + expect(serialization['account_id']).to eq('123') + end + end +end diff --git a/spec/serializers/rest/keys/device_serializer_spec.rb b/spec/serializers/rest/keys/device_serializer_spec.rb new file mode 100644 index 0000000000..c15e197cb8 --- /dev/null +++ b/spec/serializers/rest/keys/device_serializer_spec.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe REST::Keys::DeviceSerializer do + let(:serialization) do + JSON.parse( + ActiveModelSerializers::SerializableResource.new( + record, serializer: described_class + ).to_json + ) + end + let(:record) { Device.new(name: 'Device name') } + + describe 'name' do + it 'returns the name' do + expect(serialization['name']).to eq('Device name') + end + end +end diff --git a/spec/serializers/rest/keys/query_result_serializer_spec.rb b/spec/serializers/rest/keys/query_result_serializer_spec.rb new file mode 100644 index 0000000000..983780ae98 --- /dev/null +++ b/spec/serializers/rest/keys/query_result_serializer_spec.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe REST::Keys::QueryResultSerializer do + let(:serialization) do + JSON.parse( + ActiveModelSerializers::SerializableResource.new( + record, serializer: described_class + ).to_json + ) + end + let(:record) { Keys::QueryService::Result.new(Account.new(id: 123), []) } + + describe 'account' do + it 'returns the associated account id' do + expect(serialization['account_id']).to eq('123') + end + end +end diff --git a/spec/serializers/rest/suggestion_serializer_spec.rb b/spec/serializers/rest/suggestion_serializer_spec.rb new file mode 100644 index 0000000000..b3c086208d --- /dev/null +++ b/spec/serializers/rest/suggestion_serializer_spec.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe REST::SuggestionSerializer do + let(:serialization) do + JSON.parse( + ActiveModelSerializers::SerializableResource.new( + record, serializer: described_class + ).to_json + ) + end + let(:record) do + AccountSuggestions::Suggestion.new( + account: account, + source: 'SuggestionSource' + ) + end + let(:account) { Fabricate(:account) } + + describe 'account' do + it 'returns the associated account' do + expect(serialization['account']['id']).to eq(account.id.to_s) + end + end +end diff --git a/spec/services/notify_service_spec.rb b/spec/services/notify_service_spec.rb index da2857627e..616a7aa204 100644 --- a/spec/services/notify_service_spec.rb +++ b/spec/services/notify_service_spec.rb @@ -48,13 +48,14 @@ RSpec.describe NotifyService, type: :service do recipient.suspend! expect { subject }.to_not change(Notification, :count) end - + context 'for direct messages' do let(:activity) { Fabricate(:mention, account: recipient, status: Fabricate(:status, account: sender, visibility: :direct)) } let(:type) { :mention } before do - user.settings.interactions = user.settings.interactions.merge('must_be_following_dm' => enabled) + user.settings.update('interactions.must_be_following_dm': enabled) + user.save end context 'if recipient is supposed to be following sender' do @@ -155,8 +156,8 @@ RSpec.describe NotifyService, type: :service do before do ActionMailer::Base.deliveries.clear - notification_emails = user.settings.notification_emails - user.settings.notification_emails = notification_emails.merge('follow' => enabled) + user.settings.update('notification_emails.follow': enabled) + user.save end context 'when email notification is enabled' do diff --git a/spec/services/report_service_spec.rb b/spec/services/report_service_spec.rb index 9d81bd9714..452400f722 100644 --- a/spec/services/report_service_spec.rb +++ b/spec/services/report_service_spec.rb @@ -96,7 +96,8 @@ RSpec.describe ReportService, type: :service do before do ActionMailer::Base.deliveries.clear - source_account.user.settings.notification_emails['report'] = true + source_account.user.settings['notification_emails.report'] = true + source_account.user.save end it 'does not send an e-mail' do diff --git a/spec/services/update_status_service_spec.rb b/spec/services/update_status_service_spec.rb index e52a0e52be..d6923722ab 100644 --- a/spec/services/update_status_service_spec.rb +++ b/spec/services/update_status_service_spec.rb @@ -120,7 +120,9 @@ RSpec.describe UpdateStatusService, type: :service do before do status.update(poll: poll) VoteService.new.call(voter, poll, [0]) - subject.call(status, status.account_id, text: 'Foo', poll: { options: %w(Bar Baz Foo), expires_in: 5.days.to_i }) + Sidekiq::Testing.fake! do + subject.call(status, status.account_id, text: 'Foo', poll: { options: %w(Bar Baz Foo), expires_in: 5.days.to_i }) + end end it 'updates poll' do @@ -138,6 +140,11 @@ RSpec.describe UpdateStatusService, type: :service do it 'saves edit history' do expect(status.edits.pluck(:poll_options)).to eq [%w(Foo Bar), %w(Bar Baz Foo)] end + + it 'requeues expiration notification' do + poll = status.poll.reload + expect(PollExpirationNotifyWorker).to have_enqueued_sidekiq_job(poll.id).at(poll.expires_at + 5.minutes) + end end context 'when mentions in text change' do diff --git a/spec/support/examples/lib/admin/checks.rb b/spec/support/examples/lib/admin/checks.rb new file mode 100644 index 0000000000..b50faa77ba --- /dev/null +++ b/spec/support/examples/lib/admin/checks.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +shared_examples 'a check available to devops users' do + describe 'skip?' do + context 'when user can view devops' do + before { allow(user).to receive(:can?).with(:view_devops).and_return(true) } + + it 'returns false' do + expect(check.skip?).to be false + end + end + + context 'when user cannot view devops' do + before { allow(user).to receive(:can?).with(:view_devops).and_return(false) } + + it 'returns true' do + expect(check.skip?).to be true + end + end + end +end diff --git a/spec/support/matchers/model/model_have_error_on_field.rb b/spec/support/matchers/model/model_have_error_on_field.rb index 21632b5748..0f9c81a475 100644 --- a/spec/support/matchers/model/model_have_error_on_field.rb +++ b/spec/support/matchers/model/model_have_error_on_field.rb @@ -4,7 +4,7 @@ RSpec::Matchers.define :model_have_error_on_field do |expected| match do |record| record.valid? if record.errors.empty? - record.errors.has_key?(expected) + record.errors.key?(expected) end failure_message do |record| diff --git a/spec/validators/email_mx_validator_spec.rb b/spec/validators/email_mx_validator_spec.rb index ffb6851d09..a11b8e01e0 100644 --- a/spec/validators/email_mx_validator_spec.rb +++ b/spec/validators/email_mx_validator_spec.rb @@ -41,6 +41,22 @@ describe EmailMxValidator do expect(user.errors).to_not have_received(:add) end + it 'adds an error if the TagManager fails to normalize domain' do + double = instance_double(TagManager) + allow(TagManager).to receive(:instance).and_return(double) + allow(double).to receive(:normalize_domain).with('example.com').and_raise(Addressable::URI::InvalidURIError) + + user = double(email: 'foo@example.com', errors: double(add: nil)) + subject.validate(user) + expect(user.errors).to have_received(:add) + end + + it 'adds an error if the domain email portion is blank' do + user = double(email: 'foo@', errors: double(add: nil)) + subject.validate(user) + expect(user.errors).to have_received(:add) + end + it 'adds an error if the email domain name contains empty labels' do resolver = double diff --git a/spec/validators/status_length_validator_spec.rb b/spec/validators/status_length_validator_spec.rb index 2cd369335f..7e06b9bd94 100644 --- a/spec/validators/status_length_validator_spec.rb +++ b/spec/validators/status_length_validator_spec.rb @@ -65,7 +65,7 @@ describe StatusLengthValidator do it 'counts only the front part of remote usernames' do username = '@alice' chars = StatusLengthValidator::MAX_CHARS - 1 - username.length - text = ('a' * 475) + " #{username}@#{'b' * 30}.com" + text = ('a' * chars) + " #{username}@#{'b' * 30}.com" status = double(spoiler_text: '', text: text, errors: double(add: nil), local?: true, reblog?: false) subject.validate(status) diff --git a/spec/workers/admin/account_deletion_worker_spec.rb b/spec/workers/admin/account_deletion_worker_spec.rb new file mode 100644 index 0000000000..631cab6648 --- /dev/null +++ b/spec/workers/admin/account_deletion_worker_spec.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::AccountDeletionWorker do + let(:worker) { described_class.new } + + describe 'perform' do + let(:account) { Fabricate(:account) } + let(:service) { instance_double(DeleteAccountService, call: true) } + + it 'calls delete account service' do + allow(DeleteAccountService).to receive(:new).and_return(service) + worker.perform(account.id) + + expect(service).to have_received(:call).with(account, { reserve_email: true, reserve_username: true }) + end + end +end diff --git a/spec/workers/cache_buster_worker_spec.rb b/spec/workers/cache_buster_worker_spec.rb new file mode 100644 index 0000000000..adeb287fa3 --- /dev/null +++ b/spec/workers/cache_buster_worker_spec.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe CacheBusterWorker do + let(:worker) { described_class.new } + + describe 'perform' do + let(:path) { 'https://example.com' } + let(:service) { instance_double(CacheBuster, bust: true) } + + it 'calls the cache buster' do + allow(CacheBuster).to receive(:new).and_return(service) + worker.perform(path) + + expect(service).to have_received(:bust).with(path) + end + end +end diff --git a/spec/workers/poll_expiration_notify_worker_spec.rb b/spec/workers/poll_expiration_notify_worker_spec.rb new file mode 100644 index 0000000000..78cbc1ee40 --- /dev/null +++ b/spec/workers/poll_expiration_notify_worker_spec.rb @@ -0,0 +1,72 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe PollExpirationNotifyWorker do + let(:worker) { described_class.new } + let(:account) { Fabricate(:account, domain: remote? ? 'example.com' : nil) } + let(:status) { Fabricate(:status, account: account) } + let(:poll) { Fabricate(:poll, status: status, account: account) } + let(:remote?) { false } + let(:poll_vote) { Fabricate(:poll_vote, poll: poll) } + + describe '#perform' do + around do |example| + Sidekiq::Testing.fake! do + example.run + end + end + + it 'runs without error for missing record' do + expect { worker.perform(nil) }.to_not raise_error + end + + context 'when poll is not expired' do + it 'requeues job' do + worker.perform(poll.id) + expect(described_class.sidekiq_options_hash['lock']).to be :until_executing + expect(described_class).to have_enqueued_sidekiq_job(poll.id).at(poll.expires_at + 5.minutes) + end + end + + context 'when poll is expired' do + before do + poll_vote + + travel_to poll.expires_at + 5.minutes + + worker.perform(poll.id) + end + + context 'when poll is local' do + it 'notifies voters' do + expect(ActivityPub::DistributePollUpdateWorker).to have_enqueued_sidekiq_job(poll.status.id) + end + + it 'notifies owner' do + expect(LocalNotificationWorker).to have_enqueued_sidekiq_job(poll.account.id, poll.id, 'Poll', 'poll') + end + + it 'notifies local voters' do + expect(LocalNotificationWorker).to have_enqueued_sidekiq_job(poll_vote.account.id, poll.id, 'Poll', 'poll') + end + end + + context 'when poll is remote' do + let(:remote?) { true } + + it 'does not notify remote voters' do + expect(ActivityPub::DistributePollUpdateWorker).to_not have_enqueued_sidekiq_job(poll.status.id) + end + + it 'does not notify owner' do + expect(LocalNotificationWorker).to_not have_enqueued_sidekiq_job(poll.account.id, poll.id, 'Poll', 'poll') + end + + it 'notifies local voters' do + expect(LocalNotificationWorker).to have_enqueued_sidekiq_job(poll_vote.account.id, poll.id, 'Poll', 'poll') + end + end + end + end +end diff --git a/spec/workers/post_process_media_worker_spec.rb b/spec/workers/post_process_media_worker_spec.rb new file mode 100644 index 0000000000..33072704bf --- /dev/null +++ b/spec/workers/post_process_media_worker_spec.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe PostProcessMediaWorker do + let(:worker) { described_class.new } + + describe 'perform' do + it 'runs without error for missing record' do + expect { worker.perform(nil) }.to_not raise_error + end + end +end diff --git a/spec/workers/push_conversation_worker_spec.rb b/spec/workers/push_conversation_worker_spec.rb new file mode 100644 index 0000000000..5fbb4c6853 --- /dev/null +++ b/spec/workers/push_conversation_worker_spec.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe PushConversationWorker do + let(:worker) { described_class.new } + + describe 'perform' do + it 'runs without error for missing record' do + expect { worker.perform(nil) }.to_not raise_error + end + end +end diff --git a/spec/workers/push_encrypted_message_worker_spec.rb b/spec/workers/push_encrypted_message_worker_spec.rb new file mode 100644 index 0000000000..3cd04ce7b4 --- /dev/null +++ b/spec/workers/push_encrypted_message_worker_spec.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe PushEncryptedMessageWorker do + let(:worker) { described_class.new } + + describe 'perform' do + it 'runs without error for missing record' do + expect { worker.perform(nil) }.to_not raise_error + end + end +end diff --git a/spec/workers/push_update_worker_spec.rb b/spec/workers/push_update_worker_spec.rb new file mode 100644 index 0000000000..c8f94fa82a --- /dev/null +++ b/spec/workers/push_update_worker_spec.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe PushUpdateWorker do + let(:worker) { described_class.new } + + describe 'perform' do + it 'runs without error for missing record' do + account_id = nil + status_id = nil + + expect { worker.perform(account_id, status_id) }.to_not raise_error + end + end +end diff --git a/spec/workers/redownload_avatar_worker_spec.rb b/spec/workers/redownload_avatar_worker_spec.rb new file mode 100644 index 0000000000..b44ae9f035 --- /dev/null +++ b/spec/workers/redownload_avatar_worker_spec.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe RedownloadAvatarWorker do + let(:worker) { described_class.new } + + describe 'perform' do + it 'runs without error for missing record' do + expect { worker.perform(nil) }.to_not raise_error + end + end +end diff --git a/spec/workers/redownload_header_worker_spec.rb b/spec/workers/redownload_header_worker_spec.rb new file mode 100644 index 0000000000..767ae7a5ab --- /dev/null +++ b/spec/workers/redownload_header_worker_spec.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe RedownloadHeaderWorker do + let(:worker) { described_class.new } + + describe 'perform' do + it 'runs without error for missing record' do + expect { worker.perform(nil) }.to_not raise_error + end + end +end diff --git a/spec/workers/remove_featured_tag_worker_spec.rb b/spec/workers/remove_featured_tag_worker_spec.rb new file mode 100644 index 0000000000..a64bd0605f --- /dev/null +++ b/spec/workers/remove_featured_tag_worker_spec.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe RemoveFeaturedTagWorker do + let(:worker) { described_class.new } + + describe 'perform' do + it 'runs without error for missing record' do + account_id = nil + featured_tag_id = nil + expect { worker.perform(account_id, featured_tag_id) }.to_not raise_error + end + end +end diff --git a/spec/workers/resolve_account_worker_spec.rb b/spec/workers/resolve_account_worker_spec.rb new file mode 100644 index 0000000000..6f3cff099f --- /dev/null +++ b/spec/workers/resolve_account_worker_spec.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe ResolveAccountWorker do + let(:worker) { described_class.new } + + describe 'perform' do + it 'runs without error for missing record' do + expect { worker.perform(nil) }.to_not raise_error + end + end +end diff --git a/spec/workers/scheduler/indexing_scheduler_spec.rb b/spec/workers/scheduler/indexing_scheduler_spec.rb new file mode 100644 index 0000000000..568f0fc84d --- /dev/null +++ b/spec/workers/scheduler/indexing_scheduler_spec.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Scheduler::IndexingScheduler do + let(:worker) { described_class.new } + + describe 'perform' do + it 'runs without error' do + expect { worker.perform }.to_not raise_error + end + end +end diff --git a/spec/workers/scheduler/instance_refresh_scheduler_spec.rb b/spec/workers/scheduler/instance_refresh_scheduler_spec.rb new file mode 100644 index 0000000000..8f686a6998 --- /dev/null +++ b/spec/workers/scheduler/instance_refresh_scheduler_spec.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Scheduler::InstanceRefreshScheduler do + let(:worker) { described_class.new } + + describe 'perform' do + it 'runs without error' do + expect { worker.perform }.to_not raise_error + end + end +end diff --git a/spec/workers/scheduler/ip_cleanup_scheduler_spec.rb b/spec/workers/scheduler/ip_cleanup_scheduler_spec.rb new file mode 100644 index 0000000000..50af030117 --- /dev/null +++ b/spec/workers/scheduler/ip_cleanup_scheduler_spec.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Scheduler::IpCleanupScheduler do + let(:worker) { described_class.new } + + describe 'perform' do + it 'runs without error' do + expect { worker.perform }.to_not raise_error + end + end +end diff --git a/spec/workers/scheduler/pghero_scheduler_spec.rb b/spec/workers/scheduler/pghero_scheduler_spec.rb new file mode 100644 index 0000000000..e404e5fe47 --- /dev/null +++ b/spec/workers/scheduler/pghero_scheduler_spec.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Scheduler::PgheroScheduler do + let(:worker) { described_class.new } + + describe 'perform' do + it 'runs without error' do + expect { worker.perform }.to_not raise_error + end + end +end diff --git a/spec/workers/scheduler/scheduled_statuses_scheduler_spec.rb b/spec/workers/scheduler/scheduled_statuses_scheduler_spec.rb new file mode 100644 index 0000000000..13c853c62a --- /dev/null +++ b/spec/workers/scheduler/scheduled_statuses_scheduler_spec.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Scheduler::ScheduledStatusesScheduler do + let(:worker) { described_class.new } + + describe 'perform' do + it 'runs without error' do + expect { worker.perform }.to_not raise_error + end + end +end diff --git a/spec/workers/scheduler/suspended_user_cleanup_scheduler_spec.rb b/spec/workers/scheduler/suspended_user_cleanup_scheduler_spec.rb new file mode 100644 index 0000000000..25f0e1fce4 --- /dev/null +++ b/spec/workers/scheduler/suspended_user_cleanup_scheduler_spec.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Scheduler::SuspendedUserCleanupScheduler do + let(:worker) { described_class.new } + + describe 'perform' do + it 'runs without error' do + expect { worker.perform }.to_not raise_error + end + end +end diff --git a/spec/workers/scheduler/trends/refresh_scheduler_spec.rb b/spec/workers/scheduler/trends/refresh_scheduler_spec.rb new file mode 100644 index 0000000000..c0c5f032bf --- /dev/null +++ b/spec/workers/scheduler/trends/refresh_scheduler_spec.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Scheduler::Trends::RefreshScheduler do + let(:worker) { described_class.new } + + describe 'perform' do + it 'runs without error' do + expect { worker.perform }.to_not raise_error + end + end +end diff --git a/spec/workers/scheduler/trends/review_notifications_scheduler_spec.rb b/spec/workers/scheduler/trends/review_notifications_scheduler_spec.rb new file mode 100644 index 0000000000..cc971c24b4 --- /dev/null +++ b/spec/workers/scheduler/trends/review_notifications_scheduler_spec.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Scheduler::Trends::ReviewNotificationsScheduler do + let(:worker) { described_class.new } + + describe 'perform' do + it 'runs without error' do + expect { worker.perform }.to_not raise_error + end + end +end diff --git a/spec/workers/scheduler/vacuum_scheduler_spec.rb b/spec/workers/scheduler/vacuum_scheduler_spec.rb new file mode 100644 index 0000000000..36ecc93d8e --- /dev/null +++ b/spec/workers/scheduler/vacuum_scheduler_spec.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Scheduler::VacuumScheduler do + let(:worker) { described_class.new } + + describe 'perform' do + it 'runs without error' do + expect { worker.perform }.to_not raise_error + end + end +end diff --git a/spec/workers/unpublish_announcement_worker_spec.rb b/spec/workers/unpublish_announcement_worker_spec.rb new file mode 100644 index 0000000000..c742c30bce --- /dev/null +++ b/spec/workers/unpublish_announcement_worker_spec.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe UnpublishAnnouncementWorker do + let(:worker) { described_class.new } + + describe 'perform' do + it 'runs without error for missing record' do + expect { worker.perform(nil) }.to_not raise_error + end + end +end diff --git a/spec/workers/verify_account_links_worker_spec.rb b/spec/workers/verify_account_links_worker_spec.rb new file mode 100644 index 0000000000..227591392c --- /dev/null +++ b/spec/workers/verify_account_links_worker_spec.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe VerifyAccountLinksWorker do + let(:worker) { described_class.new } + + describe 'perform' do + it 'runs without error for missing record' do + expect { worker.perform(nil) }.to_not raise_error + end + end +end diff --git a/spec/workers/webhooks/delivery_worker_spec.rb b/spec/workers/webhooks/delivery_worker_spec.rb new file mode 100644 index 0000000000..daf8a3e285 --- /dev/null +++ b/spec/workers/webhooks/delivery_worker_spec.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Webhooks::DeliveryWorker do + let(:worker) { described_class.new } + + describe 'perform' do + it 'runs without error' do + expect { worker.perform(nil, nil) }.to_not raise_error + end + end +end diff --git a/streaming/index.js b/streaming/index.js index f2a7a6dcd0..7b2676d625 100644 --- a/streaming/index.js +++ b/streaming/index.js @@ -7,6 +7,7 @@ const express = require('express'); const http = require('http'); const redis = require('redis'); const pg = require('pg'); +const dbUrlToConfig = require('pg-connection-string').parse; const log = require('npmlog'); const url = require('url'); const uuid = require('uuid'); @@ -15,7 +16,6 @@ const WebSocket = require('ws'); const { JSDOM } = require('jsdom'); const env = process.env.NODE_ENV || 'development'; -const alwaysRequireAuth = process.env.LIMITED_FEDERATION_MODE === 'true' || process.env.WHITELIST_MODE === 'true' || process.env.AUTHORIZED_FETCH === 'true'; dotenv.config({ path: env === 'production' || env === 'development' ? `.env.${env}` : '.env', @@ -23,43 +23,6 @@ dotenv.config({ log.level = process.env.LOG_LEVEL || 'verbose'; -/** - * @param {string} dbUrl - * @return {Object.} - */ -const dbUrlToConfig = (dbUrl) => { - if (!dbUrl) { - return {}; - } - - const params = url.parse(dbUrl, true); - const config = {}; - - if (params.auth) { - [config.user, config.password] = params.auth.split(':'); - } - - if (params.hostname) { - config.host = params.hostname; - } - - if (params.port) { - config.port = params.port; - } - - if (params.pathname) { - config.database = params.pathname.split('/')[1]; - } - - const ssl = params.query && params.query.ssl; - - if (ssl && ssl === 'true' || ssl === '1') { - config.ssl = true; - } - - return config; -}; - /** * @param {Object.} defaultConfig * @param {string} redisUrl @@ -117,9 +80,10 @@ const startMaster = () => { log.warn(`Starting streaming API server master with ${numWorkers} workers`); }; -const startWorker = async (workerId) => { - log.warn(`Starting worker ${workerId}`); - +/** + * @return {Object.} + */ +const pgConfigFromEnv = () => { const pgConfigs = { development: { user: process.env.DB_USER || pg.defaults.user, @@ -138,16 +102,45 @@ const startWorker = async (workerId) => { }, }; + let baseConfig; + + if (process.env.DATABASE_URL) { + baseConfig = dbUrlToConfig(process.env.DATABASE_URL); + } else { + baseConfig = pgConfigs[env]; + + if (process.env.DB_SSLMODE) { + switch(process.env.DB_SSLMODE) { + case 'disable': + case '': + baseConfig.ssl = false; + break; + case 'no-verify': + baseConfig.ssl = { rejectUnauthorized: false }; + break; + default: + baseConfig.ssl = {}; + break; + } + } + } + + return { + ...baseConfig, + max: process.env.DB_POOL || 10, + connectionTimeoutMillis: 15000, + application_name: '', + }; +}; + +const startWorker = async (workerId) => { + log.warn(`Starting worker ${workerId}`); + const app = express(); 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), { - max: process.env.DB_POOL || 10, - connectionTimeoutMillis: 15000, - ssl: !!process.env.DB_SSLMODE && process.env.DB_SSLMODE !== 'disable', - })); - + const pgPool = new pg.Pool(pgConfigFromEnv()); const server = http.createServer(app); const redisNamespace = process.env.REDIS_NAMESPACE || null; @@ -353,22 +346,17 @@ const startWorker = async (workerId) => { * @param {boolean=} required * @return {Promise.} */ - const accountFromRequest = (req, required = true) => new Promise((resolve, reject) => { + const accountFromRequest = (req) => new Promise((resolve, reject) => { const authorization = req.headers.authorization; const location = url.parse(req.url, true); const accessToken = location.query.access_token || req.headers['sec-websocket-protocol']; if (!authorization && !accessToken) { - if (required) { - const err = new Error('Missing access token'); - err.status = 401; + const err = new Error('Missing access token'); + err.status = 401; - reject(err); - return; - } else { - resolve(); - return; - } + reject(err); + return; } const token = authorization ? authorization.replace(/^Bearer /, '') : accessToken; @@ -472,7 +460,7 @@ const startWorker = async (workerId) => { // variables. OAuth scope checks are moved to the point of subscription // to a specific stream. - accountFromRequest(info.req, alwaysRequireAuth).then(() => { + accountFromRequest(info.req).then(() => { callback(true, undefined, undefined); }).catch(err => { log.error(info.req.requestId, err.toString()); @@ -546,7 +534,7 @@ const startWorker = async (workerId) => { return; } - accountFromRequest(req, alwaysRequireAuth).then(() => checkScopes(req, channelNameFromPath(req))).then(() => { + accountFromRequest(req).then(() => checkScopes(req, channelNameFromPath(req))).then(() => { subscribeHttpToSystemChannel(req, res); }).then(() => { next(); diff --git a/stylelint.config.js b/stylelint.config.js index b56e6f9cb7..1a153adb96 100644 --- a/stylelint.config.js +++ b/stylelint.config.js @@ -15,7 +15,6 @@ module.exports = { 'no-descending-specificity': null, 'no-duplicate-selectors': null, 'number-max-precision': 8, - 'property-no-unknown': null, 'property-no-vendor-prefix': null, 'selector-class-pattern': null, 'selector-id-pattern': null, @@ -25,4 +24,18 @@ module.exports = { 'scss/dollar-variable-empty-line-before': null, 'scss/no-global-function-names': null, }, + overrides: [ + { + 'files': ['app/javascript/styles/mailer.scss'], + rules: { + 'property-no-unknown': [ + true, + { + ignoreProperties: [ + '/^mso-/', + ] }, + ], + }, + }, + ], }; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000000..505b19d89b --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "jsx": "react", + "target": "esnext", + "moduleResolution": "node", + "allowJs": true, + "noEmit": true, + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true + }, + "include": ["app/javascript/mastodon", "app/javascript/packs"] +} diff --git a/yarn.lock b/yarn.lock index 07864feb6c..934e942ee5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -35,7 +35,7 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.18.6": +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.14.5, @babel/code-frame@npm:^7.18.6": version: 7.18.6 resolution: "@babel/code-frame@npm:7.18.6" dependencies: @@ -58,52 +58,61 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.11.1, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.21.0, @babel/core@npm:^7.7.2": - version: 7.21.0 - resolution: "@babel/core@npm:7.21.0" +"@babel/core@npm:^7.11.1, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.21.3, @babel/core@npm:^7.7.2": + version: 7.21.3 + resolution: "@babel/core@npm:7.21.3" dependencies: "@ampproject/remapping": ^2.2.0 "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.21.0 + "@babel/generator": ^7.21.3 "@babel/helper-compilation-targets": ^7.20.7 - "@babel/helper-module-transforms": ^7.21.0 + "@babel/helper-module-transforms": ^7.21.2 "@babel/helpers": ^7.21.0 - "@babel/parser": ^7.21.0 + "@babel/parser": ^7.21.3 "@babel/template": ^7.20.7 - "@babel/traverse": ^7.21.0 - "@babel/types": ^7.21.0 + "@babel/traverse": ^7.21.3 + "@babel/types": ^7.21.3 convert-source-map: ^1.7.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 json5: ^2.2.2 semver: ^6.3.0 - checksum: 357f4dd3638861ceebf6d95ff49ad8b902065ee8b7b352621deed5666c2a6d702a48ca7254dba23ecae2a0afb67d20f90db7dd645c3b75e35e72ad9776c671aa + checksum: bef25fbea96f461bf79bd1d0e4f0cdce679fd5ada464a89c1141ddba59ae1adfdbb23e04440c266ed525712d33d5ffd818cd8b0c25b1dee0e648d5559516153a languageName: node linkType: hard -"@babel/eslint-parser@npm:^7.19.1": - version: 7.19.1 - resolution: "@babel/eslint-parser@npm:7.19.1" - dependencies: - "@nicolo-ribaudo/eslint-scope-5-internals": 5.1.1-v1 - eslint-visitor-keys: ^2.1.0 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ">=7.11.0" - eslint: ^7.5.0 || ^8.0.0 - checksum: 6d5360f62f25ed097250657deb1bc4c4f51a5f5f2fe456e98cda13727753fdf7a11a109b4cfa03ef0dd6ced3beaeb703b76193c1141e29434d1f91f1bac0517d - languageName: node - linkType: hard - -"@babel/generator@npm:^7.21.0, @babel/generator@npm:^7.7.2": - version: 7.21.0 - resolution: "@babel/generator@npm:7.21.0" +"@babel/generator@npm:^7.15.4": + version: 7.21.1 + resolution: "@babel/generator@npm:7.21.1" dependencies: "@babel/types": ^7.21.0 "@jridgewell/gen-mapping": ^0.3.2 "@jridgewell/trace-mapping": ^0.3.17 jsesc: ^2.5.1 - checksum: 173c3284b0c9c1de19bd96b6cb1ae72b4e6482d67307238f52c05587f0bf20fa27f10ea0f67c6bf64af87a5a7cf47f7e260dcd3412cc70e47c612c2bc1dc4dfa + checksum: 69085a211ff91a7a608ee3f86e6fcb9cf5e724b756d792a713b0c328a671cd3e423e1ef1b12533f366baba0616caffe0a7ba9d328727eab484de5961badbef00 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.21.0, @babel/generator@npm:^7.21.3": + version: 7.21.3 + resolution: "@babel/generator@npm:7.21.3" + dependencies: + "@babel/types": ^7.21.3 + "@jridgewell/gen-mapping": ^0.3.2 + "@jridgewell/trace-mapping": ^0.3.17 + jsesc: ^2.5.1 + checksum: be6bb5a32a0273260b91210d4137b7b5da148a2db8dd324654275cb0af865ae59de5e1536e93ac83423b2586415059e1c24cf94293026755cf995757238da749 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.7.2": + version: 7.17.10 + resolution: "@babel/generator@npm:7.17.10" + dependencies: + "@babel/types": ^7.17.10 + "@jridgewell/gen-mapping": ^0.1.0 + jsesc: ^2.5.1 + checksum: 9ec596a6ffec7bec239133a4ba79d4f834e6c894019accb1c70a7a5affbec9d0912d3baef200edd9d48e553d4ef72abcbffbc73cfb7d75f327c24186e887f79c languageName: node linkType: hard @@ -151,7 +160,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.21.0": +"@babel/helper-create-class-features-plugin@npm:^7.18.6": version: 7.21.0 resolution: "@babel/helper-create-class-features-plugin@npm:7.21.0" dependencies: @@ -169,6 +178,24 @@ __metadata: languageName: node linkType: hard +"@babel/helper-create-class-features-plugin@npm:^7.21.0": + version: 7.21.4 + resolution: "@babel/helper-create-class-features-plugin@npm:7.21.4" + dependencies: + "@babel/helper-annotate-as-pure": ^7.18.6 + "@babel/helper-environment-visitor": ^7.18.9 + "@babel/helper-function-name": ^7.21.0 + "@babel/helper-member-expression-to-functions": ^7.21.0 + "@babel/helper-optimise-call-expression": ^7.18.6 + "@babel/helper-replace-supers": ^7.20.7 + "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 + "@babel/helper-split-export-declaration": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 9123ca80a4894aafdb1f0bc08e44f6be7b12ed1fbbe99c501b484f9b1a17ff296b6c90c18c222047d53c276f07f17b4de857946fa9d0aa207023b03e4cc716f2 + languageName: node + linkType: hard + "@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.19.0": version: 7.19.0 resolution: "@babel/helper-create-regexp-features-plugin@npm:7.19.0" @@ -213,6 +240,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-function-name@npm:^7.15.4, @babel/helper-function-name@npm:^7.21.0": + version: 7.21.0 + resolution: "@babel/helper-function-name@npm:7.21.0" + dependencies: + "@babel/template": ^7.20.7 + "@babel/types": ^7.21.0 + checksum: d63e63c3e0e3e8b3138fa47b0cd321148a300ef12b8ee951196994dcd2a492cc708aeda94c2c53759a5c9177fffaac0fd8778791286746f72a000976968daf4e + languageName: node + linkType: hard + "@babel/helper-function-name@npm:^7.18.9, @babel/helper-function-name@npm:^7.19.0": version: 7.19.0 resolution: "@babel/helper-function-name@npm:7.19.0" @@ -223,17 +260,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-function-name@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/helper-function-name@npm:7.21.0" - dependencies: - "@babel/template": ^7.20.7 - "@babel/types": ^7.21.0 - checksum: d63e63c3e0e3e8b3138fa47b0cd321148a300ef12b8ee951196994dcd2a492cc708aeda94c2c53759a5c9177fffaac0fd8778791286746f72a000976968daf4e - languageName: node - linkType: hard - -"@babel/helper-hoist-variables@npm:^7.18.6": +"@babel/helper-hoist-variables@npm:^7.15.4, @babel/helper-hoist-variables@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-hoist-variables@npm:7.18.6" dependencies: @@ -269,9 +296,9 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.18.6, @babel/helper-module-transforms@npm:^7.19.6, @babel/helper-module-transforms@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/helper-module-transforms@npm:7.21.0" +"@babel/helper-module-transforms@npm:^7.18.6, @babel/helper-module-transforms@npm:^7.19.6, @babel/helper-module-transforms@npm:^7.21.2": + version: 7.21.2 + resolution: "@babel/helper-module-transforms@npm:7.21.2" dependencies: "@babel/helper-environment-visitor": ^7.18.9 "@babel/helper-module-imports": ^7.18.6 @@ -279,9 +306,9 @@ __metadata: "@babel/helper-split-export-declaration": ^7.18.6 "@babel/helper-validator-identifier": ^7.19.1 "@babel/template": ^7.20.7 - "@babel/traverse": ^7.21.0 - "@babel/types": ^7.21.0 - checksum: bd92d0b73c12dc2f37be906954c58cc3fbec74ba243731e1aa223063b422eef6b961ca7fe19737a073be18db298e1385d370df2e5781646b8c09ecebd7c847de + "@babel/traverse": ^7.21.2 + "@babel/types": ^7.21.2 + checksum: 8a1c129a4f90bdf97d8b6e7861732c9580f48f877aaaafbc376ce2482febebcb8daaa1de8bc91676d12886487603f8c62a44f9e90ee76d6cac7f9225b26a49e1 languageName: node linkType: hard @@ -356,7 +383,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-split-export-declaration@npm:^7.18.6": +"@babel/helper-split-export-declaration@npm:^7.15.4, @babel/helper-split-export-declaration@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-split-export-declaration@npm:7.18.6" dependencies: @@ -386,6 +413,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-option@npm:^7.21.0": + version: 7.21.0 + resolution: "@babel/helper-validator-option@npm:7.21.0" + checksum: 8ece4c78ffa5461fd8ab6b6e57cc51afad59df08192ed5d84b475af4a7193fc1cb794b59e3e7be64f3cdc4df7ac78bf3dbb20c129d7757ae078e6279ff8c2f07 + languageName: node + linkType: hard + "@babel/helper-wrap-function@npm:^7.18.9": version: 7.18.10 resolution: "@babel/helper-wrap-function@npm:7.18.10" @@ -420,7 +454,25 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.21.0": +"@babel/parser@npm:^7.1.0": + version: 7.3.1 + resolution: "@babel/parser@npm:7.3.1" + bin: + parser: ./bin/babel-parser.js + checksum: 6e3efc3ba251bb1a11eed7300110729322645fcc0a4b52cbf7625cf91b4028c9eaa594cbbe14d78af9f45d5aaf664acd682a860dfc4ddb6dc88814731028c96a + languageName: node + linkType: hard + +"@babel/parser@npm:^7.12.13": + version: 7.15.8 + resolution: "@babel/parser@npm:7.15.8" + bin: + parser: ./bin/babel-parser.js + checksum: a26c91967655f3961bc0c2565f7b9ac870ee3db86c9a0f00b96a7fb65210687be023431c79b3ed2a13b9c945e6afa09c36542ee508741e7ce3039a5b0f18c4b2 + languageName: node + linkType: hard + +"@babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7": version: 7.21.0 resolution: "@babel/parser@npm:7.21.0" bin: @@ -429,6 +481,24 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.15.4": + version: 7.21.2 + resolution: "@babel/parser@npm:7.21.2" + bin: + parser: ./bin/babel-parser.js + checksum: e2b89de2c63d4cdd2cafeaea34f389bba729727eec7a8728f736bc472a59396059e3e9fe322c9bed8fd126d201fb609712949dc8783f4cae4806acd9a73da6ff + languageName: node + linkType: hard + +"@babel/parser@npm:^7.21.0, @babel/parser@npm:^7.21.3": + version: 7.21.3 + resolution: "@babel/parser@npm:7.21.3" + bin: + parser: ./bin/babel-parser.js + checksum: a71e6456a1260c2a943736b56cc0acdf5f2a53c6c79e545f56618967e51f9b710d1d3359264e7c979313a7153741b1d95ad8860834cc2ab4ce4f428b13cc07be + languageName: node + linkType: hard + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.18.6" @@ -492,21 +562,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-decorators@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-proposal-decorators@npm:7.21.0" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.21.0 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-replace-supers": ^7.20.7 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/plugin-syntax-decorators": ^7.21.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2889a060010af7ac2e24f7a193262e50a94e254dd86d273e25a2bec2a2f97dd95b136bb933f63448c1cdde4f38ac7877837685657aa8161699eb226d9f1eb453 - languageName: node - linkType: hard - "@babel/plugin-proposal-dynamic-import@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-proposal-dynamic-import@npm:7.18.6" @@ -701,17 +756,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-decorators@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-syntax-decorators@npm:7.21.0" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 31108e73c3e569f2795ddb4f5f1f32c13c6be97a107d41e318c8f58ca3fde0fa958af3d1a302ab64f36f73ce4d6dda7889732243561c087a7cc3b22192d42a65 - languageName: node - linkType: hard - "@babel/plugin-syntax-dynamic-import@npm:^7.8.3": version: 7.8.3 resolution: "@babel/plugin-syntax-dynamic-import@npm:7.8.3" @@ -866,6 +910,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-typescript@npm:^7.20.0": + version: 7.20.0 + resolution: "@babel/plugin-syntax-typescript@npm:7.20.0" + dependencies: + "@babel/helper-plugin-utils": ^7.19.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 6189c0b5c32ba3c9a80a42338bd50719d783b20ef29b853d4f03929e971913d3cefd80184e924ae98ad6db09080be8fe6f1ffde9a6db8972523234f0274d36f7 + languageName: node + linkType: hard + "@babel/plugin-syntax-typescript@npm:^7.7.2": version: 7.14.5 resolution: "@babel/plugin-syntax-typescript@npm:7.14.5" @@ -1309,6 +1364,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-typescript@npm:^7.21.0": + version: 7.21.0 + resolution: "@babel/plugin-transform-typescript@npm:7.21.0" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.21.0 + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/plugin-syntax-typescript": ^7.20.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 091931118eb515738a4bc8245875f985fc9759d3f85cdf08ee641779b41520241b369404e2bb86fc81907ad827678fdb704e8e5a995352def5dd3051ea2cd870 + languageName: node + linkType: hard + "@babel/plugin-transform-unicode-escapes@npm:^7.18.10": version: 7.18.10 resolution: "@babel/plugin-transform-unicode-escapes@npm:7.18.10" @@ -1448,6 +1516,19 @@ __metadata: languageName: node linkType: hard +"@babel/preset-typescript@npm:^7.21.0": + version: 7.21.0 + resolution: "@babel/preset-typescript@npm:7.21.0" + dependencies: + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-validator-option": ^7.21.0 + "@babel/plugin-transform-typescript": ^7.21.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 6e1f4d7294de2678fbaf36035e98847b2be432f40fe7a1204e5e45b8b05bcbe22902fe0d726e16af14de5bc08987fae28a7899871503fd661050d85f58755af6 + languageName: node + linkType: hard + "@babel/runtime-corejs3@npm:^7.10.2": version: 7.10.3 resolution: "@babel/runtime-corejs3@npm:7.10.3" @@ -1467,7 +1548,7 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.13.8, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.3, @babel/runtime@npm:^7.7.2, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": +"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.13.8, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.3, @babel/runtime@npm:^7.7.2, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": version: 7.21.0 resolution: "@babel/runtime@npm:7.21.0" dependencies: @@ -1476,7 +1557,7 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.18.10, @babel/template@npm:^7.20.7, @babel/template@npm:^7.3.3": +"@babel/template@npm:^7.18.10, @babel/template@npm:^7.20.7": version: 7.20.7 resolution: "@babel/template@npm:7.20.7" dependencies: @@ -1487,7 +1568,18 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.18.10, @babel/traverse@npm:^7.20.7, @babel/traverse@npm:^7.21.0, @babel/traverse@npm:^7.7.2": +"@babel/template@npm:^7.3.3": + version: 7.12.13 + resolution: "@babel/template@npm:7.12.13" + dependencies: + "@babel/code-frame": ^7.12.13 + "@babel/parser": ^7.12.13 + "@babel/types": ^7.12.13 + checksum: e0377316317ff55c794ec79f70d8f27b5cd3323ce76278ade525c264af669952b09613288221c76ee4abd49626a5f014a60ec4a637694c9121a1b77f820792d0 + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.18.10, @babel/traverse@npm:^7.20.7, @babel/traverse@npm:^7.21.0": version: 7.21.0 resolution: "@babel/traverse@npm:7.21.0" dependencies: @@ -1505,6 +1597,41 @@ __metadata: languageName: node linkType: hard +"@babel/traverse@npm:^7.21.2, @babel/traverse@npm:^7.21.3": + version: 7.21.3 + resolution: "@babel/traverse@npm:7.21.3" + dependencies: + "@babel/code-frame": ^7.18.6 + "@babel/generator": ^7.21.3 + "@babel/helper-environment-visitor": ^7.18.9 + "@babel/helper-function-name": ^7.21.0 + "@babel/helper-hoist-variables": ^7.18.6 + "@babel/helper-split-export-declaration": ^7.18.6 + "@babel/parser": ^7.21.3 + "@babel/types": ^7.21.3 + debug: ^4.1.0 + globals: ^11.1.0 + checksum: 0af5bcd47a2fc501592b90ac1feae9d449afb9ab0772a4f6e68230f4cd3a475795d538c1de3f880fe3414b6c2820bac84d02c6549eea796f39d74a603717447b + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.7.2": + version: 7.15.4 + resolution: "@babel/traverse@npm:7.15.4" + dependencies: + "@babel/code-frame": ^7.14.5 + "@babel/generator": ^7.15.4 + "@babel/helper-function-name": ^7.15.4 + "@babel/helper-hoist-variables": ^7.15.4 + "@babel/helper-split-export-declaration": ^7.15.4 + "@babel/parser": ^7.15.4 + "@babel/types": ^7.15.4 + debug: ^4.1.0 + globals: ^11.1.0 + checksum: 831506a92c8ed76dc60504de37663bf5a553d7b1b009a94defc082cddb6c380c5487a1aa9438bcd7b9891a2a72758a63e4f878154aa70699d09b388b1445d774 + languageName: node + linkType: hard + "@babel/types@npm:^7.21.3": version: 7.21.3 resolution: "@babel/types@npm:7.21.3" @@ -1532,10 +1659,10 @@ __metadata: languageName: node linkType: hard -"@csstools/css-tokenizer@npm:^2.0.1": - version: 2.0.1 - resolution: "@csstools/css-tokenizer@npm:2.0.1" - checksum: b52ac9fc1946766b9616e8d65facfe7e8e2860314f03fc769d1bc94368787c3e14394fd50d65d46bed6af79f523df124d17ddeb2508bd77cd5082e8ead6e7680 +"@csstools/css-tokenizer@npm:^2.1.0": + version: 2.1.0 + resolution: "@csstools/css-tokenizer@npm:2.1.0" + checksum: af3619557e18cd348810cfb41b3b7177b36d216df8dd4cac3979f241c15416baf8cdd55fb764ecc78fab5985b085363cfc8e8b8a18aaa361d00c9b9300b7c0f3 languageName: node linkType: hard @@ -1679,20 +1806,45 @@ __metadata: languageName: node linkType: hard -"@eslint/eslintrc@npm:^1.4.1": - version: 1.4.1 - resolution: "@eslint/eslintrc@npm:1.4.1" +"@eslint-community/eslint-utils@npm:^4.2.0": + version: 4.2.0 + resolution: "@eslint-community/eslint-utils@npm:4.2.0" + dependencies: + eslint-visitor-keys: ^3.3.0 + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: 82fdd1cc2a5d169def0e665ec790580ef708e7df9c91f20006595dc90e3bd42ec31c8976a2eeccd336286301a72e937c0ddf3ab4b7377d7014997c36333a7d22 + languageName: node + linkType: hard + +"@eslint-community/regexpp@npm:^4.4.0": + version: 4.4.0 + resolution: "@eslint-community/regexpp@npm:4.4.0" + checksum: 2d127af0c752b80e8a782eacfe996a86925d21de92da3ffc6f9e615e701145e44a62e26bdd88bfac2cd76779c39ba8d9875a91046ec5e7e5f23cb647c247ea6a + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^2.0.1": + version: 2.0.1 + resolution: "@eslint/eslintrc@npm:2.0.1" dependencies: ajv: ^6.12.4 debug: ^4.3.2 - espree: ^9.4.0 + espree: ^9.5.0 globals: ^13.19.0 ignore: ^5.2.0 import-fresh: ^3.2.1 js-yaml: ^4.1.0 minimatch: ^3.1.2 strip-json-comments: ^3.1.1 - checksum: cd3e5a8683db604739938b1c1c8b77927dc04fce3e28e0c88e7f2cd4900b89466baf83dfbad76b2b9e4d2746abdd00dd3f9da544d3e311633d8693f327d04cd7 + checksum: 56b9192a687a450db53a7b883daf9f0f447c43b3510189cf88808a7a2467c2a302a42a50f184cc6d5a9faf3d1df890a2ef0fd0d60b751f32a3e9dfea717c6b48 + languageName: node + linkType: hard + +"@eslint/js@npm:8.36.0": + version: 8.36.0 + resolution: "@eslint/js@npm:8.36.0" + checksum: b7d6b84b823c8c7784be390741196617565527b1f7c0977fde9455bfb57fd88f81c074a03dd878757d2c33fa29f24291e9ecbc1425710f067917324b55e1bf3a languageName: node linkType: hard @@ -1796,50 +1948,50 @@ __metadata: languageName: node linkType: hard -"@jest/console@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/console@npm:29.4.3" +"@jest/console@npm:^29.5.0": + version: 29.5.0 + resolution: "@jest/console@npm:29.5.0" dependencies: - "@jest/types": ^29.4.3 + "@jest/types": ^29.5.0 "@types/node": "*" chalk: ^4.0.0 - jest-message-util: ^29.4.3 - jest-util: ^29.4.3 + jest-message-util: ^29.5.0 + jest-util: ^29.5.0 slash: ^3.0.0 - checksum: 8d9b163febe735153b523db527742309f4d598eda22f17f04e030060329bd3da4de7420fc1f7812f7a16f08273654a7de094c4b4e8b81a99dbfc17cfb1629008 + checksum: 9f4f4b8fabd1221361b7f2e92d4a90f5f8c2e2b29077249996ab3c8b7f765175ffee795368f8d6b5b2bb3adb32dc09319f7270c7c787b0d259e624e00e0f64a5 languageName: node linkType: hard -"@jest/core@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/core@npm:29.4.3" +"@jest/core@npm:^29.5.0": + version: 29.5.0 + resolution: "@jest/core@npm:29.5.0" dependencies: - "@jest/console": ^29.4.3 - "@jest/reporters": ^29.4.3 - "@jest/test-result": ^29.4.3 - "@jest/transform": ^29.4.3 - "@jest/types": ^29.4.3 + "@jest/console": ^29.5.0 + "@jest/reporters": ^29.5.0 + "@jest/test-result": ^29.5.0 + "@jest/transform": ^29.5.0 + "@jest/types": ^29.5.0 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 ci-info: ^3.2.0 exit: ^0.1.2 graceful-fs: ^4.2.9 - jest-changed-files: ^29.4.3 - jest-config: ^29.4.3 - jest-haste-map: ^29.4.3 - jest-message-util: ^29.4.3 + jest-changed-files: ^29.5.0 + jest-config: ^29.5.0 + jest-haste-map: ^29.5.0 + jest-message-util: ^29.5.0 jest-regex-util: ^29.4.3 - jest-resolve: ^29.4.3 - jest-resolve-dependencies: ^29.4.3 - jest-runner: ^29.4.3 - jest-runtime: ^29.4.3 - jest-snapshot: ^29.4.3 - jest-util: ^29.4.3 - jest-validate: ^29.4.3 - jest-watcher: ^29.4.3 + jest-resolve: ^29.5.0 + jest-resolve-dependencies: ^29.5.0 + jest-runner: ^29.5.0 + jest-runtime: ^29.5.0 + jest-snapshot: ^29.5.0 + jest-util: ^29.5.0 + jest-validate: ^29.5.0 + jest-watcher: ^29.5.0 micromatch: ^4.0.4 - pretty-format: ^29.4.3 + pretty-format: ^29.5.0 slash: ^3.0.0 strip-ansi: ^6.0.0 peerDependencies: @@ -1847,76 +1999,76 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: 4aa10644d66f44f051d5dd9cdcedce27acc71216dbcc5e7adebdea458e27aefe27c78f457d7efd49f58b968c35f42de5a521590876e2013593e675120b9e6ab1 + checksum: 9e8f5243fe82d5a57f3971e1b96f320058df7c315328a3a827263f3b17f64be10c80f4a9c1b1773628b64d2de6d607c70b5b2d5bf13e7f5ad04223e9ef6aac06 languageName: node linkType: hard -"@jest/environment@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/environment@npm:29.4.3" +"@jest/environment@npm:^29.5.0": + version: 29.5.0 + resolution: "@jest/environment@npm:29.5.0" dependencies: - "@jest/fake-timers": ^29.4.3 - "@jest/types": ^29.4.3 + "@jest/fake-timers": ^29.5.0 + "@jest/types": ^29.5.0 "@types/node": "*" - jest-mock: ^29.4.3 - checksum: 7c1b0cc4e84b90f8a3bbeca9bbf088882c88aee70a81b3b8e24265dcb1cbc302cd1eee3319089cf65bfd39adbaea344903c712afea106cb8da6c86088d99c5fb + jest-mock: ^29.5.0 + checksum: 921de6325cd4817dec6685e5ff299b499b6379f3f9cf489b4b13588ee1f3820a0c77b49e6a087996b6de8f629f6f5251e636cba08d1bdb97d8071cc7d033c88a languageName: node linkType: hard -"@jest/expect-utils@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/expect-utils@npm:29.4.3" +"@jest/expect-utils@npm:^29.5.0": + version: 29.5.0 + resolution: "@jest/expect-utils@npm:29.5.0" dependencies: jest-get-type: ^29.4.3 - checksum: 2bbed39ff2fb59f5acac465a1ce7303e3b4b62b479e4f386261986c9827f7f799ea912761e22629c5daf10addf8513f16733c14a29c2647bb66d4ee625e9ff92 + checksum: c46fb677c88535cf83cf29f0a5b1f376c6a1109ddda266ad7da1a9cbc53cb441fa402dd61fc7b111ffc99603c11a9b3357ee41a1c0e035a58830bcb360871476 languageName: node linkType: hard -"@jest/expect@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/expect@npm:29.4.3" +"@jest/expect@npm:^29.5.0": + version: 29.5.0 + resolution: "@jest/expect@npm:29.5.0" dependencies: - expect: ^29.4.3 - jest-snapshot: ^29.4.3 - checksum: 08d0d40077ec99a7491fe59d05821dbd31126cfba70875855d8a063698b7126b5f6c309c50811caacc6ae2f727c6e44f51bdcf1d6c1ea832b4f020045ef22d45 + expect: ^29.5.0 + jest-snapshot: ^29.5.0 + checksum: bd10e295111547e6339137107d83986ab48d46561525393834d7d2d8b2ae9d5626653f3f5e48e5c3fa742ac982e97bdf1f541b53b9e1d117a247b08e938527f6 languageName: node linkType: hard -"@jest/fake-timers@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/fake-timers@npm:29.4.3" +"@jest/fake-timers@npm:^29.5.0": + version: 29.5.0 + resolution: "@jest/fake-timers@npm:29.5.0" dependencies: - "@jest/types": ^29.4.3 + "@jest/types": ^29.5.0 "@sinonjs/fake-timers": ^10.0.2 "@types/node": "*" - jest-message-util: ^29.4.3 - jest-mock: ^29.4.3 - jest-util: ^29.4.3 - checksum: adaceb9143c395cccf3d7baa0e49b7042c3092a554e8283146df19926247e34c21b5bde5688bb90e9e87b4a02e4587926c5d858ee0a38d397a63175d0a127874 + jest-message-util: ^29.5.0 + jest-mock: ^29.5.0 + jest-util: ^29.5.0 + checksum: 69930c6922341f244151ec0d27640852ec96237f730fc024da1f53143d31b43cde75d92f9d8e5937981cdce3b31416abc3a7090a0d22c2377512c4a6613244ee languageName: node linkType: hard -"@jest/globals@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/globals@npm:29.4.3" +"@jest/globals@npm:^29.5.0": + version: 29.5.0 + resolution: "@jest/globals@npm:29.5.0" dependencies: - "@jest/environment": ^29.4.3 - "@jest/expect": ^29.4.3 - "@jest/types": ^29.4.3 - jest-mock: ^29.4.3 - checksum: ea76b546ceb4aa5ce2bb3726df12f989b23150b51c9f7664790caa81b943012a657cf3a8525498af1c3518cdb387f54b816cfba1b0ddd22c7b20f03b1d7290b4 + "@jest/environment": ^29.5.0 + "@jest/expect": ^29.5.0 + "@jest/types": ^29.5.0 + jest-mock: ^29.5.0 + checksum: b309ab8f21b571a7c672608682e84bbdd3d2b554ddf81e4e32617fec0a69094a290ab42e3c8b2c66ba891882bfb1b8b2736720ea1285b3ad646d55c2abefedd9 languageName: node linkType: hard -"@jest/reporters@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/reporters@npm:29.4.3" +"@jest/reporters@npm:^29.5.0": + version: 29.5.0 + resolution: "@jest/reporters@npm:29.5.0" dependencies: "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^29.4.3 - "@jest/test-result": ^29.4.3 - "@jest/transform": ^29.4.3 - "@jest/types": ^29.4.3 + "@jest/console": ^29.5.0 + "@jest/test-result": ^29.5.0 + "@jest/transform": ^29.5.0 + "@jest/types": ^29.5.0 "@jridgewell/trace-mapping": ^0.3.15 "@types/node": "*" chalk: ^4.0.0 @@ -1929,9 +2081,9 @@ __metadata: istanbul-lib-report: ^3.0.0 istanbul-lib-source-maps: ^4.0.0 istanbul-reports: ^3.1.3 - jest-message-util: ^29.4.3 - jest-util: ^29.4.3 - jest-worker: ^29.4.3 + jest-message-util: ^29.5.0 + jest-util: ^29.5.0 + jest-worker: ^29.5.0 slash: ^3.0.0 string-length: ^4.0.1 strip-ansi: ^6.0.0 @@ -1941,7 +2093,7 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: 7aa2e429c915bd96c3334962addd69d2bbf52065725757ddde26b293f8c4420a1e8c65363cc3e1e5ec89100a5273ccd3771bec58325a2cc0d97afdc81995073a + checksum: 481268aac9a4a75cc49c4df1273d6b111808dec815e9d009dad717c32383ebb0cebac76e820ad1ab44e207540e1c2fe1e640d44c4f262de92ab1933e057fdeeb languageName: node linkType: hard @@ -1965,50 +2117,50 @@ __metadata: languageName: node linkType: hard -"@jest/test-result@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/test-result@npm:29.4.3" +"@jest/test-result@npm:^29.5.0": + version: 29.5.0 + resolution: "@jest/test-result@npm:29.5.0" dependencies: - "@jest/console": ^29.4.3 - "@jest/types": ^29.4.3 + "@jest/console": ^29.5.0 + "@jest/types": ^29.5.0 "@types/istanbul-lib-coverage": ^2.0.0 collect-v8-coverage: ^1.0.0 - checksum: 164f102b96619ec283c2c39e208b8048e4674f75bf3c3a4f2e95048ae0f9226105add684b25f10d286d91c221625f877e2c1cfc3da46c42d7e1804da239318cb + checksum: 2e8ff5242227ab960c520c3ea0f6544c595cc1c42fa3873c158e9f4f685f4ec9670ec08a4af94ae3885c0005a43550a9595191ffbc27a0965df27d9d98bbf901 languageName: node linkType: hard -"@jest/test-sequencer@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/test-sequencer@npm:29.4.3" +"@jest/test-sequencer@npm:^29.5.0": + version: 29.5.0 + resolution: "@jest/test-sequencer@npm:29.5.0" dependencies: - "@jest/test-result": ^29.4.3 + "@jest/test-result": ^29.5.0 graceful-fs: ^4.2.9 - jest-haste-map: ^29.4.3 + jest-haste-map: ^29.5.0 slash: ^3.0.0 - checksum: 145e1fa9379e5be3587bde6d585b8aee5cf4442b06926928a87e9aec7de5be91b581711d627c6ca13144d244fe05e5d248c13b366b51bedc404f9dcfbfd79e9e + checksum: eca34b4aeb2fda6dfb7f9f4b064c858a7adf64ec5c6091b6f4ed9d3c19549177cbadcf1c615c4c182688fa1cf085c8c55c3ca6eea40719a34554b0bf071d842e languageName: node linkType: hard -"@jest/transform@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/transform@npm:29.4.3" +"@jest/transform@npm:^29.5.0": + version: 29.5.0 + resolution: "@jest/transform@npm:29.5.0" dependencies: "@babel/core": ^7.11.6 - "@jest/types": ^29.4.3 + "@jest/types": ^29.5.0 "@jridgewell/trace-mapping": ^0.3.15 babel-plugin-istanbul: ^6.1.1 chalk: ^4.0.0 convert-source-map: ^2.0.0 fast-json-stable-stringify: ^2.1.0 graceful-fs: ^4.2.9 - jest-haste-map: ^29.4.3 + jest-haste-map: ^29.5.0 jest-regex-util: ^29.4.3 - jest-util: ^29.4.3 + jest-util: ^29.5.0 micromatch: ^4.0.4 pirates: ^4.0.4 slash: ^3.0.0 write-file-atomic: ^4.0.2 - checksum: 082d74e04044213aa7baa8de29f8383e5010034f867969c8602a2447a4ef2f484cfaf2491eba3179ce42f369f7a0af419cbd087910f7e5caf7aa5d1fe03f2ff9 + checksum: d55d604085c157cf5112e165ff5ac1fa788873b3b31265fb4734ca59892ee24e44119964cc47eb6d178dd9512bbb6c576d1e20e51a201ff4e24d31e818a1c92d languageName: node linkType: hard @@ -2025,21 +2177,21 @@ __metadata: linkType: hard "@jest/types@npm:^27.0.2": - version: 27.5.1 - resolution: "@jest/types@npm:27.5.1" + version: 27.2.5 + resolution: "@jest/types@npm:27.2.5" dependencies: "@types/istanbul-lib-coverage": ^2.0.0 "@types/istanbul-reports": ^3.0.0 "@types/node": "*" "@types/yargs": ^16.0.0 chalk: ^4.0.0 - checksum: d1f43cc946d87543ddd79d49547aab2399481d34025d5c5f2025d3d99c573e1d9832fa83cef25e9d9b07a8583500229d15bbb07b8e233d127d911d133e2f14b1 + checksum: 322603c24354a5333b5b7a670464422a46e0244a5a96a35552a7018eb4ac2e84c3b7657336b0ea6aa114963f9b6d0da8b8f6f963cb044fea9e7bc04d464b0ab1 languageName: node linkType: hard -"@jest/types@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/types@npm:29.4.3" +"@jest/types@npm:^29.5.0": + version: 29.5.0 + resolution: "@jest/types@npm:29.5.0" dependencies: "@jest/schemas": ^29.4.3 "@types/istanbul-lib-coverage": ^2.0.0 @@ -2047,7 +2199,7 @@ __metadata: "@types/node": "*" "@types/yargs": ^17.0.8 chalk: ^4.0.0 - checksum: 1756f4149d360f98567f56f434144f7af23ed49a2c42889261a314df6b6654c2de70af618fb2ee0ee39cadaf10835b885845557184509503646c9cb9dcc02bac + checksum: 1811f94b19cf8a9460a289c4f056796cfc373480e0492692a6125a553cd1a63824bd846d7bb78820b7b6f758f6dd3c2d4558293bb676d541b2fa59c70fdf9d39 languageName: node linkType: hard @@ -2131,26 +2283,64 @@ __metadata: version: 0.0.0-use.local resolution: "@mastodon/mastodon@workspace:." dependencies: - "@babel/core": ^7.21.0 - "@babel/eslint-parser": ^7.19.1 - "@babel/plugin-proposal-decorators": ^7.21.0 + "@babel/core": ^7.21.3 + "@babel/plugin-proposal-nullish-coalescing-operator": ^7.18.6 "@babel/plugin-transform-react-inline-elements": ^7.21.0 "@babel/plugin-transform-runtime": ^7.21.0 "@babel/preset-env": ^7.20.2 "@babel/preset-react": ^7.18.6 + "@babel/preset-typescript": ^7.21.0 "@babel/runtime": ^7.21.0 "@gamestdio/websocket": ^0.3.2 "@github/webauthn-json": ^2.1.1 "@rails/ujs": ^6.1.7 "@testing-library/jest-dom": ^5.16.5 "@testing-library/react": ^12.1.5 + "@types/babel__core": ^7.20.0 + "@types/emoji-mart": ^3.0.9 + "@types/escape-html": ^1.0.2 + "@types/express": ^4.17.17 + "@types/http-link-header": ^1.0.3 + "@types/intl": ^1.2.0 + "@types/jest": ^29.4.2 + "@types/js-yaml": ^4.0.5 + "@types/lodash": ^4.14.191 + "@types/npmlog": ^4.1.4 + "@types/object-assign": ^4.0.30 + "@types/pg": ^8.6.6 + "@types/prop-types": ^15.7.5 + "@types/punycode": ^2.1.0 + "@types/raf": ^3.4.0 + "@types/react": ^16.14.38 + "@types/react-dom": ^16.9.18 + "@types/react-helmet": ^6.1.6 + "@types/react-immutable-proptypes": ^2.1.0 + "@types/react-intl": 2.3.18 + "@types/react-motion": ^0.0.33 + "@types/react-overlays": ^3.1.0 + "@types/react-redux": ^7.1.25 + "@types/react-router-dom": ^5.3.3 + "@types/react-select": ^5.0.1 + "@types/react-sparklines": ^1.7.2 + "@types/react-swipeable-views": ^0.13.1 + "@types/react-test-renderer": ^18.0.0 + "@types/react-textarea-autosize": ^8.0.0 + "@types/react-toggle": ^4.0.3 + "@types/redux-immutable": ^4.0.3 + "@types/requestidlecallback": ^0.3.5 + "@types/throng": ^4.0.2 + "@types/uuid": ^8.3.4 + "@types/webpack": ^4.41.33 + "@types/yargs": ^17.0.22 + "@typescript-eslint/eslint-plugin": ^5.55.0 + "@typescript-eslint/parser": ^5.55.0 abortcontroller-polyfill: ^1.7.5 array-includes: ^3.1.6 arrow-key-navigation: ^1.2.0 atrament: 0.2.4 - autoprefixer: ^9.8.8 - axios: ^1.3.3 - babel-jest: ^29.4.3 + autoprefixer: ^10.4.14 + axios: ^1.3.4 + babel-jest: ^29.5.0 babel-loader: ^8.3.0 babel-plugin-lodash: ^3.3.4 babel-plugin-preval: ^5.1.0 @@ -2164,13 +2354,13 @@ __metadata: compression-webpack-plugin: ^6.1.1 cross-env: ^7.0.3 css-loader: ^5.2.7 - cssnano: ^4.1.11 + cssnano: ^6.0.0 detect-passive-events: ^2.0.3 dotenv: ^16.0.3 emoji-mart: "npm:emoji-mart-lazyload@latest" es6-symbol: ^3.1.3 escape-html: ^1.0.3 - eslint: ^8.33.0 + eslint: ^8.36.0 eslint-plugin-import: ~2.27.5 eslint-plugin-jsx-a11y: ~6.7.1 eslint-plugin-promise: ~6.1.1 @@ -2181,33 +2371,35 @@ __metadata: file-loader: ^6.2.0 font-awesome: ^4.7.0 fuzzysort: ^2.0.4 - glob: ^8.1.0 + glob: ^9.3.4 history: ^4.10.1 http-link-header: ^1.1.0 - immutable: ^4.2.4 + husky: ^8.0.3 + immutable: ^4.3.0 imports-loader: ^1.2.0 intl: ^1.2.5 intl-messageformat: ^2.2.0 intl-relativeformat: ^6.4.3 - is-nan: ^1.3.2 - jest: ^29.4.3 - jest-environment-jsdom: ^29.4.3 + jest: ^29.5.0 + jest-environment-jsdom: ^29.5.0 js-yaml: ^4.1.0 - jsdom: ^21.1.0 + jsdom: ^21.1.1 + lint-staged: ^13.1.2 lodash: ^4.17.21 mark-loader: ^0.1.6 marky: ^1.2.5 mini-css-extract-plugin: ^1.6.2 - mkdirp: ^2.1.3 + mkdirp: ^2.1.6 npmlog: ^7.0.1 object-assign: ^4.1.1 object.values: ^1.1.6 path-complete-extname: ^1.0.0 pg: ^8.5.0 + pg-connection-string: ^2.5.0 postcss: ^8.4.21 - postcss-loader: ^3.0.0 + postcss-loader: ^4.3.0 postcss-scss: ^4.0.6 - prettier: ^2.8.4 + prettier: ^2.8.7 promise.prototype.finally: ^3.1.4 prop-types: ^15.8.1 punycode: ^2.3.0 @@ -2227,25 +2419,25 @@ __metadata: react-redux-loading-bar: ^5.0.4 react-router-dom: ^4.1.1 react-router-scroll-4: ^1.0.0-beta.1 - react-select: ^5.7.0 + react-select: ^5.7.2 react-sparklines: ^1.7.0 react-swipeable-views: ^0.14.0 react-test-renderer: ^16.14.0 - react-textarea-autosize: ^8.4.0 + react-textarea-autosize: ^8.4.1 react-toggle: ^4.1.3 - redis: ^4.0.6 <4.1.0 + redis: ^4.6.5 redux: ^4.2.1 redux-immutable: ^4.0.0 redux-thunk: ^2.4.2 regenerator-runtime: ^0.13.11 requestidlecallback: ^0.3.0 reselect: ^4.1.7 - rimraf: ^4.1.2 - sass: ^1.58.3 + rimraf: ^4.4.1 + sass: ^1.60.0 sass-loader: ^10.2.0 stacktrace-js: ^2.0.2 stringz: ^2.1.0 - stylelint: ^15.2.0 + stylelint: ^15.3.0 stylelint-config-standard-scss: ^7.0.1 substring-trie: ^1.0.2 terser-webpack-plugin: ^4.2.3 @@ -2253,7 +2445,8 @@ __metadata: throng: ^4.0.0 tiny-queue: ^0.2.1 twitter-text: 3.1.0 - utf-8-validate: ^6.0.2 + typescript: ^5.0.3 + utf-8-validate: ^6.0.3 uuid: ^8.3.1 webpack: ^4.46.0 webpack-assets-manifest: ^4.0.6 @@ -2269,7 +2462,7 @@ __metadata: workbox-webpack-plugin: ^6.5.4 workbox-window: ^6.5.4 ws: ^8.12.1 - yargs: ^17.7.0 + yargs: ^17.7.1 dependenciesMeta: bufferutil: optional: true @@ -2278,69 +2471,13 @@ __metadata: languageName: unknown linkType: soft -"@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1": - version: 5.1.1-v1 - resolution: "@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1" +"@nodelib/fs.scandir@npm:2.1.4": + version: 2.1.4 + resolution: "@nodelib/fs.scandir@npm:2.1.4" dependencies: - eslint-scope: 5.1.1 - checksum: f2e3b2d6a6e2d9f163ca22105910c9f850dc4897af0aea3ef0a5886b63d8e1ba6505b71c99cb78a3bba24a09557d601eb21c8dede3f3213753fcfef364eb0e57 - languageName: node - linkType: hard - -"@node-redis/bloom@npm:1.0.1": - version: 1.0.1 - resolution: "@node-redis/bloom@npm:1.0.1" - peerDependencies: - "@node-redis/client": ^1.0.0 - checksum: b80cd54ae81f6165456c21645d339d37c4fdc46a0adc00f132f73f94e510f9d241614254add443e817b7a661dbafe844c3e610246c2504454f079520cdbe721b - languageName: node - linkType: hard - -"@node-redis/client@npm:1.0.5": - version: 1.0.5 - resolution: "@node-redis/client@npm:1.0.5" - dependencies: - cluster-key-slot: 1.1.0 - generic-pool: 3.8.2 - redis-parser: 3.0.0 - yallist: 4.0.0 - checksum: cea9c4e339605afe805b5fb762b35d614dffbc40d8290f7050ae4994604c9f74b57d71433f50d3aa090d04b1f5c593ff52170b5cbc13a00ae3222b4282f47b2a - languageName: node - linkType: hard - -"@node-redis/graph@npm:1.0.0": - version: 1.0.0 - resolution: "@node-redis/graph@npm:1.0.0" - peerDependencies: - "@node-redis/client": ^1.0.0 - checksum: 967ea4a61cfcc2e22f354268ee58351d0d15df40036331444ef1ec79a9408849ee9333684eb4f898e164fa148c00e1b9caebdcac2a7bcb5c29dd188e2d57f4b2 - languageName: node - linkType: hard - -"@node-redis/json@npm:1.0.2": - version: 1.0.2 - resolution: "@node-redis/json@npm:1.0.2" - peerDependencies: - "@node-redis/client": ^1.0.0 - checksum: ef89735d8117b52ff580bc022932cb358e92e5e7d4e01b459654b8dd8caee5105e64e531fd83943889c04807c18970b32b56a786a0fb3a9f55d6306fdeefc935 - languageName: node - linkType: hard - -"@node-redis/search@npm:1.0.5": - version: 1.0.5 - resolution: "@node-redis/search@npm:1.0.5" - peerDependencies: - "@node-redis/client": ^1.0.0 - checksum: 3ef636d2386c79df3567bd5d2540932f544da7e097c2c6c0953410a0d11f9f214e4d98e4f3a61aa66690b1c77de5501f754adcb0ae2c9ba03cf07d649fc57ac8 - languageName: node - linkType: hard - -"@node-redis/time-series@npm:1.0.2": - version: 1.0.2 - resolution: "@node-redis/time-series@npm:1.0.2" - peerDependencies: - "@node-redis/client": ^1.0.0 - checksum: 70787aa22a81d274bc6a97a9e25db150b5c76603597fc00c8980d2c416b157f42c7e47947ea75cadea3a114802b0a93094aedd7d4f5977054d10f10fcbdf946c + "@nodelib/fs.stat": 2.0.4 + run-parallel: ^1.1.9 + checksum: 18c2150ab52a042bd65babe5b70106e6586dc036644131c33d253ff99e5eeef2e65858ab40161530a6f22b512a65e7c7629f0f1e0f35c00ee4c606f960d375ba languageName: node linkType: hard @@ -2354,14 +2491,31 @@ __metadata: languageName: node linkType: hard -"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": +"@nodelib/fs.stat@npm:2.0.4, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.4 + resolution: "@nodelib/fs.stat@npm:2.0.4" + checksum: d0d9745f878816d041a8b36faf5797d88ba961274178f0ad1f7fe0efef8118ca9bd0e43e4d0d85a9af911bd35122ec1580e626a83d7595fc4d60f2c1c70e2665 + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.5": version: 2.0.5 resolution: "@nodelib/fs.stat@npm:2.0.5" checksum: 012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0 languageName: node linkType: hard -"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": +"@nodelib/fs.walk@npm:^1.2.3": + version: 1.2.6 + resolution: "@nodelib/fs.walk@npm:1.2.6" + dependencies: + "@nodelib/fs.scandir": 2.1.4 + fastq: ^1.6.0 + checksum: d156901823b3d3de368ad68047a964523e0ce5f796c0aa7712443b1f748d8e7fc24ce2c0f18d22a177e1f1c6092bca609ab5e4cb1792c41cdc8a6989bc391139 + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:^1.2.8": version: 1.2.8 resolution: "@nodelib/fs.walk@npm:1.2.8" dependencies: @@ -2421,6 +2575,62 @@ __metadata: languageName: node linkType: hard +"@redis/bloom@npm:1.2.0": + version: 1.2.0 + resolution: "@redis/bloom@npm:1.2.0" + peerDependencies: + "@redis/client": ^1.0.0 + checksum: 8c214227287d6b278109098bca00afc601cf84f7da9c6c24f4fa7d3854b946170e5893aa86ed607ba017a4198231d570541c79931b98b6d50b262971022d1d6c + languageName: node + linkType: hard + +"@redis/client@npm:1.5.6": + version: 1.5.6 + resolution: "@redis/client@npm:1.5.6" + dependencies: + cluster-key-slot: 1.1.2 + generic-pool: 3.9.0 + yallist: 4.0.0 + checksum: df03f77d43e95fa4016b0c434cbdbc1822d2f30b2bfba1b046f7f4d0a6ee9ad15f350e56d6f8030b82b47e1cfa1444e7c43d659e27777ac8b66a1d95e6707f6b + languageName: node + linkType: hard + +"@redis/graph@npm:1.1.0": + version: 1.1.0 + resolution: "@redis/graph@npm:1.1.0" + peerDependencies: + "@redis/client": ^1.0.0 + checksum: d3df807108a42929ed65269c691fe6ab7eda55de91318f02a22b2d637c1bfef8817fccd17025904f5a0be8cf1cea5941334ec9f10719336da5d8f1c54cd4997e + languageName: node + linkType: hard + +"@redis/json@npm:1.0.4": + version: 1.0.4 + resolution: "@redis/json@npm:1.0.4" + peerDependencies: + "@redis/client": ^1.0.0 + checksum: de07f9c37abed603dec352593eb69fc8a94475e7f86b4f65b9805394492d448a1e4181db74269d80eb9dba6f3ae8a41804204821db36bb801cd7c1e30ac7ec80 + languageName: node + linkType: hard + +"@redis/search@npm:1.1.2": + version: 1.1.2 + resolution: "@redis/search@npm:1.1.2" + peerDependencies: + "@redis/client": ^1.0.0 + checksum: fc3c0bd62c150ea7f8b3f08b0e67893b4e8df71b4820d750de6ba00ccff3720fdc5d4f50618e385c9e183c784635185e2e98a3e6c3d20ac30f2c60996f38b992 + languageName: node + linkType: hard + +"@redis/time-series@npm:1.0.4": + version: 1.0.4 + resolution: "@redis/time-series@npm:1.0.4" + peerDependencies: + "@redis/client": ^1.0.0 + checksum: a5fca079deb04a2f204a7f9a375a6ff698a119d5dd53f7581fa8fd9e3bacacf1ecb0253b97fada484a012fea7a98014bc0f4f79707d4e92ff61c00318f2bfe04 + languageName: node + linkType: hard + "@restart/hooks@npm:^0.4.7": version: 0.4.7 resolution: "@restart/hooks@npm:0.4.7" @@ -2581,6 +2791,13 @@ __metadata: languageName: node linkType: hard +"@trysound/sax@npm:0.2.0": + version: 0.2.0 + resolution: "@trysound/sax@npm:0.2.0" + checksum: 11226c39b52b391719a2a92e10183e4260d9651f86edced166da1d95f39a0a1eaa470e44d14ac685ccd6d3df7e2002433782872c0feeb260d61e80f21250e65c + languageName: node + linkType: hard + "@types/aria-query@npm:^4.2.0": version: 4.2.0 resolution: "@types/aria-query@npm:4.2.0" @@ -2601,6 +2818,19 @@ __metadata: languageName: node linkType: hard +"@types/babel__core@npm:^7.20.0": + version: 7.20.0 + resolution: "@types/babel__core@npm:7.20.0" + dependencies: + "@babel/parser": ^7.20.7 + "@babel/types": ^7.20.7 + "@types/babel__generator": "*" + "@types/babel__template": "*" + "@types/babel__traverse": "*" + checksum: 49b601a0a7637f1f387442c8156bd086cfd10ff4b82b0e1994e73a6396643b5435366fb33d6b604eade8467cca594ef97adcbc412aede90bb112ebe88d0ad6df + languageName: node + linkType: hard + "@types/babel__generator@npm:*": version: 7.6.1 resolution: "@types/babel__generator@npm:7.6.1" @@ -2629,6 +2859,16 @@ __metadata: languageName: node linkType: hard +"@types/body-parser@npm:*": + version: 1.19.2 + resolution: "@types/body-parser@npm:1.19.2" + dependencies: + "@types/connect": "*" + "@types/node": "*" + checksum: e17840c7d747a549f00aebe72c89313d09fbc4b632b949b2470c5cb3b1cb73863901ae84d9335b567a79ec5efcfb8a28ff8e3f36bc8748a9686756b6d5681f40 + languageName: node + linkType: hard + "@types/color-name@npm:^1.1.1": version: 1.1.1 resolution: "@types/color-name@npm:1.1.1" @@ -2636,6 +2876,31 @@ __metadata: languageName: node linkType: hard +"@types/connect@npm:*": + version: 3.4.35 + resolution: "@types/connect@npm:3.4.35" + dependencies: + "@types/node": "*" + checksum: fe81351470f2d3165e8b12ce33542eef89ea893e36dd62e8f7d72566dfb7e448376ae962f9f3ea888547ce8b55a40020ca0e01d637fab5d99567673084542641 + languageName: node + linkType: hard + +"@types/emoji-mart@npm:^3.0.9": + version: 3.0.9 + resolution: "@types/emoji-mart@npm:3.0.9" + dependencies: + "@types/react": "*" + checksum: 97e22728985e1542975b5d9ec43fc2bb9bfd1952640be177799a52f3cb5785def80ab59c23c34ac2310604c7097f2c1d24cebf4dd6a17706fceda6725c6d8150 + languageName: node + linkType: hard + +"@types/escape-html@npm:^1.0.2": + version: 1.0.2 + resolution: "@types/escape-html@npm:1.0.2" + checksum: 42505406d8680cf735b456034f8a1464849be415271ed8682ab24c7add7d8448fd3ce3ca48ec15354d656d532c640e0f9db28adffc95bf80d61dd69c143e7c1c + languageName: node + linkType: hard + "@types/estree@npm:0.0.39": version: 0.0.39 resolution: "@types/estree@npm:0.0.39" @@ -2650,6 +2915,29 @@ __metadata: languageName: node linkType: hard +"@types/express-serve-static-core@npm:^4.17.33": + version: 4.17.33 + resolution: "@types/express-serve-static-core@npm:4.17.33" + dependencies: + "@types/node": "*" + "@types/qs": "*" + "@types/range-parser": "*" + checksum: dce580d16b85f207445af9d4053d66942b27d0c72e86153089fa00feee3e96ae336b7bedb31ed4eea9e553c99d6dd356ed6e0928f135375d9f862a1a8015adf2 + languageName: node + linkType: hard + +"@types/express@npm:^4.17.17": + version: 4.17.17 + resolution: "@types/express@npm:4.17.17" + dependencies: + "@types/body-parser": "*" + "@types/express-serve-static-core": ^4.17.33 + "@types/qs": "*" + "@types/serve-static": "*" + checksum: 0196dacc275ac3ce89d7364885cb08e7fb61f53ca101f65886dbf1daf9b7eb05c0943e2e4bbd01b0cc5e50f37e0eea7e4cbe97d0304094411ac73e1b7998f4da + languageName: node + linkType: hard + "@types/glob@npm:^7.1.1": version: 7.1.1 resolution: "@types/glob@npm:7.1.1" @@ -2670,6 +2958,13 @@ __metadata: languageName: node linkType: hard +"@types/history@npm:^4.7.11": + version: 4.7.11 + resolution: "@types/history@npm:4.7.11" + checksum: c92e2ba407dcab0581a9afdf98f533aa41b61a71133420a6d92b1ca9839f741ab1f9395b17454ba5b88cb86020b70b22d74a1950ccfbdfd9beeaa5459fdc3464 + languageName: node + linkType: hard + "@types/hoist-non-react-statics@npm:^3.3.0": version: 3.3.1 resolution: "@types/hoist-non-react-statics@npm:3.3.1" @@ -2680,6 +2975,22 @@ __metadata: languageName: node linkType: hard +"@types/http-link-header@npm:^1.0.3": + version: 1.0.3 + resolution: "@types/http-link-header@npm:1.0.3" + dependencies: + "@types/node": "*" + checksum: 4fcaef6be196c301988db473a3b8fd3cd4622acb87935c6ec38fa772b98bbb24e78556ceab8061de786f3ebbe75c23052e3289646d624e506f07e29abbe63939 + languageName: node + linkType: hard + +"@types/intl@npm:^1.2.0": + version: 1.2.0 + resolution: "@types/intl@npm:1.2.0" + checksum: 95348313fee4949c6feba98bb35be45c0930ff816d7fedee8afd003282cbc004bf682ff94e6a662af5987c8fcc98bb4e8f93a4919d1ef6bbd9ce83577bd77fa6 + languageName: node + linkType: hard + "@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": version: 2.0.3 resolution: "@types/istanbul-lib-coverage@npm:2.0.3" @@ -2725,6 +3036,23 @@ __metadata: languageName: node linkType: hard +"@types/jest@npm:^29.4.2": + version: 29.4.2 + resolution: "@types/jest@npm:29.4.2" + dependencies: + expect: ^29.0.0 + pretty-format: ^29.0.0 + checksum: 83ec002d289c49c9693c619363e6db036db95426fcfa5e8e18b8291b721702bb8b3f711499f15a1d75c8fd92dc4184a24dfcc16a7b4fcde88c3c4f898240b58a + languageName: node + linkType: hard + +"@types/js-yaml@npm:^4.0.5": + version: 4.0.5 + resolution: "@types/js-yaml@npm:4.0.5" + checksum: 7dcac8c50fec31643cc9d6444b5503239a861414cdfaa7ae9a38bc22597c4d850c4b8cec3d82d73b3fbca408348ce223b0408d598b32e094470dfffc6d486b4d + languageName: node + linkType: hard + "@types/jsdom@npm:^20.0.0": version: 20.0.0 resolution: "@types/jsdom@npm:20.0.0" @@ -2743,6 +3071,13 @@ __metadata: languageName: node linkType: hard +"@types/json-schema@npm:^7.0.9": + version: 7.0.11 + resolution: "@types/json-schema@npm:7.0.11" + checksum: 527bddfe62db9012fccd7627794bd4c71beb77601861055d87e3ee464f2217c85fca7a4b56ae677478367bbd248dbde13553312b7d4dbc702a2f2bbf60c4018d + languageName: node + linkType: hard + "@types/json5@npm:^0.0.29": version: 0.0.29 resolution: "@types/json5@npm:0.0.29" @@ -2750,6 +3085,20 @@ __metadata: languageName: node linkType: hard +"@types/lodash@npm:^4.14.191": + version: 4.14.191 + resolution: "@types/lodash@npm:4.14.191" + checksum: ba0d5434e10690869f32d5ea49095250157cae502f10d57de0a723fd72229ce6c6a4979576f0f13e0aa9fbe3ce2457bfb9fa7d4ec3d6daba56730a51906d1491 + languageName: node + linkType: hard + +"@types/mime@npm:*": + version: 3.0.1 + resolution: "@types/mime@npm:3.0.1" + checksum: 4040fac73fd0cea2460e29b348c1a6173da747f3a87da0dbce80dd7a9355a3d0e51d6d9a401654f3e5550620e3718b5a899b2ec1debf18424e298a2c605346e7 + languageName: node + linkType: hard + "@types/minimatch@npm:*": version: 3.0.3 resolution: "@types/minimatch@npm:3.0.3" @@ -2778,6 +3127,20 @@ __metadata: languageName: node linkType: hard +"@types/npmlog@npm:^4.1.4": + version: 4.1.4 + resolution: "@types/npmlog@npm:4.1.4" + checksum: 740f7431ccfc0e127aa8d162fe05c6ce8aa71290be020d179b2824806d19bd2c706c7e0c9a3c9963cefcdf2ceacb1dec6988c394c3694451387759dafe0aa927 + languageName: node + linkType: hard + +"@types/object-assign@npm:^4.0.30": + version: 4.0.30 + resolution: "@types/object-assign@npm:4.0.30" + checksum: 24e0471ddcd578b7ea72d5174e9cd6b68d78b5fa00f9f48cee38713c0e2886c6c3478c53c04d0508d16deb4370eed71ed0bb1f5b9aaa406e61f07ffed5da1d3b + languageName: node + linkType: hard + "@types/parse-json@npm:^4.0.0": version: 4.0.0 resolution: "@types/parse-json@npm:4.0.0" @@ -2785,6 +3148,17 @@ __metadata: languageName: node linkType: hard +"@types/pg@npm:^8.6.6": + version: 8.6.6 + resolution: "@types/pg@npm:8.6.6" + dependencies: + "@types/node": "*" + pg-protocol: "*" + pg-types: ^2.2.0 + checksum: ac145553a8ad2f357feacad1bceaf5d6ce904eb9d66233b84c469a2b4fa3738d4ebdf29b7ea45387be2d07f915fd873a229f90a2f766d7c377afa7c41fbcf8d1 + languageName: node + linkType: hard + "@types/prettier@npm:^2.1.5": version: 2.2.3 resolution: "@types/prettier@npm:2.2.3" @@ -2799,10 +3173,38 @@ __metadata: languageName: node linkType: hard -"@types/q@npm:^1.5.1": - version: 1.5.2 - resolution: "@types/q@npm:1.5.2" - checksum: 3bb811e0bccfa2bf6a6d366d46bf508739de7338a22bdb8474cbd00a1aa9b5c65210f4ada6a8e9cca50f9340e529719f3b65d7f70dbc972854ebb66728743608 +"@types/prop-types@npm:^15.7.5": + version: 15.7.5 + resolution: "@types/prop-types@npm:15.7.5" + checksum: 5b43b8b15415e1f298243165f1d44390403bb2bd42e662bca3b5b5633fdd39c938e91b7fce3a9483699db0f7a715d08cef220c121f723a634972fdf596aec980 + languageName: node + linkType: hard + +"@types/punycode@npm:^2.1.0": + version: 2.1.0 + resolution: "@types/punycode@npm:2.1.0" + checksum: 6835698becab395eb9ac186970fd7879aeb522ea72d516ef9d681d787989653fcc2439ecc07d48280e1ca11862773b806efeec3fdbd1207528829a83b65d4275 + languageName: node + linkType: hard + +"@types/qs@npm:*": + version: 6.9.7 + resolution: "@types/qs@npm:6.9.7" + checksum: 7fd6f9c25053e9b5bb6bc9f9f76c1d89e6c04f7707a7ba0e44cc01f17ef5284adb82f230f542c2d5557d69407c9a40f0f3515e8319afd14e1e16b5543ac6cdba + languageName: node + linkType: hard + +"@types/raf@npm:^3.4.0": + version: 3.4.0 + resolution: "@types/raf@npm:3.4.0" + checksum: d93e9b5244a081c64708b8918ef7e56936d6ef0144925b189e67d34127c0cb3a73fcf6866ab312db156554a66c26609dd056da5f7302f6658c049d6a37ed5f56 + languageName: node + linkType: hard + +"@types/range-parser@npm:*": + version: 1.2.4 + resolution: "@types/range-parser@npm:1.2.4" + checksum: b7c0dfd5080a989d6c8bb0b6750fc0933d9acabeb476da6fe71d8bdf1ab65e37c136169d84148034802f48378ab94e3c37bb4ef7656b2bec2cb9c0f8d4146a95 languageName: node linkType: hard @@ -2815,6 +3217,59 @@ __metadata: languageName: node linkType: hard +"@types/react-dom@npm:^16.9.18": + version: 16.9.18 + resolution: "@types/react-dom@npm:16.9.18" + dependencies: + "@types/react": ^16 + checksum: bd9cbc67dd06a351316e9234c0ab6aed810c25ba926201a4da5699eaaf8d7e15f4b45247a40a14d3c7b319442790b90514450579c6db7cc12f1b57deda12561e + languageName: node + linkType: hard + +"@types/react-helmet@npm:^6.1.6": + version: 6.1.6 + resolution: "@types/react-helmet@npm:6.1.6" + dependencies: + "@types/react": "*" + checksum: 81560c56bfe854b6a43aee31360862588ac875d1177b975da5ce049ac9aa2f7c98dcde65d4397bfaa04e468f40cf3ab2975a2ef966a69d64a60493422898698d + languageName: node + linkType: hard + +"@types/react-immutable-proptypes@npm:^2.1.0": + version: 2.1.0 + resolution: "@types/react-immutable-proptypes@npm:2.1.0" + dependencies: + "@types/prop-types": "*" + immutable: ^3.8.2 + checksum: 94cd8e23ca0669f52e4e665f5a8c999faa35ef3bb432734ca9bf35e4b23f631988aebee0e31f5e83f9a014bfb4a6c97f5f011c3fc4632a539fe4ec3bbbfd574f + languageName: node + linkType: hard + +"@types/react-intl@npm:2.3.18": + version: 2.3.18 + resolution: "@types/react-intl@npm:2.3.18" + checksum: 33eff008428613e3e0fa0c452d93883c4de614ed4ac21c8af35e9f658c203c02f567835bc993b4488e25aa3f8baa617cfd90fef15d0cf13f302fb025d0d51f56 + languageName: node + linkType: hard + +"@types/react-motion@npm:^0.0.33": + version: 0.0.33 + resolution: "@types/react-motion@npm:0.0.33" + dependencies: + "@types/react": "*" + checksum: 02daed35b007aa5c02afe8fbdcaa77463bf8d5c85a70659cd467c05ea0a310d44c9683f15605eca6e0c609407700cf2930cf32d0c56cc65bff7c6f70c0c29747 + languageName: node + linkType: hard + +"@types/react-overlays@npm:^3.1.0": + version: 3.1.0 + resolution: "@types/react-overlays@npm:3.1.0" + dependencies: + react-overlays: "*" + checksum: d0748ef88b81b927adced0847e1102fd5bec981c0ebc6eea986a87aaf19fb7ae13461e04007a3e06e1f78522269aa631e0d33f6699fa32609ae4c109c23b66ef + languageName: node + linkType: hard + "@types/react-redux@npm:^7.1.20": version: 7.1.20 resolution: "@types/react-redux@npm:7.1.20" @@ -2827,6 +3282,93 @@ __metadata: languageName: node linkType: hard +"@types/react-redux@npm:^7.1.25": + version: 7.1.25 + resolution: "@types/react-redux@npm:7.1.25" + dependencies: + "@types/hoist-non-react-statics": ^3.3.0 + "@types/react": "*" + hoist-non-react-statics: ^3.3.0 + redux: ^4.0.0 + checksum: a61ec25cbf8bb3720850402d3c49493fcff4afb73ad447d161460b5d4c600c984ad48708e8564d2fd32052eaa3c3b3f655c5b300ce813429637cce9e5958329f + languageName: node + linkType: hard + +"@types/react-router-dom@npm:^5.3.3": + version: 5.3.3 + resolution: "@types/react-router-dom@npm:5.3.3" + dependencies: + "@types/history": ^4.7.11 + "@types/react": "*" + "@types/react-router": "*" + checksum: 28c4ea48909803c414bf5a08502acbb8ba414669b4b43bb51297c05fe5addc4df0b8fd00e0a9d1e3535ec4073ef38aaafac2c4a2b95b787167d113bc059beff3 + languageName: node + linkType: hard + +"@types/react-router@npm:*": + version: 5.1.20 + resolution: "@types/react-router@npm:5.1.20" + dependencies: + "@types/history": ^4.7.11 + "@types/react": "*" + checksum: 128764143473a5e9457ddc715436b5d49814b1c214dde48939b9bef23f0e77f52ffcdfa97eb8d3cc27e2c229869c0cdd90f637d887b62f2c9f065a87d6425419 + languageName: node + linkType: hard + +"@types/react-select@npm:^5.0.1": + version: 5.0.1 + resolution: "@types/react-select@npm:5.0.1" + dependencies: + react-select: "*" + checksum: d0d378336a4f4875b6f1d0ed42ac7561fec54e09f3466b58d8ade2715c6046791bcac2012ef8f83673608a075c09ea788406e60b2a9eadd159d8443089bc166d + languageName: node + linkType: hard + +"@types/react-sparklines@npm:^1.7.2": + version: 1.7.2 + resolution: "@types/react-sparklines@npm:1.7.2" + dependencies: + "@types/react": "*" + checksum: e0e8479c256731c3fe9405a5d3061f81838f8708bc585203afa89ff81f266f06f5b497b1db77e6a488d6073de623c4093afd9cbf3626bb7c89f996632749c281 + languageName: node + linkType: hard + +"@types/react-swipeable-views@npm:^0.13.1": + version: 0.13.1 + resolution: "@types/react-swipeable-views@npm:0.13.1" + dependencies: + "@types/react": "*" + checksum: 47908514a541d40c454b09c3eb47e6bbe55742c37e88181b412052297941191d08b1fc0ec176b6c886bb3f22a8d66aff9bdeb2c26496c6335a7579e9aea02302 + languageName: node + linkType: hard + +"@types/react-test-renderer@npm:^18.0.0": + version: 18.0.0 + resolution: "@types/react-test-renderer@npm:18.0.0" + dependencies: + "@types/react": "*" + checksum: 6afc938a1d7618d88ab8793e251f0bd5981bf3f08c1b600f74df3f8800b92589ea534dc6dcb7c8d683893fcc740bf8d7843a42bf2dae59785cfe88f004bd7b0b + languageName: node + linkType: hard + +"@types/react-textarea-autosize@npm:^8.0.0": + version: 8.0.0 + resolution: "@types/react-textarea-autosize@npm:8.0.0" + dependencies: + react-textarea-autosize: "*" + checksum: 35a06b6fe47f04ba8634470c28cd2441c7195a4e6776c57990839f7b2929ec3f5db55df222df50f96ddedb872de7f9944ef22a6345a5c38c11be7e85fb4ffe68 + languageName: node + linkType: hard + +"@types/react-toggle@npm:^4.0.3": + version: 4.0.3 + resolution: "@types/react-toggle@npm:4.0.3" + dependencies: + "@types/react": "*" + checksum: bdded787e88127eb27863aeb066ae6ff132d7bc5a563e2921e912b88c41d7cd2ea6b9dc1714fa741886c28678ee968fb7799db4c3758118eb8739d81d3d6ae0a + languageName: node + linkType: hard + "@types/react-transition-group@npm:^4.4.0": version: 4.4.3 resolution: "@types/react-transition-group@npm:4.4.3" @@ -2858,6 +3400,34 @@ __metadata: languageName: node linkType: hard +"@types/react@npm:^16, @types/react@npm:^16.14.38": + version: 16.14.38 + resolution: "@types/react@npm:16.14.38" + dependencies: + "@types/prop-types": "*" + "@types/scheduler": "*" + csstype: ^3.0.2 + checksum: b5e73bb51225c8d869bd6bd081a2b220f21e7f4038a3a06fd2cc49a1da859b12abce4dff14cd888de715b3647fecd26c30f3fc4f96ac9a3874a81922822d4b4e + languageName: node + linkType: hard + +"@types/redux-immutable@npm:^4.0.3": + version: 4.0.3 + resolution: "@types/redux-immutable@npm:4.0.3" + dependencies: + immutable: ^4.0.0-rc.1 + redux: ^4.0.0 + checksum: 2af53b73c9015b4dc561c4b7eea5aaf6edf83c03bc850cde63cc6979153dc3a1007ebcaf15476612eddc074e2338478c1500f877a4ebd98adf3058202a667784 + languageName: node + linkType: hard + +"@types/requestidlecallback@npm:^0.3.5": + version: 0.3.5 + resolution: "@types/requestidlecallback@npm:0.3.5" + checksum: cfbed6d7ed472258d88ee67dbfa3e6d1aefb51ee03f22798f3f3e95f8d43dc9bbf0d6a480b3e5786cdd7a65f98ed35251a0f587240145174c09249dc32b220d0 + languageName: node + linkType: hard + "@types/resolve@npm:1.17.1": version: 1.17.1 resolution: "@types/resolve@npm:1.17.1" @@ -2881,6 +3451,30 @@ __metadata: languageName: node linkType: hard +"@types/semver@npm:^7.3.12": + version: 7.3.13 + resolution: "@types/semver@npm:7.3.13" + checksum: 00c0724d54757c2f4bc60b5032fe91cda6410e48689633d5f35ece8a0a66445e3e57fa1d6e07eb780f792e82ac542948ec4d0b76eb3484297b79bd18b8cf1cb0 + languageName: node + linkType: hard + +"@types/serve-static@npm:*": + version: 1.15.1 + resolution: "@types/serve-static@npm:1.15.1" + dependencies: + "@types/mime": "*" + "@types/node": "*" + checksum: 2e078bdc1e458c7dfe69e9faa83cc69194b8896cce57cb745016580543c7ab5af07fdaa8ac1765eb79524208c81017546f66056f44d1204f812d72810613de36 + languageName: node + linkType: hard + +"@types/source-list-map@npm:*": + version: 0.1.2 + resolution: "@types/source-list-map@npm:0.1.2" + checksum: fda8f37537aca9d3ed860d559289ab1dddb6897e642e6f53e909bbd18a7ac3129a8faa2a7d093847c91346cf09c86ef36e350c715406fba1f2271759b449adf6 + languageName: node + linkType: hard + "@types/stack-utils@npm:^2.0.0": version: 2.0.0 resolution: "@types/stack-utils@npm:2.0.0" @@ -2888,6 +3482,13 @@ __metadata: languageName: node linkType: hard +"@types/tapable@npm:^1": + version: 1.0.8 + resolution: "@types/tapable@npm:1.0.8" + checksum: b4b754dd0822c407b8f29ef6b766490721c276880f9e976d92ee2b3ef915f11a05a2442ae36c8978bcd872ad6bc833b0a2c4d267f2d611590668a366bad50652 + languageName: node + linkType: hard + "@types/testing-library__jest-dom@npm:^5.9.1": version: 5.9.1 resolution: "@types/testing-library__jest-dom@npm:5.9.1" @@ -2897,6 +3498,13 @@ __metadata: languageName: node linkType: hard +"@types/throng@npm:^4.0.2": + version: 4.0.2 + resolution: "@types/throng@npm:4.0.2" + checksum: b0f0216f4e69693b019c00a0b605f3d7a60ec4c0c3e3c816bd2b12e99176f228c3c93d9d24824fe527ce46f9ef8757e99783e7590ae6e8c9d34ed6bd12346b01 + languageName: node + linkType: hard + "@types/tough-cookie@npm:*": version: 4.0.2 resolution: "@types/tough-cookie@npm:4.0.2" @@ -2911,6 +3519,22 @@ __metadata: languageName: node linkType: hard +"@types/uglify-js@npm:*": + version: 3.17.1 + resolution: "@types/uglify-js@npm:3.17.1" + dependencies: + source-map: ^0.6.1 + checksum: 76b9aa6b5c19690bee1fba29835ca580ec92db2b43cb8e2acd0278086138372a66e55bbd785c90d032bc890069f0cfde9c763f2d2860bb1a747b581a04d0999b + languageName: node + linkType: hard + +"@types/uuid@npm:^8.3.4": + version: 8.3.4 + resolution: "@types/uuid@npm:8.3.4" + checksum: 6f11f3ff70f30210edaa8071422d405e9c1d4e53abbe50fdce365150d3c698fe7bbff65c1e71ae080cbfb8fded860dbb5e174da96fdbbdfcaa3fb3daa474d20f + languageName: node + linkType: hard + "@types/warning@npm:^3.0.0": version: 3.0.0 resolution: "@types/warning@npm:3.0.0" @@ -2918,6 +3542,31 @@ __metadata: languageName: node linkType: hard +"@types/webpack-sources@npm:*": + version: 3.2.0 + resolution: "@types/webpack-sources@npm:3.2.0" + dependencies: + "@types/node": "*" + "@types/source-list-map": "*" + source-map: ^0.7.3 + checksum: fa23dcfb99f79cc0ba8e6ca41cb8dedb406f8d7772e8e3d3d9b443bfb36557a1a78f4de2b97905554db98beee1a2ef6f930e188977adde6452392a64dd4b7c2a + languageName: node + linkType: hard + +"@types/webpack@npm:^4.41.33": + version: 4.41.33 + resolution: "@types/webpack@npm:4.41.33" + dependencies: + "@types/node": "*" + "@types/tapable": ^1 + "@types/uglify-js": "*" + "@types/webpack-sources": "*" + anymatch: ^3.0.0 + source-map: ^0.6.0 + checksum: 5f64818128c94026be0e43e77d687e2d90f0da526a3a7c308c6a0bb12e93a35c9243be427bbf6865f64fd71dc5b32715af9b9da0cd6ae8335081b6db995bad2b + languageName: node + linkType: hard + "@types/yargs-parser@npm:*": version: 15.0.0 resolution: "@types/yargs-parser@npm:15.0.0" @@ -2943,6 +3592,15 @@ __metadata: languageName: node linkType: hard +"@types/yargs@npm:^17.0.22": + version: 17.0.22 + resolution: "@types/yargs@npm:17.0.22" + dependencies: + "@types/yargs-parser": "*" + checksum: 0773523fda71bafdc52f13f5970039e535a353665a60ba9261149a5c9c2b908242e6e77fbb7a8c06931ec78ce889d64d09673c68ba23eb5f5742d5385d0d1982 + languageName: node + linkType: hard + "@types/yargs@npm:^17.0.8": version: 17.0.10 resolution: "@types/yargs@npm:17.0.10" @@ -2952,6 +3610,127 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/eslint-plugin@npm:^5.55.0": + version: 5.55.0 + resolution: "@typescript-eslint/eslint-plugin@npm:5.55.0" + dependencies: + "@eslint-community/regexpp": ^4.4.0 + "@typescript-eslint/scope-manager": 5.55.0 + "@typescript-eslint/type-utils": 5.55.0 + "@typescript-eslint/utils": 5.55.0 + debug: ^4.3.4 + grapheme-splitter: ^1.0.4 + ignore: ^5.2.0 + natural-compare-lite: ^1.4.0 + semver: ^7.3.7 + tsutils: ^3.21.0 + peerDependencies: + "@typescript-eslint/parser": ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: e3239ec6016eeb73b8b4d8310581978e28b8d3378140a8eb70bd8e33ffd332266020c19d493e0ccae4edfd4abd6097608718c50308fe6288f4ffeb8e4784efd9 + languageName: node + linkType: hard + +"@typescript-eslint/parser@npm:^5.55.0": + version: 5.55.0 + resolution: "@typescript-eslint/parser@npm:5.55.0" + dependencies: + "@typescript-eslint/scope-manager": 5.55.0 + "@typescript-eslint/types": 5.55.0 + "@typescript-eslint/typescript-estree": 5.55.0 + debug: ^4.3.4 + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 48a20dc7e67960b5168b77bfb9d11d053a21d57bb83cf7b59f750191cbca5eea3b4636a8e6e75cc0aca5a84cdef91fed5440934fc2935f8c6fa71630a253a50c + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:5.55.0": + version: 5.55.0 + resolution: "@typescript-eslint/scope-manager@npm:5.55.0" + dependencies: + "@typescript-eslint/types": 5.55.0 + "@typescript-eslint/visitor-keys": 5.55.0 + checksum: f253db88f69a29e4abe2f567d0a611cc3e7fb1a911a2cc54a2f6baf16e3de4d1883b3f8e45ee61b3db9fa5543dda0fd7b608de9d28ba6173ab49bfd17ff90cad + languageName: node + linkType: hard + +"@typescript-eslint/type-utils@npm:5.55.0": + version: 5.55.0 + resolution: "@typescript-eslint/type-utils@npm:5.55.0" + dependencies: + "@typescript-eslint/typescript-estree": 5.55.0 + "@typescript-eslint/utils": 5.55.0 + debug: ^4.3.4 + tsutils: ^3.21.0 + peerDependencies: + eslint: "*" + peerDependenciesMeta: + typescript: + optional: true + checksum: 5c60d441355b51f96b596324068c10605c74abb46748c0bbc6d8f7f2ea40acb6b4bda3b537105fa189172324c56d18bd88e7102e67f99f8c03bc05c6d0e2023d + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:5.55.0": + version: 5.55.0 + resolution: "@typescript-eslint/types@npm:5.55.0" + checksum: 7d851f09a2106514d3a9c7164d34758f30abfe554e3c7a02be75cdc7e16644e23ca32840a8f39a0321bc509927fb4d98ce91b22b21e8544ac56cef33b815a864 + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:5.55.0": + version: 5.55.0 + resolution: "@typescript-eslint/typescript-estree@npm:5.55.0" + dependencies: + "@typescript-eslint/types": 5.55.0 + "@typescript-eslint/visitor-keys": 5.55.0 + debug: ^4.3.4 + globby: ^11.1.0 + is-glob: ^4.0.3 + semver: ^7.3.7 + tsutils: ^3.21.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: d24a11aee3d01067018d99804f420aecb8af88e43bf170d5d14f6480bd378c0a81ce49a37f5d6c36e5f0f319e3fa8b099720f295f2767338be1a4f7e9a5323e1 + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:5.55.0": + version: 5.55.0 + resolution: "@typescript-eslint/utils@npm:5.55.0" + dependencies: + "@eslint-community/eslint-utils": ^4.2.0 + "@types/json-schema": ^7.0.9 + "@types/semver": ^7.3.12 + "@typescript-eslint/scope-manager": 5.55.0 + "@typescript-eslint/types": 5.55.0 + "@typescript-eslint/typescript-estree": 5.55.0 + eslint-scope: ^5.1.1 + semver: ^7.3.7 + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 368cfc3fb9d6af6901e739e2e41c3f7f1c1244576607445f4f59d95eccb237f73e1a75e7f0816ec9a32a0f1ec6bb4a3602a99e17e70fe184e62f7c69dcbe4b8d + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:5.55.0": + version: 5.55.0 + resolution: "@typescript-eslint/visitor-keys@npm:5.55.0" + dependencies: + "@typescript-eslint/types": 5.55.0 + eslint-visitor-keys: ^3.3.0 + checksum: 0b24c72dff99dd2cf41c19d20067f8ab20a38aa2e82c79c5530bec7cf651031e95c80702fc21c813c9b94e5f3d4cd210f13967b2966ef38abe548cb5f05848a3 + languageName: node + linkType: hard + "@webassemblyjs/ast@npm:1.9.0": version: 1.9.0 resolution: "@webassemblyjs/ast@npm:1.9.0" @@ -3222,7 +4001,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.0.4, acorn@npm:^8.1.0, acorn@npm:^8.5.0, acorn@npm:^8.8.0, acorn@npm:^8.8.1": +"acorn@npm:^8.0.4, acorn@npm:^8.1.0, acorn@npm:^8.5.0, acorn@npm:^8.8.0, acorn@npm:^8.8.1, acorn@npm:^8.8.2": version: 8.8.2 resolution: "acorn@npm:8.8.2" bin: @@ -3303,13 +4082,6 @@ __metadata: languageName: node linkType: hard -"alphanum-sort@npm:^1.0.0": - version: 1.0.2 - resolution: "alphanum-sort@npm:1.0.2" - checksum: 5a32d0b3c0944e65d22ff3ae2f88d7a4f8d88a78a703033caeae33f2944915e053d283d02f630dc94823edc7757148ecdcf39fd687a5117bda5c10133a03a7d8 - languageName: node - linkType: hard - "ansi-colors@npm:^3.0.0": version: 3.2.4 resolution: "ansi-colors@npm:3.2.4" @@ -3326,6 +4098,15 @@ __metadata: languageName: node linkType: hard +"ansi-escapes@npm:^4.3.0": + version: 4.3.2 + resolution: "ansi-escapes@npm:4.3.2" + dependencies: + type-fest: ^0.21.3 + checksum: 93111c42189c0a6bed9cdb4d7f2829548e943827ee8479c74d6e0b22ee127b2a21d3f8b5ca57723b8ef78ce011fbfc2784350eb2bde3ccfccf2f575fa8489815 + languageName: node + linkType: hard + "ansi-html-community@npm:0.0.8": version: 0.0.8 resolution: "ansi-html-community@npm:0.0.8" @@ -3356,6 +4137,13 @@ __metadata: languageName: node linkType: hard +"ansi-regex@npm:^6.0.1": + version: 6.0.1 + resolution: "ansi-regex@npm:6.0.1" + checksum: 1ff8b7667cded1de4fa2c9ae283e979fc87036864317da86a2e546725f96406746411d0d85e87a2d12fa5abd715d90006de7fa4fa0477c92321ad3b4c7d4e169 + languageName: node + linkType: hard + "ansi-styles@npm:^3.2.0, ansi-styles@npm:^3.2.1": version: 3.2.1 resolution: "ansi-styles@npm:3.2.1" @@ -3382,6 +4170,13 @@ __metadata: languageName: node linkType: hard +"ansi-styles@npm:^6.0.0": + version: 6.2.1 + resolution: "ansi-styles@npm:6.2.1" + checksum: ef940f2f0ced1a6347398da88a91da7930c33ecac3c77b72c5905f8b8fe402c52e6fde304ff5347f616e27a742da3f1dc76de98f6866c69251ad0b07a66776d9 + languageName: node + linkType: hard + "anymatch@npm:^2.0.0": version: 2.0.0 resolution: "anymatch@npm:2.0.0" @@ -3392,6 +4187,16 @@ __metadata: languageName: node linkType: hard +"anymatch@npm:^3.0.0": + version: 3.1.3 + resolution: "anymatch@npm:3.1.3" + dependencies: + normalize-path: ^3.0.0 + picomatch: ^2.0.4 + checksum: 3e044fd6d1d26545f235a9fe4d7a534e2029d8e59fa7fd9f2a6eb21230f6b5380ea1eaf55136e60cbf8e613544b3b766e7a6fa2102e2a3a117505466e3025dc2 + languageName: node + linkType: hard + "anymatch@npm:^3.0.3, anymatch@npm:~3.1.1": version: 3.1.1 resolution: "anymatch@npm:3.1.1" @@ -3402,7 +4207,7 @@ __metadata: languageName: node linkType: hard -"aproba@npm:^1.0.3 || ^2.0.0, aproba@npm:^1.1.1": +"aproba@npm:^1.0.3 || ^2.0.0": version: 1.2.0 resolution: "aproba@npm:1.2.0" checksum: 0fca141966559d195072ed047658b6e6c4fe92428c385dd38e288eacfc55807e7b4989322f030faff32c0f46bb0bc10f1e0ac32ec22d25315a1e5bbc0ebb76dc @@ -3696,20 +4501,21 @@ __metadata: languageName: node linkType: hard -"autoprefixer@npm:^9.8.8": - version: 9.8.8 - resolution: "autoprefixer@npm:9.8.8" +"autoprefixer@npm:^10.4.14": + version: 10.4.14 + resolution: "autoprefixer@npm:10.4.14" dependencies: - browserslist: ^4.12.0 - caniuse-lite: ^1.0.30001109 + browserslist: ^4.21.5 + caniuse-lite: ^1.0.30001464 + fraction.js: ^4.2.0 normalize-range: ^0.1.2 - num2fraction: ^1.2.2 - picocolors: ^0.2.1 - postcss: ^7.0.32 - postcss-value-parser: ^4.1.0 + picocolors: ^1.0.0 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.1.0 bin: autoprefixer: bin/autoprefixer - checksum: 8f017672fbac248db0cf4e86aa707d8b148d9abadb842b5cf4c6be306d80fa6a654fadefd17e46213234c1f0947612acce2864f93e903f3e736b183fc1aedc45 + checksum: e9f18e664a4e4a54a8f4ec5f6b49ed228ec45afaa76efcae361c93721795dc5ab644f36d2fdfc0dea446b02a8067b9372f91542ea431994399e972781ed46d95 languageName: node linkType: hard @@ -3727,14 +4533,14 @@ __metadata: languageName: node linkType: hard -"axios@npm:^1.3.3": - version: 1.3.3 - resolution: "axios@npm:1.3.3" +"axios@npm:^1.3.4": + version: 1.3.4 + resolution: "axios@npm:1.3.4" dependencies: follow-redirects: ^1.15.0 form-data: ^4.0.0 proxy-from-env: ^1.1.0 - checksum: b734a4bc348e2fa27150a7d4289d783fa405feb3f79f8daf28fd05813a12c8525ae9d3854aafe7ba041b005a4a751a0ba3b923331ceed41296ae14c7e54e2f26 + checksum: 7440edefcf8498bc3cdf39de00443e8101f249972c83b739c6e880d9d669fea9486372dbe8739e88b3bf8bb1ad15f6106693f206f078f4516fe8fd47b1c3093c languageName: node linkType: hard @@ -3747,20 +4553,20 @@ __metadata: languageName: node linkType: hard -"babel-jest@npm:^29.4.3": - version: 29.4.3 - resolution: "babel-jest@npm:29.4.3" +"babel-jest@npm:^29.5.0": + version: 29.5.0 + resolution: "babel-jest@npm:29.5.0" dependencies: - "@jest/transform": ^29.4.3 + "@jest/transform": ^29.5.0 "@types/babel__core": ^7.1.14 babel-plugin-istanbul: ^6.1.1 - babel-preset-jest: ^29.4.3 + babel-preset-jest: ^29.5.0 chalk: ^4.0.0 graceful-fs: ^4.2.9 slash: ^3.0.0 peerDependencies: "@babel/core": ^7.8.0 - checksum: a1a95937adb5e717dbffc2eb9e583fa6d26c7e5d5b07bb492a2d7f68631510a363e9ff097eafb642ad642dfac9dc2b13872b584f680e166a4f0922c98ea95853 + checksum: eafb6d37deb71f0c80bf3c80215aa46732153e5e8bcd73f6ff47d92e5c0c98c8f7f75995d0efec6289c371edad3693cd8fa2367b0661c4deb71a3a7117267ede languageName: node linkType: hard @@ -3792,15 +4598,15 @@ __metadata: languageName: node linkType: hard -"babel-plugin-jest-hoist@npm:^29.4.3": - version: 29.4.3 - resolution: "babel-plugin-jest-hoist@npm:29.4.3" +"babel-plugin-jest-hoist@npm:^29.5.0": + version: 29.5.0 + resolution: "babel-plugin-jest-hoist@npm:29.5.0" dependencies: "@babel/template": ^7.3.3 "@babel/types": ^7.3.3 "@types/babel__core": ^7.1.14 "@types/babel__traverse": ^7.0.6 - checksum: c8702a6db6b30ec39dfb9f8e72b501c13895231ed80b15ed2648448f9f0c7b7cc4b1529beac31802ae655f63479a05110ca612815aa25fb1b0e6c874e1589137 + checksum: 099b5254073b6bc985b6d2d045ad26fb8ed30ff8ae6404c4fe8ee7cd0e98a820f69e3dfb871c7c65aae0f4b65af77046244c07bb92d49ef9005c90eedf681539 languageName: node linkType: hard @@ -3931,15 +4737,15 @@ __metadata: languageName: node linkType: hard -"babel-preset-jest@npm:^29.4.3": - version: 29.4.3 - resolution: "babel-preset-jest@npm:29.4.3" +"babel-preset-jest@npm:^29.5.0": + version: 29.5.0 + resolution: "babel-preset-jest@npm:29.5.0" dependencies: - babel-plugin-jest-hoist: ^29.4.3 + babel-plugin-jest-hoist: ^29.5.0 babel-preset-current-node-syntax: ^1.0.0 peerDependencies: "@babel/core": ^7.0.0 - checksum: a091721861ea2f8d969ace8fe06570cff8f2e847dbc6e4800abacbe63f72131abde615ce0a3b6648472c97e55a5be7f8bf7ae381e2b194ad2fa1737096febcf5 + checksum: 5566ca2762766c9319b4973d018d2fa08c0fcf6415c72cc54f4c8e7199e851ea8f5e6c6730f03ed7ed44fc8beefa959dd15911f2647dee47c615ff4faeddb1ad languageName: node linkType: hard @@ -4016,13 +4822,6 @@ __metadata: languageName: node linkType: hard -"bluebird@npm:^3.5.5": - version: 3.7.2 - resolution: "bluebird@npm:3.7.2" - checksum: 869417503c722e7dc54ca46715f70e15f4d9c602a423a02c825570862d12935be59ed9c7ba34a9b31f186c017c23cac6b54e35446f8353059c101da73eac22ef - languageName: node - linkType: hard - "blurhash@npm:^2.0.5": version: 2.0.5 resolution: "blurhash@npm:2.0.5" @@ -4085,7 +4884,7 @@ __metadata: languageName: node linkType: hard -"boolbase@npm:^1.0.0, boolbase@npm:~1.0.0": +"boolbase@npm:^1.0.0": version: 1.0.0 resolution: "boolbase@npm:1.0.0" checksum: 3e25c80ef626c3a3487c73dbfc70ac322ec830666c9ad915d11b701142fab25ec1e63eff2c450c74347acfd2de854ccde865cd79ef4db1683f7c7b046ea43bb0 @@ -4218,17 +5017,17 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.0.0, browserslist@npm:^4.12.0, browserslist@npm:^4.21.3, browserslist@npm:^4.21.4": - version: 4.21.4 - resolution: "browserslist@npm:4.21.4" +"browserslist@npm:^4.0.0, browserslist@npm:^4.21.3, browserslist@npm:^4.21.4, browserslist@npm:^4.21.5": + version: 4.21.5 + resolution: "browserslist@npm:4.21.5" dependencies: - caniuse-lite: ^1.0.30001400 - electron-to-chromium: ^1.4.251 - node-releases: ^2.0.6 - update-browserslist-db: ^1.0.9 + caniuse-lite: ^1.0.30001449 + electron-to-chromium: ^1.4.284 + node-releases: ^2.0.8 + update-browserslist-db: ^1.0.10 bin: browserslist: cli.js - checksum: 4af3793704dbb4615bcd29059ab472344dc7961c8680aa6c4bb84f05340e14038d06a5aead58724eae69455b8fade8b8c69f1638016e87e5578969d74c078b79 + checksum: 9755986b22e73a6a1497fd8797aedd88e04270be33ce66ed5d85a1c8a798292a65e222b0f251bafa1c2522261e237d73b08b58689d4920a607e5a53d56dc4706 languageName: node linkType: hard @@ -4328,29 +5127,6 @@ __metadata: languageName: node linkType: hard -"cacache@npm:^12.0.2": - version: 12.0.4 - resolution: "cacache@npm:12.0.4" - dependencies: - bluebird: ^3.5.5 - chownr: ^1.1.1 - figgy-pudding: ^3.5.1 - glob: ^7.1.4 - graceful-fs: ^4.1.15 - infer-owner: ^1.0.3 - lru-cache: ^5.1.1 - mississippi: ^3.0.0 - mkdirp: ^0.5.1 - move-concurrently: ^1.0.1 - promise-inflight: ^1.0.1 - rimraf: ^2.6.3 - ssri: ^6.0.1 - unique-filename: ^1.1.1 - y18n: ^4.0.0 - checksum: c88a72f36939b2523533946ffb27828443db5bf5995d761b35ae17af1eb6c8e20ac55b00b74c2ca900b2e1e917f0afba6847bf8cc16bee05ccca6aa150e0830c - languageName: node - linkType: hard - "cacache@npm:^15.0.5": version: 15.0.5 resolution: "cacache@npm:15.0.5" @@ -4429,31 +5205,6 @@ __metadata: languageName: node linkType: hard -"caller-callsite@npm:^2.0.0": - version: 2.0.0 - resolution: "caller-callsite@npm:2.0.0" - dependencies: - callsites: ^2.0.0 - checksum: b685e9d126d9247b320cfdfeb3bc8da0c4be28d8fb98c471a96bc51aab3130099898a2fe3bf0308f0fe048d64c37d6d09f563958b9afce1a1e5e63d879c128a2 - languageName: node - linkType: hard - -"caller-path@npm:^2.0.0": - version: 2.0.0 - resolution: "caller-path@npm:2.0.0" - dependencies: - caller-callsite: ^2.0.0 - checksum: 3e12ccd0c71ec10a057aac69e3ec175b721ca858c640df021ef0d25999e22f7c1d864934b596b7d47038e9b56b7ec315add042abbd15caac882998b50102fb12 - languageName: node - linkType: hard - -"callsites@npm:^2.0.0": - version: 2.0.0 - resolution: "callsites@npm:2.0.0" - checksum: be2f67b247df913732b7dec1ec0bbfcdbaea263e5a95968b19ec7965affae9496b970e3024317e6d4baa8e28dc6ba0cec03f46fdddc2fdcc51396600e53c2623 - languageName: node - linkType: hard - "callsites@npm:^3.0.0": version: 3.1.0 resolution: "callsites@npm:3.1.0" @@ -4498,14 +5249,21 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001109, caniuse-lite@npm:^1.0.30001400": - version: 1.0.30001414 - resolution: "caniuse-lite@npm:1.0.30001414" - checksum: 97210cfd15ded093b20c33d35bef9711a88402c3345411dad420c991a41a3e38ad17fd66721e8334c86e9b2e4aa2c1851d3631f1441afb73b92d93b2b8ca890d +"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001449, caniuse-lite@npm:^1.0.30001464": + version: 1.0.30001466 + resolution: "caniuse-lite@npm:1.0.30001466" + checksum: d81d0801f72162ebb7edb222cb48702f351e1a2d6acc9f340913f5b07e28c2105d1d2de9f0633c9b89e1aa1cd14f5d9154e270bf7b61296a7209745b32bdb01c languageName: node linkType: hard -"chalk@npm:^2.0.0, chalk@npm:^2.3.2, chalk@npm:^2.4.1, chalk@npm:^2.4.2": +"chalk@npm:5.2.0": + version: 5.2.0 + resolution: "chalk@npm:5.2.0" + checksum: 03d8060277de6cf2fd567dc25fcf770593eb5bb85f460ce443e49255a30ff1242edd0c90a06a03803b0466ff0687a939b41db1757bec987113e83de89a003caa + languageName: node + linkType: hard + +"chalk@npm:^2.0.0, chalk@npm:^2.3.2, chalk@npm:^2.4.2": version: 2.4.2 resolution: "chalk@npm:2.4.2" dependencies: @@ -4585,13 +5343,6 @@ __metadata: languageName: node linkType: hard -"chownr@npm:^1.1.1": - version: 1.1.4 - resolution: "chownr@npm:1.1.4" - checksum: 115648f8eb38bac5e41c3857f3e663f9c39ed6480d1349977c4d96c95a47266fcacc5a5aabf3cb6c481e22d72f41992827db47301851766c4fd77ac21a4f081d - languageName: node - linkType: hard - "chownr@npm:^2.0.0": version: 2.0.0 resolution: "chownr@npm:2.0.0" @@ -4658,6 +5409,35 @@ __metadata: languageName: node linkType: hard +"cli-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "cli-cursor@npm:3.1.0" + dependencies: + restore-cursor: ^3.1.0 + checksum: 2692784c6cd2fd85cfdbd11f53aea73a463a6d64a77c3e098b2b4697a20443f430c220629e1ca3b195ea5ac4a97a74c2ee411f3807abf6df2b66211fec0c0a29 + languageName: node + linkType: hard + +"cli-truncate@npm:^2.1.0": + version: 2.1.0 + resolution: "cli-truncate@npm:2.1.0" + dependencies: + slice-ansi: ^3.0.0 + string-width: ^4.2.0 + checksum: bf1e4e6195392dc718bf9cd71f317b6300dc4a9191d052f31046b8773230ece4fa09458813bf0e3455a5e68c0690d2ea2c197d14a8b85a7b5e01c97f4b5feb5d + languageName: node + linkType: hard + +"cli-truncate@npm:^3.1.0": + version: 3.1.0 + resolution: "cli-truncate@npm:3.1.0" + dependencies: + slice-ansi: ^5.0.0 + string-width: ^5.0.0 + checksum: c3243e41974445691c63f8b405df1d5a24049dc33d324fe448dc572e561a7b772ae982692900b1a5960901cc4fc7def25a629b9c69a4208ee89d12ab3332617a + languageName: node + linkType: hard + "cliui@npm:^5.0.0": version: 5.0.0 resolution: "cliui@npm:5.0.0" @@ -4691,10 +5471,10 @@ __metadata: languageName: node linkType: hard -"cluster-key-slot@npm:1.1.0": - version: 1.1.0 - resolution: "cluster-key-slot@npm:1.1.0" - checksum: fc953c75209b1ef9088081bab4e40a0b2586491c974ab93460569c014515ca5a2e31c043f185285e177007162fc353d07836d98f570c171dbe055775430e495b +"cluster-key-slot@npm:1.1.2": + version: 1.1.2 + resolution: "cluster-key-slot@npm:1.1.2" + checksum: be0ad2d262502adc998597e83f9ded1b80f827f0452127c5a37b22dfca36bab8edf393f7b25bb626006fb9fb2436106939ede6d2d6ecf4229b96a47f27edd681 languageName: node linkType: hard @@ -4705,17 +5485,6 @@ __metadata: languageName: node linkType: hard -"coa@npm:^2.0.2": - version: 2.0.2 - resolution: "coa@npm:2.0.2" - dependencies: - "@types/q": ^1.5.1 - chalk: ^2.4.1 - q: ^1.1.2 - checksum: 44736914aac2160d3d840ed64432a90a3bb72285a0cd6a688eb5cabdf15d15a85eee0915b3f6f2a4659d5075817b1cb577340d3c9cbb47d636d59ab69f819552 - languageName: node - linkType: hard - "cocoon-js-vanilla@npm:^1.3.0": version: 1.3.0 resolution: "cocoon-js-vanilla@npm:1.3.0" @@ -4747,7 +5516,7 @@ __metadata: languageName: node linkType: hard -"color-convert@npm:^1.9.0, color-convert@npm:^1.9.1": +"color-convert@npm:^1.9.0": version: 1.9.3 resolution: "color-convert@npm:1.9.3" dependencies: @@ -4772,23 +5541,13 @@ __metadata: languageName: node linkType: hard -"color-name@npm:^1.0.0, color-name@npm:~1.1.4": +"color-name@npm:~1.1.4": version: 1.1.4 resolution: "color-name@npm:1.1.4" checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 languageName: node linkType: hard -"color-string@npm:^1.5.2": - version: 1.6.0 - resolution: "color-string@npm:1.6.0" - dependencies: - color-name: ^1.0.0 - simple-swizzle: ^0.2.2 - checksum: 33466a65277dd3d4ce24ef1991b47069292f75d1a43b0d2e7ea43076ba793728e965d50deed2b523f35519f4995a908253fcbcc774baceae8e439bc78c02e850 - languageName: node - linkType: hard - "color-support@npm:^1.1.3": version: 1.1.3 resolution: "color-support@npm:1.1.3" @@ -4798,23 +5557,20 @@ __metadata: languageName: node linkType: hard -"color@npm:^3.0.0": - version: 3.1.2 - resolution: "color@npm:3.1.2" - dependencies: - color-convert: ^1.9.1 - color-string: ^1.5.2 - checksum: 58ab3bf57d5acf95917045cac30db57fa8f8c0e92b8d54f2adaf5e843bb17abe0914809bd44b34b9747e6e08a2f0126adc7964e1ca45fe8948f44aad04e853c9 - languageName: node - linkType: hard - -"colord@npm:^2.9.3": +"colord@npm:^2.9.1, colord@npm:^2.9.3": version: 2.9.3 resolution: "colord@npm:2.9.3" checksum: 95d909bfbcfd8d5605cbb5af56f2d1ce2b323990258fd7c0d2eb0e6d3bb177254d7fb8213758db56bb4ede708964f78c6b992b326615f81a18a6aaf11d64c650 languageName: node linkType: hard +"colorette@npm:^2.0.19": + version: 2.0.19 + resolution: "colorette@npm:2.0.19" + checksum: 888cf5493f781e5fcf54ce4d49e9d7d698f96ea2b2ef67906834bb319a392c667f9ec69f4a10e268d2946d13a9503d2d19b3abaaaf174e3451bfe91fb9d82427 + languageName: node + linkType: hard + "combined-stream@npm:^1.0.8": version: 1.0.8 resolution: "combined-stream@npm:1.0.8" @@ -4824,6 +5580,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^10.0.0": + version: 10.0.0 + resolution: "commander@npm:10.0.0" + checksum: 9f6495651f878213005ac744dd87a85fa3d9f2b8b90d1c19d0866d666bda7f735adfd7c2f10dfff345782e2f80ea258f98bb4efcef58e4e502f25f883940acfd + languageName: node + linkType: hard + "commander@npm:^2.20.0": version: 2.20.3 resolution: "commander@npm:2.20.3" @@ -4905,18 +5668,6 @@ __metadata: languageName: node linkType: hard -"concat-stream@npm:^1.5.0": - version: 1.6.2 - resolution: "concat-stream@npm:1.6.2" - dependencies: - buffer-from: ^1.0.0 - inherits: ^2.0.3 - readable-stream: ^2.2.2 - typedarray: ^0.0.6 - checksum: 1ef77032cb4459dcd5187bd710d6fc962b067b64ec6a505810de3d2b8cc0605638551b42f8ec91edf6fcd26141b32ef19ad749239b58fae3aba99187adc32285 - languageName: node - linkType: hard - "connect-history-api-fallback@npm:^1.6.0": version: 1.6.0 resolution: "connect-history-api-fallback@npm:1.6.0" @@ -4991,20 +5742,6 @@ __metadata: languageName: node linkType: hard -"copy-concurrently@npm:^1.0.0": - version: 1.0.5 - resolution: "copy-concurrently@npm:1.0.5" - dependencies: - aproba: ^1.1.1 - fs-write-stream-atomic: ^1.0.8 - iferr: ^0.1.5 - mkdirp: ^0.5.1 - rimraf: ^2.5.4 - run-queue: ^1.0.0 - checksum: 63c169f582e09445260988f697b2d07793d439dfc31e97c8999707bd188dd94d1c7f2ca3533c7786fb75f03a3f2f54ad1ee08055f95f61bb8d2e862498c1d460 - languageName: node - linkType: hard - "copy-descriptor@npm:^0.1.0": version: 0.1.1 resolution: "copy-descriptor@npm:0.1.1" @@ -5042,18 +5779,6 @@ __metadata: languageName: node linkType: hard -"cosmiconfig@npm:^5.0.0": - version: 5.2.1 - resolution: "cosmiconfig@npm:5.2.1" - dependencies: - import-fresh: ^2.0.0 - is-directory: ^0.3.1 - js-yaml: ^3.13.1 - parse-json: ^4.0.0 - checksum: 8b6f1d3c8a5ffdf663a952f17af0761adf210b7a5933d0fe8988f3ca3a1f0e1e5cbbb74d5b419c15933dd2fdcaec31dbc5cc85cb8259a822342b93b529eff89c - languageName: node - linkType: hard - "cosmiconfig@npm:^6.0.0": version: 6.0.0 resolution: "cosmiconfig@npm:6.0.0" @@ -5080,15 +5805,15 @@ __metadata: languageName: node linkType: hard -"cosmiconfig@npm:^8.0.0": - version: 8.0.0 - resolution: "cosmiconfig@npm:8.0.0" +"cosmiconfig@npm:^8.1.0": + version: 8.1.3 + resolution: "cosmiconfig@npm:8.1.3" dependencies: import-fresh: ^3.2.1 js-yaml: ^4.1.0 parse-json: ^5.0.0 path-type: ^4.0.0 - checksum: ff4cdf89ac1ae52e7520816622c21a9e04380d04b82d653f5139ec581aa4f7f29e096d46770bc76c4a63c225367e88a1dfa233ea791669a35101f5f9b972c7d1 + checksum: b3d277bc3a8a9e649bf4c3fc9740f4c52bf07387481302aa79839f595045368903bf26ea24a8f7f7b8b180bf46037b027c5cb63b1391ab099f3f78814a147b2b languageName: node linkType: hard @@ -5191,20 +5916,12 @@ __metadata: languageName: node linkType: hard -"css-color-names@npm:0.0.4, css-color-names@npm:^0.0.4": - version: 0.0.4 - resolution: "css-color-names@npm:0.0.4" - checksum: 9c6106320430a9da3a13daab8d8b4def39113edbfb68042444585d9a214af5fd5cb384b9be45124bc75f88261d461b517e00e278f4d2e0ab5a619b182f9f0e2d - languageName: node - linkType: hard - -"css-declaration-sorter@npm:^4.0.1": - version: 4.0.1 - resolution: "css-declaration-sorter@npm:4.0.1" - dependencies: - postcss: ^7.0.1 - timsort: ^0.3.0 - checksum: c38c00245c6706bd1127a6a2807bbdea3a2621c1f4e4bcb4710f6736c15c4ec414e02213adeab2171623351616090cb96374f683b90ec2aad18903066c4526d7 +"css-declaration-sorter@npm:^6.3.1": + version: 6.3.1 + resolution: "css-declaration-sorter@npm:6.3.1" + peerDependencies: + postcss: ^8.0.9 + checksum: ff0d9989ee21ec4c42430b9bb86c43f973ed5024d68f30edc1e3fb07a22828ce3c3e5b922019f2ccbff606722e43c407c5c76e3cddac523ac4afcb31e4b2601c languageName: node linkType: hard @@ -5235,46 +5952,20 @@ __metadata: languageName: node linkType: hard -"css-select-base-adapter@npm:^0.1.1": - version: 0.1.1 - resolution: "css-select-base-adapter@npm:0.1.1" - checksum: c107e9cfa53a23427e4537451a67358375e656baa3322345a982d3c2751fb3904002aae7e5d72386c59f766fe6b109d1ffb43eeab1c16f069f7a3828eb17851c - languageName: node - linkType: hard - -"css-select@npm:^2.0.0": - version: 2.1.0 - resolution: "css-select@npm:2.1.0" +"css-select@npm:^5.1.0": + version: 5.1.0 + resolution: "css-select@npm:5.1.0" dependencies: boolbase: ^1.0.0 - css-what: ^3.2.1 - domutils: ^1.7.0 - nth-check: ^1.0.2 - checksum: 0c4099910f2411e2a9103cf92ea6a4ad738b57da75bcf73d39ef2c14a00ef36e5f16cb863211c901320618b24ace74da6333442d82995cafd5040077307de462 + css-what: ^6.1.0 + domhandler: ^5.0.2 + domutils: ^3.0.1 + nth-check: ^2.0.1 + checksum: 2772c049b188d3b8a8159907192e926e11824aea525b8282981f72ba3f349cf9ecd523fdf7734875ee2cb772246c22117fc062da105b6d59afe8dcd5c99c9bda languageName: node linkType: hard -"css-tree@npm:1.0.0-alpha.37": - version: 1.0.0-alpha.37 - resolution: "css-tree@npm:1.0.0-alpha.37" - dependencies: - mdn-data: 2.0.4 - source-map: ^0.6.1 - checksum: 0e419a1388ec0fbbe92885fba4a557f9fb0e077a2a1fad629b7245bbf7b4ef5df49e6877401b952b09b9057ffe1a3dba74f6fdfbf7b2223a5a35bce27ff2307d - languageName: node - linkType: hard - -"css-tree@npm:1.0.0-alpha.39": - version: 1.0.0-alpha.39 - resolution: "css-tree@npm:1.0.0-alpha.39" - dependencies: - mdn-data: 2.0.6 - source-map: ^0.6.1 - checksum: 3d440e8d0dfc61cadcf3fd7c8473bf7a1776d2e947e3b2d96658a58b14ddddaa06365e08948e6664749d561d894d61ac7690f66143617623175c5d52224cb9da - languageName: node - linkType: hard - -"css-tree@npm:^2.3.1": +"css-tree@npm:^2.2.1, css-tree@npm:^2.3.1": version: 2.3.1 resolution: "css-tree@npm:2.3.1" dependencies: @@ -5284,10 +5975,20 @@ __metadata: languageName: node linkType: hard -"css-what@npm:^3.2.1": - version: 3.3.0 - resolution: "css-what@npm:3.3.0" - checksum: 3ecf3958de7c3f8a2cfb0fcb61852a0850ccf1378bb51f353919859a37e759c64e8f3e15fbdfdf2e0fc53ac298e131d88133a83a3e0cb4222538aabfd00f141b +"css-tree@npm:~2.2.0": + version: 2.2.1 + resolution: "css-tree@npm:2.2.1" + dependencies: + mdn-data: 2.0.28 + source-map-js: ^1.0.1 + checksum: b94aa8cc2f09e6f66c91548411fcf74badcbad3e150345074715012d16333ce573596ff5dfca03c2a87edf1924716db765120f94247e919d72753628ba3aba27 + languageName: node + linkType: hard + +"css-what@npm:^6.1.0": + version: 6.1.0 + resolution: "css-what@npm:6.1.0" + checksum: b975e547e1e90b79625918f84e67db5d33d896e6de846c9b584094e529f0c63e2ab85ee33b9daffd05bff3a146a1916bec664e18bb76dd5f66cbff9fc13b2bbe languageName: node linkType: hard @@ -5307,92 +6008,72 @@ __metadata: languageName: node linkType: hard -"cssnano-preset-default@npm:^4.0.8": - version: 4.0.8 - resolution: "cssnano-preset-default@npm:4.0.8" +"cssnano-preset-default@npm:^6.0.0": + version: 6.0.0 + resolution: "cssnano-preset-default@npm:6.0.0" dependencies: - css-declaration-sorter: ^4.0.1 - cssnano-util-raw-cache: ^4.0.1 - postcss: ^7.0.0 - postcss-calc: ^7.0.1 - postcss-colormin: ^4.0.3 - postcss-convert-values: ^4.0.1 - postcss-discard-comments: ^4.0.2 - postcss-discard-duplicates: ^4.0.2 - postcss-discard-empty: ^4.0.1 - postcss-discard-overridden: ^4.0.1 - postcss-merge-longhand: ^4.0.11 - postcss-merge-rules: ^4.0.3 - postcss-minify-font-values: ^4.0.2 - postcss-minify-gradients: ^4.0.2 - postcss-minify-params: ^4.0.2 - postcss-minify-selectors: ^4.0.2 - postcss-normalize-charset: ^4.0.1 - postcss-normalize-display-values: ^4.0.2 - postcss-normalize-positions: ^4.0.2 - postcss-normalize-repeat-style: ^4.0.2 - postcss-normalize-string: ^4.0.2 - postcss-normalize-timing-functions: ^4.0.2 - postcss-normalize-unicode: ^4.0.1 - postcss-normalize-url: ^4.0.1 - postcss-normalize-whitespace: ^4.0.2 - postcss-ordered-values: ^4.1.2 - postcss-reduce-initial: ^4.0.3 - postcss-reduce-transforms: ^4.0.2 - postcss-svgo: ^4.0.3 - postcss-unique-selectors: ^4.0.1 - checksum: eb32c9fdd8bd4683e33d62284b6a9c4eb705b745235f4bb51a5571e1eb6738f636958fc9a6218fb51de43e0e2f74386a705b4c7ff2d1dcc611647953ba6ce159 + css-declaration-sorter: ^6.3.1 + cssnano-utils: ^4.0.0 + postcss-calc: ^8.2.3 + postcss-colormin: ^6.0.0 + postcss-convert-values: ^6.0.0 + postcss-discard-comments: ^6.0.0 + postcss-discard-duplicates: ^6.0.0 + postcss-discard-empty: ^6.0.0 + postcss-discard-overridden: ^6.0.0 + postcss-merge-longhand: ^6.0.0 + postcss-merge-rules: ^6.0.0 + postcss-minify-font-values: ^6.0.0 + postcss-minify-gradients: ^6.0.0 + postcss-minify-params: ^6.0.0 + postcss-minify-selectors: ^6.0.0 + postcss-normalize-charset: ^6.0.0 + postcss-normalize-display-values: ^6.0.0 + postcss-normalize-positions: ^6.0.0 + postcss-normalize-repeat-style: ^6.0.0 + postcss-normalize-string: ^6.0.0 + postcss-normalize-timing-functions: ^6.0.0 + postcss-normalize-unicode: ^6.0.0 + postcss-normalize-url: ^6.0.0 + postcss-normalize-whitespace: ^6.0.0 + postcss-ordered-values: ^6.0.0 + postcss-reduce-initial: ^6.0.0 + postcss-reduce-transforms: ^6.0.0 + postcss-svgo: ^6.0.0 + postcss-unique-selectors: ^6.0.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 439e11cdb3d3d3658afd93b1b0de54983a6925880e3c9b8255e57ee7b2d7d0e70fc3f82890075f4d891a2e6eb694f7621089f6bed99c9828488a2c7fbd4a7ea9 languageName: node linkType: hard -"cssnano-util-get-arguments@npm:^4.0.0": +"cssnano-utils@npm:^4.0.0": version: 4.0.0 - resolution: "cssnano-util-get-arguments@npm:4.0.0" - checksum: 34222a1e848d573b74892eda7d7560c5422efa56f87d2b5242f9791593c6aa4ddc9d55e8e1708fb2f0d6f87c456314b78d93d3eec97d946ff756c63b09b72222 + resolution: "cssnano-utils@npm:4.0.0" + peerDependencies: + postcss: ^8.2.15 + checksum: 7db9b3eb4ec7cc7b2d1a3caf8c2d3b6b067bb8404b93dc183907325db3231e396350a50e5388beda02dab03404d5e8d226977b2b87adc11768173e0259e80219 languageName: node linkType: hard -"cssnano-util-get-match@npm:^4.0.0": - version: 4.0.0 - resolution: "cssnano-util-get-match@npm:4.0.0" - checksum: 56eacea0eb3d923359c9714ab25edde5eb4859e495954615d5529e81cdfabc2d41b57055c7f6a2f08e7d89df3a2794ef659306b539505d7f4e7202b897396fc2 - languageName: node - linkType: hard - -"cssnano-util-raw-cache@npm:^4.0.1": - version: 4.0.1 - resolution: "cssnano-util-raw-cache@npm:4.0.1" +"cssnano@npm:^6.0.0": + version: 6.0.0 + resolution: "cssnano@npm:6.0.0" dependencies: - postcss: ^7.0.0 - checksum: 66a23e5e5255ff65d0f49f135d0ddfdb96433aeceb2708a31e4b4a652110755f103f6c91e0f439c8f3052818eb2b04ebf6334680a810296290e2c3467c14202b + cssnano-preset-default: ^6.0.0 + lilconfig: ^2.1.0 + peerDependencies: + postcss: ^8.2.15 + checksum: e7d8b809d6beca1799bc3b4caab9d4a60bd1e0058e7e3a773fdaf89371b43be02d1754069bb02dcc9a71bdb362755b0b6297ec40d32b7265367dce81578c8c3a languageName: node linkType: hard -"cssnano-util-same-parent@npm:^4.0.0": - version: 4.0.1 - resolution: "cssnano-util-same-parent@npm:4.0.1" - checksum: 97c6b3f670ee9d1d6342b6a1daf9867d5c08644365dc146bd76defd356069112148e382ca86fc3e6c55adf0687974f03535bba34df95efb468b266d2319c7b66 - languageName: node - linkType: hard - -"cssnano@npm:^4.1.11": - version: 4.1.11 - resolution: "cssnano@npm:4.1.11" +"csso@npm:^5.0.5": + version: 5.0.5 + resolution: "csso@npm:5.0.5" dependencies: - cosmiconfig: ^5.0.0 - cssnano-preset-default: ^4.0.8 - is-resolvable: ^1.0.0 - postcss: ^7.0.0 - checksum: 2453fbe9f9f9e2ffe87dc5c718578f1b801fc7b82eaad12f5564c84bb0faf1774ea52e01874ecd29d1782aa7d0d84f0dbc95001eed9866ebd9bc523638999c9b - languageName: node - linkType: hard - -"csso@npm:^4.0.2": - version: 4.0.3 - resolution: "csso@npm:4.0.3" - dependencies: - css-tree: 1.0.0-alpha.39 - checksum: 685487adf1b5a223937c30b0b27fe36d02b97f373d8bd23b85170f6273032b560a43db3b63c25659b40d49ac708ae0dac40d6a0df205e98c5fc1b47731476e50 + css-tree: ~2.2.0 + checksum: 0ad858d36bf5012ed243e9ec69962a867509061986d2ee07cc040a4b26e4d062c00d4c07e5ba8d430706ceb02dd87edd30a52b5937fd45b1b6f2119c4993d59a languageName: node linkType: hard @@ -5419,6 +6100,15 @@ __metadata: languageName: node linkType: hard +"cssstyle@npm:^3.0.0": + version: 3.0.0 + resolution: "cssstyle@npm:3.0.0" + dependencies: + rrweb-cssom: ^0.6.0 + checksum: 31f694dfed9998ed93570fe539610837b878193dd8487c33cb12db8004333c53c2a3904166288bbec68388c72fb01014d46d3243ddfb02fe845989d852c06f27 + languageName: node + linkType: hard + "csstype@npm:^2.6.7": version: 2.6.13 resolution: "csstype@npm:2.6.13" @@ -5433,13 +6123,6 @@ __metadata: languageName: node linkType: hard -"cyclist@npm:^1.0.1": - version: 1.0.1 - resolution: "cyclist@npm:1.0.1" - checksum: 3cc2fdeb358599ca0ea96f5ecf2fc530ccab7ed1f8aa1a894aebfacd2009281bd7380cb9b30db02a18cdd00b3ed1d7ce81a3b11fe56e33a6a0fe4424dc592fbe - languageName: node - linkType: hard - "d@npm:1, d@npm:^1.0.1": version: 1.0.1 resolution: "d@npm:1.0.1" @@ -5468,6 +6151,17 @@ __metadata: languageName: node linkType: hard +"data-urls@npm:^4.0.0": + version: 4.0.0 + resolution: "data-urls@npm:4.0.0" + dependencies: + abab: ^2.0.6 + whatwg-mimetype: ^3.0.0 + whatwg-url: ^12.0.0 + checksum: 006e869b5bf079647949a3e9b1dd69d84b2d5d26e6b01c265485699bc96e83817d4b5aae758b2910a4c58c0601913f3a0034121c1ca2da268e9a244c57515b15 + languageName: node + linkType: hard + "debug@npm:2.6.9, debug@npm:^2.2.0, debug@npm:^2.3.3": version: 2.6.9 resolution: "debug@npm:2.6.9" @@ -5515,10 +6209,10 @@ __metadata: languageName: node linkType: hard -"decimal.js@npm:^10.4.2": - version: 10.4.2 - resolution: "decimal.js@npm:10.4.2" - checksum: 536cd6816a3197f2e1aa3da4860856cb5a2db73f6fafe8cb3b924ccc63f9b7d78296acc13dccbd419bd958ccc6357921fb15467f883b37cab04bfba7044cada2 +"decimal.js@npm:^10.4.2, decimal.js@npm:^10.4.3": + version: 10.4.3 + resolution: "decimal.js@npm:10.4.3" + checksum: 796404dcfa9d1dbfdc48870229d57f788b48c21c603c3f6554a1c17c10195fc1024de338b0cf9e1efe0c7c167eeb18f04548979bcc5fdfabebb7cc0ae3287bae languageName: node linkType: hard @@ -5855,13 +6549,14 @@ __metadata: languageName: node linkType: hard -"dom-serializer@npm:0": - version: 0.2.2 - resolution: "dom-serializer@npm:0.2.2" +"dom-serializer@npm:^2.0.0": + version: 2.0.0 + resolution: "dom-serializer@npm:2.0.0" dependencies: - domelementtype: ^2.0.1 - entities: ^2.0.0 - checksum: 376344893e4feccab649a14ca1a46473e9961f40fe62479ea692d4fee4d9df1c00ca8654811a79c1ca7b020096987e1ca4fb4d7f8bae32c1db800a680a0e5d5e + domelementtype: ^2.3.0 + domhandler: ^5.0.2 + entities: ^4.2.0 + checksum: cd1810544fd8cdfbd51fa2c0c1128ec3a13ba92f14e61b7650b5de421b88205fd2e3f0cc6ace82f13334114addb90ed1c2f23074a51770a8e9c1273acbc7f3e6 languageName: node linkType: hard @@ -5872,17 +6567,10 @@ __metadata: languageName: node linkType: hard -"domelementtype@npm:1": - version: 1.3.1 - resolution: "domelementtype@npm:1.3.1" - checksum: 7893da40218ae2106ec6ffc146b17f203487a52f5228b032ea7aa470e41dfe03e1bd762d0ee0139e792195efda765434b04b43cddcf63207b098f6ae44b36ad6 - languageName: node - linkType: hard - -"domelementtype@npm:^2.0.1": - version: 2.0.1 - resolution: "domelementtype@npm:2.0.1" - checksum: 940c62d1c4bead483a089a9a8802e6ea26ae9f134e2594719d0ecd642efd554b560bf92084012a8538fbe47a2f4b4c4bf34d5f87f8468ec924cb4d626793020c +"domelementtype@npm:^2.3.0": + version: 2.3.0 + resolution: "domelementtype@npm:2.3.0" + checksum: ee837a318ff702622f383409d1f5b25dd1024b692ef64d3096ff702e26339f8e345820f29a68bcdcea8cfee3531776b3382651232fbeae95612d6f0a75efb4f6 languageName: node linkType: hard @@ -5895,22 +6583,23 @@ __metadata: languageName: node linkType: hard -"domutils@npm:^1.7.0": - version: 1.7.0 - resolution: "domutils@npm:1.7.0" +"domhandler@npm:^5.0.1, domhandler@npm:^5.0.2": + version: 5.0.3 + resolution: "domhandler@npm:5.0.3" dependencies: - dom-serializer: 0 - domelementtype: 1 - checksum: f60a725b1f73c1ae82f4894b691601ecc6ecb68320d87923ac3633137627c7865725af813ae5d188ad3954283853bcf46779eb50304ec5d5354044569fcefd2b + domelementtype: ^2.3.0 + checksum: 0f58f4a6af63e6f3a4320aa446d28b5790a009018707bce2859dcb1d21144c7876482b5188395a188dfa974238c019e0a1e610d2fc269a12b2c192ea2b0b131c languageName: node linkType: hard -"dot-prop@npm:^5.2.0": - version: 5.3.0 - resolution: "dot-prop@npm:5.3.0" +"domutils@npm:^3.0.1": + version: 3.0.1 + resolution: "domutils@npm:3.0.1" dependencies: - is-obj: ^2.0.0 - checksum: d5775790093c234ef4bfd5fbe40884ff7e6c87573e5339432870616331189f7f5d86575c5b5af2dcf0f61172990f4f734d07844b1f23482fff09e3c4bead05ea + dom-serializer: ^2.0.0 + domelementtype: ^2.3.0 + domhandler: ^5.0.1 + checksum: 23aa7a840572d395220e173cb6263b0d028596e3950100520870a125af33ff819e6f609e1606d6f7d73bd9e7feb03bb404286e57a39063b5384c62b724d987b3 languageName: node linkType: hard @@ -5928,15 +6617,10 @@ __metadata: languageName: node linkType: hard -"duplexify@npm:^3.4.2, duplexify@npm:^3.6.0": - version: 3.7.1 - resolution: "duplexify@npm:3.7.1" - dependencies: - end-of-stream: ^1.0.0 - inherits: ^2.0.1 - readable-stream: ^2.0.0 - stream-shift: ^1.0.0 - checksum: 3c2ed2223d956a5da713dae12ba8295acb61d9acd966ccbba938090d04f4574ca4dca75cca089b5077c2d7e66101f32e6ea9b36a78ca213eff574e7a8b8accf2 +"eastasianwidth@npm:^0.2.0": + version: 0.2.0 + resolution: "eastasianwidth@npm:0.2.0" + checksum: 7d00d7cd8e49b9afa762a813faac332dee781932d6f2c848dc348939c4253f1d4564341b7af1d041853bc3f32c2ef141b58e0a4d9862c17a7f08f68df1e0f1ed languageName: node linkType: hard @@ -5958,10 +6642,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.251": - version: 1.4.254 - resolution: "electron-to-chromium@npm:1.4.254" - checksum: 32f0ecb621db44d37fc93017f742a2b1da7302c778b4d6c0fa122cc662f9c50e6576d214048dcac5c9baf835340c954c624f09f2e02c6dea9049c4a839e862e2 +"electron-to-chromium@npm:^1.4.284": + version: 1.4.330 + resolution: "electron-to-chromium@npm:1.4.330" + checksum: aace45fdfc082489f4bd4222f78b495cddbd9cda10100149d42221042053e1ae3c9c651ca39e6c9906939c9e544e6fa6a64058954a6f4075281cd5eecc65b571 languageName: node linkType: hard @@ -6044,7 +6728,7 @@ __metadata: languageName: node linkType: hard -"end-of-stream@npm:^1.0.0, end-of-stream@npm:^1.1.0": +"end-of-stream@npm:^1.1.0": version: 1.4.4 resolution: "end-of-stream@npm:1.4.4" dependencies: @@ -6064,14 +6748,7 @@ __metadata: languageName: node linkType: hard -"entities@npm:^2.0.0": - version: 2.0.3 - resolution: "entities@npm:2.0.3" - checksum: 5a7899fcc622e0d76afdeafe4c58a6b40ae3a8ee4772e5825a648c11a2ca324a9a02515386f512e466baac4aeb551f3d3b79eaece5cd98369b9f8601be336b1a - languageName: node - linkType: hard - -"entities@npm:^4.4.0": +"entities@npm:^4.2.0, entities@npm:^4.4.0": version: 4.4.0 resolution: "entities@npm:4.4.0" checksum: 84d250329f4b56b40fa93ed067b194db21e8815e4eb9b59f43a086f0ecd342814f6bc483de8a77da5d64e0f626033192b1b4f1792232a7ea6b970ebe0f3187c2 @@ -6092,7 +6769,7 @@ __metadata: languageName: node linkType: hard -"errno@npm:^0.1.3, errno@npm:~0.1.7": +"errno@npm:^0.1.3": version: 0.1.7 resolution: "errno@npm:0.1.7" dependencies: @@ -6121,7 +6798,7 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.17.0-next.1, es-abstract@npm:^1.17.2, es-abstract@npm:^1.18.0-next.1, es-abstract@npm:^1.19.0, es-abstract@npm:^1.19.5, es-abstract@npm:^1.20.4": +"es-abstract@npm:^1.18.0-next.1, es-abstract@npm:^1.19.0, es-abstract@npm:^1.19.5, es-abstract@npm:^1.20.4": version: 1.20.4 resolution: "es-abstract@npm:1.20.4" dependencies: @@ -6384,16 +7061,6 @@ __metadata: languageName: node linkType: hard -"eslint-scope@npm:5.1.1": - version: 5.1.1 - resolution: "eslint-scope@npm:5.1.1" - dependencies: - esrecurse: ^4.3.0 - estraverse: ^4.1.1 - checksum: 47e4b6a3f0cc29c7feedee6c67b225a2da7e155802c6ea13bbef4ac6b9e10c66cd2dcb987867ef176292bf4e64eccc680a49e35e9e9c669f4a02bac17e86abdb - languageName: node - linkType: hard - "eslint-scope@npm:^4.0.3": version: 4.0.3 resolution: "eslint-scope@npm:4.0.3" @@ -6404,6 +7071,16 @@ __metadata: languageName: node linkType: hard +"eslint-scope@npm:^5.1.1": + version: 5.1.1 + resolution: "eslint-scope@npm:5.1.1" + dependencies: + esrecurse: ^4.3.0 + estraverse: ^4.1.1 + checksum: 47e4b6a3f0cc29c7feedee6c67b225a2da7e155802c6ea13bbef4ac6b9e10c66cd2dcb987867ef176292bf4e64eccc680a49e35e9e9c669f4a02bac17e86abdb + languageName: node + linkType: hard + "eslint-scope@npm:^7.1.1": version: 7.1.1 resolution: "eslint-scope@npm:7.1.1" @@ -6414,24 +7091,6 @@ __metadata: languageName: node linkType: hard -"eslint-utils@npm:^3.0.0": - version: 3.0.0 - resolution: "eslint-utils@npm:3.0.0" - dependencies: - eslint-visitor-keys: ^2.0.0 - peerDependencies: - eslint: ">=5" - checksum: 0668fe02f5adab2e5a367eee5089f4c39033af20499df88fe4e6aba2015c20720404d8c3d6349b6f716b08fdf91b9da4e5d5481f265049278099c4c836ccb619 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^2.0.0, eslint-visitor-keys@npm:^2.1.0": - version: 2.1.0 - resolution: "eslint-visitor-keys@npm:2.1.0" - checksum: e3081d7dd2611a35f0388bbdc2f5da60b3a3c5b8b6e928daffff7391146b434d691577aa95064c8b7faad0b8a680266bcda0a42439c18c717b80e6718d7e267d - languageName: node - linkType: hard - "eslint-visitor-keys@npm:^3.3.0": version: 3.3.0 resolution: "eslint-visitor-keys@npm:3.3.0" @@ -6439,11 +7098,14 @@ __metadata: languageName: node linkType: hard -"eslint@npm:^8.33.0": - version: 8.33.0 - resolution: "eslint@npm:8.33.0" +"eslint@npm:^8.36.0": + version: 8.36.0 + resolution: "eslint@npm:8.36.0" dependencies: - "@eslint/eslintrc": ^1.4.1 + "@eslint-community/eslint-utils": ^4.2.0 + "@eslint-community/regexpp": ^4.4.0 + "@eslint/eslintrc": ^2.0.1 + "@eslint/js": 8.36.0 "@humanwhocodes/config-array": ^0.11.8 "@humanwhocodes/module-importer": ^1.0.1 "@nodelib/fs.walk": ^1.2.8 @@ -6454,10 +7116,9 @@ __metadata: doctrine: ^3.0.0 escape-string-regexp: ^4.0.0 eslint-scope: ^7.1.1 - eslint-utils: ^3.0.0 eslint-visitor-keys: ^3.3.0 - espree: ^9.4.0 - esquery: ^1.4.0 + espree: ^9.5.0 + esquery: ^1.4.2 esutils: ^2.0.2 fast-deep-equal: ^3.1.3 file-entry-cache: ^6.0.1 @@ -6478,24 +7139,23 @@ __metadata: minimatch: ^3.1.2 natural-compare: ^1.4.0 optionator: ^0.9.1 - regexpp: ^3.2.0 strip-ansi: ^6.0.1 strip-json-comments: ^3.1.0 text-table: ^0.2.0 bin: eslint: bin/eslint.js - checksum: 727e63ab8b7acf281442323c5971f6afdd5b656fbcebc4476cf54e35af51b2f180617433fc5e1952f0449ca3f43a905527f9407ea4b8a7ea7562fc9c3f278d4c + checksum: e9a961fc3b3de5cff5a1cb2c92eeffaa7e155a715489e30b3e1e76f186bd1255e0481e09564f2094733c0b1dbd3453499fb72ae7c043c83156e11e6d965b2304 languageName: node linkType: hard -"espree@npm:^9.4.0": - version: 9.4.1 - resolution: "espree@npm:9.4.1" +"espree@npm:^9.5.0": + version: 9.5.0 + resolution: "espree@npm:9.5.0" dependencies: acorn: ^8.8.0 acorn-jsx: ^5.3.2 eslint-visitor-keys: ^3.3.0 - checksum: 4d266b0cf81c7dfe69e542c7df0f246e78d29f5b04dda36e514eb4c7af117ee6cfbd3280e560571ed82ff6c9c3f0003c05b82583fc7a94006db7497c4fe4270e + checksum: a7f110aefb6407e0d3237aa635ab3cea87106ae63748dd23c67031afccc640d04c4209fca2daf16e2233c82efb505faead0fb84097478fd9cc6e8f8dd80bf99d languageName: node linkType: hard @@ -6509,12 +7169,12 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.4.0": - version: 1.4.0 - resolution: "esquery@npm:1.4.0" +"esquery@npm:^1.4.2": + version: 1.5.0 + resolution: "esquery@npm:1.5.0" dependencies: estraverse: ^5.1.0 - checksum: a0807e17abd7fbe5fbd4fab673038d6d8a50675cdae6b04fbaa520c34581be0c5fa24582990e8acd8854f671dd291c78bb2efb9e0ed5b62f33bac4f9cf820210 + checksum: aefb0d2596c230118656cd4ec7532d447333a410a48834d80ea648b1e7b5c9bc9ed8b5e33a89cb04e487b60d622f44cf5713bf4abed7c97343edefdc84a35900 languageName: node linkType: hard @@ -6635,6 +7295,23 @@ __metadata: languageName: node linkType: hard +"execa@npm:^7.0.0": + version: 7.1.1 + resolution: "execa@npm:7.1.1" + dependencies: + cross-spawn: ^7.0.3 + get-stream: ^6.0.1 + human-signals: ^4.3.0 + is-stream: ^3.0.0 + merge-stream: ^2.0.0 + npm-run-path: ^5.1.0 + onetime: ^6.0.0 + signal-exit: ^3.0.7 + strip-final-newline: ^3.0.0 + checksum: 21fa46fc69314ace4068cf820142bdde5b643a5d89831c2c9349479c1555bff137a291b8e749e7efca36535e4e0a8c772c11008ca2e84d2cbd6ca141a3c8f937 + languageName: node + linkType: hard + "exif-js@npm:^2.3.0": version: 2.3.0 resolution: "exif-js@npm:2.3.0" @@ -6673,16 +7350,16 @@ __metadata: languageName: node linkType: hard -"expect@npm:^29.4.3": - version: 29.4.3 - resolution: "expect@npm:29.4.3" +"expect@npm:^29.0.0, expect@npm:^29.5.0": + version: 29.5.0 + resolution: "expect@npm:29.5.0" dependencies: - "@jest/expect-utils": ^29.4.3 + "@jest/expect-utils": ^29.5.0 jest-get-type: ^29.4.3 - jest-matcher-utils: ^29.4.3 - jest-message-util: ^29.4.3 - jest-util: ^29.4.3 - checksum: ff9dd8c50c0c6fd4b2b00f6dbd7ab0e2063fe1953be81a8c10ae1c005c7f5667ba452918e2efb055504b72b701a4f82575a081a0a7158efb16d87991b0366feb + jest-matcher-utils: ^29.5.0 + jest-message-util: ^29.5.0 + jest-util: ^29.5.0 + checksum: 58f70b38693df6e5c6892db1bcd050f0e518d6f785175dc53917d4fa6a7359a048e5690e19ddcb96b65c4493881dd89a3dabdab1a84dfa55c10cdbdabf37b2d7 languageName: node linkType: hard @@ -6811,11 +7488,11 @@ __metadata: linkType: hard "fastq@npm:^1.6.0": - version: 1.13.0 - resolution: "fastq@npm:1.13.0" + version: 1.11.0 + resolution: "fastq@npm:1.11.0" dependencies: reusify: ^1.0.4 - checksum: 32cf15c29afe622af187d12fc9cd93e160a0cb7c31a3bb6ace86b7dea3b28e7b72acde89c882663f307b2184e14782c6c664fa315973c03626c7d4bff070bb0b + checksum: 9db0ceea9280c5f207da40c562a4e574913c18933cd74b880b01bf8e81a9a6e368ec71e89c9c1b9f4066d0275cc22600efd6dde87f713217acbf67076481734b languageName: node linkType: hard @@ -6844,13 +7521,6 @@ __metadata: languageName: node linkType: hard -"figgy-pudding@npm:^3.5.1": - version: 3.5.2 - resolution: "figgy-pudding@npm:3.5.2" - checksum: 4090bd66193693dcda605e44d6b8715d8fb5c92a67acd57826e55cf816a342f550d57e5638f822b39366e1b2fdb244e99b3068a37213aa1d6c1bf602b8fde5ae - languageName: node - linkType: hard - "file-entry-cache@npm:^6.0.1": version: 6.0.1 resolution: "file-entry-cache@npm:6.0.1" @@ -6931,17 +7601,6 @@ __metadata: languageName: node linkType: hard -"find-cache-dir@npm:^2.1.0": - version: 2.1.0 - resolution: "find-cache-dir@npm:2.1.0" - dependencies: - commondir: ^1.0.1 - make-dir: ^2.0.0 - pkg-dir: ^3.0.0 - checksum: 60ad475a6da9f257df4e81900f78986ab367d4f65d33cf802c5b91e969c28a8762f098693d7a571b6e4dd4c15166c2da32ae2d18b6766a18e2071079448fdce4 - languageName: node - linkType: hard - "find-cache-dir@npm:^3.3.1": version: 3.3.1 resolution: "find-cache-dir@npm:3.3.1" @@ -7018,16 +7677,6 @@ __metadata: languageName: node linkType: hard -"flush-write-stream@npm:^1.0.0": - version: 1.1.1 - resolution: "flush-write-stream@npm:1.1.1" - dependencies: - inherits: ^2.0.3 - readable-stream: ^2.3.6 - checksum: 42e07747f83bcd4e799da802e621d6039787749ffd41f5517f8c4f786ee967e31ba32b09f8b28a9c6f67bd4f5346772e604202df350e8d99f4141771bae31279 - languageName: node - linkType: hard - "follow-redirects@npm:^1.0.0, follow-redirects@npm:^1.15.0": version: 1.15.2 resolution: "follow-redirects@npm:1.15.2" @@ -7079,6 +7728,13 @@ __metadata: languageName: node linkType: hard +"fraction.js@npm:^4.2.0": + version: 4.2.0 + resolution: "fraction.js@npm:4.2.0" + checksum: 8c76a6e21dedea87109d6171a0ac77afa14205794a565d71cb10d2925f629a3922da61bf45ea52dbc30bce4d8636dc0a27213a88cbd600eab047d82f9a3a94c5 + languageName: node + linkType: hard + "fragment-cache@npm:^0.2.1": version: 0.2.1 resolution: "fragment-cache@npm:0.2.1" @@ -7095,16 +7751,6 @@ __metadata: languageName: node linkType: hard -"from2@npm:^2.1.0": - version: 2.3.0 - resolution: "from2@npm:2.3.0" - dependencies: - inherits: ^2.0.1 - readable-stream: ^2.0.0 - checksum: 6080eba0793dce32f475141fb3d54cc15f84ee52e420ee22ac3ab0ad639dc95a1875bc6eb9c0e1140e94972a36a89dc5542491b85f1ab8df0c126241e0f1a61b - languageName: node - linkType: hard - "fs-extra@npm:^8.1.0": version: 8.1.0 resolution: "fs-extra@npm:8.1.0" @@ -7137,18 +7783,6 @@ __metadata: languageName: node linkType: hard -"fs-write-stream-atomic@npm:^1.0.8": - version: 1.0.10 - resolution: "fs-write-stream-atomic@npm:1.0.10" - dependencies: - graceful-fs: ^4.1.2 - iferr: ^0.1.5 - imurmurhash: ^0.1.4 - readable-stream: 1 || 2 - checksum: 43c2d6817b72127793abc811ebf87a135b03ac7cbe41cdea9eeacf59b23e6e29b595739b083e9461303d525687499a1aaefcec3e5ff9bc82b170edd3dc467ccc - languageName: node - linkType: hard - "fs.realpath@npm:^1.0.0": version: 1.0.0 resolution: "fs.realpath@npm:1.0.0" @@ -7261,10 +7895,10 @@ __metadata: languageName: node linkType: hard -"generic-pool@npm:3.8.2": - version: 3.8.2 - resolution: "generic-pool@npm:3.8.2" - checksum: f549077d90265e5e4d32a2410205b357ec61cf73d17861f1013637984390e09fe7bf537129a2c6ed30ae57662a57c8d54194f80046408d3349836330f422dbde +"generic-pool@npm:3.9.0": + version: 3.9.0 + resolution: "generic-pool@npm:3.9.0" + checksum: 3d89e9b2018d2e3bbf44fec78c76b2b7d56d6a484237aa9daf6ff6eedb14b0899dadd703b5d810219baab2eb28e5128fb18b29e91e602deb2eccac14492d8ca8 languageName: node linkType: hard @@ -7316,7 +7950,7 @@ __metadata: languageName: node linkType: hard -"get-stream@npm:^6.0.0": +"get-stream@npm:^6.0.0, get-stream@npm:^6.0.1": version: 6.0.1 resolution: "get-stream@npm:6.0.1" checksum: e04ecece32c92eebf5b8c940f51468cd53554dcbb0ea725b2748be583c9523d00128137966afce410b9b051eb2ef16d657cd2b120ca8edafcf5a65e81af63cad @@ -7382,7 +8016,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^8.0.1, glob@npm:^8.1.0": +"glob@npm:^8.0.1": version: 8.1.0 resolution: "glob@npm:8.1.0" dependencies: @@ -7395,6 +8029,18 @@ __metadata: languageName: node linkType: hard +"glob@npm:^9.2.0, glob@npm:^9.3.4": + version: 9.3.4 + resolution: "glob@npm:9.3.4" + dependencies: + fs.realpath: ^1.0.0 + minimatch: ^8.0.2 + minipass: ^4.2.4 + path-scurry: ^1.6.1 + checksum: bcf49eaf475dc4ce8d4e98f896408a9f6507a2cb7d24a207c012cb318b969e04a02bcde2ff2920eadd5055ccae444a007b769e418147a56268fab2cda8694cde + languageName: node + linkType: hard + "global-modules@npm:^1.0.0": version: 1.0.0 resolution: "global-modules@npm:1.0.0" @@ -7498,7 +8144,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.15, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.9": +"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.9": version: 4.2.9 resolution: "graceful-fs@npm:4.2.9" checksum: 68ea4e07ff2c041ada184f9278b830375f8e0b75154e3f080af6b70f66172fabb4108d19b3863a96b53fc068a310b9b6493d86d1291acc5f3861eb4b79d26ad6 @@ -7506,9 +8152,9 @@ __metadata: linkType: hard "graceful-fs@npm:^4.2.6": - version: 4.2.10 - resolution: "graceful-fs@npm:4.2.10" - checksum: 3f109d70ae123951905d85032ebeae3c2a5a7a997430df00ea30df0e3a6c60cf6689b109654d6fdacd28810a053348c4d14642da1d075049e6be1ba5216218da + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 languageName: node linkType: hard @@ -7572,7 +8218,7 @@ __metadata: languageName: node linkType: hard -"has-symbols@npm:^1.0.1, has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": +"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": version: 1.0.3 resolution: "has-symbols@npm:1.0.3" checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410 @@ -7634,7 +8280,7 @@ __metadata: languageName: node linkType: hard -"has@npm:^1.0.0, has@npm:^1.0.3": +"has@npm:^1.0.3": version: 1.0.3 resolution: "has@npm:1.0.3" dependencies: @@ -7664,13 +8310,6 @@ __metadata: languageName: node linkType: hard -"hex-color-regex@npm:^1.1.0": - version: 1.1.0 - resolution: "hex-color-regex@npm:1.1.0" - checksum: 44fa1b7a26d745012f3bfeeab8015f60514f72d2fcf10dce33068352456b8d71a2e6bc5a17f933ab470da2c5ab1e3e04b05caf3fefe3c1cabd7e02e516fc8784 - languageName: node - linkType: hard - "history@npm:^4.10.1, history@npm:^4.7.2": version: 4.10.1 resolution: "history@npm:4.10.1" @@ -7749,20 +8388,6 @@ __metadata: languageName: node linkType: hard -"hsl-regex@npm:^1.0.0": - version: 1.0.0 - resolution: "hsl-regex@npm:1.0.0" - checksum: de9ee1bf39de1b83cc3fa0fa1cc337f29f14911e79411d66347365c54fab6b109eea2dd741eaa02486e24de31627ad7bf4453f22224fb55a2fe2b58166fa63b8 - languageName: node - linkType: hard - -"hsla-regex@npm:^1.0.0": - version: 1.0.0 - resolution: "hsla-regex@npm:1.0.0" - checksum: 9aa6eb9ff6c102d2395435aa5d1d91eae20043c4b1497c543d8db501c05f3edacd9a07fb34a987059d7902dba415af4cb4e610f751859ae8e7525df4ffcd085f - languageName: node - linkType: hard - "html-encoding-sniffer@npm:^3.0.0": version: 3.0.0 resolution: "html-encoding-sniffer@npm:3.0.0" @@ -7904,6 +8529,13 @@ __metadata: languageName: node linkType: hard +"human-signals@npm:^4.3.0": + version: 4.3.1 + resolution: "human-signals@npm:4.3.1" + checksum: 6f12958df3f21b6fdaf02d90896c271df00636a31e2bbea05bddf817a35c66b38a6fdac5863e2df85bd52f34958997f1f50350ff97249e1dff8452865d5235d1 + languageName: node + linkType: hard + "humanize-ms@npm:^1.2.1": version: 1.2.1 resolution: "humanize-ms@npm:1.2.1" @@ -7913,6 +8545,15 @@ __metadata: languageName: node linkType: hard +"husky@npm:^8.0.3": + version: 8.0.3 + resolution: "husky@npm:8.0.3" + bin: + husky: lib/bin.js + checksum: 837bc7e4413e58c1f2946d38fb050f5d7324c6f16b0fd66411ffce5703b294bd21429e8ba58711cd331951ee86ed529c5be4f76805959ff668a337dbfa82a1b0 + languageName: node + linkType: hard + "iconv-lite@npm:0.4.24": version: 0.4.24 resolution: "iconv-lite@npm:0.4.24" @@ -7961,13 +8602,6 @@ __metadata: languageName: node linkType: hard -"iferr@npm:^0.1.5": - version: 0.1.5 - resolution: "iferr@npm:0.1.5" - checksum: a18d19b6ad06a2d5412c0d37f6364869393ef6d1688d59d00082c1f35c92399094c031798340612458cd832f4f2e8b13bc9615934a7d8b0c53061307a3816aa1 - languageName: node - linkType: hard - "ignore@npm:^5.2.0, ignore@npm:^5.2.4": version: 5.2.4 resolution: "ignore@npm:5.2.4" @@ -7975,29 +8609,31 @@ __metadata: languageName: node linkType: hard -"immutable@npm:^4.0.0, immutable@npm:^4.2.4": - version: 4.2.4 - resolution: "immutable@npm:4.2.4" - checksum: 3be84eded37b05e65cad57bfba630bc1bf170c498b7472144bc02d2650cc9baef79daf03574a9c2e41d195ebb55a1c12c9b312f41ee324b653927b24ad8bcaa7 +"immutable@npm:^3.8.2": + version: 3.8.2 + resolution: "immutable@npm:3.8.2" + checksum: 41909b386950ff84ca3cfca77c74cfc87d225a914e98e6c57996fa81a328da61a7c32216d6d5abad40f54747ffdc5c4b02b102e6ad1a504c1752efde8041f964 languageName: node linkType: hard -"import-cwd@npm:^2.0.0": - version: 2.1.0 - resolution: "import-cwd@npm:2.1.0" - dependencies: - import-from: ^2.1.0 - checksum: b8786fa3578f3df55370352bf61f99c2d8e6ee9b5741a07503d5a73d99281d141330a8faf87078e67527be4558f758356791ee5efb4b0112ac5eaed0f07de544 +"immutable@npm:^4.0.0": + version: 4.0.0 + resolution: "immutable@npm:4.0.0" + checksum: 4b5e9181e4d5fa06728a481835ec09c86367e5d03268666c95b522b7644ab891098022e4479a43c4c81a68f2ed82f10751ce5d33e208d7b873b6e7f9dfaf4d87 languageName: node linkType: hard -"import-fresh@npm:^2.0.0": - version: 2.0.0 - resolution: "import-fresh@npm:2.0.0" - dependencies: - caller-path: ^2.0.0 - resolve-from: ^3.0.0 - checksum: 610255f9753cc6775df00be08e9f43691aa39f7703e3636c45afe22346b8b545e600ccfe100c554607546fc8e861fa149a0d1da078c8adedeea30fff326eef79 +"immutable@npm:^4.0.0-rc.1": + version: 4.0.0-rc.12 + resolution: "immutable@npm:4.0.0-rc.12" + checksum: 69f5292e5683738e3f674ea5be1d0b4ffd3ef6215757c81009295f092966f546380a41c0df1203753cfd11f2389fefc16ba5935e5828d42948c6504001482328 + languageName: node + linkType: hard + +"immutable@npm:^4.3.0": + version: 4.3.0 + resolution: "immutable@npm:4.3.0" + checksum: bbd7ea99e2752e053323543d6ff1cc71a4b4614fa6121f321ca766db2bd2092f3f1e0a90784c5431350b7344a4f792fa002eac227062d59b9377b6c09063b58b languageName: node linkType: hard @@ -8011,15 +8647,6 @@ __metadata: languageName: node linkType: hard -"import-from@npm:^2.1.0": - version: 2.1.0 - resolution: "import-from@npm:2.1.0" - dependencies: - resolve-from: ^3.0.0 - checksum: 91f6f89f46a07227920ef819181bb52eb93023ccc0bdf00224fdfb326f8f753e279ad06819f39a02bb88c9d3a4606adc85b0cc995285e5d65feeb59f1421a1d4 - languageName: node - linkType: hard - "import-lazy@npm:^4.0.0": version: 4.0.0 resolution: "import-lazy@npm:4.0.0" @@ -8079,14 +8706,7 @@ __metadata: languageName: node linkType: hard -"indexes-of@npm:^1.0.1": - version: 1.0.1 - resolution: "indexes-of@npm:1.0.1" - checksum: 4f9799b1739a62f3e02d09f6f4162cf9673025282af7fa36e790146e7f4e216dad3e776a25b08536c093209c9fcb5ea7bd04b082d42686a45f58ff401d6da32e - languageName: node - linkType: hard - -"infer-owner@npm:^1.0.3, infer-owner@npm:^1.0.4": +"infer-owner@npm:^1.0.4": version: 1.0.4 resolution: "infer-owner@npm:1.0.4" checksum: 181e732764e4a0611576466b4b87dac338972b839920b2a8cde43642e4ed6bd54dc1fb0b40874728f2a2df9a1b097b8ff83b56d5f8f8e3927f837fdcb47d8a89 @@ -8269,13 +8889,6 @@ __metadata: languageName: node linkType: hard -"is-absolute-url@npm:^2.0.0": - version: 2.1.0 - resolution: "is-absolute-url@npm:2.1.0" - checksum: 781e8cf8a2af54b1b7a92f269244d96c66224030d91120e734ebeebbce044c167767e1389789d8aaf82f9e429cb20ae93d6d0acfe6c4b53d2bd6ebb47a236d76 - languageName: node - linkType: hard - "is-absolute-url@npm:^3.0.3": version: 3.0.3 resolution: "is-absolute-url@npm:3.0.3" @@ -8336,13 +8949,6 @@ __metadata: languageName: node linkType: hard -"is-arrayish@npm:^0.3.1": - version: 0.3.2 - resolution: "is-arrayish@npm:0.3.2" - checksum: 977e64f54d91c8f169b59afcd80ff19227e9f5c791fa28fa2e5bce355cbaf6c2c356711b734656e80c9dd4a854dd7efcf7894402f1031dfc5de5d620775b4d5f - languageName: node - linkType: hard - "is-bigint@npm:^1.0.1": version: 1.0.2 resolution: "is-bigint@npm:1.0.2" @@ -8384,20 +8990,6 @@ __metadata: languageName: node linkType: hard -"is-color-stop@npm:^1.0.0": - version: 1.1.0 - resolution: "is-color-stop@npm:1.1.0" - dependencies: - css-color-names: ^0.0.4 - hex-color-regex: ^1.1.0 - hsl-regex: ^1.0.0 - hsla-regex: ^1.0.0 - rgb-regex: ^1.0.1 - rgba-regex: ^1.0.0 - checksum: 778dd52a603ab8da827925aa4200fe6733b667b216495a04110f038b925dc5ef58babe759b94ffc4e44fcf439328695770873937f59d6045f676322b97f3f92d - languageName: node - linkType: hard - "is-core-module@npm:^2.11.0, is-core-module@npm:^2.5.0, is-core-module@npm:^2.9.0": version: 2.11.0 resolution: "is-core-module@npm:2.11.0" @@ -8463,13 +9055,6 @@ __metadata: languageName: node linkType: hard -"is-directory@npm:^0.3.1": - version: 0.3.1 - resolution: "is-directory@npm:0.3.1" - checksum: dce9a9d3981e38f2ded2a80848734824c50ee8680cd09aa477bef617949715cfc987197a2ca0176c58a9fb192a1a0d69b535c397140d241996a609d5906ae524 - languageName: node - linkType: hard - "is-electron@npm:^2.2.0": version: 2.2.0 resolution: "is-electron@npm:2.2.0" @@ -8514,6 +9099,13 @@ __metadata: languageName: node linkType: hard +"is-fullwidth-code-point@npm:^4.0.0": + version: 4.0.0 + resolution: "is-fullwidth-code-point@npm:4.0.0" + checksum: 8ae89bf5057bdf4f57b346fb6c55e9c3dd2549983d54191d722d5c739397a903012cc41a04ee3403fd872e811243ef91a7c5196da7b5841dc6b6aae31a264a8d + languageName: node + linkType: hard + "is-generator-fn@npm:^2.0.0": version: 2.1.0 resolution: "is-generator-fn@npm:2.1.0" @@ -8560,16 +9152,6 @@ __metadata: languageName: node linkType: hard -"is-nan@npm:^1.3.2": - version: 1.3.2 - resolution: "is-nan@npm:1.3.2" - dependencies: - call-bind: ^1.0.0 - define-properties: ^1.1.3 - checksum: 5dfadcef6ad12d3029d43643d9800adbba21cf3ce2ec849f734b0e14ee8da4070d82b15fdb35138716d02587c6578225b9a22779cab34888a139cc43e4e3610a - languageName: node - linkType: hard - "is-negative-zero@npm:^2.0.2": version: 2.0.2 resolution: "is-negative-zero@npm:2.0.2" @@ -8607,13 +9189,6 @@ __metadata: languageName: node linkType: hard -"is-obj@npm:^2.0.0": - version: 2.0.0 - resolution: "is-obj@npm:2.0.0" - checksum: c9916ac8f4621962a42f5e80e7ffdb1d79a3fab7456ceaeea394cd9e0858d04f985a9ace45be44433bf605673c8be8810540fe4cc7f4266fc7526ced95af5a08 - languageName: node - linkType: hard - "is-path-cwd@npm:^2.0.0": version: 2.2.0 resolution: "is-path-cwd@npm:2.2.0" @@ -8693,13 +9268,6 @@ __metadata: languageName: node linkType: hard -"is-resolvable@npm:^1.0.0": - version: 1.1.0 - resolution: "is-resolvable@npm:1.1.0" - checksum: 2ddff983be0cabc2c8d60246365755f8fb322f5fb9db834740d3e694c635c1b74c1bd674cf221e072fc4bd911ef3f08f2247d390e476f7e80af9092443193c68 - languageName: node - linkType: hard - "is-set@npm:^2.0.1, is-set@npm:^2.0.2": version: 2.0.2 resolution: "is-set@npm:2.0.2" @@ -8730,6 +9298,13 @@ __metadata: languageName: node linkType: hard +"is-stream@npm:^3.0.0": + version: 3.0.0 + resolution: "is-stream@npm:3.0.0" + checksum: 172093fe99119ffd07611ab6d1bcccfe8bc4aa80d864b15f43e63e54b7abc71e779acd69afdb854c4e2a67fdc16ae710e370eda40088d1cfc956a50ed82d8f16 + languageName: node + linkType: hard + "is-string@npm:^1.0.5, is-string@npm:^1.0.7": version: 1.0.7 resolution: "is-string@npm:1.0.7" @@ -8918,57 +9493,58 @@ __metadata: languageName: node linkType: hard -"jest-changed-files@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-changed-files@npm:29.4.3" +"jest-changed-files@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-changed-files@npm:29.5.0" dependencies: execa: ^5.0.0 p-limit: ^3.1.0 - checksum: 9a70bd8e92b37e18ad26d8bea97c516f41119fb7046b4255a13c76d557b0e54fa0629726de5a093fadfd6a0a08ce45da65a57086664d505b8db4b3133133e141 + checksum: a67a7cb3c11f8f92bd1b7c79e84f724cbd11a9ad51f3cdadafe3ce7ee3c79ee50dbea128f920f5fddc807e9e4e83f5462143094391feedd959a77dd20ab96cf3 languageName: node linkType: hard -"jest-circus@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-circus@npm:29.4.3" +"jest-circus@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-circus@npm:29.5.0" dependencies: - "@jest/environment": ^29.4.3 - "@jest/expect": ^29.4.3 - "@jest/test-result": ^29.4.3 - "@jest/types": ^29.4.3 + "@jest/environment": ^29.5.0 + "@jest/expect": ^29.5.0 + "@jest/test-result": ^29.5.0 + "@jest/types": ^29.5.0 "@types/node": "*" chalk: ^4.0.0 co: ^4.6.0 dedent: ^0.7.0 is-generator-fn: ^2.0.0 - jest-each: ^29.4.3 - jest-matcher-utils: ^29.4.3 - jest-message-util: ^29.4.3 - jest-runtime: ^29.4.3 - jest-snapshot: ^29.4.3 - jest-util: ^29.4.3 + jest-each: ^29.5.0 + jest-matcher-utils: ^29.5.0 + jest-message-util: ^29.5.0 + jest-runtime: ^29.5.0 + jest-snapshot: ^29.5.0 + jest-util: ^29.5.0 p-limit: ^3.1.0 - pretty-format: ^29.4.3 + pretty-format: ^29.5.0 + pure-rand: ^6.0.0 slash: ^3.0.0 stack-utils: ^2.0.3 - checksum: 2739bef9c888743b49ff3fe303131381618e5d2f250f613a91240d9c86e19e6874fc904cbd8bcb02ec9ec59a84e5dae4ffec929f0c6171e87ddbc05508a137f4 + checksum: 44ff5d06acedae6de6c866e20e3b61f83e29ab94cf9f960826e7e667de49c12dd9ab9dffd7fa3b7d1f9688a8b5bfb1ebebadbea69d9ed0d3f66af4a0ff8c2b27 languageName: node linkType: hard -"jest-cli@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-cli@npm:29.4.3" +"jest-cli@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-cli@npm:29.5.0" dependencies: - "@jest/core": ^29.4.3 - "@jest/test-result": ^29.4.3 - "@jest/types": ^29.4.3 + "@jest/core": ^29.5.0 + "@jest/test-result": ^29.5.0 + "@jest/types": ^29.5.0 chalk: ^4.0.0 exit: ^0.1.2 graceful-fs: ^4.2.9 import-local: ^3.0.2 - jest-config: ^29.4.3 - jest-util: ^29.4.3 - jest-validate: ^29.4.3 + jest-config: ^29.5.0 + jest-util: ^29.5.0 + jest-validate: ^29.5.0 prompts: ^2.0.1 yargs: ^17.3.1 peerDependencies: @@ -8978,34 +9554,34 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: f4c9f6d76cde2c60a4169acbebb3f862728be03bcf3fe0077d2e55da7f9f3c3e9483cfa6e936832d35eabf96ee5ebf0300c4b0bd43cffff099801793466bfdd8 + checksum: 39897bbbc0f0d8a6b975ab12fd13887eaa28d92e3dee9e0173a5cb913ae8cc2ae46e090d38c6d723e84d9d6724429cd08685b4e505fa447d31ca615630c7dbba languageName: node linkType: hard -"jest-config@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-config@npm:29.4.3" +"jest-config@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-config@npm:29.5.0" dependencies: "@babel/core": ^7.11.6 - "@jest/test-sequencer": ^29.4.3 - "@jest/types": ^29.4.3 - babel-jest: ^29.4.3 + "@jest/test-sequencer": ^29.5.0 + "@jest/types": ^29.5.0 + babel-jest: ^29.5.0 chalk: ^4.0.0 ci-info: ^3.2.0 deepmerge: ^4.2.2 glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-circus: ^29.4.3 - jest-environment-node: ^29.4.3 + jest-circus: ^29.5.0 + jest-environment-node: ^29.5.0 jest-get-type: ^29.4.3 jest-regex-util: ^29.4.3 - jest-resolve: ^29.4.3 - jest-runner: ^29.4.3 - jest-util: ^29.4.3 - jest-validate: ^29.4.3 + jest-resolve: ^29.5.0 + jest-runner: ^29.5.0 + jest-util: ^29.5.0 + jest-validate: ^29.5.0 micromatch: ^4.0.4 parse-json: ^5.2.0 - pretty-format: ^29.4.3 + pretty-format: ^29.5.0 slash: ^3.0.0 strip-json-comments: ^3.1.1 peerDependencies: @@ -9016,7 +9592,7 @@ __metadata: optional: true ts-node: optional: true - checksum: 92f9a9c6850b18682cb01892774a33967472af23a5844438d8c68077d5f2a29b15b665e4e4db7de3d74002a6dca158cd5b2cb9f5debfd2cce5e1aee6c74e3873 + checksum: c37c4dab964c54ab293d4e302d40b09687037ac9d00b88348ec42366970747feeaf265e12e3750cd3660b40c518d4031335eda11ac10b70b10e60797ebbd4b9c languageName: node linkType: hard @@ -9032,15 +9608,15 @@ __metadata: languageName: node linkType: hard -"jest-diff@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-diff@npm:29.4.3" +"jest-diff@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-diff@npm:29.5.0" dependencies: chalk: ^4.0.0 diff-sequences: ^29.4.3 jest-get-type: ^29.4.3 - pretty-format: ^29.4.3 - checksum: 877fd1edffef6b319688c27b152e5b28e2bc4bcda5ce0ca90d7e137f9fafda4280bae25403d4c0bfd9806c2c0b15d966aa2dfaf5f9928ec8f1ccea7fa1d08ed6 + pretty-format: ^29.5.0 + checksum: dfd0f4a299b5d127779c76b40106c37854c89c3e0785098c717d52822d6620d227f6234c3a9291df204d619e799e3654159213bf93220f79c8e92a55475a3d39 languageName: node linkType: hard @@ -9053,51 +9629,51 @@ __metadata: languageName: node linkType: hard -"jest-each@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-each@npm:29.4.3" +"jest-each@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-each@npm:29.5.0" dependencies: - "@jest/types": ^29.4.3 + "@jest/types": ^29.5.0 chalk: ^4.0.0 jest-get-type: ^29.4.3 - jest-util: ^29.4.3 - pretty-format: ^29.4.3 - checksum: 1f72738338399efab0139eaea18bc198be0c6ed889770c8cbfa70bf9c724e8171fe1d3a29a94f9f39b8493ee6b2529bb350fb7c7c75e0d7eddfd28c253c79f9d + jest-util: ^29.5.0 + pretty-format: ^29.5.0 + checksum: b8b297534d25834c5d4e31e4c687359787b1e402519e42664eb704cc3a12a7a91a017565a75acb02e8cf9afd3f4eef3350bd785276bec0900184641b765ff7a5 languageName: node linkType: hard -"jest-environment-jsdom@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-environment-jsdom@npm:29.4.3" +"jest-environment-jsdom@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-environment-jsdom@npm:29.5.0" dependencies: - "@jest/environment": ^29.4.3 - "@jest/fake-timers": ^29.4.3 - "@jest/types": ^29.4.3 + "@jest/environment": ^29.5.0 + "@jest/fake-timers": ^29.5.0 + "@jest/types": ^29.5.0 "@types/jsdom": ^20.0.0 "@types/node": "*" - jest-mock: ^29.4.3 - jest-util: ^29.4.3 + jest-mock: ^29.5.0 + jest-util: ^29.5.0 jsdom: ^20.0.0 peerDependencies: canvas: ^2.5.0 peerDependenciesMeta: canvas: optional: true - checksum: 3fb29bb4b472e05a38fdb235aa936ad469dfa2f6c1cab97fe3d1a7c585351976d05c7bbbd715b9747f070a225dcf10a9166df1461e0fb838ea7a377a8e64bed4 + checksum: 3df7fc85275711f20b483ac8cd8c04500704ed0f69791eb55c574b38f5a39470f03d775cf20c1025bc1884916ac0573aa2fa4db1bb74225bc7fdd95ba97ad0da languageName: node linkType: hard -"jest-environment-node@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-environment-node@npm:29.4.3" +"jest-environment-node@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-environment-node@npm:29.5.0" dependencies: - "@jest/environment": ^29.4.3 - "@jest/fake-timers": ^29.4.3 - "@jest/types": ^29.4.3 + "@jest/environment": ^29.5.0 + "@jest/fake-timers": ^29.5.0 + "@jest/types": ^29.5.0 "@types/node": "*" - jest-mock: ^29.4.3 - jest-util: ^29.4.3 - checksum: 3c7362edfdbd516e83af7367c95dde35761a482b174de9735c07633405486ec73e19624e9bea4333fca33c24e8d65eaa1aa6594e0cb6bfeeeb564ccc431ee61d + jest-mock: ^29.5.0 + jest-util: ^29.5.0 + checksum: 57981911cc20a4219b0da9e22b2e3c9f31b505e43f78e61c899e3227ded455ce1a3a9483842c69cfa4532f02cfb536ae0995bf245f9211608edacfc1e478d411 languageName: node linkType: hard @@ -9115,11 +9691,11 @@ __metadata: languageName: node linkType: hard -"jest-haste-map@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-haste-map@npm:29.4.3" +"jest-haste-map@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-haste-map@npm:29.5.0" dependencies: - "@jest/types": ^29.4.3 + "@jest/types": ^29.5.0 "@types/graceful-fs": ^4.1.3 "@types/node": "*" anymatch: ^3.0.3 @@ -9127,64 +9703,64 @@ __metadata: fsevents: ^2.3.2 graceful-fs: ^4.2.9 jest-regex-util: ^29.4.3 - jest-util: ^29.4.3 - jest-worker: ^29.4.3 + jest-util: ^29.5.0 + jest-worker: ^29.5.0 micromatch: ^4.0.4 walker: ^1.0.8 dependenciesMeta: fsevents: optional: true - checksum: c7a83ebe6008b3fe96a96235e8153092e54b14df68e0f4205faedec57450df26b658578495a71c6d82494c01fbb44bca98c1506a6b2b9c920696dcc5d2e2bc59 + checksum: 3828ff7783f168e34be2c63887f82a01634261f605dcae062d83f979a61c37739e21b9607ecb962256aea3fbe5a530a1acee062d0026fcb47c607c12796cf3b7 languageName: node linkType: hard -"jest-leak-detector@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-leak-detector@npm:29.4.3" +"jest-leak-detector@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-leak-detector@npm:29.5.0" dependencies: jest-get-type: ^29.4.3 - pretty-format: ^29.4.3 - checksum: ec2b45e6f0abce81bd0dd0f6fd06b433c24d1ec865267af7640fae540ec868b93752598e407a9184d9c7419cbf32e8789007cc8c1be1a84f8f7321a0f8ad01f1 + pretty-format: ^29.5.0 + checksum: 0fb845da7ac9cdfc9b3b2e35f6f623a41c547d7dc0103ceb0349013459d00de5870b5689a625e7e37f9644934b40e8f1dcdd5422d14d57470600350364676313 languageName: node linkType: hard -"jest-matcher-utils@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-matcher-utils@npm:29.4.3" +"jest-matcher-utils@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-matcher-utils@npm:29.5.0" dependencies: chalk: ^4.0.0 - jest-diff: ^29.4.3 + jest-diff: ^29.5.0 jest-get-type: ^29.4.3 - pretty-format: ^29.4.3 - checksum: 9e13cbe42d2113bab2691110c7c3ba5cec3b94abad2727e1de90929d0f67da444e9b2066da3b476b5bf788df53a8ede0e0a950cfb06a04e4d6d566d115ee4f1d + pretty-format: ^29.5.0 + checksum: 1d3e8c746e484a58ce194e3aad152eff21fd0896e8b8bf3d4ab1a4e2cbfed95fb143646f4ad9fdf6e42212b9e8fc033268b58e011b044a9929df45485deb5ac9 languageName: node linkType: hard -"jest-message-util@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-message-util@npm:29.4.3" +"jest-message-util@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-message-util@npm:29.5.0" dependencies: "@babel/code-frame": ^7.12.13 - "@jest/types": ^29.4.3 + "@jest/types": ^29.5.0 "@types/stack-utils": ^2.0.0 chalk: ^4.0.0 graceful-fs: ^4.2.9 micromatch: ^4.0.4 - pretty-format: ^29.4.3 + pretty-format: ^29.5.0 slash: ^3.0.0 stack-utils: ^2.0.3 - checksum: 64f06b9550021e68da0059020bea8691283cf818918810bb67192d7b7fb9b691c7eadf55c2ca3cd04df5394918f2327245077095cdc0d6b04be3532d2c7d0ced + checksum: daddece6bbf846eb6a2ab9be9f2446e54085bef4e5cecd13d2a538fa9c01cb89d38e564c6b74fd8e12d37ed9eface8a362240ae9f21d68b214590631e7a0d8bf languageName: node linkType: hard -"jest-mock@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-mock@npm:29.4.3" +"jest-mock@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-mock@npm:29.5.0" dependencies: - "@jest/types": ^29.4.3 + "@jest/types": ^29.5.0 "@types/node": "*" - jest-util: ^29.4.3 - checksum: 8eb4a29b02d2cd03faac0290b6df6d23b4ffa43f72b21c7fff3c7dd04a2797355b1e85862b70b15341dd33ee3a693b17db5520a6f6e6b81ee75601987de6a1a2 + jest-util: ^29.5.0 + checksum: 2a9cf07509948fa8608898c445f04fe4dd6e2049ff431e5531eee028c808d3ba3c67f226ac87b0cf383feaa1055776900d197c895e89783016886ac17a4ff10c languageName: node linkType: hard @@ -9207,95 +9783,95 @@ __metadata: languageName: node linkType: hard -"jest-resolve-dependencies@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-resolve-dependencies@npm:29.4.3" +"jest-resolve-dependencies@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-resolve-dependencies@npm:29.5.0" dependencies: jest-regex-util: ^29.4.3 - jest-snapshot: ^29.4.3 - checksum: 3ad934cd2170c9658d8800f84a975dafc866ec85b7ce391c640c09c3744ced337787620d8667dc8d1fa5e0b1493f973caa1a1bb980e4e6a50b46a1720baf0bd1 + jest-snapshot: ^29.5.0 + checksum: 479d2e5365d58fe23f2b87001e2e0adcbffe0147700e85abdec8f14b9703b0a55758c1929a9989e3f5d5e954fb88870ea4bfa04783523b664562fcf5f10b0edf languageName: node linkType: hard -"jest-resolve@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-resolve@npm:29.4.3" +"jest-resolve@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-resolve@npm:29.5.0" dependencies: chalk: ^4.0.0 graceful-fs: ^4.2.9 - jest-haste-map: ^29.4.3 + jest-haste-map: ^29.5.0 jest-pnp-resolver: ^1.2.2 - jest-util: ^29.4.3 - jest-validate: ^29.4.3 + jest-util: ^29.5.0 + jest-validate: ^29.5.0 resolve: ^1.20.0 resolve.exports: ^2.0.0 slash: ^3.0.0 - checksum: 056a66beccf833f3c7e5a8fc9bfec218886e87b0b103decdbdf11893669539df489d1490cd6d5f0eea35731e8be0d2e955a6710498f970d2eae734da4df029dc + checksum: 9a125f3cf323ceef512089339d35f3ee37f79fe16a831fb6a26773ea6a229b9e490d108fec7af334142e91845b5996de8e7cdd85a4d8d617078737d804e29c8f languageName: node linkType: hard -"jest-runner@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-runner@npm:29.4.3" +"jest-runner@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-runner@npm:29.5.0" dependencies: - "@jest/console": ^29.4.3 - "@jest/environment": ^29.4.3 - "@jest/test-result": ^29.4.3 - "@jest/transform": ^29.4.3 - "@jest/types": ^29.4.3 + "@jest/console": ^29.5.0 + "@jest/environment": ^29.5.0 + "@jest/test-result": ^29.5.0 + "@jest/transform": ^29.5.0 + "@jest/types": ^29.5.0 "@types/node": "*" chalk: ^4.0.0 emittery: ^0.13.1 graceful-fs: ^4.2.9 jest-docblock: ^29.4.3 - jest-environment-node: ^29.4.3 - jest-haste-map: ^29.4.3 - jest-leak-detector: ^29.4.3 - jest-message-util: ^29.4.3 - jest-resolve: ^29.4.3 - jest-runtime: ^29.4.3 - jest-util: ^29.4.3 - jest-watcher: ^29.4.3 - jest-worker: ^29.4.3 + jest-environment-node: ^29.5.0 + jest-haste-map: ^29.5.0 + jest-leak-detector: ^29.5.0 + jest-message-util: ^29.5.0 + jest-resolve: ^29.5.0 + jest-runtime: ^29.5.0 + jest-util: ^29.5.0 + jest-watcher: ^29.5.0 + jest-worker: ^29.5.0 p-limit: ^3.1.0 source-map-support: 0.5.13 - checksum: c41108e5da01e0b8fdc2a06c5042eb49bb1d8db0e0d4651769fd1b9fe84ab45188617c11a3a8e1c83748b29bfe57dd77001ec57e86e3e3c30f3534e0314f8882 + checksum: 437dea69c5dddca22032259787bac74790d5a171c9d804711415f31e5d1abfb64fa52f54a9015bb17a12b858fd0cf3f75ef6f3c9e94255a8596e179f707229c4 languageName: node linkType: hard -"jest-runtime@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-runtime@npm:29.4.3" +"jest-runtime@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-runtime@npm:29.5.0" dependencies: - "@jest/environment": ^29.4.3 - "@jest/fake-timers": ^29.4.3 - "@jest/globals": ^29.4.3 + "@jest/environment": ^29.5.0 + "@jest/fake-timers": ^29.5.0 + "@jest/globals": ^29.5.0 "@jest/source-map": ^29.4.3 - "@jest/test-result": ^29.4.3 - "@jest/transform": ^29.4.3 - "@jest/types": ^29.4.3 + "@jest/test-result": ^29.5.0 + "@jest/transform": ^29.5.0 + "@jest/types": ^29.5.0 "@types/node": "*" chalk: ^4.0.0 cjs-module-lexer: ^1.0.0 collect-v8-coverage: ^1.0.0 glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-haste-map: ^29.4.3 - jest-message-util: ^29.4.3 - jest-mock: ^29.4.3 + jest-haste-map: ^29.5.0 + jest-message-util: ^29.5.0 + jest-mock: ^29.5.0 jest-regex-util: ^29.4.3 - jest-resolve: ^29.4.3 - jest-snapshot: ^29.4.3 - jest-util: ^29.4.3 + jest-resolve: ^29.5.0 + jest-snapshot: ^29.5.0 + jest-util: ^29.5.0 slash: ^3.0.0 strip-bom: ^4.0.0 - checksum: b99f8a910d1a38e7476058ba04ad44dfd3d93e837bb7c301d691e646a1085412fde87f06fbe271c9145f0e72d89400bfa7f6994bc30d456c7742269f37d0f570 + checksum: 7af27bd9d54cf1c5735404cf8d76c6509d5610b1ec0106a21baa815c1aff15d774ce534ac2834bc440dccfe6348bae1885fd9a806f23a94ddafdc0f5bae4b09d languageName: node linkType: hard -"jest-snapshot@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-snapshot@npm:29.4.3" +"jest-snapshot@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-snapshot@npm:29.5.0" dependencies: "@babel/core": ^7.11.6 "@babel/generator": ^7.7.2 @@ -9303,69 +9879,68 @@ __metadata: "@babel/plugin-syntax-typescript": ^7.7.2 "@babel/traverse": ^7.7.2 "@babel/types": ^7.3.3 - "@jest/expect-utils": ^29.4.3 - "@jest/transform": ^29.4.3 - "@jest/types": ^29.4.3 + "@jest/expect-utils": ^29.5.0 + "@jest/transform": ^29.5.0 + "@jest/types": ^29.5.0 "@types/babel__traverse": ^7.0.6 "@types/prettier": ^2.1.5 babel-preset-current-node-syntax: ^1.0.0 chalk: ^4.0.0 - expect: ^29.4.3 + expect: ^29.5.0 graceful-fs: ^4.2.9 - jest-diff: ^29.4.3 + jest-diff: ^29.5.0 jest-get-type: ^29.4.3 - jest-haste-map: ^29.4.3 - jest-matcher-utils: ^29.4.3 - jest-message-util: ^29.4.3 - jest-util: ^29.4.3 + jest-matcher-utils: ^29.5.0 + jest-message-util: ^29.5.0 + jest-util: ^29.5.0 natural-compare: ^1.4.0 - pretty-format: ^29.4.3 + pretty-format: ^29.5.0 semver: ^7.3.5 - checksum: 79ba52f2435e23ce72b1309be4b17fdbcb299d1c2ce97ebb61df9a62711e9463035f63b4c849181b2fe5aa17b3e09d30ee4668cc25fb3c6f59511c010b4d9494 + checksum: fe5df54122ed10eed625de6416a45bc4958d5062b018f05b152bf9785ab7f355dcd55e40cf5da63895bf8278f8d7b2bb4059b2cfbfdee18f509d455d37d8aa2b languageName: node linkType: hard -"jest-util@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-util@npm:29.4.3" +"jest-util@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-util@npm:29.5.0" dependencies: - "@jest/types": ^29.4.3 + "@jest/types": ^29.5.0 "@types/node": "*" chalk: ^4.0.0 ci-info: ^3.2.0 graceful-fs: ^4.2.9 picomatch: ^2.2.3 - checksum: 606b3e6077895baf8fb4ad4d08c134f37a6b81d5ba77ae654c942b1ae4b7294ab3b5a0eb93db34f129407b367970cf3b76bf5c80897b30f215f2bc8bf20a5f3f + checksum: fd9212950d34d2ecad8c990dda0d8ea59a8a554b0c188b53ea5d6c4a0829a64f2e1d49e6e85e812014933d17426d7136da4785f9cf76fff1799de51b88bc85d3 languageName: node linkType: hard -"jest-validate@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-validate@npm:29.4.3" +"jest-validate@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-validate@npm:29.5.0" dependencies: - "@jest/types": ^29.4.3 + "@jest/types": ^29.5.0 camelcase: ^6.2.0 chalk: ^4.0.0 jest-get-type: ^29.4.3 leven: ^3.1.0 - pretty-format: ^29.4.3 - checksum: 983e56430d86bed238448cae031535c1d908f760aa312cd4a4ec0e92f3bc1b6675415ddf57cdeceedb8ad9c698e5bcd10f0a856dfc93a8923bdecc7733f4ba80 + pretty-format: ^29.5.0 + checksum: 43ca5df7cb75572a254ac3e92fbbe7be6b6a1be898cc1e887a45d55ea003f7a112717d814a674d37f9f18f52d8de40873c8f084f17664ae562736c78dd44c6a1 languageName: node linkType: hard -"jest-watcher@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-watcher@npm:29.4.3" +"jest-watcher@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-watcher@npm:29.5.0" dependencies: - "@jest/test-result": ^29.4.3 - "@jest/types": ^29.4.3 + "@jest/test-result": ^29.5.0 + "@jest/types": ^29.5.0 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 emittery: ^0.13.1 - jest-util: ^29.4.3 + jest-util: ^29.5.0 string-length: ^4.0.1 - checksum: 44b64991b3414db853c3756f14690028f4edef7aebfb204a4291cc1901c2239fa27a8687c5c5abbecc74bf613e0bb9b1378bf766430c9febcc71e9c0cb5ad8fc + checksum: 62303ac7bdc7e61a8b4239a239d018f7527739da2b2be6a81a7be25b74ca769f1c43ee8558ce8e72bb857245c46d6e03af331227ffb00a57280abb2a928aa776 languageName: node linkType: hard @@ -9380,26 +9955,26 @@ __metadata: languageName: node linkType: hard -"jest-worker@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-worker@npm:29.4.3" +"jest-worker@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-worker@npm:29.5.0" dependencies: "@types/node": "*" - jest-util: ^29.4.3 + jest-util: ^29.5.0 merge-stream: ^2.0.0 supports-color: ^8.0.0 - checksum: c99ae66f257564613e72c5797c3a68f21a22e1c1fb5f30d14695ff5b508a0d2405f22748f13a3df8d1015b5e16abb130170f81f047ff68f58b6b1d2ff6ebc51b + checksum: 1151a1ae3602b1ea7c42a8f1efe2b5a7bf927039deaa0827bf978880169899b705744e288f80a63603fb3fc2985e0071234986af7dc2c21c7a64333d8777c7c9 languageName: node linkType: hard -"jest@npm:^29.4.3": - version: 29.4.3 - resolution: "jest@npm:29.4.3" +"jest@npm:^29.5.0": + version: 29.5.0 + resolution: "jest@npm:29.5.0" dependencies: - "@jest/core": ^29.4.3 - "@jest/types": ^29.4.3 + "@jest/core": ^29.5.0 + "@jest/types": ^29.5.0 import-local: ^3.0.2 - jest-cli: ^29.4.3 + jest-cli: ^29.5.0 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -9407,7 +9982,7 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: 084d10d1ceaade3c40e6d3bbd71b9b71b8919ba6fbd6f1f6699bdc259a6ba2f7350c7ccbfa10c11f7e3e01662853650a6244210179542fe4ba87e77dc3f3109f + checksum: a8ff2eb0f421623412236e23cbe67c638127fffde466cba9606bc0c0553b4c1e5cb116d7e0ef990b5d1712851652c8ee461373b578df50857fe635b94ff455d5 languageName: node linkType: hard @@ -9487,17 +10062,16 @@ __metadata: languageName: node linkType: hard -"jsdom@npm:^21.1.0": - version: 21.1.0 - resolution: "jsdom@npm:21.1.0" +"jsdom@npm:^21.1.1": + version: 21.1.1 + resolution: "jsdom@npm:21.1.1" dependencies: abab: ^2.0.6 - acorn: ^8.8.1 + acorn: ^8.8.2 acorn-globals: ^7.0.0 - cssom: ^0.5.0 - cssstyle: ^2.3.0 - data-urls: ^3.0.2 - decimal.js: ^10.4.2 + cssstyle: ^3.0.0 + data-urls: ^4.0.0 + decimal.js: ^10.4.3 domexception: ^4.0.0 escodegen: ^2.0.0 form-data: ^4.0.0 @@ -9506,7 +10080,8 @@ __metadata: https-proxy-agent: ^5.0.1 is-potential-custom-element-name: ^1.0.1 nwsapi: ^2.2.2 - parse5: ^7.1.1 + parse5: ^7.1.2 + rrweb-cssom: ^0.6.0 saxes: ^6.0.0 symbol-tree: ^3.2.4 tough-cookie: ^4.1.2 @@ -9514,15 +10089,15 @@ __metadata: webidl-conversions: ^7.0.0 whatwg-encoding: ^2.0.0 whatwg-mimetype: ^3.0.0 - whatwg-url: ^11.0.0 - ws: ^8.11.0 + whatwg-url: ^12.0.1 + ws: ^8.13.0 xml-name-validator: ^4.0.0 peerDependencies: canvas: ^2.5.0 peerDependenciesMeta: canvas: optional: true - checksum: 2c89c72a6f399184ffc8de30bbdd86283086dbd72bb3a40667102d3f12af141c7517ffb78150a3bb6883a654e8c7d0266c3328d1c387a2b9a1fd0729dc537954 + checksum: ea33c3f3f084b48685e3838baa1112f0cbffc2949b0249f90ee19152b66dbafc6ae7dd8573ee66933697f881e3bc04c0efc2b56cd26f64fd3e6321a64164e2d1 languageName: node linkType: hard @@ -9544,7 +10119,7 @@ __metadata: languageName: node linkType: hard -"json-parse-better-errors@npm:^1.0.1, json-parse-better-errors@npm:^1.0.2": +"json-parse-better-errors@npm:^1.0.2": version: 1.0.2 resolution: "json-parse-better-errors@npm:1.0.2" checksum: ff2b5ba2a70e88fd97a3cb28c1840144c5ce8fae9cbeeddba15afa333a5c407cf0e42300cd0a2885dbb055227fe68d405070faad941beeffbfde9cf3b2c78c5d @@ -9706,10 +10281,10 @@ __metadata: languageName: node linkType: hard -"known-css-properties@npm:^0.26.0": - version: 0.26.0 - resolution: "known-css-properties@npm:0.26.0" - checksum: e706f4af9d2683202df9f717e7d713f0f8c3330f155842c40d8f3b2a5837956c34aeb7ba08760977ccde1afce8b5377e29b40eb3e5c0b42bef28ddd108543cfb +"known-css-properties@npm:^0.27.0": + version: 0.27.0 + resolution: "known-css-properties@npm:0.27.0" + checksum: 8584fcf0526f984fe5a358af20200dec3b944373dd005dc23a3ce988895e1acd03e7d69c49533dda07d6d9b6d53990ed1119bd9d3e927f17545f8764c434a5cd languageName: node linkType: hard @@ -9756,6 +10331,13 @@ __metadata: languageName: node linkType: hard +"lilconfig@npm:2.1.0, lilconfig@npm:^2.1.0": + version: 2.1.0 + resolution: "lilconfig@npm:2.1.0" + checksum: 8549bb352b8192375fed4a74694cd61ad293904eee33f9d4866c2192865c44c4eb35d10782966242634e0cbc1e91fe62b1247f148dc5514918e3a966da7ea117 + languageName: node + linkType: hard + "lines-and-columns@npm:^1.1.6": version: 1.1.6 resolution: "lines-and-columns@npm:1.1.6" @@ -9763,6 +10345,50 @@ __metadata: languageName: node linkType: hard +"lint-staged@npm:^13.1.2": + version: 13.2.0 + resolution: "lint-staged@npm:13.2.0" + dependencies: + chalk: 5.2.0 + cli-truncate: ^3.1.0 + commander: ^10.0.0 + debug: ^4.3.4 + execa: ^7.0.0 + lilconfig: 2.1.0 + listr2: ^5.0.7 + micromatch: ^4.0.5 + normalize-path: ^3.0.0 + object-inspect: ^1.12.3 + pidtree: ^0.6.0 + string-argv: ^0.3.1 + yaml: ^2.2.1 + bin: + lint-staged: bin/lint-staged.js + checksum: dcaa8fbbde567eb8ac27230a18b3a22f30c278c524c0e27cf7d4110d662d5d33ed68a585a2e1b05075ef1c262e853f557a5ae046188b723603246d63e6b9f07b + languageName: node + linkType: hard + +"listr2@npm:^5.0.7": + version: 5.0.8 + resolution: "listr2@npm:5.0.8" + dependencies: + cli-truncate: ^2.1.0 + colorette: ^2.0.19 + log-update: ^4.0.0 + p-map: ^4.0.0 + rfdc: ^1.3.0 + rxjs: ^7.8.0 + through: ^2.3.8 + wrap-ansi: ^7.0.0 + peerDependencies: + enquirer: ">= 2.3.0 < 3" + peerDependenciesMeta: + enquirer: + optional: true + checksum: 8be9f5632627c4df0dc33f452c98d415a49e5f1614650d3cab1b103c33e95f2a7a0e9f3e1e5de00d51bf0b4179acd8ff11b25be77dbe097cf3773c05e728d46c + languageName: node + linkType: hard + "loader-runner@npm:^2.4.0": version: 2.4.0 resolution: "loader-runner@npm:2.4.0" @@ -9770,7 +10396,7 @@ __metadata: languageName: node linkType: hard -"loader-utils@npm:^1.1.0, loader-utils@npm:^1.2.3, loader-utils@npm:^1.4.0": +"loader-utils@npm:^1.2.3, loader-utils@npm:^1.4.0": version: 1.4.2 resolution: "loader-utils@npm:1.4.2" dependencies: @@ -9920,6 +10546,18 @@ __metadata: languageName: node linkType: hard +"log-update@npm:^4.0.0": + version: 4.0.0 + resolution: "log-update@npm:4.0.0" + dependencies: + ansi-escapes: ^4.3.0 + cli-cursor: ^3.1.0 + slice-ansi: ^4.0.0 + wrap-ansi: ^6.2.0 + checksum: ae2f85bbabc1906034154fb7d4c4477c79b3e703d22d78adee8b3862fa913942772e7fa11713e3d96fb46de4e3cabefbf5d0a544344f03b58d3c4bff52aa9eb2 + languageName: node + linkType: hard + "loglevel@npm:^1.6.8": version: 1.7.0 resolution: "loglevel@npm:1.7.0" @@ -9956,7 +10594,7 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^7.7.1": +"lru-cache@npm:^7.14.1, lru-cache@npm:^7.7.1": version: 7.18.3 resolution: "lru-cache@npm:7.18.3" checksum: e550d772384709deea3f141af34b6d4fa392e2e418c1498c078de0ee63670f1f46f5eee746e8ef7e69e1c895af0d4224e62ee33e66a543a14763b0f2e74c1356 @@ -9981,16 +10619,6 @@ __metadata: languageName: node linkType: hard -"make-dir@npm:^2.0.0": - version: 2.1.0 - resolution: "make-dir@npm:2.1.0" - dependencies: - pify: ^4.0.1 - semver: ^5.6.0 - checksum: 043548886bfaf1820323c6a2997e6d2fa51ccc2586ac14e6f14634f7458b4db2daf15f8c310e2a0abd3e0cddc64df1890d8fc7263033602c47bb12cbfcf86aab - languageName: node - linkType: hard - "make-dir@npm:^3.0.0, make-dir@npm:^3.0.2, make-dir@npm:^3.1.0": version: 3.1.0 resolution: "make-dir@npm:3.1.0" @@ -10095,6 +10723,13 @@ __metadata: languageName: node linkType: hard +"mdn-data@npm:2.0.28": + version: 2.0.28 + resolution: "mdn-data@npm:2.0.28" + checksum: f51d587a6ebe8e426c3376c74ea6df3e19ec8241ed8e2466c9c8a3904d5d04397199ea4f15b8d34d14524b5de926d8724ae85207984be47e165817c26e49e0aa + languageName: node + linkType: hard + "mdn-data@npm:2.0.30": version: 2.0.30 resolution: "mdn-data@npm:2.0.30" @@ -10102,20 +10737,6 @@ __metadata: languageName: node linkType: hard -"mdn-data@npm:2.0.4": - version: 2.0.4 - resolution: "mdn-data@npm:2.0.4" - checksum: add3c95e6d03d301b8a8bcfee3de33f4d07e4c5eee5b79f18d6d737de717e22472deadf67c1a8563983c0b603e10d7df40aa8e5fddf18884dfe118ccec7ae329 - languageName: node - linkType: hard - -"mdn-data@npm:2.0.6": - version: 2.0.6 - resolution: "mdn-data@npm:2.0.6" - checksum: adf1505687015a4791b3c4e1f213b627a7c0219fea68852e1c3c631dead8bc104e569f1800c87cf86b7279da023170e4586dff73f0efa05152754bbe7670f860 - languageName: node - linkType: hard - "media-typer@npm:0.3.0": version: 0.3.0 resolution: "media-typer@npm:0.3.0" @@ -10282,6 +10903,13 @@ __metadata: languageName: node linkType: hard +"mimic-fn@npm:^4.0.0": + version: 4.0.0 + resolution: "mimic-fn@npm:4.0.0" + checksum: 995dcece15ee29aa16e188de6633d43a3db4611bcf93620e7e62109ec41c79c0f34277165b8ce5e361205049766e371851264c21ac64ca35499acb5421c2ba56 + languageName: node + linkType: hard + "min-indent@npm:^1.0.0": version: 1.0.1 resolution: "min-indent@npm:1.0.1" @@ -10334,6 +10962,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^8.0.2": + version: 8.0.3 + resolution: "minimatch@npm:8.0.3" + dependencies: + brace-expansion: ^2.0.1 + checksum: 8957d8105be6729bf1d3af9c410b2a38ffcf3cd17d4ffaf715b2aa4841490aaa82f1ebff785e71b5b97747199ccc61027db597495941cf46243d9a64382e1560 + languageName: node + linkType: hard + "minimist-options@npm:4.1.0": version: 4.1.0 resolution: "minimist-options@npm:4.1.0" @@ -10422,6 +11059,13 @@ __metadata: linkType: hard "minipass@npm:^4.0.0": + version: 4.2.8 + resolution: "minipass@npm:4.2.8" + checksum: 7f4914d5295a9a30807cae5227a37a926e6d910c03f315930fde52332cf0575dfbc20295318f91f0baf0e6bb11a6f668e30cde8027dea7a11b9d159867a3c830 + languageName: node + linkType: hard + +"minipass@npm:^4.0.2, minipass@npm:^4.2.4": version: 4.2.5 resolution: "minipass@npm:4.2.5" checksum: 4f9c19af23a5d4a9e7156feefc9110634b178a8cff8f8271af16ec5ebf7e221725a97429952c856f5b17b30c2065ebd24c81722d90c93d2122611d75b952b48f @@ -10438,24 +11082,6 @@ __metadata: languageName: node linkType: hard -"mississippi@npm:^3.0.0": - version: 3.0.0 - resolution: "mississippi@npm:3.0.0" - dependencies: - concat-stream: ^1.5.0 - duplexify: ^3.4.2 - end-of-stream: ^1.1.0 - flush-write-stream: ^1.0.0 - from2: ^2.1.0 - parallel-transform: ^1.1.0 - pump: ^3.0.0 - pumpify: ^1.3.3 - stream-each: ^1.1.0 - through2: ^2.0.0 - checksum: 84b3d9889621d293f9a596bafe60df863b330c88fc19215ced8f603c605fc7e1bf06f8e036edf301bd630a03fd5d9d7d23d5d6b9a4802c30ca864d800f0bd9f8 - languageName: node - linkType: hard - "mixin-deep@npm:^1.2.0": version: 1.3.2 resolution: "mixin-deep@npm:1.3.2" @@ -10466,7 +11092,7 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:^0.5.1, mkdirp@npm:^0.5.3, mkdirp@npm:^0.5.5, mkdirp@npm:~0.5.1": +"mkdirp@npm:^0.5.1, mkdirp@npm:^0.5.3, mkdirp@npm:^0.5.5": version: 0.5.5 resolution: "mkdirp@npm:0.5.5" dependencies: @@ -10486,12 +11112,12 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:^2.1.3": - version: 2.1.3 - resolution: "mkdirp@npm:2.1.3" +"mkdirp@npm:^2.1.6": + version: 2.1.6 + resolution: "mkdirp@npm:2.1.6" bin: mkdirp: dist/cjs/src/bin.js - checksum: 5d7d7997e38a962e8b66dd4db1974bdcb841f084531ba8c9e1f3d52d71f5e6639677a96b2eb5d5940406d729a2153d820f396077ed3a6716058d3e75041dc1f2 + checksum: 8a1d09ffac585e55f41c54f445051f5bc33a7de99b952bb04c576cafdf1a67bb4bae8cb93736f7da6838771fbf75bc630430a3a59e1252047d2278690bd150ee languageName: node linkType: hard @@ -10502,20 +11128,6 @@ __metadata: languageName: node linkType: hard -"move-concurrently@npm:^1.0.1": - version: 1.0.1 - resolution: "move-concurrently@npm:1.0.1" - dependencies: - aproba: ^1.1.1 - copy-concurrently: ^1.0.0 - fs-write-stream-atomic: ^1.0.8 - mkdirp: ^0.5.1 - rimraf: ^2.5.4 - run-queue: ^1.0.3 - checksum: 4ea3296c150b09e798177847f673eb5783f8ca417ba806668d2c631739f653e1a735f19fb9b6e2f5e25ee2e4c0a6224732237a8e4f84c764e99d7462d258209e - languageName: node - linkType: hard - "ms@npm:2.0.0": version: 2.0.0 resolution: "ms@npm:2.0.0" @@ -10593,6 +11205,13 @@ __metadata: languageName: node linkType: hard +"natural-compare-lite@npm:^1.4.0": + version: 1.4.0 + resolution: "natural-compare-lite@npm:1.4.0" + checksum: 5222ac3986a2b78dd6069ac62cbb52a7bf8ffc90d972ab76dfe7b01892485d229530ed20d0c62e79a6b363a663b273db3bde195a1358ce9e5f779d4453887225 + languageName: node + linkType: hard + "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" @@ -10718,10 +11337,10 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.6": - version: 2.0.6 - resolution: "node-releases@npm:2.0.6" - checksum: e86a926dc9fbb3b41b4c4a89d998afdf140e20a4e8dbe6c0a807f7b2948b42ea97d7fd3ad4868041487b6e9ee98409829c6e4d84a734a4215dff060a7fbeb4bf +"node-releases@npm:^2.0.8": + version: 2.0.10 + resolution: "node-releases@npm:2.0.10" + checksum: d784ecde25696a15d449c4433077f5cce620ed30a1656c4abf31282bfc691a70d9618bae6868d247a67914d1be5cc4fde22f65a05f4398cdfb92e0fc83cadfbc languageName: node linkType: hard @@ -10783,13 +11402,6 @@ __metadata: languageName: node linkType: hard -"normalize-url@npm:^3.0.0": - version: 3.3.0 - resolution: "normalize-url@npm:3.3.0" - checksum: f6aa4a1a94c3b799812f3e7fc987fb4599d869bfa8e9a160b6f2c5a2b4e62ada998d64dca30d9e20769d8bd95d3da1da3d4841dba2cc3c4d85364e1eb46219a2 - languageName: node - linkType: hard - "npm-run-path@npm:^2.0.0": version: 2.0.2 resolution: "npm-run-path@npm:2.0.2" @@ -10808,6 +11420,15 @@ __metadata: languageName: node linkType: hard +"npm-run-path@npm:^5.1.0": + version: 5.1.0 + resolution: "npm-run-path@npm:5.1.0" + dependencies: + path-key: ^4.0.0 + checksum: dc184eb5ec239d6a2b990b43236845332ef12f4e0beaa9701de724aa797fe40b6bbd0157fb7639d24d3ab13f5d5cf22d223a19c6300846b8126f335f788bee66 + languageName: node + linkType: hard + "npmlog@npm:^6.0.0": version: 6.0.2 resolution: "npmlog@npm:6.0.2" @@ -10832,19 +11453,12 @@ __metadata: languageName: node linkType: hard -"nth-check@npm:^1.0.2": - version: 1.0.2 - resolution: "nth-check@npm:1.0.2" +"nth-check@npm:^2.0.1": + version: 2.1.1 + resolution: "nth-check@npm:2.1.1" dependencies: - boolbase: ~1.0.0 - checksum: 59e115fdd75b971d0030f42ada3aac23898d4c03aa13371fa8b3339d23461d1badf3fde5aad251fb956aaa75c0a3b9bfcd07c08a34a83b4f9dadfdce1d19337c - languageName: node - linkType: hard - -"num2fraction@npm:^1.2.2": - version: 1.2.2 - resolution: "num2fraction@npm:1.2.2" - checksum: 1da9c6797b505d3f5b17c7f694c4fa31565bdd5c0e5d669553253aed848a580804cd285280e8a73148bd9628839267daee4967f24b53d4e893e44b563e412635 + boolbase: ^1.0.0 + checksum: 5afc3dafcd1573b08877ca8e6148c52abd565f1d06b1eb08caf982e3fa289a82f2cae697ffb55b5021e146d60443f1590a5d6b944844e944714a5b549675bcd3 languageName: node linkType: hard @@ -10880,6 +11494,13 @@ __metadata: languageName: node linkType: hard +"object-inspect@npm:^1.12.3": + version: 1.12.3 + resolution: "object-inspect@npm:1.12.3" + checksum: dabfd824d97a5f407e6d5d24810d888859f6be394d8b733a77442b277e0808860555176719c5905e765e3743a7cada6b8b0a3b85e5331c530fd418cc8ae991db + languageName: node + linkType: hard + "object-is@npm:^1.0.1": version: 1.1.3 resolution: "object-is@npm:1.1.3" @@ -10950,16 +11571,6 @@ __metadata: languageName: node linkType: hard -"object.getownpropertydescriptors@npm:^2.1.0": - version: 2.1.0 - resolution: "object.getownpropertydescriptors@npm:2.1.0" - dependencies: - define-properties: ^1.1.3 - es-abstract: ^1.17.0-next.1 - checksum: a3763085ce840b8f8de4df1e354303d21461454b91b6f6408871cb7be31af975fce45163e4c380c0704c3cfc9e06197d80a4b4a99fa83cc111d075311ae02cc7 - languageName: node - linkType: hard - "object.hasown@npm:^1.1.2": version: 1.1.2 resolution: "object.hasown@npm:1.1.2" @@ -10979,7 +11590,7 @@ __metadata: languageName: node linkType: hard -"object.values@npm:^1.1.0, object.values@npm:^1.1.6": +"object.values@npm:^1.1.6": version: 1.1.6 resolution: "object.values@npm:1.1.6" dependencies: @@ -11022,7 +11633,7 @@ __metadata: languageName: node linkType: hard -"onetime@npm:^5.1.2": +"onetime@npm:^5.1.0, onetime@npm:^5.1.2": version: 5.1.2 resolution: "onetime@npm:5.1.2" dependencies: @@ -11031,6 +11642,15 @@ __metadata: languageName: node linkType: hard +"onetime@npm:^6.0.0": + version: 6.0.0 + resolution: "onetime@npm:6.0.0" + dependencies: + mimic-fn: ^4.0.0 + checksum: 0846ce78e440841335d4e9182ef69d5762e9f38aa7499b19f42ea1c4cd40f0b4446094c455c713f9adac3f4ae86f613bb5e30c99e52652764d06a89f709b3788 + languageName: node + linkType: hard + "opencollective-postinstall@npm:^2.0.2": version: 2.0.3 resolution: "opencollective-postinstall@npm:2.0.3" @@ -11200,17 +11820,6 @@ __metadata: languageName: node linkType: hard -"parallel-transform@npm:^1.1.0": - version: 1.2.0 - resolution: "parallel-transform@npm:1.2.0" - dependencies: - cyclist: ^1.0.1 - inherits: ^2.0.3 - readable-stream: ^2.1.5 - checksum: ab6ddc1a662cefcfb3d8d546a111763d3b223f484f2e9194e33aefd8f6760c319d0821fd22a00a3adfbd45929b50d2c84cc121389732f013c2ae01c226269c27 - languageName: node - linkType: hard - "parent-module@npm:^1.0.0": version: 1.0.1 resolution: "parent-module@npm:1.0.1" @@ -11233,16 +11842,6 @@ __metadata: languageName: node linkType: hard -"parse-json@npm:^4.0.0": - version: 4.0.0 - resolution: "parse-json@npm:4.0.0" - dependencies: - error-ex: ^1.3.1 - json-parse-better-errors: ^1.0.1 - checksum: 0fe227d410a61090c247e34fa210552b834613c006c2c64d9a05cfe9e89cf8b4246d1246b1a99524b53b313e9ac024438d0680f67e33eaed7e6f38db64cfe7b5 - languageName: node - linkType: hard - "parse-json@npm:^5.0.0, parse-json@npm:^5.2.0": version: 5.2.0 resolution: "parse-json@npm:5.2.0" @@ -11262,12 +11861,12 @@ __metadata: languageName: node linkType: hard -"parse5@npm:^7.0.0, parse5@npm:^7.1.1": - version: 7.1.1 - resolution: "parse5@npm:7.1.1" +"parse5@npm:^7.0.0, parse5@npm:^7.1.1, parse5@npm:^7.1.2": + version: 7.1.2 + resolution: "parse5@npm:7.1.2" dependencies: entities: ^4.4.0 - checksum: 8f72fbfa6df83a3f29f58e1818f7bd46b47ff3e26d79c74e10b8fc7ef7ee76163f205113f1b2f6a5b8dc4e31e726f490444f04890cead6e974dbcbe8172b1321 + checksum: 59465dd05eb4c5ec87b76173d1c596e152a10e290b7abcda1aecf0f33be49646ea74840c69af975d7887543ea45564801736356c568d6b5e71792fd0f4055713 languageName: node linkType: hard @@ -11348,6 +11947,13 @@ __metadata: languageName: node linkType: hard +"path-key@npm:^4.0.0": + version: 4.0.0 + resolution: "path-key@npm:4.0.0" + checksum: 8e6c314ae6d16b83e93032c61020129f6f4484590a777eed709c4a01b50e498822b00f76ceaf94bc64dbd90b327df56ceadce27da3d83393790f1219e07721d7 + languageName: node + linkType: hard + "path-parse@npm:^1.0.7": version: 1.0.7 resolution: "path-parse@npm:1.0.7" @@ -11355,6 +11961,16 @@ __metadata: languageName: node linkType: hard +"path-scurry@npm:^1.6.1": + version: 1.6.1 + resolution: "path-scurry@npm:1.6.1" + dependencies: + lru-cache: ^7.14.1 + minipass: ^4.0.2 + checksum: 7ba57e823cb7bb879669a4e5e05a283cde1bb9e81b6d806b2609f8d8026d0aef08f4b655b17fc86b21c9c32807851bba95ca715db5ab0605fb13c7a3e9172e42 + languageName: node + linkType: hard + "path-to-regexp@npm:0.1.7": version: 0.1.7 resolution: "path-to-regexp@npm:0.1.7" @@ -11412,6 +12028,13 @@ __metadata: languageName: node linkType: hard +"pg-connection-string@npm:^2.5.0": + version: 2.5.0 + resolution: "pg-connection-string@npm:2.5.0" + checksum: a6f3a068f7c9416a5b33a326811caf0dfaaee045c225b7c628b4c9b4e9a2b25bdd12a21e4c48940e1000ea223a4e608ca122d2ff3dd08c8b1db0fc9f5705133a + languageName: node + linkType: hard + "pg-int8@npm:1.0.1": version: 1.0.1 resolution: "pg-int8@npm:1.0.1" @@ -11428,6 +12051,13 @@ __metadata: languageName: node linkType: hard +"pg-protocol@npm:*": + version: 1.6.0 + resolution: "pg-protocol@npm:1.6.0" + checksum: e12662d2de2011e0c3a03f6a09f435beb1025acdc860f181f18a600a5495dc38a69d753bbde1ace279c8c442536af9c1a7c11e1d0fe3fad3aa1348b28d9d2683 + languageName: node + linkType: hard + "pg-protocol@npm:^1.4.0": version: 1.4.0 resolution: "pg-protocol@npm:1.4.0" @@ -11435,7 +12065,7 @@ __metadata: languageName: node linkType: hard -"pg-types@npm:^2.1.0": +"pg-types@npm:^2.1.0, pg-types@npm:^2.2.0": version: 2.2.0 resolution: "pg-types@npm:2.2.0" dependencies: @@ -11477,13 +12107,6 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^0.2.1": - version: 0.2.1 - resolution: "picocolors@npm:0.2.1" - checksum: 3b0f441f0062def0c0f39e87b898ae7461c3a16ffc9f974f320b44c799418cabff17780ee647fda42b856a1dc45897e2c62047e1b546d94d6d5c6962f45427b2 - languageName: node - linkType: hard - "picocolors@npm:^1.0.0": version: 1.0.0 resolution: "picocolors@npm:1.0.0" @@ -11498,6 +12121,15 @@ __metadata: languageName: node linkType: hard +"pidtree@npm:^0.6.0": + version: 0.6.0 + resolution: "pidtree@npm:0.6.0" + bin: + pidtree: bin/pidtree.js + checksum: 8fbc073ede9209dd15e80d616e65eb674986c93be49f42d9ddde8dbbd141bb53d628a7ca4e58ab5c370bb00383f67d75df59a9a226dede8fa801267a7030c27a + languageName: node + linkType: hard + "pify@npm:^2.0.0": version: 2.3.0 resolution: "pify@npm:2.3.0" @@ -11571,95 +12203,93 @@ __metadata: languageName: node linkType: hard -"postcss-calc@npm:^7.0.1": - version: 7.0.4 - resolution: "postcss-calc@npm:7.0.4" +"postcss-calc@npm:^8.2.3": + version: 8.2.4 + resolution: "postcss-calc@npm:8.2.4" dependencies: - postcss: ^7.0.27 - postcss-selector-parser: ^6.0.2 - postcss-value-parser: ^4.0.2 - checksum: dac52b448cab7e688254400275c9f460043064f9b24e46945fcede68c595208c2e6049fa62252c269beaa020fbb65584c238d0cce06a92dd235b590e92eac842 + postcss-selector-parser: ^6.0.9 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.2 + checksum: 314b4cebb0c4ed0cf8356b4bce71eca78f5a7842e6a3942a3bba49db168d5296b2bd93c3f735ae1c616f2651d94719ade33becc03c73d2d79c7394fb7f73eabb languageName: node linkType: hard -"postcss-colormin@npm:^4.0.3": - version: 4.0.3 - resolution: "postcss-colormin@npm:4.0.3" +"postcss-colormin@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-colormin@npm:6.0.0" dependencies: - browserslist: ^4.0.0 - color: ^3.0.0 - has: ^1.0.0 - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - checksum: 9b2eab73cd227cbf296f1a2a6466047f6c70b918c3844535531fd87f31d7878e1a8d81e8803ffe2ee8c3330ea5bec65e358a0e0f33defcd758975064e07fe928 + browserslist: ^4.21.4 + caniuse-api: ^3.0.0 + colord: ^2.9.1 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.15 + checksum: f7113758df45a198f4cf310b317e5bc49fcbd2648064245a5cddcb46e892593950592d4040136bf3b0c8fd64973b0dda3b4b0865b72b5bd94af244cf52418c67 languageName: node linkType: hard -"postcss-convert-values@npm:^4.0.1": - version: 4.0.1 - resolution: "postcss-convert-values@npm:4.0.1" +"postcss-convert-values@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-convert-values@npm:6.0.0" dependencies: - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - checksum: 71cac73f5befeb8bc16274e2aaabe1b8e0cb42a8b8641dc2aa61b1c502697b872a682c36f370cce325553bbfc859c38f2b064fae6f6469b1cada79e733559261 + browserslist: ^4.21.4 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 511ca9358148fc336808d0f58f1e6ad330b73c1a87f32581f3d541ffa66cb61f2a36c8e76d1defb7c54c577c83f11d9bf2eb0d27a83c963c315b8eb149935bd7 languageName: node linkType: hard -"postcss-discard-comments@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-discard-comments@npm:4.0.2" - dependencies: - postcss: ^7.0.0 - checksum: b087d47649160b7c6236aba028d27f1796a0dcb21e9ffd0da62271171fc31b7f150ee6c7a24fa97e3f5cd1af92e0dc41cb2e2680a175da53f1e536c441bda56a +"postcss-discard-comments@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-discard-comments@npm:6.0.0" + peerDependencies: + postcss: ^8.2.15 + checksum: 9be073707b5ef781c616ddd32ffd98faf14bf8b40027f341d5a4fb7989fa7b017087ad54146a370fe38295b1f2568b9f5522f4e4c1a1d09fe0e01abd9f5ae00d languageName: node linkType: hard -"postcss-discard-duplicates@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-discard-duplicates@npm:4.0.2" - dependencies: - postcss: ^7.0.0 - checksum: bd83647a8e5ea34b0cfe563d0c1410a0c9e742011aa67955709c5ecd2d2bb03b7016053781e975e4c802127d2f9a0cd9c22f1f2783b9d7b1c35487d60f7ea540 +"postcss-discard-duplicates@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-discard-duplicates@npm:6.0.0" + peerDependencies: + postcss: ^8.2.15 + checksum: 999dfc652a60c96f782cc37fbe0d04a89bec88b5ed943f06555166eebf03c6ee47cd56947f1373d84c8161687d1ca23ff6badd1278b5482c506614cf617bc21d languageName: node linkType: hard -"postcss-discard-empty@npm:^4.0.1": - version: 4.0.1 - resolution: "postcss-discard-empty@npm:4.0.1" - dependencies: - postcss: ^7.0.0 - checksum: 529b177bd2417fa5c8887891369b4538b858d767461192974a796814265794e08e0e624a9f4c566ed9f841af3faddb7e7a9c05c45cbbe2fb1f092f65bd227f5c +"postcss-discard-empty@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-discard-empty@npm:6.0.0" + peerDependencies: + postcss: ^8.2.15 + checksum: 0d6cc604719d4a70569db77de75e60b3b7e9b99a4521879f6047d71325556e9f46d6bd13aecbbd857c35f075c503c1f8b1be442329fb8e9653c24cbf2fb42f3e languageName: node linkType: hard -"postcss-discard-overridden@npm:^4.0.1": - version: 4.0.1 - resolution: "postcss-discard-overridden@npm:4.0.1" - dependencies: - postcss: ^7.0.0 - checksum: b34d8cf58e4d13d99a3a9459f4833f1248ca897316bbb927375590feba35c24a0304084a6174a7bf3fe4ba3d5e5e9baf15ea938e7e5744e56915fa7ef6d91ee0 +"postcss-discard-overridden@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-discard-overridden@npm:6.0.0" + peerDependencies: + postcss: ^8.2.15 + checksum: f2d244bb574cf2c0974c56a1af7131f3833e14515be99c68e6fa6fe82df47cb2c9befa413b9ec92f5f067567c682dc253980a0dede3cc697f6cc9135dfc17ec7 languageName: node linkType: hard -"postcss-load-config@npm:^2.0.0": - version: 2.1.2 - resolution: "postcss-load-config@npm:2.1.2" +"postcss-loader@npm:^4.3.0": + version: 4.3.0 + resolution: "postcss-loader@npm:4.3.0" dependencies: - cosmiconfig: ^5.0.0 - import-cwd: ^2.0.0 - checksum: 2e6d3a499512a03c19b0090f4143861612d613511d57122879d9fd545558d2a9fcbe85a2b0faf2ec32bbce0e62d22d2b544d91cbc4d4dfb3f22f841f8271fbc6 - languageName: node - linkType: hard - -"postcss-loader@npm:^3.0.0": - version: 3.0.0 - resolution: "postcss-loader@npm:3.0.0" - dependencies: - loader-utils: ^1.1.0 - postcss: ^7.0.0 - postcss-load-config: ^2.0.0 - schema-utils: ^1.0.0 - checksum: a6a922cbcc225ef57fb88c8248f91195869cd11e0d2b0b0fe84bc89a3074437d592d79a9fc39e50218677b7ba3a41b0e1c7e8f9666e59d41a196d7ab022c5805 + cosmiconfig: ^7.0.0 + klona: ^2.0.4 + loader-utils: ^2.0.0 + schema-utils: ^3.0.0 + semver: ^7.3.4 + peerDependencies: + postcss: ^7.0.0 || ^8.0.1 + webpack: ^4.0.0 || ^5.0.0 + checksum: b8ba29789d48512c7ce10e9391b1e1512a4b8f8b4063ebff0f9ebdd0a3a01e433ccfa0d2db6dbdd63b126acf7692330f0773bef75e78d53f38eba556ca5f2aee languageName: node linkType: hard @@ -11670,77 +12300,77 @@ __metadata: languageName: node linkType: hard -"postcss-merge-longhand@npm:^4.0.11": - version: 4.0.11 - resolution: "postcss-merge-longhand@npm:4.0.11" +"postcss-merge-longhand@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-merge-longhand@npm:6.0.0" dependencies: - css-color-names: 0.0.4 - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - stylehacks: ^4.0.0 - checksum: 45082b492d4d771c1607707d04dbcaece85a100011109886af9460a7868720de1121e290a6442360e2668db510edef579194197d1b534e9fb6c8df7a6cb86a4d + postcss-value-parser: ^4.2.0 + stylehacks: ^6.0.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 86d1eda1b845cc7bc781a18db714d8e3ed639f673a7a9f416ecae8b8822235a87724e32d06477c707b40bc2ef96a16e87d831b89188354921791fce0de50103b languageName: node linkType: hard -"postcss-merge-rules@npm:^4.0.3": - version: 4.0.3 - resolution: "postcss-merge-rules@npm:4.0.3" +"postcss-merge-rules@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-merge-rules@npm:6.0.0" dependencies: - browserslist: ^4.0.0 + browserslist: ^4.21.4 caniuse-api: ^3.0.0 - cssnano-util-same-parent: ^4.0.0 - postcss: ^7.0.0 - postcss-selector-parser: ^3.0.0 - vendors: ^1.0.0 - checksum: ed0f3880e1076e5b2a08e4cff35b50dc7dfbd337e6ba16a0ca157e28268cfa1d6c6d821e902d319757f32a7d36f944cad51be76f8b34858d1d7a637e7b585919 + cssnano-utils: ^4.0.0 + postcss-selector-parser: ^6.0.5 + peerDependencies: + postcss: ^8.2.15 + checksum: 8e7ed43c9faccb3859f06969011fd7fb3a9f37b27e4adb8d6a8a5c3b82d89b38ff1c4e9ca93e3aa63b0520f510c5af886d0e4b1ad2a550ff592a5710fbac55ec languageName: node linkType: hard -"postcss-minify-font-values@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-minify-font-values@npm:4.0.2" +"postcss-minify-font-values@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-minify-font-values@npm:6.0.0" dependencies: - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - checksum: add296b3bc88501283d65b54ad83552f47c98dd403740a70d8dfeef6d30a21d4a1f40191ffef1029a9474e9580a73e84ef644e99ede76c5a2474579b583f4b34 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 60de1e405a8849387714980d85f30c8e3df4b7b3083850086656ef50cdaf41605426373f28c0c43dcadfd1d78816b8e425571f12a024120dced1c7e8facb5073 languageName: node linkType: hard -"postcss-minify-gradients@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-minify-gradients@npm:4.0.2" +"postcss-minify-gradients@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-minify-gradients@npm:6.0.0" dependencies: - cssnano-util-get-arguments: ^4.0.0 - is-color-stop: ^1.0.0 - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - checksum: b83de019cc392192d64182fa6f609383904ef69013d71cda5d06fadab92b4daa73f5be0d0254c5eb0805405e5e1b9c44e49ca6bc629c4c7a24a8164a30b40d46 + colord: ^2.9.1 + cssnano-utils: ^4.0.0 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.15 + checksum: f2399211f78b88d122f4c7248cb2cc887b49304eb3315c7332c6216aec361113aca6fe0dac43289f70f0c3f25c97fb10cd74417aab5c2f5f51b64b1ef2c5af13 languageName: node linkType: hard -"postcss-minify-params@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-minify-params@npm:4.0.2" +"postcss-minify-params@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-minify-params@npm:6.0.0" dependencies: - alphanum-sort: ^1.0.0 - browserslist: ^4.0.0 - cssnano-util-get-arguments: ^4.0.0 - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - uniqs: ^2.0.0 - checksum: 15e7f196b3408ab3f55f1a7c9fa8aeea7949fdd02be28af232dd2e47bb7722e0e0a416d6b2c4550ba333a485b775da1bc35c19c9be7b6de855166d2e85d7b28f + browserslist: ^4.21.4 + cssnano-utils: ^4.0.0 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 1cd9e372cfa27a9849f6994b03cc031534b519299bd1e392062b524405ba76906d23261ab5c0bb505289343c8ffb6a44414265f96a3e04a28181493eb032af01 languageName: node linkType: hard -"postcss-minify-selectors@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-minify-selectors@npm:4.0.2" +"postcss-minify-selectors@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-minify-selectors@npm:6.0.0" dependencies: - alphanum-sort: ^1.0.0 - has: ^1.0.0 - postcss: ^7.0.0 - postcss-selector-parser: ^3.0.0 - checksum: a214809b620e50296417838804c3978d5f0a5ddfd48916780d77c1e0348c9ed0baa4b1f3905511b0f06b77340b5378088cc3188517c0848e8b7a53a71ef36c2b + postcss-selector-parser: ^6.0.5 + peerDependencies: + postcss: ^8.2.15 + checksum: 13ce0a1055fdc4571df8d289c4e5dac983e22ac9b449af2c1418ea536b9176a5354d1a487cc0047789f0981053263675d50c7db7cba99588ecb7ff0045fba818 languageName: node linkType: hard @@ -11788,137 +12418,136 @@ __metadata: languageName: node linkType: hard -"postcss-normalize-charset@npm:^4.0.1": - version: 4.0.1 - resolution: "postcss-normalize-charset@npm:4.0.1" - dependencies: - postcss: ^7.0.0 - checksum: f233f48d61eb005da217e5bfa58f4143165cb525ceea2de4fd88e4172a33712e8b63258ffa089c867875a498c408f293a380ea9e6f40076de550d8053f50e5bc +"postcss-normalize-charset@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-normalize-charset@npm:6.0.0" + peerDependencies: + postcss: ^8.2.15 + checksum: 186a94083f6d41dbda884bf915ff7fe9d9d19828c50dbf02a7e00c90673bec52e5962afd648220598c40940fb1ed5b93bc25697c395cd38ef30b6fd04e48580e languageName: node linkType: hard -"postcss-normalize-display-values@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-normalize-display-values@npm:4.0.2" +"postcss-normalize-display-values@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-normalize-display-values@npm:6.0.0" dependencies: - cssnano-util-get-match: ^4.0.0 - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - checksum: c5b857ca05f30a3efc6211cdaa5c9306f3eb0dbac141047d451a418d2bfd3e54be0bd4481d61c640096152d3078881a8dc3dec61913ff7f01ab4fc6df1a14732 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 4f8da7cf817e4c66004d3b2d88603aeadc7f9b55caca1bbba27f45e81ae8c65db8ff252488c8fd9ebb3e5c62f85e475131dcee9754346320453bc2b40865afd9 languageName: node linkType: hard -"postcss-normalize-positions@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-normalize-positions@npm:4.0.2" +"postcss-normalize-positions@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-normalize-positions@npm:6.0.0" dependencies: - cssnano-util-get-arguments: ^4.0.0 - has: ^1.0.0 - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - checksum: 291612d0879e6913010937f1193ab56ae1cfd8a274665330ccbedbe72f59c36db3f688b0a3faa4c6689cfd03dff0c27702c6acfce9b1f697a022bfcee3cd4fc4 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 34dedb07f906b28eb77c57be34899c5c694b81b91c6bfff1e6e9a251aa8f28fea0fdb35a7cdda0fc83e4248b078343a2d76e4485c3ef87f469b24332fa1788cd languageName: node linkType: hard -"postcss-normalize-repeat-style@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-normalize-repeat-style@npm:4.0.2" +"postcss-normalize-repeat-style@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-normalize-repeat-style@npm:6.0.0" dependencies: - cssnano-util-get-arguments: ^4.0.0 - cssnano-util-get-match: ^4.0.0 - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - checksum: 2160b2a6fe4f9671ad5d044755f0e04cfb5f255db607505fd4c74e7c806315c9dca914e74bb02f5f768de7b70939359d05c3f9b23ae8f72551d8fdeabf79a1fb + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.15 + checksum: a53b994bb6594f5c48bd7083a46e6a47c1cf02843bcb864d37e7919c08a6f1d7dbbfee8a6abc2afb5d15554b667abc69d696b90d43066ceb97f835e6c8272098 languageName: node linkType: hard -"postcss-normalize-string@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-normalize-string@npm:4.0.2" +"postcss-normalize-string@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-normalize-string@npm:6.0.0" dependencies: - has: ^1.0.0 - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - checksum: 9d40753ceb4f7854ed690ecd5fe4ea142280b14441dd11e188e573e58af93df293efdc77311f1c599431df785a3bb614dfe4bdacc3081ee3fe8c95916c849b2f + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 3d55f31ec0d008e7c8e8db0dc03e6e4f2cf8365f6578a0929b7098753c9db3c7de56a134d011fb3c9d8af8b004f0776169194cdfa25654af4919634cdb6ba7b0 languageName: node linkType: hard -"postcss-normalize-timing-functions@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-normalize-timing-functions@npm:4.0.2" +"postcss-normalize-timing-functions@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-normalize-timing-functions@npm:6.0.0" dependencies: - cssnano-util-get-match: ^4.0.0 - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - checksum: 8dfd711f5cdb49b823a92d1cd56d40f66f3686e257804495ef59d5d7f71815b6d19412a1ff25d40971bf6e146b1fa0517a6cc1a4c286b36c5cee6ed08a1952db + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 67021374f8f18474788d8bc99d31af6a13efc5baf961c1e9f0c6b1e265fb21ac1ad56c489d988fcde9e0d049e9b62c8b0b350cc1e79d7d3bff9f00f7c97d6221 languageName: node linkType: hard -"postcss-normalize-unicode@npm:^4.0.1": - version: 4.0.1 - resolution: "postcss-normalize-unicode@npm:4.0.1" +"postcss-normalize-unicode@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-normalize-unicode@npm:6.0.0" dependencies: - browserslist: ^4.0.0 - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - checksum: 2b1da17815f8402651a72012fd385b5111e84002baf98b649e0c1fc91298b65bb0e431664f6df8a99b23217259ecec242b169c0f18bf26e727af02eaf475fb07 + browserslist: ^4.21.4 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 0f246bf5511ae2294d8ec0decda6abee58c62e301a3a8f6542fa090bb426359caee156b96cc1e7f4b3a3f2cd9f62b410a446cf101e710d8fa71c704cfb057a5d languageName: node linkType: hard -"postcss-normalize-url@npm:^4.0.1": - version: 4.0.1 - resolution: "postcss-normalize-url@npm:4.0.1" +"postcss-normalize-url@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-normalize-url@npm:6.0.0" dependencies: - is-absolute-url: ^2.0.0 - normalize-url: ^3.0.0 - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - checksum: fcaab832d8b773568197b41406517a9e5fc7704f2fac7185bd0e13b19961e1ce9f1c762e4ffa470de7baa6a82ae8ae5ccf6b1bbeec6e95216d22ce6ab514fe04 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 93160c02e54c45cbe8ade7122bf34e25c41ac39656b2ddb15d342ce557efc17873fc6dd1439dd8d814152ebdfbba3ee2c16601d41b085ecaad73e6f2d037cd43 languageName: node linkType: hard -"postcss-normalize-whitespace@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-normalize-whitespace@npm:4.0.2" +"postcss-normalize-whitespace@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-normalize-whitespace@npm:6.0.0" dependencies: - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - checksum: 378a6eadb09ccc5ca2289e8daf98ce7366ae53342c4df7898ef5fae68138884d6c1241493531635458351b2805218bf55ceecae0fd289e5696ab15c78966abbb + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 77940955fb0b47b46468a3e17bb9b86eb2f2c572649271a4db600b981f68c9c1ed71197b58d7a351c1b2d1aee2eb79b1e11b3021eb28604fd1a8d0ded21dfb2a languageName: node linkType: hard -"postcss-ordered-values@npm:^4.1.2": - version: 4.1.2 - resolution: "postcss-ordered-values@npm:4.1.2" +"postcss-ordered-values@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-ordered-values@npm:6.0.0" dependencies: - cssnano-util-get-arguments: ^4.0.0 - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - checksum: 4a6f6a427a0165e1fa4f04dbe53a88708c73ea23e5b23ce312366ca8d85d83af450154a54f0e5df6c5712f945c180b6a364c3682dc995940b93228bb26658a96 + cssnano-utils: ^4.0.0 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 162d60e9fd7d6717457194e943ba63ed6d149ae3b4f150324e65b485312be5d1c99ae140e47698e9f8943967c1575b65c922081263a8fa22a2489ed705eb0202 languageName: node linkType: hard -"postcss-reduce-initial@npm:^4.0.3": - version: 4.0.3 - resolution: "postcss-reduce-initial@npm:4.0.3" +"postcss-reduce-initial@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-reduce-initial@npm:6.0.0" dependencies: - browserslist: ^4.0.0 + browserslist: ^4.21.4 caniuse-api: ^3.0.0 - has: ^1.0.0 - postcss: ^7.0.0 - checksum: 5ad1a955cb20f5b1792ff8cc35894621edc23ee77397cc7e9692d269882fb4451655633947e0407fe20bd127d09d0b7e693034c64417bf8bf1034a83c6e71668 + peerDependencies: + postcss: ^8.2.15 + checksum: 988001da75b969733756d9cec9bb37cfae9a667c888c0394d8aa84af7fa6fe134cdd997b63d657900f72541310c5a396db3436367bf91908bc4c7f7ce965c511 languageName: node linkType: hard -"postcss-reduce-transforms@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-reduce-transforms@npm:4.0.2" +"postcss-reduce-transforms@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-reduce-transforms@npm:6.0.0" dependencies: - cssnano-util-get-match: ^4.0.0 - has: ^1.0.0 - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - checksum: e6a351d5da7ecf276ddda350635b15bce8e14af08aee1c8a0e8d9c2ab2631eab33b06f3c2f31c6f9c76eedbfc23f356d86da3539e011cde3e335a2cac9d91dc1 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 17c27b1858897ee37a4f80af0d76c5ce895466392acac1ead75cbb71ac290ab57b209f47d5d205f6ea60c1697109f09531de005ef17d8826d545bbc02891351a languageName: node linkType: hard @@ -11947,18 +12576,7 @@ __metadata: languageName: node linkType: hard -"postcss-selector-parser@npm:^3.0.0": - version: 3.1.2 - resolution: "postcss-selector-parser@npm:3.1.2" - dependencies: - dot-prop: ^5.2.0 - indexes-of: ^1.0.1 - uniq: ^1.0.1 - checksum: 85b754bf3b5f671cddd75a199589e5b03da114ec119aa4628ab7f35f76134b25296d18a68f745e39780c379d66d3919ae7a1b6129aeec5049cedb9ba4c660803 - languageName: node - linkType: hard - -"postcss-selector-parser@npm:^6.0.11, postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4, postcss-selector-parser@npm:^6.0.6": +"postcss-selector-parser@npm:^6.0.11, postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4, postcss-selector-parser@npm:^6.0.5, postcss-selector-parser@npm:^6.0.6, postcss-selector-parser@npm:^6.0.9": version: 6.0.11 resolution: "postcss-selector-parser@npm:6.0.11" dependencies: @@ -11968,53 +12586,36 @@ __metadata: languageName: node linkType: hard -"postcss-svgo@npm:^4.0.3": - version: 4.0.3 - resolution: "postcss-svgo@npm:4.0.3" +"postcss-svgo@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-svgo@npm:6.0.0" dependencies: - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - svgo: ^1.0.0 - checksum: 6f5264241193ca3ba748fdf43c88ef692948d2ae38787398dc90089061fed884064ec14ee244fce07f19c419d1b058c77e135407d0932b09e93e528581ce3e10 + postcss-value-parser: ^4.2.0 + svgo: ^3.0.2 + peerDependencies: + postcss: ^8.2.15 + checksum: 14c68b7c275dbbbbf1f954e313ff812dacea88970165d7859c1683e2530ea51cd333372b8c0d440d4e9525768f34a8dab5f0846d3445bbb478a87a99f69e9abb languageName: node linkType: hard -"postcss-unique-selectors@npm:^4.0.1": - version: 4.0.1 - resolution: "postcss-unique-selectors@npm:4.0.1" +"postcss-unique-selectors@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-unique-selectors@npm:6.0.0" dependencies: - alphanum-sort: ^1.0.0 - postcss: ^7.0.0 - uniqs: ^2.0.0 - checksum: 272eb1fa17d6ea513b5f4d2f694ef30fa690795ce388aef7bf3967fd3bcec7a9a3c8da380e74961ded8d98253a6ed18fb380b29da00e2fe03e74813e7765ea71 + postcss-selector-parser: ^6.0.5 + peerDependencies: + postcss: ^8.2.15 + checksum: 5fbfeaf796c6442853ce3afd03ae8c306fcb83b0b7ee59cbdc9aad57a1e601e65a2a5efd1e25edaa5c7c62e05d3795f357fe95933de0868a78a5d1d1f541be34 languageName: node linkType: hard -"postcss-value-parser@npm:^3.0.0": - version: 3.3.1 - resolution: "postcss-value-parser@npm:3.3.1" - checksum: 62cd26e1cdbcf2dcc6bcedf3d9b409c9027bc57a367ae20d31dd99da4e206f730689471fd70a2abe866332af83f54dc1fa444c589e2381bf7f8054c46209ce16 - languageName: node - linkType: hard - -"postcss-value-parser@npm:^4.0.2, postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0": +"postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0": version: 4.2.0 resolution: "postcss-value-parser@npm:4.2.0" checksum: 819ffab0c9d51cf0acbabf8996dffbfafbafa57afc0e4c98db88b67f2094cb44488758f06e5da95d7036f19556a4a732525e84289a425f4f6fd8e412a9d7442f languageName: node linkType: hard -"postcss@npm:^7.0.0, postcss@npm:^7.0.1, postcss@npm:^7.0.27, postcss@npm:^7.0.32": - version: 7.0.32 - resolution: "postcss@npm:7.0.32" - dependencies: - chalk: ^2.4.2 - source-map: ^0.6.1 - supports-color: ^6.1.0 - checksum: 3bc2ac6508c97559077bd24f341908d5b86a50b76164c87d4224af94248ca329e28fc5292fff9cc3fec503325cac40094a6fbf7ef1bd1a3e94aefa93031834f0 - languageName: node - linkType: hard - "postcss@npm:^8.2.15, postcss@npm:^8.4.21": version: 8.4.21 resolution: "postcss@npm:8.4.21" @@ -12070,12 +12671,12 @@ __metadata: languageName: node linkType: hard -"prettier@npm:^2.8.4": - version: 2.8.4 - resolution: "prettier@npm:2.8.4" +"prettier@npm:^2.8.7": + version: 2.8.7 + resolution: "prettier@npm:2.8.7" bin: prettier: bin-prettier.js - checksum: c173064bf3df57b6d93d19aa98753b9b9dd7657212e33b41ada8e2e9f9884066bb9ca0b4005b89b3ab137efffdf8fbe0b462785aba20364798ff4303aadda57e + checksum: fdc8f2616f099f5f0d685907f4449a70595a0fc1d081a88919604375989e0d5e9168d6121d8cc6861f21990b31665828e00472544d785d5940ea08a17660c3a6 languageName: node linkType: hard @@ -12110,14 +12711,14 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^29.4.3": - version: 29.4.3 - resolution: "pretty-format@npm:29.4.3" +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.5.0": + version: 29.5.0 + resolution: "pretty-format@npm:29.5.0" dependencies: "@jest/schemas": ^29.4.3 ansi-styles: ^5.0.0 react-is: ^18.0.0 - checksum: 3258b9a010bd79b3cf73783ad1e4592b6326fc981b6e31b742f316f14e7fbac09b48a9dbf274d092d9bde404db9fe16f518370e121837dc078a597392e6e5cc5 + checksum: 4065356b558e6db25b4d41a01efb386935a6c06a0c9c104ef5ce59f2f476b8210edb8b3949b386e60ada0a6dc5ebcb2e6ccddc8c64dfd1a9943c3c3a9e7eaf89 languageName: node linkType: hard @@ -12229,16 +12830,6 @@ __metadata: languageName: node linkType: hard -"pump@npm:^2.0.0": - version: 2.0.1 - resolution: "pump@npm:2.0.1" - dependencies: - end-of-stream: ^1.1.0 - once: ^1.3.1 - checksum: e9f26a17be00810bff37ad0171edb35f58b242487b0444f92fb7d78bc7d61442fa9b9c5bd93a43fd8fd8ddd3cc75f1221f5e04c790f42907e5baab7cf5e2b931 - languageName: node - linkType: hard - "pump@npm:^3.0.0": version: 3.0.0 resolution: "pump@npm:3.0.0" @@ -12249,17 +12840,6 @@ __metadata: languageName: node linkType: hard -"pumpify@npm:^1.3.3": - version: 1.5.1 - resolution: "pumpify@npm:1.5.1" - dependencies: - duplexify: ^3.6.0 - inherits: ^2.0.3 - pump: ^2.0.0 - checksum: 26ca412ec8d665bd0d5e185c1b8f627728eff603440d75d22a58e421e3c66eaf86ec6fc6a6efc54808ecef65979279fa8e99b109a23ec1fa8d79f37e6978c9bd - languageName: node - linkType: hard - "punycode@npm:1.3.2": version: 1.3.2 resolution: "punycode@npm:1.3.2" @@ -12281,10 +12861,10 @@ __metadata: languageName: node linkType: hard -"q@npm:^1.1.2": - version: 1.5.1 - resolution: "q@npm:1.5.1" - checksum: 147baa93c805bc1200ed698bdf9c72e9e42c05f96d007e33a558b5fdfd63e5ea130e99313f28efc1783e90e6bdb4e48b67a36fcc026b7b09202437ae88a1fb12 +"pure-rand@npm:^6.0.0": + version: 6.0.0 + resolution: "pure-rand@npm:6.0.0" + checksum: ad1378d0a4859482d053a5264b2b485b445ece4bbc56f8959c233ea678b81ac2d613737925d496ded134eff5f29cc5546bf7492b6bce319ee27bebbad8a0c612 languageName: node linkType: hard @@ -12545,7 +13125,7 @@ __metadata: languageName: node linkType: hard -"react-overlays@npm:^5.2.1": +"react-overlays@npm:*, react-overlays@npm:^5.2.1": version: 5.2.1 resolution: "react-overlays@npm:5.2.1" dependencies: @@ -12648,9 +13228,9 @@ __metadata: languageName: node linkType: hard -"react-select@npm:^5.7.0": - version: 5.7.0 - resolution: "react-select@npm:5.7.0" +"react-select@npm:*, react-select@npm:^5.7.2": + version: 5.7.2 + resolution: "react-select@npm:5.7.2" dependencies: "@babel/runtime": ^7.12.0 "@emotion/cache": ^11.4.0 @@ -12664,7 +13244,7 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 3d29f7bb6dd66ad55396d820f05da6112f1d21b67526422a8ff5aa6cd47c783804c1b73042ac2949ba0871056a3dc68c06a73a8281abb61571e475d72bbd80dc + checksum: 1cb03c308be98b0bb89361dd842b92010ebd6769e388c380f2303ccfb14768b2085d0b94478dcd67841991272570fd27f75ea3035a230378fe14215d857e8ff7 languageName: node linkType: hard @@ -12742,16 +13322,16 @@ __metadata: languageName: node linkType: hard -"react-textarea-autosize@npm:^8.4.0": - version: 8.4.0 - resolution: "react-textarea-autosize@npm:8.4.0" +"react-textarea-autosize@npm:*, react-textarea-autosize@npm:^8.4.1": + version: 8.4.1 + resolution: "react-textarea-autosize@npm:8.4.1" dependencies: - "@babel/runtime": ^7.10.2 + "@babel/runtime": ^7.20.13 use-composed-ref: ^1.3.0 use-latest: ^1.2.1 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 055fb51b74e1ab6b286490cfcd8ed77a760f6fc90706053b5dfcb138199d02c56289a1060a1daf9f3ae37ffd66f73e9553f026d0fad446bc2243b713acf48e05 + checksum: b200437cd68938c23b13944fe6fdfeb32a6d949ac88588307f14d6fcdaba3044b8c7d8e239851b081f2101d433b93d4cf5aa027543b170b84f2a0cbe6fc9093f languageName: node linkType: hard @@ -12817,7 +13397,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:1 || 2, readable-stream@npm:^2.0.0, readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.2, readable-stream@npm:^2.1.5, readable-stream@npm:^2.2.2, readable-stream@npm:^2.3.3, readable-stream@npm:^2.3.6, readable-stream@npm:~2.3.6": +"readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.2, readable-stream@npm:^2.3.3, readable-stream@npm:^2.3.6": version: 2.3.7 resolution: "readable-stream@npm:2.3.7" dependencies: @@ -12885,33 +13465,17 @@ __metadata: languageName: node linkType: hard -"redis-errors@npm:^1.0.0": - version: 1.2.0 - resolution: "redis-errors@npm:1.2.0" - checksum: f28ac2692113f6f9c222670735aa58aeae413464fd58ccf3fce3f700cae7262606300840c802c64f2b53f19f65993da24dc918afc277e9e33ac1ff09edb394f4 - languageName: node - linkType: hard - -"redis-parser@npm:3.0.0": - version: 3.0.0 - resolution: "redis-parser@npm:3.0.0" +"redis@npm:^4.6.5": + version: 4.6.5 + resolution: "redis@npm:4.6.5" dependencies: - redis-errors: ^1.0.0 - checksum: 89290ae530332f2ae37577647fa18208d10308a1a6ba750b9d9a093e7398f5e5253f19855b64c98757f7129cccce958e4af2573fdc33bad41405f87f1943459a - languageName: node - linkType: hard - -"redis@npm:^4.0.6 <4.1.0": - version: 4.0.6 - resolution: "redis@npm:4.0.6" - dependencies: - "@node-redis/bloom": 1.0.1 - "@node-redis/client": 1.0.5 - "@node-redis/graph": 1.0.0 - "@node-redis/json": 1.0.2 - "@node-redis/search": 1.0.5 - "@node-redis/time-series": 1.0.2 - checksum: 1b15d5703a1298e75125b2818ca5fc923f66f6e0d6463932a98890d6455db88f1bddb492172f5707f8273a124a5e9b807f4cd692e1c8edd6e3a63826401c2220 + "@redis/bloom": 1.2.0 + "@redis/client": 1.5.6 + "@redis/graph": 1.1.0 + "@redis/json": 1.0.4 + "@redis/search": 1.1.2 + "@redis/time-series": 1.0.4 + checksum: 81696673a4c3acefcde310289ac83f40fe974af76f6d2f2a682befd6486128f8870f48b9e6fee1213cecfba9ac705649d27b750e853809d734cccce05868f1b7 languageName: node linkType: hard @@ -13002,13 +13566,6 @@ __metadata: languageName: node linkType: hard -"regexpp@npm:^3.2.0": - version: 3.2.0 - resolution: "regexpp@npm:3.2.0" - checksum: a78dc5c7158ad9ddcfe01aa9144f46e192ddbfa7b263895a70a5c6c73edd9ce85faf7c0430e59ac38839e1734e275b9c3de5c57ee3ab6edc0e0b1bdebefccef8 - languageName: node - linkType: hard - "regexpu-core@npm:^5.1.0": version: 5.1.0 resolution: "regexpu-core@npm:5.1.0" @@ -13233,6 +13790,16 @@ __metadata: languageName: node linkType: hard +"restore-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "restore-cursor@npm:3.1.0" + dependencies: + onetime: ^5.1.0 + signal-exit: ^3.0.2 + checksum: f877dd8741796b909f2a82454ec111afb84eb45890eb49ac947d87991379406b3b83ff9673a46012fca0d7844bb989f45cc5b788254cf1a39b6b5a9659de0630 + languageName: node + linkType: hard + "ret@npm:~0.1.10": version: 0.1.15 resolution: "ret@npm:0.1.15" @@ -13254,21 +13821,14 @@ __metadata: languageName: node linkType: hard -"rgb-regex@npm:^1.0.1": - version: 1.0.1 - resolution: "rgb-regex@npm:1.0.1" - checksum: b270ce8bc14782d2d21d3184c1e6c65b465476d8f03e72b93ef57c95710a452b2fe280e1d516c88873aec06efd7f71373e673f114b9d99f3a4f9a0393eb00126 +"rfdc@npm:^1.3.0": + version: 1.3.0 + resolution: "rfdc@npm:1.3.0" + checksum: fb2ba8512e43519983b4c61bd3fa77c0f410eff6bae68b08614437bc3f35f91362215f7b4a73cbda6f67330b5746ce07db5dd9850ad3edc91271ad6deea0df32 languageName: node linkType: hard -"rgba-regex@npm:^1.0.0": - version: 1.0.0 - resolution: "rgba-regex@npm:1.0.0" - checksum: 7f2cd271572700faea50753d82524cb2b98f17a5b9722965c7076f6cd674fe545f28145b7ef2cccabc9eca2475c793db16862cd5e7b3784a9f4b8d6496431057 - languageName: node - linkType: hard - -"rimraf@npm:^2.5.4, rimraf@npm:^2.6.3": +"rimraf@npm:^2.6.3": version: 2.7.1 resolution: "rimraf@npm:2.7.1" dependencies: @@ -13290,12 +13850,14 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:^4.1.2": - version: 4.1.2 - resolution: "rimraf@npm:4.1.2" +"rimraf@npm:^4.4.1": + version: 4.4.1 + resolution: "rimraf@npm:4.4.1" + dependencies: + glob: ^9.2.0 bin: rimraf: dist/cjs/src/bin.js - checksum: 480b8147fd9bcbef3ac118f88a7b1169c3872977a3411a0c84df838bfc30e175a394c0db6f9619fc8b8a886a18c6d779d5e74f380a0075ecc710afaf81b3f50c + checksum: b786adc02651e2e24bbedb04bbdea80652fc9612632931ff2d9f898c5e4708fe30956186597373c568bd5230a4dc2fadfc816ccacba8a1daded3a006a6b74f1a languageName: node linkType: hard @@ -13337,6 +13899,13 @@ __metadata: languageName: node linkType: hard +"rrweb-cssom@npm:^0.6.0": + version: 0.6.0 + resolution: "rrweb-cssom@npm:0.6.0" + checksum: 182312f6e4f41d18230ccc34f14263bc8e8a6b9d30ee3ec0d2d8e643c6f27964cd7a8d638d4a00e988d93e8dc55369f4ab5a473ccfeff7a8bab95b36d2b5499c + languageName: node + linkType: hard + "run-parallel@npm:^1.1.9": version: 1.2.0 resolution: "run-parallel@npm:1.2.0" @@ -13346,12 +13915,12 @@ __metadata: languageName: node linkType: hard -"run-queue@npm:^1.0.0, run-queue@npm:^1.0.3": - version: 1.0.3 - resolution: "run-queue@npm:1.0.3" +"rxjs@npm:^7.8.0": + version: 7.8.0 + resolution: "rxjs@npm:7.8.0" dependencies: - aproba: ^1.1.1 - checksum: c4541e18b5e056af60f398f2f1b3d89aae5c093d1524bf817c5ee68bcfa4851ad9976f457a9aea135b1d0d72ee9a91c386e3d136bcd95b699c367cd09c70be53 + tslib: ^2.1.0 + checksum: 61b4d4fd323c1043d8d6ceb91f24183b28bcf5def4f01ca111511d5c6b66755bc5578587fe714ef5d67cf4c9f2e26f4490d4e1d8cabf9bd5967687835e9866a2 languageName: node linkType: hard @@ -13421,23 +13990,16 @@ __metadata: languageName: node linkType: hard -"sass@npm:^1.58.3": - version: 1.58.3 - resolution: "sass@npm:1.58.3" +"sass@npm:^1.60.0": + version: 1.60.0 + resolution: "sass@npm:1.60.0" dependencies: chokidar: ">=3.0.0 <4.0.0" immutable: ^4.0.0 source-map-js: ">=0.6.2 <2.0.0" bin: sass: sass.js - checksum: 35a2b98c037ef80fdc93c9b0be846e6ccc7d75596351a37ee79c397e66666d0a754c52c4696e746c0aff32327471e185343ca349e998a58340411adc9d0489a5 - languageName: node - linkType: hard - -"sax@npm:~1.2.4": - version: 1.2.4 - resolution: "sax@npm:1.2.4" - checksum: d3df7d32b897a2c2f28e941f732c71ba90e27c24f62ee918bd4d9a8cfb3553f2f81e5493c7f0be94a11c1911b643a9108f231dd6f60df3fa9586b5d2e3e9e1fe + checksum: 06e163c37af466ec194cf2ed8dab616372afeb19322d356947d48ea664fc38398ae77c4d91bea9cb0ace954ce289d5518d0f8555ecc49f6bf2539a8ef52fc580 languageName: node linkType: hard @@ -13519,7 +14081,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.5.0, semver@npm:^5.6.0": +"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.5.0": version: 5.7.1 resolution: "semver@npm:5.7.1" bin: @@ -13548,6 +14110,17 @@ __metadata: languageName: node linkType: hard +"semver@npm:^7.3.7": + version: 7.3.8 + resolution: "semver@npm:7.3.8" + dependencies: + lru-cache: ^6.0.0 + bin: + semver: bin/semver.js + checksum: ba9c7cbbf2b7884696523450a61fee1a09930d888b7a8d7579025ad93d459b2d1949ee5bbfeb188b2be5f4ac163544c5e98491ad6152df34154feebc2cc337c1 + languageName: node + linkType: hard + "send@npm:0.18.0": version: 0.18.0 resolution: "send@npm:0.18.0" @@ -13569,13 +14142,6 @@ __metadata: languageName: node linkType: hard -"serialize-javascript@npm:^2.1.2": - version: 2.1.2 - resolution: "serialize-javascript@npm:2.1.2" - checksum: 16ce4e4886aff10d5cbbc46149cae3a63f31ea1578f218ef3a363ae413fa245dde61ab039f6733cc86db7b3ff940bfcba9b5a4bfc7b5dd1b3967737c0bbc017e - languageName: node - linkType: hard - "serialize-javascript@npm:^4.0.0": version: 4.0.0 resolution: "serialize-javascript@npm:4.0.0" @@ -13739,15 +14305,6 @@ __metadata: languageName: node linkType: hard -"simple-swizzle@npm:^0.2.2": - version: 0.2.2 - resolution: "simple-swizzle@npm:0.2.2" - dependencies: - is-arrayish: ^0.3.1 - checksum: a7f3f2ab5c76c4472d5c578df892e857323e452d9f392e1b5cf74b74db66e6294a1e1b8b390b519fa1b96b5b613f2a37db6cffef52c3f1f8f3c5ea64eb2d54c0 - languageName: node - linkType: hard - "sirv@npm:^1.0.7": version: 1.0.10 resolution: "sirv@npm:1.0.10" @@ -13773,6 +14330,17 @@ __metadata: languageName: node linkType: hard +"slice-ansi@npm:^3.0.0": + version: 3.0.0 + resolution: "slice-ansi@npm:3.0.0" + dependencies: + ansi-styles: ^4.0.0 + astral-regex: ^2.0.0 + is-fullwidth-code-point: ^3.0.0 + checksum: 5ec6d022d12e016347e9e3e98a7eb2a592213a43a65f1b61b74d2c78288da0aded781f665807a9f3876b9daa9ad94f64f77d7633a0458876c3a4fdc4eb223f24 + languageName: node + linkType: hard + "slice-ansi@npm:^4.0.0": version: 4.0.0 resolution: "slice-ansi@npm:4.0.0" @@ -13784,6 +14352,16 @@ __metadata: languageName: node linkType: hard +"slice-ansi@npm:^5.0.0": + version: 5.0.0 + resolution: "slice-ansi@npm:5.0.0" + dependencies: + ansi-styles: ^6.0.0 + is-fullwidth-code-point: ^4.0.0 + checksum: 7e600a2a55e333a21ef5214b987c8358fe28bfb03c2867ff2cbf919d62143d1812ac27b4297a077fdaf27a03da3678e49551c93e35f9498a3d90221908a1180e + languageName: node + linkType: hard + "smart-buffer@npm:^4.2.0": version: 4.2.0 resolution: "smart-buffer@npm:4.2.0" @@ -13910,7 +14488,7 @@ __metadata: languageName: node linkType: hard -"source-map-support@npm:~0.5.12, source-map-support@npm:~0.5.20": +"source-map-support@npm:~0.5.20": version: 0.5.21 resolution: "source-map-support@npm:0.5.21" dependencies: @@ -13948,6 +14526,13 @@ __metadata: languageName: node linkType: hard +"source-map@npm:^0.7.3": + version: 0.7.4 + resolution: "source-map@npm:0.7.4" + checksum: 01cc5a74b1f0e1d626a58d36ad6898ea820567e87f18dfc9d24a9843a351aaa2ec09b87422589906d6ff1deed29693e176194dc88bcae7c9a852dc74b311dbf5 + languageName: node + linkType: hard + "source-map@npm:^0.8.0-beta.0, source-map@npm:~0.8.0-beta.0": version: 0.8.0-beta.0 resolution: "source-map@npm:0.8.0-beta.0" @@ -14050,15 +14635,6 @@ __metadata: languageName: node linkType: hard -"ssri@npm:^6.0.1": - version: 6.0.2 - resolution: "ssri@npm:6.0.2" - dependencies: - figgy-pudding: ^3.5.1 - checksum: 7c2e5d442f6252559c8987b7114bcf389fe5614bf65de09ba3e6f9a57b9b65b2967de348fcc3acccff9c069adb168140dd2c5fc2f6f4a779e604a27ef1f7d551 - languageName: node - linkType: hard - "ssri@npm:^8.0.0": version: 8.0.0 resolution: "ssri@npm:8.0.0" @@ -14077,13 +14653,6 @@ __metadata: languageName: node linkType: hard -"stable@npm:^0.1.8": - version: 0.1.8 - resolution: "stable@npm:0.1.8" - checksum: 2ff482bb100285d16dd75cd8f7c60ab652570e8952c0bfa91828a2b5f646a0ff533f14596ea4eabd48bb7f4aeea408dce8f8515812b975d958a4cc4fa6b9dfeb - languageName: node - linkType: hard - "stack-generator@npm:^2.0.5": version: 2.0.5 resolution: "stack-generator@npm:2.0.5" @@ -14173,16 +14742,6 @@ __metadata: languageName: node linkType: hard -"stream-each@npm:^1.1.0": - version: 1.2.3 - resolution: "stream-each@npm:1.2.3" - dependencies: - end-of-stream: ^1.1.0 - stream-shift: ^1.0.0 - checksum: f243de78e9fcc60757994efc4e8ecae9f01a4b2c6a505d786b11fcaa68b1a75ca54afc1669eac9e08f19ff0230792fc40d0f3e3e2935d76971b4903af18b76ab - languageName: node - linkType: hard - "stream-http@npm:^2.7.2": version: 2.8.3 resolution: "stream-http@npm:2.8.3" @@ -14196,10 +14755,10 @@ __metadata: languageName: node linkType: hard -"stream-shift@npm:^1.0.0": - version: 1.0.1 - resolution: "stream-shift@npm:1.0.1" - checksum: 59b82b44b29ec3699b5519a49b3cedcc6db58c72fb40c04e005525dfdcab1c75c4e0c180b923c380f204bed78211b9bad8faecc7b93dece4d004c3f6ec75737b +"string-argv@npm:^0.3.1": + version: 0.3.1 + resolution: "string-argv@npm:0.3.1" + checksum: efbd0289b599bee808ce80820dfe49c9635610715429c6b7cc50750f0437e3c2f697c81e5c390208c13b5d5d12d904a1546172a88579f6ee5cbaaaa4dc9ec5cf languageName: node linkType: hard @@ -14235,6 +14794,17 @@ __metadata: languageName: node linkType: hard +"string-width@npm:^5.0.0": + version: 5.1.2 + resolution: "string-width@npm:5.1.2" + dependencies: + eastasianwidth: ^0.2.0 + emoji-regex: ^9.2.2 + strip-ansi: ^7.0.1 + checksum: 7369deaa29f21dda9a438686154b62c2c5f661f8dda60449088f9f980196f7908fc39fdd1803e3e01541970287cf5deae336798337e9319a7055af89dafa7193 + languageName: node + linkType: hard + "string.prototype.matchall@npm:^4.0.6, string.prototype.matchall@npm:^4.0.8": version: 4.0.8 resolution: "string.prototype.matchall@npm:4.0.8" @@ -14329,6 +14899,15 @@ __metadata: languageName: node linkType: hard +"strip-ansi@npm:^7.0.1": + version: 7.0.1 + resolution: "strip-ansi@npm:7.0.1" + dependencies: + ansi-regex: ^6.0.1 + checksum: 257f78fa433520e7f9897722731d78599cb3fce29ff26a20a5e12ba4957463b50a01136f37c43707f4951817a75e90820174853d6ccc240997adc5df8f966039 + languageName: node + linkType: hard + "strip-bom@npm:^3.0.0": version: 3.0.0 resolution: "strip-bom@npm:3.0.0" @@ -14364,6 +14943,13 @@ __metadata: languageName: node linkType: hard +"strip-final-newline@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-final-newline@npm:3.0.0" + checksum: 23ee263adfa2070cd0f23d1ac14e2ed2f000c9b44229aec9c799f1367ec001478469560abefd00c5c99ee6f0b31c137d53ec6029c53e9f32a93804e18c201050 + languageName: node + linkType: hard + "strip-indent@npm:^3.0.0": version: 3.0.0 resolution: "strip-indent@npm:3.0.0" @@ -14387,14 +14973,15 @@ __metadata: languageName: node linkType: hard -"stylehacks@npm:^4.0.0": - version: 4.0.3 - resolution: "stylehacks@npm:4.0.3" +"stylehacks@npm:^6.0.0": + version: 6.0.0 + resolution: "stylehacks@npm:6.0.0" dependencies: - browserslist: ^4.0.0 - postcss: ^7.0.0 - postcss-selector-parser: ^3.0.0 - checksum: 8acf28ea609bee6d7ba40121bcf53af8d899c1ec04f2c08de9349b8292b84b8aa7f82e14c623ae6956decf5b7a7eeea5472ab8e48de7bdcdb6d76640444f6753 + browserslist: ^4.21.4 + postcss-selector-parser: ^6.0.4 + peerDependencies: + postcss: ^8.2.15 + checksum: b6071ab5f4451576e3a445f7304b41c43329f84d7a7987a91442febaabc1de51e62f1e37c4f37fad21990d3f573a8110bd31e09f9df7b8628465e19b1cdc702b languageName: node linkType: hard @@ -14466,17 +15053,17 @@ __metadata: languageName: node linkType: hard -"stylelint@npm:^15.2.0": - version: 15.2.0 - resolution: "stylelint@npm:15.2.0" +"stylelint@npm:^15.3.0": + version: 15.3.0 + resolution: "stylelint@npm:15.3.0" dependencies: "@csstools/css-parser-algorithms": ^2.0.1 - "@csstools/css-tokenizer": ^2.0.1 + "@csstools/css-tokenizer": ^2.1.0 "@csstools/media-query-list-parser": ^2.0.1 "@csstools/selector-specificity": ^2.1.1 balanced-match: ^2.0.0 colord: ^2.9.3 - cosmiconfig: ^8.0.0 + cosmiconfig: ^8.1.0 css-functions-list: ^3.1.0 css-tree: ^2.3.1 debug: ^4.3.4 @@ -14491,7 +15078,7 @@ __metadata: import-lazy: ^4.0.0 imurmurhash: ^0.1.4 is-plain-object: ^5.0.0 - known-css-properties: ^0.26.0 + known-css-properties: ^0.27.0 mathml-tag-names: ^2.1.3 meow: ^9.0.0 micromatch: ^4.0.5 @@ -14507,14 +15094,14 @@ __metadata: string-width: ^4.2.3 strip-ansi: ^6.0.1 style-search: ^0.1.0 - supports-hyperlinks: ^2.3.0 + supports-hyperlinks: ^3.0.0 svg-tags: ^1.0.0 table: ^6.8.1 v8-compile-cache: ^2.3.0 write-file-atomic: ^5.0.0 bin: stylelint: bin/stylelint.js - checksum: 2a52d1b36345659e92280317554d82fc621203341d3a6baf1b19f3c28d06a07b8c5f7a25b9be2383f73a4e6a395d69dfbbe4daeca19bd119b88673dd8b6518ac + checksum: d6ef20cfc498dba274fc2b17ea9d342e0ca1a24bc07755066842f0a28e1dc6f36c2b67f4cf87a3a232ae98cf42864e884cdcd11428fe4caf0f5f1677cac8d85a languageName: node linkType: hard @@ -14568,13 +15155,13 @@ __metadata: languageName: node linkType: hard -"supports-hyperlinks@npm:^2.3.0": - version: 2.3.0 - resolution: "supports-hyperlinks@npm:2.3.0" +"supports-hyperlinks@npm:^3.0.0": + version: 3.0.0 + resolution: "supports-hyperlinks@npm:3.0.0" dependencies: has-flag: ^4.0.0 supports-color: ^7.0.0 - checksum: 9ee0de3c8ce919d453511b2b1588a8205bd429d98af94a01df87411391010fe22ca463f268c84b2ce2abad019dfff8452aa02806eeb5c905a8d7ad5c4f4c52b8 + checksum: 41021305de5255b10d821bf93c7a781f783e1693d0faec293d7fc7ccf17011b90bde84b0295fa92ba75c6c390351fe84fdd18848cad4bf656e464a958243c3e7 languageName: node linkType: hard @@ -14592,26 +15179,19 @@ __metadata: languageName: node linkType: hard -"svgo@npm:^1.0.0": - version: 1.3.2 - resolution: "svgo@npm:1.3.2" +"svgo@npm:^3.0.2": + version: 3.0.2 + resolution: "svgo@npm:3.0.2" dependencies: - chalk: ^2.4.1 - coa: ^2.0.2 - css-select: ^2.0.0 - css-select-base-adapter: ^0.1.1 - css-tree: 1.0.0-alpha.37 - csso: ^4.0.2 - js-yaml: ^3.13.1 - mkdirp: ~0.5.1 - object.values: ^1.1.0 - sax: ~1.2.4 - stable: ^0.1.8 - unquote: ~1.1.1 - util.promisify: ~1.0.0 + "@trysound/sax": 0.2.0 + commander: ^7.2.0 + css-select: ^5.1.0 + css-tree: ^2.2.1 + csso: ^5.0.5 + picocolors: ^1.0.0 bin: - svgo: ./bin/svgo - checksum: 28a5680a61245eb4a1603bc03459095bb01ad5ebd23e95882d886c3c81752313c0a9a9fe48dd0bcbb9a27c52e11c603640df952971573b2b550d9e15a9ee6116 + svgo: bin/svgo + checksum: 381ba14aa782e71ab7033227634a3041c11fa3e2769aeaf0df43a08a615de61925108e34f55af6e7c5146f4a3109e78deabb4fa9d687e36d45d1f848b4e23d17 languageName: node linkType: hard @@ -14689,25 +15269,6 @@ __metadata: languageName: node linkType: hard -"terser-webpack-plugin@npm:^1.4.3": - version: 1.4.3 - resolution: "terser-webpack-plugin@npm:1.4.3" - dependencies: - cacache: ^12.0.2 - find-cache-dir: ^2.1.0 - is-wsl: ^1.1.0 - schema-utils: ^1.0.0 - serialize-javascript: ^2.1.2 - source-map: ^0.6.1 - terser: ^4.1.2 - webpack-sources: ^1.4.0 - worker-farm: ^1.7.0 - peerDependencies: - webpack: ^4.0.0 - checksum: 47bcc6329978940669695e3ca4633e5c170be5a496f80e3ddcfd74e4ad999a35f65c25a5075fa130f2cdcf0e085f6e7d649756d52548b4ac7288166c5aad00be - languageName: node - linkType: hard - "terser-webpack-plugin@npm:^4.2.3": version: 4.2.3 resolution: "terser-webpack-plugin@npm:4.2.3" @@ -14727,19 +15288,6 @@ __metadata: languageName: node linkType: hard -"terser@npm:^4.1.2": - version: 4.8.1 - resolution: "terser@npm:4.8.1" - dependencies: - commander: ^2.20.0 - source-map: ~0.6.1 - source-map-support: ~0.5.12 - bin: - terser: bin/terser - checksum: b342819bf7e82283059aaa3f22bb74deb1862d07573ba5a8947882190ad525fd9b44a15074986be083fd379c58b9a879457a330b66dcdb77b485c44267f9a55a - languageName: node - linkType: hard - "terser@npm:^5.0.0, terser@npm:^5.3.4": version: 5.13.1 resolution: "terser@npm:5.13.1" @@ -14807,13 +15355,10 @@ __metadata: languageName: node linkType: hard -"through2@npm:^2.0.0": - version: 2.0.5 - resolution: "through2@npm:2.0.5" - dependencies: - readable-stream: ~2.3.6 - xtend: ~4.0.1 - checksum: beb0f338aa2931e5660ec7bf3ad949e6d2e068c31f4737b9525e5201b824ac40cac6a337224856b56bd1ddd866334bbfb92a9f57cd6f66bc3f18d3d86fc0fe50 +"through@npm:^2.3.8": + version: 2.3.8 + resolution: "through@npm:2.3.8" + checksum: a38c3e059853c494af95d50c072b83f8b676a9ba2818dcc5b108ef252230735c54e0185437618596c790bbba8fcdaef5b290405981ffa09dce67b1f1bf190cbd languageName: node linkType: hard @@ -14833,13 +15378,6 @@ __metadata: languageName: node linkType: hard -"timsort@npm:^0.3.0": - version: 0.3.0 - resolution: "timsort@npm:0.3.0" - checksum: 1a66cb897dacabd7dd7c91b7e2301498ca9e224de2edb9e42d19f5b17c4b6dc62a8d4cbc64f28be82aaf1541cb5a78ab49aa818f42a2989ebe049a64af731e2a - languageName: node - linkType: hard - "tiny-invariant@npm:^1.0.2": version: 1.1.0 resolution: "tiny-invariant@npm:1.1.0" @@ -14966,6 +15504,15 @@ __metadata: languageName: node linkType: hard +"tr46@npm:^4.1.1": + version: 4.1.1 + resolution: "tr46@npm:4.1.1" + dependencies: + punycode: ^2.3.0 + checksum: aeeb821ac2cd792e63ec84888b4fd6598ac6ed75d861579e21a5cf9d4ee78b2c6b94e7d45036f2ca2088bc85b9b46560ad23c4482979421063b24137349dbd96 + languageName: node + linkType: hard + "tr46@npm:~0.0.3": version: 0.0.3 resolution: "tr46@npm:0.0.3" @@ -14992,6 +15539,13 @@ __metadata: languageName: node linkType: hard +"tslib@npm:^1.8.1": + version: 1.14.1 + resolution: "tslib@npm:1.14.1" + checksum: dbe628ef87f66691d5d2959b3e41b9ca0045c3ee3c7c7b906cc1e328b39f199bb1ad9e671c39025bd56122ac57dfbf7385a94843b1cc07c60a4db74795829acd + languageName: node + linkType: hard + "tslib@npm:^1.9.0": version: 1.13.0 resolution: "tslib@npm:1.13.0" @@ -14999,6 +15553,24 @@ __metadata: languageName: node linkType: hard +"tslib@npm:^2.1.0": + version: 2.5.0 + resolution: "tslib@npm:2.5.0" + checksum: ae3ed5f9ce29932d049908ebfdf21b3a003a85653a9a140d614da6b767a93ef94f460e52c3d787f0e4f383546981713f165037dc2274df212ea9f8a4541004e1 + languageName: node + linkType: hard + +"tsutils@npm:^3.21.0": + version: 3.21.0 + resolution: "tsutils@npm:3.21.0" + dependencies: + tslib: ^1.8.1 + peerDependencies: + typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + checksum: 1843f4c1b2e0f975e08c4c21caa4af4f7f65a12ac1b81b3b8489366826259323feb3fc7a243123453d2d1a02314205a7634e048d4a8009921da19f99755cdc48 + languageName: node + linkType: hard + "tty-browserify@npm:0.0.0": version: 0.0.0 resolution: "tty-browserify@npm:0.0.0" @@ -15078,6 +15650,13 @@ __metadata: languageName: node linkType: hard +"type-fest@npm:^0.21.3": + version: 0.21.3 + resolution: "type-fest@npm:0.21.3" + checksum: e6b32a3b3877f04339bae01c193b273c62ba7bfc9e325b8703c4ee1b32dc8fe4ef5dfa54bf78265e069f7667d058e360ae0f37be5af9f153b22382cd55a9afe0 + languageName: node + linkType: hard + "type-fest@npm:^0.6.0": version: 0.6.0 resolution: "type-fest@npm:0.6.0" @@ -15116,10 +15695,23 @@ __metadata: languageName: node linkType: hard -"typedarray@npm:^0.0.6": - version: 0.0.6 - resolution: "typedarray@npm:0.0.6" - checksum: 33b39f3d0e8463985eeaeeacc3cb2e28bc3dfaf2a5ed219628c0b629d5d7b810b0eb2165f9f607c34871d5daa92ba1dc69f49051cf7d578b4cbd26c340b9d1b1 +"typescript@npm:^5.0.3": + version: 5.0.3 + resolution: "typescript@npm:5.0.3" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 3cce0576d218cb4277ff8b6adfef1a706e9114a98b4261a38ad658a7642f1b274a8396394f6cbff8c0ba852996d7ed2e233e9b8431d5d55ac7c2f6fea645af02 + languageName: node + linkType: hard + +"typescript@patch:typescript@^5.0.3#~builtin": + version: 5.0.3 + resolution: "typescript@patch:typescript@npm%3A5.0.3#~builtin::version=5.0.3&hash=1f5320" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 9ec0a8eed38d46cc2c8794555b7674e413604c56c159f71b8ff21ce7f17334a44127a68724cb2ef8221ff3b19369f8f05654e8a5266621d7d962aeed889bd630 languageName: node linkType: hard @@ -15192,20 +15784,6 @@ __metadata: languageName: node linkType: hard -"uniq@npm:^1.0.1": - version: 1.0.1 - resolution: "uniq@npm:1.0.1" - checksum: 8206535f83745ea83f9da7035f3b983fd6ed5e35b8ed7745441944e4065b616bc67cf0d0a23a86b40ee0074426f0607f0a138f9b78e124eb6a7a6a6966055709 - languageName: node - linkType: hard - -"uniqs@npm:^2.0.0": - version: 2.0.0 - resolution: "uniqs@npm:2.0.0" - checksum: 5ace63e0521fd1ae2c161b3fa167cf6846fc45a71c00496729e0146402c3ae467c6f025a68fbd6766300a9bfbac9f240f2f0198164283bef48012b39db83f81f - languageName: node - linkType: hard - "unique-filename@npm:^1.1.1": version: 1.1.1 resolution: "unique-filename@npm:1.1.1" @@ -15279,13 +15857,6 @@ __metadata: languageName: node linkType: hard -"unquote@npm:~1.1.1": - version: 1.1.1 - resolution: "unquote@npm:1.1.1" - checksum: 71745867d09cba44ba2d26cb71d6dda7045a98b14f7405df4faaf2b0c90d24703ad027a9d90ba9a6e0d096de2c8d56f864fd03f1c0498c0b7a3990f73b4c8f5f - languageName: node - linkType: hard - "unset-value@npm:^1.0.0": version: 1.0.0 resolution: "unset-value@npm:1.0.0" @@ -15303,9 +15874,9 @@ __metadata: languageName: node linkType: hard -"update-browserslist-db@npm:^1.0.9": - version: 1.0.9 - resolution: "update-browserslist-db@npm:1.0.9" +"update-browserslist-db@npm:^1.0.10": + version: 1.0.10 + resolution: "update-browserslist-db@npm:1.0.10" dependencies: escalade: ^3.1.1 picocolors: ^1.0.0 @@ -15313,7 +15884,7 @@ __metadata: browserslist: ">= 4.21.0" bin: browserslist-lint: cli.js - checksum: f625899b236f6a4d7f62b56be1b8da230c5563d1fef84d3ef148f2e1a3f11a5a4b3be4fd7e3703e51274c116194017775b10afb4de09eb2c0d09d36b90f1f578 + checksum: 12db73b4f63029ac407b153732e7cd69a1ea8206c9100b482b7d12859cd3cd0bc59c602d7ae31e652706189f1acb90d42c53ab24a5ba563ed13aebdddc5561a0 languageName: node linkType: hard @@ -15395,13 +15966,13 @@ __metadata: languageName: node linkType: hard -"utf-8-validate@npm:^6.0.2": - version: 6.0.2 - resolution: "utf-8-validate@npm:6.0.2" +"utf-8-validate@npm:^6.0.3": + version: 6.0.3 + resolution: "utf-8-validate@npm:6.0.3" dependencies: node-gyp: latest node-gyp-build: ^4.3.0 - checksum: 40565d04dfca2bd9c30e50a1866b77fbad8a25859f93152183ce13250d4c9997cb61f76832052f269b9351336dd46cbf8dd2e87a7d821f88a00a9c7ab61fcb62 + checksum: 5e21383c81ff7469c1912119ca69d07202d944c73ddd8a54b84dddcc546b939054e5101c78c294e494d206fe93bd43428adc635a0660816b3ec9c8ec89286ac4 languageName: node linkType: hard @@ -15412,18 +15983,6 @@ __metadata: languageName: node linkType: hard -"util.promisify@npm:~1.0.0": - version: 1.0.1 - resolution: "util.promisify@npm:1.0.1" - dependencies: - define-properties: ^1.1.3 - es-abstract: ^1.17.2 - has-symbols: ^1.0.1 - object.getownpropertydescriptors: ^2.1.0 - checksum: d823c75b3fc66510018596f128a6592c98991df38bc0464a633bdf9134e2de0a1a33199c5c21cc261048a3982d7a19e032ecff8835b3c587f843deba96063e37 - languageName: node - linkType: hard - "util@npm:0.10.3": version: 0.10.3 resolution: "util@npm:0.10.3" @@ -15509,13 +16068,6 @@ __metadata: languageName: node linkType: hard -"vendors@npm:^1.0.0": - version: 1.0.4 - resolution: "vendors@npm:1.0.4" - checksum: 4b16e0bc18dbdd7ac8dd745c776c08f6c73e9a7f620ffd9faf94a3d86a35feaf4c6cb1bbdb304d2381548a30d0abe69b83eeb1b7b1bf5bb33935e64b28812681 - languageName: node - linkType: hard - "vm-browserify@npm:^1.0.1": version: 1.1.2 resolution: "vm-browserify@npm:1.1.2" @@ -15760,7 +16312,7 @@ __metadata: languageName: node linkType: hard -"webpack-sources@npm:^1.0, webpack-sources@npm:^1.1.0, webpack-sources@npm:^1.4.0, webpack-sources@npm:^1.4.1, webpack-sources@npm:^1.4.3": +"webpack-sources@npm:^1.0, webpack-sources@npm:^1.1.0, webpack-sources@npm:^1.4.1, webpack-sources@npm:^1.4.3": version: 1.4.3 resolution: "webpack-sources@npm:1.4.3" dependencies: @@ -15852,6 +16404,16 @@ __metadata: languageName: node linkType: hard +"whatwg-url@npm:^12.0.0, whatwg-url@npm:^12.0.1": + version: 12.0.1 + resolution: "whatwg-url@npm:12.0.1" + dependencies: + tr46: ^4.1.1 + webidl-conversions: ^7.0.0 + checksum: 8698993b763c1e7eda5ed16c31dab24bca6489626aca7caf8b5a2b64684dda6578194786f10ec42ceb1c175feea16d0a915096e6419e08d154ce551c43176972 + languageName: node + linkType: hard + "whatwg-url@npm:^5.0.0": version: 5.0.0 resolution: "whatwg-url@npm:5.0.0" @@ -16176,15 +16738,6 @@ __metadata: languageName: node linkType: hard -"worker-farm@npm:^1.7.0": - version: 1.7.0 - resolution: "worker-farm@npm:1.7.0" - dependencies: - errno: ~0.1.7 - checksum: eab917530e1feddf157ec749e9c91b73a886142daa7fdf3490bccbf7b548b2576c43ab8d0a98e72ac755cbc101ca8647a7b1ff2485fddb9e8f53c40c77f5a719 - languageName: node - linkType: hard - "wrap-ansi@npm:^5.1.0": version: 5.1.0 resolution: "wrap-ansi@npm:5.1.0" @@ -16196,6 +16749,17 @@ __metadata: languageName: node linkType: hard +"wrap-ansi@npm:^6.2.0": + version: 6.2.0 + resolution: "wrap-ansi@npm:6.2.0" + dependencies: + ansi-styles: ^4.0.0 + string-width: ^4.1.0 + strip-ansi: ^6.0.0 + checksum: 6cd96a410161ff617b63581a08376f0cb9162375adeb7956e10c8cd397821f7eb2a6de24eb22a0b28401300bf228c86e50617cd568209b5f6775b93c97d2fe3a + languageName: node + linkType: hard + "wrap-ansi@npm:^7.0.0": version: 7.0.0 resolution: "wrap-ansi@npm:7.0.0" @@ -16258,9 +16822,9 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.11.0, ws@npm:^8.12.1": - version: 8.12.1 - resolution: "ws@npm:8.12.1" +"ws@npm:^8.11.0, ws@npm:^8.12.1, ws@npm:^8.13.0": + version: 8.13.0 + resolution: "ws@npm:8.13.0" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -16269,7 +16833,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 97301c1c4d838fc81bd413f370f75c12aabe44527b31323b761eab3043a9ecb7e32ffd668548382c9a6a5ad3a1c3a9249608e8338e6b939f2f9540f1e21970b5 + checksum: 53e991bbf928faf5dc6efac9b8eb9ab6497c69feeb94f963d648b7a3530a720b19ec2e0ec037344257e05a4f35bd9ad04d9de6f289615ffb133282031b18c61c languageName: node linkType: hard @@ -16287,7 +16851,7 @@ __metadata: languageName: node linkType: hard -"xtend@npm:^4.0.0, xtend@npm:~4.0.1": +"xtend@npm:^4.0.0": version: 4.0.2 resolution: "xtend@npm:4.0.2" checksum: ac5dfa738b21f6e7f0dd6e65e1b3155036d68104e67e5d5d1bde74892e327d7e5636a076f625599dc394330a731861e87343ff184b0047fef1360a7ec0a5a36a @@ -16329,6 +16893,13 @@ __metadata: languageName: node linkType: hard +"yaml@npm:^2.2.1": + version: 2.2.1 + resolution: "yaml@npm:2.2.1" + checksum: 84f68cbe462d5da4e7ded4a8bded949ffa912bc264472e5a684c3d45b22d8f73a3019963a32164023bdf3d83cfb6f5b58ff7b2b10ef5b717c630f40bd6369a23 + languageName: node + linkType: hard + "yargs-parser@npm:^13.1.2": version: 13.1.2 resolution: "yargs-parser@npm:13.1.2" @@ -16371,9 +16942,9 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^17.3.1, yargs@npm:^17.7.0": - version: 17.7.0 - resolution: "yargs@npm:17.7.0" +"yargs@npm:^17.3.1, yargs@npm:^17.7.1": + version: 17.7.1 + resolution: "yargs@npm:17.7.1" dependencies: cliui: ^8.0.1 escalade: ^3.1.1 @@ -16382,7 +16953,7 @@ __metadata: string-width: ^4.2.3 y18n: ^5.0.5 yargs-parser: ^21.1.1 - checksum: e7d5f5b60e63b04ded7c27c3d4b194565565cac3ea19fffcdbb183bed973a83106822a04dda28ebba4811ce92949a9d9858d3935186ff8f343548bf98aab2120 + checksum: 3d8a43c336a4942bc68080768664aca85c7bd406f018bad362fd255c41c8f4e650277f42fd65d543fce99e084124ddafee7bbfc1a5c6a8fda4cec78609dcf8d4 languageName: node linkType: hard