Merge pull request #2117 from ClearlyClaire/glitch-soc/merge-upstream

Merge upstream changes
main
Claire 2 years ago committed by GitHub
commit 45087c1092
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -0,0 +1,3 @@
---
ignore:
- CVE-2015-9284 # Mitigation following https://github.com/omniauth/omniauth/wiki/Resolving-CVE-2015-9284#mitigating-in-rails-applications

@ -46,7 +46,7 @@ commands:
name: Set bundler settings name: Set bundler settings
- ruby/install-deps: - ruby/install-deps:
bundler-version: '2.3.26' bundler-version: '2.3.26'
key: ruby<< parameters.ruby-version >>-gems-v1 key: ruby<< parameters.ruby-version >>-gems-v2
wait-db: wait-db:
steps: steps:
- run: - run:
@ -56,14 +56,14 @@ commands:
jobs: jobs:
build: build:
docker: docker:
- image: cimg/ruby:3.0-node - image: cimg/ruby:3.2-node
environment: environment:
RAILS_ENV: test RAILS_ENV: test
steps: steps:
- checkout - checkout
- install-system-dependencies - install-system-dependencies
- install-ruby-dependencies: - install-ruby-dependencies:
ruby-version: '3.0' ruby-version: '3.2'
- node/install-packages: - node/install-packages:
cache-version: v1 cache-version: v1
pkg-manager: yarn pkg-manager: yarn
@ -95,7 +95,7 @@ jobs:
- checkout - checkout
- install-system-dependencies - install-system-dependencies
- run: - run:
command: sudo apt-get install -y ffmpeg imagemagick libpam-dev 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 name: Install additional system dependencies
- run: - run:
command: bundle config with 'pam_authentication' command: bundle config with 'pam_authentication'
@ -110,91 +110,6 @@ jobs:
name: Load database schema name: Load database schema
- ruby/rspec-test - ruby/rspec-test
test-migrations:
executor:
name: default
ruby-version: '3.0'
steps:
- checkout
- install-system-dependencies
- install-ruby-dependencies:
ruby-version: '3.0'
- wait-db
- run:
command: ./bin/rails db:create
name: Create database
- run:
command: ./bin/rails db:migrate VERSION=20171010025614
name: Run migrations up to v2.0.0
- run:
command: ./bin/rails tests:migrations:populate_v2
name: Populate database with test data
- run:
command: ./bin/rails db:migrate VERSION=20180514140000
name: Run migrations up to v2.4.0
- run:
command: ./bin/rails tests:migrations:populate_v2_4
name: Populate database with test data
- run:
command: ./bin/rails db:migrate VERSION=20180707154237
name: Run migrations up to v2.4.3
- run:
command: ./bin/rails tests:migrations:populate_v2_4_3
name: Populate database with test data
- run:
command: ./bin/rails db:migrate
name: Run all remaining migrations
- run:
command: ./bin/rails tests:migrations:check_database
name: Check migration result
test-two-step-migrations:
executor:
name: default
ruby-version: '3.0'
steps:
- checkout
- install-system-dependencies
- install-ruby-dependencies:
ruby-version: '3.0'
- wait-db
- run:
command: ./bin/rails db:create
name: Create database
- run:
command: ./bin/rails db:migrate VERSION=20171010025614
name: Run migrations up to v2.0.0
- run:
command: ./bin/rails tests:migrations:populate_v2
name: Populate database with test data
- run:
command: ./bin/rails db:migrate VERSION=20180514140000
name: Run pre-deployment migrations up to v2.4.0
environment:
SKIP_POST_DEPLOYMENT_MIGRATIONS: true
- run:
command: ./bin/rails tests:migrations:populate_v2_4
name: Populate database with test data
- run:
command: ./bin/rails db:migrate VERSION=20180707154237
name: Run migrations up to v2.4.3
environment:
SKIP_POST_DEPLOYMENT_MIGRATIONS: true
- run:
command: ./bin/rails tests:migrations:populate_v2_4_3
name: Populate database with test data
- run:
command: ./bin/rails db:migrate
name: Run all remaining pre-deployment migrations
environment:
SKIP_POST_DEPLOYMENT_MIGRATIONS: true
- run:
command: ./bin/rails db:migrate
name: Run all post-deployment migrations
- run:
command: ./bin/rails tests:migrations:check_database
name: Check migration result
workflows: workflows:
version: 2 version: 2
build-and-test: build-and-test:
@ -206,20 +121,8 @@ workflows:
ruby-version: ruby-version:
- '2.7' - '2.7'
- '3.0' - '3.0'
- '3.1'
- '3.2'
name: test-ruby<< matrix.ruby-version >> name: test-ruby<< matrix.ruby-version >>
requires: requires:
- build - build
- test-migrations:
requires:
- build
- test-two-step-migrations:
requires:
- build
- node/run:
cache-version: v1
name: test-webui
pkg-manager: yarn
requires:
- build
version: '16.19'
yarn-run: test:jest

@ -24,7 +24,7 @@ plugins:
brakeman: brakeman:
enabled: true enabled: true
bundler-audit: bundler-audit:
enabled: true enabled: false
eslint: eslint:
enabled: false enabled: false
rubocop: rubocop:

@ -4,16 +4,22 @@
"service": "app", "service": "app",
"workspaceFolder": "/mastodon", "workspaceFolder": "/mastodon",
// Set *default* container specific settings.json values on container create. // Configure tool-specific properties.
"settings": {}, "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. // Add the IDs of extensions you want installed when the container is created.
"extensions": [ "extensions": [
"EditorConfig.EditorConfig", "EditorConfig.EditorConfig",
"dbaeumer.vscode-eslint", "dbaeumer.vscode-eslint",
"rebornix.Ruby", "rebornix.Ruby",
"webben.browserslist" "webben.browserslist"
], ]
}
},
"features": { "features": {
"ghcr.io/devcontainers/features/sshd:1": { "ghcr.io/devcontainers/features/sshd:1": {

@ -6,6 +6,7 @@ module.exports = {
'plugin:react/recommended', 'plugin:react/recommended',
'plugin:jsx-a11y/recommended', 'plugin:jsx-a11y/recommended',
'plugin:import/recommended', 'plugin:import/recommended',
'plugin:promise/recommended',
], ],
env: { env: {
@ -199,11 +200,15 @@ module.exports = {
], ],
'import/no-webpack-loader-syntax': 'error', 'import/no-webpack-loader-syntax': 'error',
'promise/always-return': 'off',
'promise/catch-or-return': [ 'promise/catch-or-return': [
'error', 'error',
{ {
allowFinally: true, allowFinally: true,
}, },
], ],
'promise/no-callback-in-promise': 'off',
'promise/no-nesting': 'off',
'promise/no-promise-in-callback': 'off',
}, },
}; };

@ -17,7 +17,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
concurrency: concurrency:
group: ${{ github.ref }} group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true cancel-in-progress: true
steps: steps:

@ -14,24 +14,35 @@ permissions:
jobs: jobs:
check-i18n: check-i18n:
runs-on: ubuntu-latest runs-on: ubuntu-22.04
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
- name: Install system dependencies - name: Install system dependencies
run: | run: |
sudo apt-get update sudo apt-get update
sudo apt-get install -y libicu-dev libidn11-dev sudo apt-get install -y libicu-dev libidn11-dev
- name: Set up Ruby - name: Set up Ruby
uses: ruby/setup-ruby@v1 uses: ruby/setup-ruby@v1
with: with:
ruby-version: .ruby-version ruby-version: .ruby-version
bundler-cache: true bundler-cache: true
- name: Check locale file normalization - name: Check locale file normalization
run: bundle exec i18n-tasks check-normalized run: bundle exec i18n-tasks check-normalized
- name: Check for unused strings - name: Check for unused strings
run: bundle exec i18n-tasks unused run: bundle exec i18n-tasks unused
- name: Check for missing strings in English
run: |
bundle exec i18n-tasks add-missing -l en
git diff --exit-code
- name: Check for wrong string interpolations - name: Check for wrong string interpolations
run: bundle exec i18n-tasks check-consistent-interpolations run: bundle exec i18n-tasks check-consistent-interpolations
- name: Check that all required locale files exist - name: Check that all required locale files exist
run: bundle exec rake repo:check_locales_files run: bundle exec rake repo:check_locales_files

@ -6,6 +6,7 @@ on:
paths: paths:
- 'package.json' - 'package.json'
- 'yarn.lock' - 'yarn.lock'
- '.nvmrc'
- '.prettier*' - '.prettier*'
- 'stylelint.config.js' - 'stylelint.config.js'
- '**/*.css' - '**/*.css'
@ -17,6 +18,7 @@ on:
paths: paths:
- 'package.json' - 'package.json'
- 'yarn.lock' - 'yarn.lock'
- '.nvmrc'
- '.prettier*' - '.prettier*'
- 'stylelint.config.js' - 'stylelint.config.js'
- '**/*.css' - '**/*.css'
@ -36,6 +38,7 @@ jobs:
uses: actions/setup-node@v3 uses: actions/setup-node@v3
with: with:
cache: yarn cache: yarn
node-version-file: '.nvmrc'
- name: Install all yarn packages - name: Install all yarn packages
run: yarn --frozen-lockfile run: yarn --frozen-lockfile

@ -6,6 +6,7 @@ on:
paths: paths:
- 'package.json' - 'package.json'
- 'yarn.lock' - 'yarn.lock'
- '.nvmrc'
- '.prettier*' - '.prettier*'
- '.eslint*' - '.eslint*'
- '**/*.js' - '**/*.js'
@ -15,6 +16,7 @@ on:
paths: paths:
- 'package.json' - 'package.json'
- 'yarn.lock' - 'yarn.lock'
- '.nvmrc'
- '.prettier*' - '.prettier*'
- '.eslint*' - '.eslint*'
- '**/*.js' - '**/*.js'
@ -32,6 +34,7 @@ jobs:
uses: actions/setup-node@v3 uses: actions/setup-node@v3
with: with:
cache: yarn cache: yarn
node-version-file: '.nvmrc'
- name: Install all yarn packages - name: Install all yarn packages
run: yarn --frozen-lockfile run: yarn --frozen-lockfile

@ -6,6 +6,7 @@ on:
paths: paths:
- 'package.json' - 'package.json'
- 'yarn.lock' - 'yarn.lock'
- '.nvmrc'
- '.prettier*' - '.prettier*'
- '**/*.json' - '**/*.json'
- '.github/workflows/lint-json.yml' - '.github/workflows/lint-json.yml'
@ -15,6 +16,7 @@ on:
paths: paths:
- 'package.json' - 'package.json'
- 'yarn.lock' - 'yarn.lock'
- '.nvmrc'
- '.prettier*' - '.prettier*'
- '**/*.json' - '**/*.json'
- '.github/workflows/lint-json.yml' - '.github/workflows/lint-json.yml'
@ -32,6 +34,7 @@ jobs:
uses: actions/setup-node@v3 uses: actions/setup-node@v3
with: with:
cache: yarn cache: yarn
node-version-file: '.nvmrc'
- name: Install all yarn packages - name: Install all yarn packages
run: yarn --frozen-lockfile run: yarn --frozen-lockfile

@ -5,7 +5,9 @@ on:
- 'dependabot/**' - 'dependabot/**'
paths: paths:
- 'Gemfile*' - 'Gemfile*'
- '.rubocop.yml' - '.rubocop*.yml'
- '.ruby-version'
- '.bundler-audit.yml'
- '**/*.rb' - '**/*.rb'
- '**/*.rake' - '**/*.rake'
- '.github/workflows/lint-ruby.yml' - '.github/workflows/lint-ruby.yml'
@ -13,7 +15,9 @@ on:
pull_request: pull_request:
paths: paths:
- 'Gemfile*' - 'Gemfile*'
- '.rubocop.yml' - '.rubocop*.yml'
- '.ruby-version'
- '.bundler-audit.yml'
- '**/*.rb' - '**/*.rb'
- '**/*.rake' - '**/*.rake'
- '.github/workflows/lint-ruby.yml' - '.github/workflows/lint-ruby.yml'
@ -21,21 +25,25 @@ on:
jobs: jobs:
lint: lint:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout Code - name: Clone repository
uses: actions/checkout@v3 uses: actions/checkout@v3
- name: Install native Ruby dependencies
run: sudo apt-get install -y libicu-dev libidn11-dev
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with: with:
fetch-depth: 0 ruby-version: .ruby-version
bundler-cache: true
- name: Set-up RuboCop Problem Mathcher - name: Set-up RuboCop Problem Matcher
uses: r7kamura/rubocop-problem-matchers-action@v1 uses: r7kamura/rubocop-problem-matchers-action@v1
- name: Run rubocop - name: Run rubocop
uses: github/super-linter@v4 run: bundle exec rubocop
env:
DEFAULT_BRANCH: main - name: Run bundler-audit
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: bundle exec bundler-audit
LINTER_RULES_PATH: .
RUBY_CONFIG_FILE: .rubocop.yml
VALIDATE_ALL_CODEBASE: false
VALIDATE_RUBY: true

@ -6,6 +6,7 @@ on:
paths: paths:
- 'package.json' - 'package.json'
- 'yarn.lock' - 'yarn.lock'
- '.nvmrc'
- '.prettier*' - '.prettier*'
- '**/*.yaml' - '**/*.yaml'
- '**/*.yml' - '**/*.yml'
@ -16,6 +17,7 @@ on:
paths: paths:
- 'package.json' - 'package.json'
- 'yarn.lock' - 'yarn.lock'
- '.nvmrc'
- '.prettier*' - '.prettier*'
- '**/*.yaml' - '**/*.yaml'
- '**/*.yml' - '**/*.yml'
@ -34,6 +36,7 @@ jobs:
uses: actions/setup-node@v3 uses: actions/setup-node@v3
with: with:
cache: yarn cache: yarn
node-version-file: '.nvmrc'
- name: Install all yarn packages - name: Install all yarn packages
run: yarn --frozen-lockfile run: yarn --frozen-lockfile

@ -8,6 +8,11 @@ on:
jobs: jobs:
label-rebase-needed: label-rebase-needed:
runs-on: ubuntu-latest runs-on: ubuntu-latest
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
steps: steps:
- name: Check for merge conflicts - name: Check for merge conflicts
uses: eps1lon/actions-label-merge-conflict@releases/2.x uses: eps1lon/actions-label-merge-conflict@releases/2.x

@ -0,0 +1,41 @@
name: JavaScript Testing
on:
push:
branches-ignore:
- 'dependabot/**'
paths:
- 'package.json'
- 'yarn.lock'
- '.nvmrc'
- '**/*.js'
- '**/*.snap'
- '.github/workflows/test-js.yml'
pull_request:
paths:
- 'package.json'
- 'yarn.lock'
- '.nvmrc'
- '**/*.js'
- '**/*.snap'
- '.github/workflows/test-js.yml'
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@v3
- 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: Jest testing
run: yarn test:jest --reporters github-actions summary

@ -0,0 +1,100 @@
name: Test one step migrations
on:
push:
branches-ignore:
- 'dependabot/**'
pull_request:
jobs:
pre_job:
runs-on: ubuntu-latest
outputs:
should_skip: ${{ steps.skip_check.outputs.should_skip }}
steps:
- id: skip_check
uses: fkirc/skip-duplicate-actions@v5
with:
paths: '["Gemfile*", ".ruby-version", "**/*.rb", ".github/workflows/test-migrations-one-step.yml"]'
test:
runs-on: ubuntu-latest
needs: pre_job
if: needs.pre_job.outputs.should_skip != 'true'
services:
postgres:
image: postgres:14.5
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.0
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 6379:6379
env:
CONTINUOUS_INTEGRATION: true
DB_HOST: localhost
DB_USER: postgres
DB_PASS: postgres
DISABLE_SIMPLECOV: true
RAILS_ENV: test
BUNDLE_CLEAN: true
BUNDLE_FROZEN: true
BUNDLE_WITHOUT: 'development production'
BUNDLE_JOBS: 3
BUNDLE_RETRY: 3
steps:
- uses: actions/checkout@v3
- name: Install native Ruby dependencies
run: 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
- name: Create database
run: './bin/rails db:create'
- name: Run migrations up to v2.0.0
run: './bin/rails db:migrate VERSION=20171010025614'
- name: Populate database with test data
run: './bin/rails tests:migrations:populate_v2'
- name: Run migrations up to v2.4.0
run: './bin/rails db:migrate VERSION=20180514140000'
- name: Populate database with test data
run: './bin/rails tests:migrations:populate_v2_4'
- name: Run migrations up to v2.4.3
run: './bin/rails db:migrate VERSION=20180707154237'
- name: Populate database with test data
run: './bin/rails tests:migrations:populate_v2_4_3'
- name: Run all remaining migrations
run: './bin/rails db:migrate'
- name: Check migration result
run: './bin/rails tests:migrations:check_database'

@ -0,0 +1,108 @@
name: Test two step migrations
on:
push:
branches-ignore:
- 'dependabot/**'
pull_request:
jobs:
pre_job:
runs-on: ubuntu-latest
outputs:
should_skip: ${{ steps.skip_check.outputs.should_skip }}
steps:
- id: skip_check
uses: fkirc/skip-duplicate-actions@v5
with:
paths: '["Gemfile*", ".ruby-version", "**/*.rb", ".github/workflows/test-migrations-two-step.yml"]'
test:
runs-on: ubuntu-latest
needs: pre_job
if: needs.pre_job.outputs.should_skip != 'true'
services:
postgres:
image: postgres:14.5
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.0
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 6379:6379
env:
CONTINUOUS_INTEGRATION: true
DB_HOST: localhost
DB_USER: postgres
DB_PASS: postgres
DISABLE_SIMPLECOV: true
RAILS_ENV: test
BUNDLE_CLEAN: true
BUNDLE_FROZEN: true
BUNDLE_WITHOUT: 'development production'
BUNDLE_JOBS: 3
BUNDLE_RETRY: 3
steps:
- uses: actions/checkout@v3
- name: Install native Ruby dependencies
run: 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
- name: Create database
run: './bin/rails db:create'
- name: Run migrations up to v2.0.0
run: './bin/rails db:migrate VERSION=20171010025614'
- name: Populate database with test data
run: './bin/rails tests:migrations:populate_v2'
- name: Run pre-deployment migrations up to v2.4.0
run: './bin/rails db:migrate VERSION=20180514140000'
env:
SKIP_POST_DEPLOYMENT_MIGRATIONS: true
- name: Populate database with test data
run: './bin/rails tests:migrations:populate_v2_4'
- name: Run migrations up to v2.4.3
run: './bin/rails db:migrate VERSION=20180707154237'
env:
SKIP_POST_DEPLOYMENT_MIGRATIONS: true
- name: Populate database with test data
run: './bin/rails tests:migrations:populate_v2_4_3'
- name: Run all remaining pre-deployment migrations
run: './bin/rails db:migrate'
env:
SKIP_POST_DEPLOYMENT_MIGRATIONS: true
- name: Run all post-deployment migrations
run: './bin/rails db:migrate'
- name: Check migration result
run: './bin/rails tests:migrations:check_database'

@ -51,15 +51,8 @@
*~ *~
*.swp *.swp
# Ignore npm debug log # Ignore log files
npm-debug.log *.log
# Ignore yarn log files
yarn-error.log
yarn-debug.log
# Ignore vagrant log files
*-cloudimg-console.log
# Ignore Docker option files # Ignore Docker option files
docker-compose.override.yml docker-compose.override.yml
@ -74,6 +67,15 @@ docker-compose.override.yml
# Ignore vendored CSS reset # Ignore vendored CSS reset
app/javascript/styles/mastodon/reset.scss app/javascript/styles/mastodon/reset.scss
# Ignore Javascript pending https://github.com/mastodon/mastodon/pull/23631
*.js
# Ignore Markdownlint pending https://github.com/mastodon/mastodon/pull/21972
*.md
# Ignore HTML till cleaned and included in CI
*.html
# Ignore glitch-soc emoji map file # Ignore glitch-soc emoji map file
/app/javascript/flavours/glitch/features/emoji/emoji_map.json /app/javascript/flavours/glitch/features/emoji/emoji_map.json

@ -1,3 +1,9 @@
inherit_from: .rubocop_todo.yml
inherit_mode:
merge:
- Exclude
require: require:
- rubocop-rails - rubocop-rails
- rubocop-rspec - rubocop-rspec
@ -23,50 +29,19 @@ AllCops:
- 'lib/json_ld/*' - 'lib/json_ld/*'
- 'lib/templates/**/*' - 'lib/templates/**/*'
Bundler/OrderedGems:
Enabled: false
Layout/AccessModifierIndentation:
EnforcedStyle: indent
Layout/EmptyLineAfterMagicComment:
Enabled: false
Layout/EmptyLineAfterGuardClause:
Enabled: false
Layout/EmptyLineBetweenDefs:
AllowAdjacentOneLineDefs: true
Layout/EmptyLinesAroundAttributeAccessor:
Enabled: true
Layout/FirstHashElementIndentation: Layout/FirstHashElementIndentation:
EnforcedStyle: consistent EnforcedStyle: consistent
Layout/HashAlignment: Layout/LineLength:
Enabled: false Max: 140 # RuboCop default 120
AllowedPatterns:
Layout/SpaceAroundMethodCallOperator: # Allow comments to be long lines
Enabled: true - !ruby/regexp / \# .*$/
- !ruby/regexp /^\# .*$/
Layout/SpaceInsideHashLiteralBraces: Exclude:
EnforcedStyle: space - lib/**/*cli*.rb
- db/*migrate/**/*
Lint/DeprecatedOpenSSLConstant: - db/seeds/**/*
Enabled: true
Lint/DuplicateElsifCondition:
Enabled: true
Lint/MixedRegexpCaptureTypes:
Enabled: true
Lint/RaiseException:
Enabled: true
Lint/StructNewOverride:
Enabled: true
Lint/UselessAccessModifier: Lint/UselessAccessModifier:
ContextCreatingMethods: ContextCreatingMethods:
@ -77,403 +52,62 @@ Metrics/AbcSize:
Exclude: Exclude:
- 'lib/**/*cli*.rb' - 'lib/**/*cli*.rb'
- db/*migrate/**/* - db/*migrate/**/*
- lib/paperclip/color_extractor.rb
- app/workers/scheduler/follow_recommendations_scheduler.rb
- app/services/activitypub/fetch*_service.rb
- lib/paperclip/**/*
CountRepeatedAttributes: false
AllowedMethods:
- update_media_attachments!
- account_link_to
- attempt_oembed
- build_crutches
- calculate_scores
- cc
- dump_actor!
- filter_from_home?
- hydrate
- import_bookmarks!
- import_relationships!
- initialize
- link_to_mention
- log_target
- matches_time_window?
- parse_metadata
- perform_statuses_search!
- privatize_media_attachments!
- process_update
- publish_media_attachments!
- remotable_attachment
- render_initial_state
- render_with_cache
- searchable_by
- self.cached_filters_for
- set_fetchable_attributes!
- signed_request_actor
- statuses_to_delete
- update_poll!
Metrics/BlockLength: Metrics/BlockLength:
Max: 55 Max: 55 # Default 25
CountAsOne: [array, heredoc]
Exclude: Exclude:
- 'lib/mastodon/*_cli.rb' - 'lib/mastodon/*_cli.rb'
CountComments: false
CountAsOne: [array, heredoc]
AllowedMethods:
- task
- namespace
- class_methods
- included
Metrics/BlockNesting: Metrics/BlockNesting:
Max: 3
Exclude: Exclude:
- 'lib/mastodon/*_cli.rb' - 'lib/mastodon/*_cli.rb'
Metrics/ClassLength: Metrics/ClassLength:
CountComments: false Max: 500 # Default 100
Max: 500
CountAsOne: [array, heredoc] CountAsOne: [array, heredoc]
Exclude: Exclude:
- 'lib/mastodon/*_cli.rb' - 'lib/mastodon/*_cli.rb'
Metrics/CyclomaticComplexity: Metrics/CyclomaticComplexity:
Max: 12 Max: 12 # Default 7
Exclude: Exclude:
- lib/mastodon/*cli*.rb - lib/mastodon/*cli*.rb
- db/*migrate/**/* - db/*migrate/**/*
AllowedMethods:
- attempt_oembed
- blocked?
- build_crutches
- calculate_scores
- cc
- discover_endpoint!
- filter_from_home?
- hydrate
- klass
- link_to_mention
- log_target
- matches_time_window?
- patch_for_forwarding!
- preprocess_attributes!
- process_update
- remotable_attachment
- scan_text!
- self.cached_filters_for
- set_fetchable_attributes!
- setup_redis_env_url
- update_media_attachments!
Layout/LineLength:
Max: 140 # RuboCop default 120
AllowHeredoc: true
AllowURI: true
IgnoreCopDirectives: true
AllowedPatterns:
# Allow comments to be long lines
- !ruby/regexp / \# .*$/
- !ruby/regexp /^\# .*$/
Exclude:
- lib/**/*cli*.rb
- db/*migrate/**/*
- db/seeds/**/*
Metrics/MethodLength: Metrics/MethodLength:
CountComments: false
CountAsOne: [array, heredoc]
Max: 25 # RuboCop default 10 Max: 25 # RuboCop default 10
CountAsOne: [array, heredoc]
Exclude: Exclude:
- 'lib/mastodon/*_cli.rb' - 'lib/mastodon/*_cli.rb'
AllowedMethods:
- account_link_to
- attempt_oembed
- body_with_limit
- build_crutches
- cached_filters_for
- calculate_scores
- check_webfinger!
- clean_feeds!
- collection_items
- collection_presenter
- copy_account_notes!
- deduplicate_accounts!
- deduplicate_conversations!
- deduplicate_local_accounts!
- deduplicate_statuses!
- deduplicate_tags!
- deduplicate_users!
- discover_endpoint!
- extract_extra_uris_with_indices
- extract_hashtags_with_indices
- extract_mentions_or_lists_with_indices
- filter_from_home?
- from_elasticsearch
- handle_explicit_update!
- handle_mark_as_sensitive!
- hsl_to_rgb
- import_bookmarks!
- import_domain_blocks!
- import_relationships!
- ldap_options
- matches_time_window?
- outbox_presenter
- pam_get_user
- parallelize_with_progress
- parse_and_transform
- patch_for_forwarding!
- populate_home
- post_process_style
- preload_cache_collection_target_statuses
- privatize_media_attachments!
- provides_callback_for
- publish_media_attachments!
- relevant_account_timestamp
- remotable_attachment
- rgb_to_hsl
- rss_status_content_format
- set_fetchable_attributes!
- setup_redis_env_url
- signed_request_actor
- to_preview_card_attributes
- upgrade_storage_filesystem
- upgrade_storage_s3
- user_settings_params
- hydrate
- cc
- self_destruct
Metrics/ModuleLength: Metrics/ModuleLength:
CountComments: false Max: 200 # Default 100
Max: 200
CountAsOne: [array, heredoc] CountAsOne: [array, heredoc]
Metrics/ParameterLists:
Max: 5 # RuboCop default 5
CountKeywordArgs: true # RuboCop default true
MaxOptionalParameters: 3 # RuboCop default 3
Exclude:
- app/models/concerns/account_interactions.rb
- app/services/activitypub/fetch_remote_account_service.rb
- app/services/activitypub/fetch_remote_actor_service.rb
Metrics/PerceivedComplexity: Metrics/PerceivedComplexity:
Max: 16 # RuboCop default 8 Max: 16 # RuboCop default 8
AllowedMethods:
- attempt_oembed
- build_crutches
- calculate_scores
- deduplicate_users!
- discover_endpoint!
- filter_from_home?
- hydrate
- patch_for_forwarding!
- process_update
- remove_orphans
- update_media_attachments!
Naming/MemoizedInstanceVariableName:
Enabled: false
Naming/MethodParameterName:
Enabled: true
Rails:
Enabled: true
Rails/ApplicationController:
Enabled: false
Exclude:
- 'app/controllers/well_known/**/*.rb'
Rails/BelongsTo:
Enabled: false
Rails/ContentTag:
Enabled: false
Rails/EnumHash:
Enabled: false
Rails/Exit: Rails/Exit:
Exclude: Exclude:
- 'lib/mastodon/*' - 'lib/mastodon/*_cli.rb'
- 'lib/mastodon/cli_helper.rb'
- 'lib/cli.rb' - 'lib/cli.rb'
Rails/FilePath:
Enabled: false
Rails/HasAndBelongsToMany:
Enabled: false
Rails/HasManyOrHasOneDependent:
Enabled: false
Rails/HelperInstanceVariable:
Enabled: false
Rails/HttpStatus:
Enabled: false
Rails/IndexBy:
Enabled: false
Rails/InverseOf:
Enabled: false
Rails/LexicallyScopedActionFilter:
Enabled: false
Rails/OutputSafety:
Enabled: true
Rails/RakeEnvironment:
Enabled: false
Rails/RedundantForeignKey:
Enabled: false
Rails/SkipsModelValidations:
Enabled: false
Rails/UniqueValidationWithoutIndex:
Enabled: false
Style/AccessorGrouping:
Enabled: true
Style/AccessModifierDeclarations:
Enabled: false
Style/ArrayCoercion:
Enabled: true
Style/BisectedAttrAccessor:
Enabled: true
Style/CaseLikeIf:
Enabled: false
Style/ClassAndModuleChildren:
Enabled: false
Style/CollectionMethods:
Enabled: true
PreferredMethods:
find_all: 'select'
Style/Documentation:
Enabled: false
Style/DoubleNegation:
Enabled: true
Style/ExpandPathArguments:
Enabled: false
Style/ExponentialNotation:
Enabled: true
Style/FormatString:
Enabled: false
Style/FormatStringToken:
Enabled: false
Style/FrozenStringLiteralComment:
Enabled: true
Style/GuardClause:
Enabled: false
Style/HashAsLastArrayItem:
Enabled: false
Style/HashEachMethods:
Enabled: true
Style/HashLikeCase:
Enabled: true
Style/HashTransformKeys:
Enabled: true
Style/HashTransformValues:
Enabled: false
Style/HashSyntax: Style/HashSyntax:
Enabled: true
EnforcedStyle: ruby19_no_mixed_keys EnforcedStyle: ruby19_no_mixed_keys
Style/IfUnlessModifier: Style/NumericLiterals:
Enabled: false AllowedPatterns:
- \d{4}_\d{2}_\d{2}_\d{6} # For DB migration date version number readability
Style/InverseMethods:
Enabled: false
Style/Lambda:
Enabled: false
Style/MutableConstant:
Enabled: false
Style/PercentLiteralDelimiters: Style/PercentLiteralDelimiters:
PreferredDelimiters: PreferredDelimiters:
'%i': '()' '%i': '()'
'%w': '()' '%w': '()'
Style/PerlBackrefs:
AutoCorrect: false
Style/RedundantFetchBlock:
Enabled: true
Style/RedundantFileExtensionInRequire:
Enabled: true
Style/RedundantRegexpCharacterClass:
Enabled: false
Style/RedundantRegexpEscape:
Enabled: false
Style/RedundantReturn:
Enabled: true
Style/RedundantBegin:
Enabled: false
Style/RegexpLiteral:
Enabled: false
Style/RescueStandardError:
Enabled: true
Style/SignalException:
Enabled: false
Style/SlicingWithRange:
Enabled: true
Style/SymbolArray:
Enabled: false
Style/TrailingCommaInArrayLiteral: Style/TrailingCommaInArrayLiteral:
EnforcedStyleForMultiline: 'comma' EnforcedStyleForMultiline: 'comma'
Style/TrailingCommaInHashLiteral: Style/TrailingCommaInHashLiteral:
EnforcedStyleForMultiline: 'comma' EnforcedStyleForMultiline: 'comma'
Style/UnpackFirst:
Enabled: false
RSpec/ScatteredSetup:
Enabled: false
RSpec/ImplicitExpect:
Enabled: false
RSpec/NamedSubject:
Enabled: false
RSpec/DescribeClass:
Enabled: false
RSpec/LetSetup:
Enabled: false

File diff suppressed because it is too large Load Diff

@ -1 +1 @@
3.0.5 3.2.1

@ -2,7 +2,7 @@
# This needs to be bullseye-slim because the Ruby image is built on bullseye-slim # This needs to be bullseye-slim because the Ruby image is built on bullseye-slim
ARG NODE_VERSION="16.19-bullseye-slim" ARG NODE_VERSION="16.19-bullseye-slim"
FROM ghcr.io/moritzheiber/ruby-jemalloc:3.0.5-slim as ruby FROM ghcr.io/moritzheiber/ruby-jemalloc:3.2.1-slim as ruby
FROM node:${NODE_VERSION} as build FROM node:${NODE_VERSION} as build
COPY --link --from=ruby /opt/ruby /opt/ruby COPY --link --from=ruby /opt/ruby /opt/ruby

@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
source 'https://rubygems.org' source 'https://rubygems.org'
ruby '>= 2.7.0', '< 3.1.0' ruby '>= 2.7.0', '< 3.3.0'
gem 'pkg-config', '~> 1.5' gem 'pkg-config', '~> 1.5'
gem 'rexml', '~> 3.2' gem 'rexml', '~> 3.2'
@ -21,7 +21,7 @@ gem 'dotenv-rails', '~> 2.8'
gem 'aws-sdk-s3', '~> 1.119', require: false gem 'aws-sdk-s3', '~> 1.119', require: false
gem 'fog-core', '<= 2.4.0' gem 'fog-core', '<= 2.4.0'
gem 'fog-openstack', '~> 0.3', require: false gem 'fog-openstack', '~> 0.3', require: false
gem 'kt-paperclip', '~> 7.1' gem 'kt-paperclip', '~> 7.1', github: 'kreeti/kt-paperclip', ref: '11abf222dc31bff71160a1d138b445214f434b2b'
gem 'blurhash', '~> 0.1' gem 'blurhash', '~> 0.1'
gem 'active_model_serializers', '~> 0.10' gem 'active_model_serializers', '~> 0.10'
@ -62,7 +62,7 @@ gem 'link_header', '~> 0.0'
gem 'mime-types', '~> 3.4.1', require: 'mime/types/columnar' gem 'mime-types', '~> 3.4.1', require: 'mime/types/columnar'
gem 'nokogiri', '~> 1.14' gem 'nokogiri', '~> 1.14'
gem 'nsa', '~> 0.2' gem 'nsa', '~> 0.2'
gem 'oj', '~> 3.13' gem 'oj', '~> 3.14'
gem 'ox', '~> 2.14' gem 'ox', '~> 2.14'
gem 'parslet' gem 'parslet'
gem 'posix-spawn' gem 'posix-spawn'
@ -72,7 +72,7 @@ gem 'premailer-rails'
gem 'rack-attack', '~> 6.6' gem 'rack-attack', '~> 6.6'
gem 'rack-cors', '~> 1.1', require: 'rack/cors' gem 'rack-cors', '~> 1.1', require: 'rack/cors'
gem 'rails-i18n', '~> 6.0' gem 'rails-i18n', '~> 6.0'
gem 'rails-settings-cached', '~> 0.6' 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' gem 'redcarpet', '~> 3.6'
gem 'redis', '~> 4.5', require: ['redis', 'redis/connection/hiredis'] gem 'redis', '~> 4.5', require: ['redis', 'redis/connection/hiredis']
gem 'mario-redis-lock', '~> 1.2', require: 'redis_lock' gem 'mario-redis-lock', '~> 1.2', require: 'redis_lock'
@ -94,7 +94,7 @@ gem 'twitter-text', '~> 3.1.0'
gem 'tzinfo-data', '~> 1.2022' gem 'tzinfo-data', '~> 1.2022'
gem 'webpacker', '~> 5.4' gem 'webpacker', '~> 5.4'
gem 'webpush', github: 'ClearlyClaire/webpush', ref: 'f14a4d52e201128b1b00245d11b6de80d6cfdcd9' gem 'webpush', github: 'ClearlyClaire/webpush', ref: 'f14a4d52e201128b1b00245d11b6de80d6cfdcd9'
gem 'webauthn', '~> 2.5' gem 'webauthn', '~> 3.0'
gem 'json-ld' gem 'json-ld'
gem 'json-ld-preloaded', '~> 3.2' gem 'json-ld-preloaded', '~> 3.2'

@ -7,6 +7,26 @@ GIT
hkdf (~> 0.2) hkdf (~> 0.2)
jwt (~> 2.0) jwt (~> 2.0)
GIT
remote: https://github.com/kreeti/kt-paperclip.git
revision: 11abf222dc31bff71160a1d138b445214f434b2b
ref: 11abf222dc31bff71160a1d138b445214f434b2b
specs:
kt-paperclip (7.1.1)
activemodel (>= 4.2.0)
activesupport (>= 4.2.0)
marcel (~> 1.0.1)
mime-types
terrapin (~> 0.6.0)
GIT
remote: https://github.com/mastodon/rails-settings-cached.git
revision: 86328ef0bd04ce21cc0504ff5e334591e8c2ccab
branch: v0.6.6-aliases-true
specs:
rails-settings-cached (0.6.6)
rails (>= 4.2.0)
GEM GEM
remote: https://rubygems.org/ remote: https://rubygems.org/
specs: specs:
@ -90,7 +110,7 @@ GEM
attr_required (1.0.1) attr_required (1.0.1)
awrence (1.2.1) awrence (1.2.1)
aws-eventstream (1.2.0) aws-eventstream (1.2.0)
aws-partitions (1.701.0) aws-partitions (1.711.0)
aws-sdk-core (3.170.0) aws-sdk-core (3.170.0)
aws-eventstream (~> 1, >= 1.0.2) aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.651.0) aws-partitions (~> 1, >= 1.651.0)
@ -99,7 +119,7 @@ GEM
aws-sdk-kms (1.62.0) aws-sdk-kms (1.62.0)
aws-sdk-core (~> 3, >= 3.165.0) aws-sdk-core (~> 3, >= 3.165.0)
aws-sigv4 (~> 1.1) aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.119.0) aws-sdk-s3 (1.119.1)
aws-sdk-core (~> 3, >= 3.165.0) aws-sdk-core (~> 3, >= 3.165.0)
aws-sdk-kms (~> 1) aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.4) aws-sigv4 (~> 1.4)
@ -117,7 +137,7 @@ GEM
erubi (~> 1.4) erubi (~> 1.4)
parser (>= 2.4) parser (>= 2.4)
smart_properties smart_properties
bindata (2.4.14) bindata (2.4.15)
binding_of_caller (1.0.0) binding_of_caller (1.0.0)
debug_inspector (>= 0.0.1) debug_inspector (>= 0.0.1)
blurhash (0.1.7) blurhash (0.1.7)
@ -175,7 +195,7 @@ GEM
color_diff (0.1) color_diff (0.1)
concurrent-ruby (1.2.0) concurrent-ruby (1.2.0)
connection_pool (2.3.0) connection_pool (2.3.0)
cose (1.2.1) cose (1.3.0)
cbor (~> 0.5.9) cbor (~> 0.5.9)
openssl-signature_algorithm (~> 1.0) openssl-signature_algorithm (~> 1.0)
crack (0.4.5) crack (0.4.5)
@ -346,7 +366,7 @@ GEM
json-schema (3.0.0) json-schema (3.0.0)
addressable (>= 2.8) addressable (>= 2.8)
jsonapi-renderer (0.2.2) jsonapi-renderer (0.2.2)
jwt (2.5.0) jwt (2.7.0)
kaminari (1.2.2) kaminari (1.2.2)
activesupport (>= 4.1.0) activesupport (>= 4.1.0)
kaminari-actionview (= 1.2.2) kaminari-actionview (= 1.2.2)
@ -359,12 +379,6 @@ GEM
activerecord activerecord
kaminari-core (= 1.2.2) kaminari-core (= 1.2.2)
kaminari-core (1.2.2) kaminari-core (1.2.2)
kt-paperclip (7.1.1)
activemodel (>= 4.2.0)
activesupport (>= 4.2.0)
marcel (~> 1.0.1)
mime-types
terrapin (~> 0.6.0)
launchy (2.5.0) launchy (2.5.0)
addressable (~> 2.7) addressable (~> 2.7)
letter_opener (1.8.1) letter_opener (1.8.1)
@ -424,7 +438,7 @@ GEM
net-protocol net-protocol
net-ssh (7.0.1) net-ssh (7.0.1)
nio4r (2.5.8) nio4r (2.5.8)
nokogiri (1.14.1) nokogiri (1.14.2)
mini_portile2 (~> 2.8.0) mini_portile2 (~> 2.8.0)
racc (~> 1.4) racc (~> 1.4)
nsa (0.2.8) nsa (0.2.8)
@ -432,7 +446,7 @@ GEM
concurrent-ruby (~> 1.0, >= 1.0.2) concurrent-ruby (~> 1.0, >= 1.0.2)
sidekiq (>= 3.5) sidekiq (>= 3.5)
statsd-ruby (~> 1.4, >= 1.4.0) statsd-ruby (~> 1.4, >= 1.4.0)
oj (3.13.23) oj (3.14.2)
omniauth (1.9.2) omniauth (1.9.2)
hashie (>= 3.4.6) hashie (>= 3.4.6)
rack (>= 1.6.2, < 3) rack (>= 1.6.2, < 3)
@ -460,9 +474,9 @@ GEM
validate_email validate_email
validate_url validate_url
webfinger (~> 1.2) webfinger (~> 1.2)
openssl (3.0.0) openssl (3.1.0)
openssl-signature_algorithm (1.2.1) openssl-signature_algorithm (1.3.0)
openssl (> 2.0, < 3.1) openssl (> 2.0)
orm_adapter (0.5.0) orm_adapter (0.5.0)
ox (2.14.14) ox (2.14.14)
parallel (1.22.1) parallel (1.22.1)
@ -542,8 +556,6 @@ GEM
rails-i18n (6.0.0) rails-i18n (6.0.0)
i18n (>= 0.7, < 2) i18n (>= 0.7, < 2)
railties (>= 6.0.0, < 7) railties (>= 6.0.0, < 7)
rails-settings-cached (0.6.6)
rails (>= 4.2.0)
railties (6.1.7.2) railties (6.1.7.2)
actionpack (= 6.1.7.2) actionpack (= 6.1.7.2)
activesupport (= 6.1.7.2) activesupport (= 6.1.7.2)
@ -693,9 +705,9 @@ GEM
thor (1.2.1) thor (1.2.1)
tilt (2.0.11) tilt (2.0.11)
timeout (0.3.1) timeout (0.3.1)
tpm-key_attestation (0.11.0) tpm-key_attestation (0.12.0)
bindata (~> 2.4) bindata (~> 2.4)
openssl (> 2.0, < 3.1) openssl (> 2.0)
openssl-signature_algorithm (~> 1.0) openssl-signature_algorithm (~> 1.0)
tty-color (0.6.0) tty-color (0.6.0)
tty-cursor (0.7.1) tty-cursor (0.7.1)
@ -728,15 +740,15 @@ GEM
public_suffix public_suffix
warden (1.2.9) warden (1.2.9)
rack (>= 2.0.9) rack (>= 2.0.9)
webauthn (2.5.2) webauthn (3.0.0)
android_key_attestation (~> 0.3.0) android_key_attestation (~> 0.3.0)
awrence (~> 1.1) awrence (~> 1.1)
bindata (~> 2.4) bindata (~> 2.4)
cbor (~> 0.5.9) cbor (~> 0.5.9)
cose (~> 1.1) cose (~> 1.1)
openssl (>= 2.2, < 3.1) openssl (>= 2.2)
safety_net_attestation (~> 0.4.0) safety_net_attestation (~> 0.4.0)
tpm-key_attestation (~> 0.11.0) tpm-key_attestation (~> 0.12.0)
webfinger (1.2.0) webfinger (1.2.0)
activesupport activesupport
httpclient (>= 2.4) httpclient (>= 2.4)
@ -814,7 +826,7 @@ DEPENDENCIES
json-ld-preloaded (~> 3.2) json-ld-preloaded (~> 3.2)
json-schema (~> 3.0) json-schema (~> 3.0)
kaminari (~> 1.2) kaminari (~> 1.2)
kt-paperclip (~> 7.1) kt-paperclip (~> 7.1)!
letter_opener (~> 1.8) letter_opener (~> 1.8)
letter_opener_web (~> 2.0) letter_opener_web (~> 2.0)
link_header (~> 0.0) link_header (~> 0.0)
@ -827,7 +839,7 @@ DEPENDENCIES
net-ldap (~> 0.17) net-ldap (~> 0.17)
nokogiri (~> 1.14) nokogiri (~> 1.14)
nsa (~> 0.2) nsa (~> 0.2)
oj (~> 3.13) oj (~> 3.14)
omniauth (~> 1.9) omniauth (~> 1.9)
omniauth-cas (~> 2.0) omniauth-cas (~> 2.0)
omniauth-rails_csrf_protection (~> 0.1) omniauth-rails_csrf_protection (~> 0.1)
@ -853,7 +865,7 @@ DEPENDENCIES
rails (~> 6.1.7) rails (~> 6.1.7)
rails-controller-testing (~> 1.0) rails-controller-testing (~> 1.0)
rails-i18n (~> 6.0) rails-i18n (~> 6.0)
rails-settings-cached (~> 0.6) rails-settings-cached (~> 0.6)!
rdf-normalize (~> 0.5) rdf-normalize (~> 0.5)
redcarpet (~> 3.6) redcarpet (~> 3.6)
redis (~> 4.5) redis (~> 4.5)
@ -886,7 +898,7 @@ DEPENDENCIES
tty-prompt (~> 0.23) tty-prompt (~> 0.23)
twitter-text (~> 3.1.0) twitter-text (~> 3.1.0)
tzinfo-data (~> 1.2022) tzinfo-data (~> 1.2022)
webauthn (~> 2.5) webauthn (~> 3.0)
webmock (~> 3.18) webmock (~> 3.18)
webpacker (~> 5.4) webpacker (~> 5.4)
webpush! webpush!

@ -18,13 +18,11 @@ module Admin
private private
def redis_info def redis_info
@redis_info ||= begin @redis_info ||= if redis.is_a?(Redis::Namespace)
if redis.is_a?(Redis::Namespace) redis.redis.info
redis.redis.info else
else redis.info
redis.info end
end
end
end end
end end
end end

@ -90,9 +90,7 @@ module Admin
end end
def action_from_button def action_from_button
if params[:save] 'save' if params[:save]
'save'
end
end end
end end
end end

@ -45,15 +45,11 @@ class Api::V1::Accounts::FollowerAccountsController < Api::BaseController
end end
def next_path def next_path
if records_continue? api_v1_account_followers_url pagination_params(max_id: pagination_max_id) if records_continue?
api_v1_account_followers_url pagination_params(max_id: pagination_max_id)
end
end end
def prev_path def prev_path
unless @accounts.empty? api_v1_account_followers_url pagination_params(since_id: pagination_since_id) unless @accounts.empty?
api_v1_account_followers_url pagination_params(since_id: pagination_since_id)
end
end end
def pagination_max_id def pagination_max_id

@ -45,15 +45,11 @@ class Api::V1::Accounts::FollowingAccountsController < Api::BaseController
end end
def next_path def next_path
if records_continue? api_v1_account_following_index_url pagination_params(max_id: pagination_max_id) if records_continue?
api_v1_account_following_index_url pagination_params(max_id: pagination_max_id)
end
end end
def prev_path def prev_path
unless @accounts.empty? api_v1_account_following_index_url pagination_params(since_id: pagination_since_id) unless @accounts.empty?
api_v1_account_following_index_url pagination_params(since_id: pagination_since_id)
end
end end
def pagination_max_id def pagination_max_id

@ -39,15 +39,11 @@ class Api::V1::Accounts::StatusesController < Api::BaseController
end end
def next_path def next_path
if records_continue? api_v1_account_statuses_url pagination_params(max_id: pagination_max_id) if records_continue?
api_v1_account_statuses_url pagination_params(max_id: pagination_max_id)
end
end end
def prev_path def prev_path
unless @statuses.empty? api_v1_account_statuses_url pagination_params(min_id: pagination_since_id) unless @statuses.empty?
api_v1_account_statuses_url pagination_params(min_id: pagination_since_id)
end
end end
def records_continue? def records_continue?

@ -120,9 +120,7 @@ class Api::V1::Admin::AccountsController < Api::BaseController
translated_params[:status] = status.to_s if params[status].present? translated_params[:status] = status.to_s if params[status].present?
end end
if params[:staff].present? translated_params[:role_ids] = UserRole.that_can(:manage_reports).map(&:id) if params[:staff].present?
translated_params[:role_ids] = UserRole.that_can(:manage_reports).map(&:id)
end
translated_params translated_params
end end

@ -18,9 +18,7 @@ class Api::V1::AnnouncementsController < Api::BaseController
private private
def set_announcements def set_announcements
@announcements = begin @announcements = Announcement.published.chronological
Announcement.published.chronological
end
end end
def set_announcement def set_announcement

@ -33,15 +33,11 @@ class Api::V1::BlocksController < Api::BaseController
end end
def next_path def next_path
if records_continue? api_v1_blocks_url pagination_params(max_id: pagination_max_id) if records_continue?
api_v1_blocks_url pagination_params(max_id: pagination_max_id)
end
end end
def prev_path def prev_path
unless paginated_blocks.empty? api_v1_blocks_url pagination_params(since_id: pagination_since_id) unless paginated_blocks.empty?
api_v1_blocks_url pagination_params(since_id: pagination_since_id)
end
end end
def pagination_max_id def pagination_max_id

@ -40,15 +40,11 @@ class Api::V1::ConversationsController < Api::BaseController
end end
def next_path def next_path
if records_continue? api_v1_conversations_url pagination_params(max_id: pagination_max_id) if records_continue?
api_v1_conversations_url pagination_params(max_id: pagination_max_id)
end
end end
def prev_path def prev_path
unless @conversations.empty? api_v1_conversations_url pagination_params(min_id: pagination_since_id) unless @conversations.empty?
api_v1_conversations_url pagination_params(min_id: pagination_since_id)
end
end end
def pagination_max_id def pagination_max_id

@ -43,15 +43,11 @@ class Api::V1::DomainBlocksController < Api::BaseController
end end
def next_path def next_path
if records_continue? api_v1_domain_blocks_url pagination_params(max_id: pagination_max_id) if records_continue?
api_v1_domain_blocks_url pagination_params(max_id: pagination_max_id)
end
end end
def prev_path def prev_path
unless @blocks.empty? api_v1_domain_blocks_url pagination_params(since_id: pagination_since_id) unless @blocks.empty?
api_v1_domain_blocks_url pagination_params(since_id: pagination_since_id)
end
end end
def pagination_max_id def pagination_max_id

@ -35,17 +35,13 @@ class Api::V1::EndorsementsController < Api::BaseController
def next_path def next_path
return if unlimited? return if unlimited?
if records_continue? api_v1_endorsements_url pagination_params(max_id: pagination_max_id) if records_continue?
api_v1_endorsements_url pagination_params(max_id: pagination_max_id)
end
end end
def prev_path def prev_path
return if unlimited? return if unlimited?
unless @accounts.empty? api_v1_endorsements_url pagination_params(since_id: pagination_since_id) unless @accounts.empty?
api_v1_endorsements_url pagination_params(since_id: pagination_since_id)
end
end end
def pagination_max_id def pagination_max_id

@ -36,15 +36,11 @@ class Api::V1::FavouritesController < Api::BaseController
end end
def next_path def next_path
if records_continue? api_v1_favourites_url pagination_params(max_id: pagination_max_id) if records_continue?
api_v1_favourites_url pagination_params(max_id: pagination_max_id)
end
end end
def prev_path def prev_path
unless results.empty? api_v1_favourites_url pagination_params(min_id: pagination_since_id) unless results.empty?
api_v1_favourites_url pagination_params(min_id: pagination_since_id)
end
end end
def pagination_max_id def pagination_max_id

@ -53,15 +53,11 @@ class Api::V1::FollowRequestsController < Api::BaseController
end end
def next_path def next_path
if records_continue? api_v1_follow_requests_url pagination_params(max_id: pagination_max_id) if records_continue?
api_v1_follow_requests_url pagination_params(max_id: pagination_max_id)
end
end end
def prev_path def prev_path
unless @accounts.empty? api_v1_follow_requests_url pagination_params(since_id: pagination_since_id) unless @accounts.empty?
api_v1_follow_requests_url pagination_params(since_id: pagination_since_id)
end
end end
def pagination_max_id def pagination_max_id

@ -62,17 +62,13 @@ class Api::V1::Lists::AccountsController < Api::BaseController
def next_path def next_path
return if unlimited? return if unlimited?
if records_continue? api_v1_list_accounts_url pagination_params(max_id: pagination_max_id) if records_continue?
api_v1_list_accounts_url pagination_params(max_id: pagination_max_id)
end
end end
def prev_path def prev_path
return if unlimited? return if unlimited?
unless @accounts.empty? api_v1_list_accounts_url pagination_params(since_id: pagination_since_id) unless @accounts.empty?
api_v1_list_accounts_url pagination_params(since_id: pagination_since_id)
end
end end
def pagination_max_id def pagination_max_id

@ -33,15 +33,11 @@ class Api::V1::MutesController < Api::BaseController
end end
def next_path def next_path
if records_continue? api_v1_mutes_url pagination_params(max_id: pagination_max_id) if records_continue?
api_v1_mutes_url pagination_params(max_id: pagination_max_id)
end
end end
def prev_path def prev_path
unless paginated_mutes.empty? api_v1_mutes_url pagination_params(since_id: pagination_since_id) unless paginated_mutes.empty?
api_v1_mutes_url pagination_params(since_id: pagination_since_id)
end
end end
def pagination_max_id def pagination_max_id

@ -67,15 +67,11 @@ class Api::V1::NotificationsController < Api::BaseController
end end
def next_path def next_path
unless @notifications.empty? api_v1_notifications_url pagination_params(max_id: pagination_max_id) unless @notifications.empty?
api_v1_notifications_url pagination_params(max_id: pagination_max_id)
end
end end
def prev_path def prev_path
unless @notifications.empty? api_v1_notifications_url pagination_params(min_id: pagination_since_id) unless @notifications.empty?
api_v1_notifications_url pagination_params(min_id: pagination_since_id)
end
end end
def pagination_max_id def pagination_max_id

@ -52,15 +52,11 @@ class Api::V1::ScheduledStatusesController < Api::BaseController
end end
def next_path def next_path
if records_continue? api_v1_scheduled_statuses_url pagination_params(max_id: pagination_max_id) if records_continue?
api_v1_scheduled_statuses_url pagination_params(max_id: pagination_max_id)
end
end end
def prev_path def prev_path
unless @statuses.empty? api_v1_scheduled_statuses_url pagination_params(min_id: pagination_since_id) unless @statuses.empty?
api_v1_scheduled_statuses_url pagination_params(min_id: pagination_since_id)
end
end end
def records_continue? def records_continue?

@ -41,15 +41,11 @@ class Api::V1::Statuses::FavouritedByAccountsController < Api::BaseController
end end
def next_path def next_path
if records_continue? api_v1_status_favourited_by_index_url pagination_params(max_id: pagination_max_id) if records_continue?
api_v1_status_favourited_by_index_url pagination_params(max_id: pagination_max_id)
end
end end
def prev_path def prev_path
unless @accounts.empty? api_v1_status_favourited_by_index_url pagination_params(since_id: pagination_since_id) unless @accounts.empty?
api_v1_status_favourited_by_index_url pagination_params(since_id: pagination_since_id)
end
end end
def pagination_max_id def pagination_max_id

@ -37,15 +37,11 @@ class Api::V1::Statuses::RebloggedByAccountsController < Api::BaseController
end end
def next_path def next_path
if records_continue? api_v1_status_reblogged_by_index_url pagination_params(max_id: pagination_max_id) if records_continue?
api_v1_status_reblogged_by_index_url pagination_params(max_id: pagination_max_id)
end
end end
def prev_path def prev_path
unless @accounts.empty? api_v1_status_reblogged_by_index_url pagination_params(since_id: pagination_since_id) unless @accounts.empty?
api_v1_status_reblogged_by_index_url pagination_params(since_id: pagination_since_id)
end
end end
def pagination_max_id def pagination_max_id

@ -18,13 +18,11 @@ class Api::V1::Trends::LinksController < Api::BaseController
end end
def set_links def set_links
@links = begin @links = if enabled?
if enabled? links_from_trends.offset(offset_param).limit(limit_param(DEFAULT_LINKS_LIMIT))
links_from_trends.offset(offset_param).limit(limit_param(DEFAULT_LINKS_LIMIT)) else
else []
[] end
end
end
end end
def links_from_trends def links_from_trends

@ -16,13 +16,11 @@ class Api::V1::Trends::StatusesController < Api::BaseController
end end
def set_statuses def set_statuses
@statuses = begin @statuses = if enabled?
if enabled? cache_collection(statuses_from_trends.offset(offset_param).limit(limit_param(DEFAULT_STATUSES_LIMIT)), Status)
cache_collection(statuses_from_trends.offset(offset_param).limit(limit_param(DEFAULT_STATUSES_LIMIT)), Status) else
else []
[] end
end
end
end end
def statuses_from_trends def statuses_from_trends

@ -18,13 +18,11 @@ class Api::V1::Trends::TagsController < Api::BaseController
end end
def set_tags def set_tags
@tags = begin @tags = if enabled?
if enabled? tags_from_trends.offset(offset_param).limit(limit_param(DEFAULT_TAGS_LIMIT))
tags_from_trends.offset(offset_param).limit(limit_param(DEFAULT_TAGS_LIMIT)) else
else []
[] end
end
end
end end
def tags_from_trends def tags_from_trends

@ -25,9 +25,7 @@ class Api::V2::Admin::AccountsController < Api::V1::Admin::AccountsController
def translated_filter_params def translated_filter_params
translated_params = filter_params.slice(*AccountFilter::KEYS) translated_params = filter_params.slice(*AccountFilter::KEYS)
if params[:permissions] == 'staff' translated_params[:role_ids] = UserRole.that_can(:manage_reports).map(&:id) if params[:permissions] == 'staff'
translated_params[:role_ids] = UserRole.that_can(:manage_reports).map(&:id)
end
translated_params translated_params
end end

@ -31,9 +31,7 @@ class Auth::RegistrationsController < Devise::RegistrationsController
def update def update
super do |resource| super do |resource|
if resource.saved_change_to_encrypted_password? resource.clear_other_sessions(current_session.session_id) if resource.saved_change_to_encrypted_password?
resource.clear_other_sessions(current_session.session_id)
end
end end
end end

@ -115,9 +115,7 @@ class Auth::SessionsController < Devise::SessionsController
def home_paths(resource) def home_paths(resource)
paths = [about_path] paths = [about_path]
if single_user_mode? && resource.is_a?(User) paths << short_account_path(username: resource.account) if single_user_mode? && resource.is_a?(User)
paths << short_account_path(username: resource.account)
end
paths paths
end end

@ -6,13 +6,11 @@ module RateLimitHeaders
class_methods do class_methods do
def override_rate_limit_headers(method_name, options = {}) def override_rate_limit_headers(method_name, options = {})
around_action(only: method_name, if: :current_account) do |_controller, block| around_action(only: method_name, if: :current_account) do |_controller, block|
begin block.call
block.call ensure
ensure rate_limiter = RateLimiter.new(current_account, options)
rate_limiter = RateLimiter.new(current_account, options) rate_limit_headers = rate_limiter.to_headers
rate_limit_headers = rate_limiter.to_headers response.headers.merge!(rate_limit_headers) unless response.headers['X-RateLimit-Remaining'].present? && rate_limit_headers['X-RateLimit-Remaining'].to_i > response.headers['X-RateLimit-Remaining'].to_i
response.headers.merge!(rate_limit_headers) unless response.headers['X-RateLimit-Remaining'].present? && rate_limit_headers['X-RateLimit-Remaining'].to_i > response.headers['X-RateLimit-Remaining'].to_i
end
end end
end end
end end
@ -67,6 +65,6 @@ module RateLimitHeaders
end end
def reset_period_offset def reset_period_offset
api_throttle_data[:period] - request_time.to_i % api_throttle_data[:period] api_throttle_data[:period] - (request_time.to_i % api_throttle_data[:period])
end end
end end

@ -81,13 +81,11 @@ module TwoFactorAuthenticationConcern
@body_classes = 'lighter' @body_classes = 'lighter'
@webauthn_enabled = user.webauthn_enabled? @webauthn_enabled = user.webauthn_enabled?
@scheme_type = begin @scheme_type = if user.webauthn_enabled? && user_params[:otp_attempt].blank?
if user.webauthn_enabled? && user_params[:otp_attempt].blank? 'webauthn'
'webauthn' else
else 'totp'
'totp' end
end
end
set_locale { render :two_factor } set_locale { render :two_factor }
end end

@ -43,9 +43,7 @@ class Filters::StatusesController < ApplicationController
end end
def action_from_button def action_from_button
if params[:remove] 'remove' if params[:remove]
'remove'
end
end end
def set_body_classes def set_body_classes

@ -58,7 +58,7 @@ class TagsController < ApplicationController
def collection_presenter def collection_presenter
ActivityPub::CollectionPresenter.new( ActivityPub::CollectionPresenter.new(
id: tag_url(@tag), id: tag_url(@tag),
type: :ordered, type: :ordered
) )
end end
end end

@ -19,19 +19,17 @@ module Admin::DashboardHelper
end end
def relevant_account_timestamp(account) def relevant_account_timestamp(account)
timestamp, exact = begin timestamp, exact = if account.user_current_sign_in_at && account.user_current_sign_in_at < 24.hours.ago
if account.user_current_sign_in_at && account.user_current_sign_in_at < 24.hours.ago [account.user_current_sign_in_at, true]
[account.user_current_sign_in_at, true] elsif account.user_current_sign_in_at
elsif account.user_current_sign_in_at [account.user_current_sign_in_at, false]
[account.user_current_sign_in_at, false] elsif account.user_pending?
elsif account.user_pending? [account.user_created_at, true]
[account.user_created_at, true] elsif account.last_status_at.present?
elsif account.last_status_at.present? [account.last_status_at, true]
[account.last_status_at, true] else
else [nil, false]
[nil, false] end
end
end
return '-' if timestamp.nil? return '-' if timestamp.nil?
return t('generic.today') unless exact return t('generic.today') unless exact

@ -2,13 +2,11 @@
module Admin::Trends::StatusesHelper module Admin::Trends::StatusesHelper
def one_line_preview(status) def one_line_preview(status)
text = begin text = if status.local?
if status.local? status.text.split("\n").first
status.text.split("\n").first else
else Nokogiri::HTML(status.text).css('html > body > *').first&.text
Nokogiri::HTML(status.text).css('html > body > *').first&.text end
end
end
return '' if text.blank? return '' if text.blank?

@ -217,9 +217,7 @@ module ApplicationHelper
state_params[:moved_to_account] = current_account.moved_to_account state_params[:moved_to_account] = current_account.moved_to_account
end end
if single_user_mode? state_params[:owner] = Account.local.without_suspended.where('id > 0').first if single_user_mode?
state_params[:owner] = Account.local.without_suspended.where('id > 0').first
end
json = ActiveModelSerializers::SerializableResource.new(InitialStatePresenter.new(state_params), serializer: InitialStateSerializer).to_json json = ActiveModelSerializers::SerializableResource.new(InitialStatePresenter.new(state_params), serializer: InitialStateSerializer).to_json
# rubocop:disable Rails/OutputSafety # rubocop:disable Rails/OutputSafety

@ -23,14 +23,12 @@ module BrandingHelper
end end
def render_symbol(version = :icon) def render_symbol(version = :icon)
path = begin path = case version
case version when :icon
when :icon 'logo-symbol-icon.svg'
'logo-symbol-icon.svg' when :wordmark
when :wordmark 'logo-symbol-wordmark.svg'
'logo-symbol-wordmark.svg' end
end
end
render(file: Rails.root.join('app', 'javascript', 'images', path)).html_safe # rubocop:disable Rails/OutputSafety render(file: Rails.root.join('app', 'javascript', 'images', path)).html_safe # rubocop:disable Rails/OutputSafety
end end

@ -4,13 +4,11 @@ module DomainControlHelper
def domain_not_allowed?(uri_or_domain) def domain_not_allowed?(uri_or_domain)
return if uri_or_domain.blank? return if uri_or_domain.blank?
domain = begin domain = if uri_or_domain.include?('://')
if uri_or_domain.include?('://') Addressable::URI.parse(uri_or_domain).host
Addressable::URI.parse(uri_or_domain).host else
else uri_or_domain
uri_or_domain end
end
end
if whitelist_mode? if whitelist_mode?
!DomainAllow.allowed?(domain) !DomainAllow.allowed?(domain)

@ -21,30 +21,26 @@ module FormattingHelper
def rss_status_content_format(status) def rss_status_content_format(status)
html = status_content_format(status) html = status_content_format(status)
before_html = begin before_html = if status.spoiler_text?
if status.spoiler_text? tag.p do
tag.p do tag.strong do
tag.strong do I18n.t('rss.content_warning', locale: available_locale_or_nil(status.language) || I18n.default_locale)
I18n.t('rss.content_warning', locale: available_locale_or_nil(status.language) || I18n.default_locale) end
end
status.spoiler_text
status.spoiler_text end + tag.hr
end + tag.hr end
end
end after_html = if status.preloadable_poll
tag.p do
after_html = begin safe_join(
if status.preloadable_poll status.preloadable_poll.options.map do |o|
tag.p do tag.send(status.preloadable_poll.multiple? ? 'checkbox' : 'radio', o, disabled: true)
safe_join( end,
status.preloadable_poll.options.map do |o| tag.br
tag.send(status.preloadable_poll.multiple? ? 'checkbox' : 'radio', o, disabled: true) )
end, end
tag.br end
)
end
end
end
prerender_custom_emojis( prerender_custom_emojis(
safe_join([before_html, html, after_html]), safe_join([before_html, html, after_html]),

@ -10,13 +10,11 @@ module InstanceHelper
end end
def description_for_sign_up def description_for_sign_up
prefix = begin prefix = if @invite.present?
if @invite.present? I18n.t('auth.description.prefix_invited_by_user', name: @invite.user.account.username)
I18n.t('auth.description.prefix_invited_by_user', name: @invite.user.account.username) else
else I18n.t('auth.description.prefix_sign_up')
I18n.t('auth.description.prefix_sign_up') end
end
end
safe_join([prefix, I18n.t('auth.description.suffix')], ' ') safe_join([prefix, I18n.t('auth.description.suffix')], ' ')
end end

@ -26,15 +26,13 @@ module JsonLdHelper
# The url attribute can be a string, an array of strings, or an array of objects. # The url attribute can be a string, an array of strings, or an array of objects.
# The objects could include a mimeType. Not-included mimeType means it's text/html. # The objects could include a mimeType. Not-included mimeType means it's text/html.
def url_to_href(value, preferred_type = nil) def url_to_href(value, preferred_type = nil)
single_value = begin single_value = if value.is_a?(Array) && !value.first.is_a?(String)
if value.is_a?(Array) && !value.first.is_a?(String) value.find { |link| preferred_type.nil? || ((link['mimeType'].presence || 'text/html') == preferred_type) }
value.find { |link| preferred_type.nil? || ((link['mimeType'].presence || 'text/html') == preferred_type) } elsif value.is_a?(Array)
elsif value.is_a?(Array) value.first
value.first else
else value
value end
end
end
if single_value.nil? || single_value.is_a?(String) if single_value.nil? || single_value.is_a?(String)
single_value single_value

@ -186,11 +186,19 @@ export function submitCompose(routerHistory) {
// API call. // API call.
let media_attributes; let media_attributes;
if (statusId !== null) { if (statusId !== null) {
media_attributes = media.map(item => ({ media_attributes = media.map(item => {
id: item.get('id'), let focus;
description: item.get('description'),
focus: item.get('focus'), if (item.getIn(['meta', 'focus'])) {
})); focus = `${item.getIn(['meta', 'focus', 'x']).toFixed(2)},${item.getIn(['meta', 'focus', 'y']).toFixed(2)}`;
}
return {
id: item.get('id'),
description: item.get('description'),
focus,
};
});
} }
api(getState).request({ api(getState).request({

@ -51,7 +51,7 @@ export default class AutosuggestInput extends ImmutablePureComponent {
searchTokens: PropTypes.arrayOf(PropTypes.string), searchTokens: PropTypes.arrayOf(PropTypes.string),
maxLength: PropTypes.number, maxLength: PropTypes.number,
lang: PropTypes.string, lang: PropTypes.string,
spellCheck: PropTypes.string, spellCheck: PropTypes.bool,
}; };
static defaultProps = { static defaultProps = {

@ -3,7 +3,7 @@
const checkNotificationPromise = () => { const checkNotificationPromise = () => {
try { try {
// eslint-disable-next-line promise/catch-or-return // eslint-disable-next-line promise/catch-or-return, promise/valid-params
Notification.requestPermission().then(); Notification.requestPermission().then();
} catch(e) { } catch(e) {
return false; return false;

@ -165,11 +165,19 @@ export function submitCompose(routerHistory) {
// API call. // API call.
let media_attributes; let media_attributes;
if (statusId !== null) { if (statusId !== null) {
media_attributes = media.map(item => ({ media_attributes = media.map(item => {
id: item.get('id'), let focus;
description: item.get('description'),
focus: item.get('focus'), if (item.getIn(['meta', 'focus'])) {
})); focus = `${item.getIn(['meta', 'focus', 'x']).toFixed(2)},${item.getIn(['meta', 'focus', 'y']).toFixed(2)}`;
}
return {
id: item.get('id'),
description: item.get('description'),
focus,
};
});
} }
api(getState).request({ api(getState).request({

@ -51,7 +51,7 @@ export default class AutosuggestInput extends ImmutablePureComponent {
searchTokens: PropTypes.arrayOf(PropTypes.string), searchTokens: PropTypes.arrayOf(PropTypes.string),
maxLength: PropTypes.number, maxLength: PropTypes.number,
lang: PropTypes.string, lang: PropTypes.string,
spellCheck: PropTypes.string, spellCheck: PropTypes.bool,
}; };
static defaultProps = { static defaultProps = {

@ -97,7 +97,7 @@
"closed_registrations_modal.description": "لا يمكن إنشاء حساب على {domain} حاليا، ولكن على فكرة لست بحاجة إلى حساب على {domain} بذاته لاستخدام ماستدون.", "closed_registrations_modal.description": "لا يمكن إنشاء حساب على {domain} حاليا، ولكن على فكرة لست بحاجة إلى حساب على {domain} بذاته لاستخدام ماستدون.",
"closed_registrations_modal.find_another_server": "ابحث على خادم آخر", "closed_registrations_modal.find_another_server": "ابحث على خادم آخر",
"closed_registrations_modal.preamble": "ماستدون لامركزي، لذلك بغض النظر عن مكان إنشاء حسابك، سيكون بإمكانك المتابعة والتفاعل مع أي شخص على هذا الخادم. يمكنك حتى أن تستضيفه ذاتياً!", "closed_registrations_modal.preamble": "ماستدون لامركزي، لذلك بغض النظر عن مكان إنشاء حسابك، سيكون بإمكانك المتابعة والتفاعل مع أي شخص على هذا الخادم. يمكنك حتى أن تستضيفه ذاتياً!",
"closed_registrations_modal.title": "تسجيل حساب في ماستدون", "closed_registrations_modal.title": "إنشاء حساب على ماستدون",
"column.about": "عن", "column.about": "عن",
"column.blocks": "المُستَخدِمون المَحظورون", "column.blocks": "المُستَخدِمون المَحظورون",
"column.bookmarks": "الفواصل المرجعية", "column.bookmarks": "الفواصل المرجعية",
@ -232,7 +232,7 @@
"empty_column.public": "لا يوجد أي شيء هنا! قم بنشر شيء ما للعامة، أو اتبع المستخدمين الآخرين المتواجدين على الخوادم الأخرى لملء خيط المحادثات", "empty_column.public": "لا يوجد أي شيء هنا! قم بنشر شيء ما للعامة، أو اتبع المستخدمين الآخرين المتواجدين على الخوادم الأخرى لملء خيط المحادثات",
"error.unexpected_crash.explanation": "نظرا لوجود خطأ في التعليمات البرمجية أو مشكلة توافق مع المتصفّح، تعذر عرض هذه الصفحة بشكل صحيح.", "error.unexpected_crash.explanation": "نظرا لوجود خطأ في التعليمات البرمجية أو مشكلة توافق مع المتصفّح، تعذر عرض هذه الصفحة بشكل صحيح.",
"error.unexpected_crash.explanation_addons": "لا يمكن عرض هذه الصفحة بشكل صحيح. من المحتمل أن يكون هذا الخطأ بسبب إضافة متصفح أو أدوات ترجمة تلقائية.", "error.unexpected_crash.explanation_addons": "لا يمكن عرض هذه الصفحة بشكل صحيح. من المحتمل أن يكون هذا الخطأ بسبب إضافة متصفح أو أدوات ترجمة تلقائية.",
"error.unexpected_crash.next_steps": "حاول إعادة إنعاش الصفحة. إن لم تُحلّ المشكلة ، يمكنك دائمًا استخدام ماستدون عبر متصفّح آخر أو تطبيق أصلي.", "error.unexpected_crash.next_steps": "حاول إعادة إنعاش الصفحة. إن لم تُحلّ المشكلة، يمكنك دائمًا استخدام ماستدون عبر متصفّح آخر أو تطبيق أصلي.",
"error.unexpected_crash.next_steps_addons": "حاول تعطيلهم وإنعاش الصفحة. إن لم ينجح ذلك، يمكنك دائمًا استخدام ماستدون عبر متصفح آخر أو تطبيق أصلي.", "error.unexpected_crash.next_steps_addons": "حاول تعطيلهم وإنعاش الصفحة. إن لم ينجح ذلك، يمكنك دائمًا استخدام ماستدون عبر متصفح آخر أو تطبيق أصلي.",
"errors.unexpected_crash.copy_stacktrace": "انسخ تتبع الارتباطات إلى الحافظة", "errors.unexpected_crash.copy_stacktrace": "انسخ تتبع الارتباطات إلى الحافظة",
"errors.unexpected_crash.report_issue": "الإبلاغ عن خلل", "errors.unexpected_crash.report_issue": "الإبلاغ عن خلل",
@ -272,7 +272,7 @@
"footer.keyboard_shortcuts": "اختصارات لوحة المفاتيح", "footer.keyboard_shortcuts": "اختصارات لوحة المفاتيح",
"footer.privacy_policy": "سياسة الخصوصية", "footer.privacy_policy": "سياسة الخصوصية",
"footer.source_code": "الاطلاع على الشفرة المصدرية", "footer.source_code": "الاطلاع على الشفرة المصدرية",
"footer.status": "Status", "footer.status": "الحالة",
"generic.saved": "تم الحفظ", "generic.saved": "تم الحفظ",
"getting_started.heading": "استعدّ للبدء", "getting_started.heading": "استعدّ للبدء",
"hashtag.column_header.tag_mode.all": "و {additional}", "hashtag.column_header.tag_mode.all": "و {additional}",
@ -291,10 +291,10 @@
"home.column_settings.show_replies": "اعرض الردود", "home.column_settings.show_replies": "اعرض الردود",
"home.hide_announcements": "إخفاء الإعلانات", "home.hide_announcements": "إخفاء الإعلانات",
"home.show_announcements": "إظهار الإعلانات", "home.show_announcements": "إظهار الإعلانات",
"interaction_modal.description.favourite": "مع حساب في ماستدون، يمكنك تفضيل هذا المقال لإبلاغ الناشر بتقديرك وحفظه لاحقا.", "interaction_modal.description.favourite": "مع حساب في ماستدون، يمكنك إضافة هذا المنشور إلى مفضلتك لإبلاغ الناشر عن تقديرك وكذا للاحتفاظ به لوقت لاحق.",
"interaction_modal.description.follow": "مع حساب في ماستدون، يمكنك متابعة {name} لتلقي مشاركاتهم في الصفحه الرئيسيه.", "interaction_modal.description.follow": "مع حساب في ماستدون، يمكنك متابعة {name} وتلقي منشوراته على خيطك الرئيس.",
"interaction_modal.description.reblog": "مع حساب في ماستدون، يمكنك تعزيز هذا المنشور لمشاركته مع متابعينك.", "interaction_modal.description.reblog": "مع حساب في ماستدون، يمكنك تعزيز هذا المنشور ومشاركته مع مُتابِعيك.",
"interaction_modal.description.reply": "مع حساب في ماستدون، يمكنك الرد على هذه المشاركة.", "interaction_modal.description.reply": "مع حساب في ماستدون، يمكنك الرد على هذا المنشور.",
"interaction_modal.on_another_server": "على خادم مختلف", "interaction_modal.on_another_server": "على خادم مختلف",
"interaction_modal.on_this_server": "على هذا الخادم", "interaction_modal.on_this_server": "على هذا الخادم",
"interaction_modal.other_server_instructions": "انسخ و الصق هذا الرابط في حقل البحث الخاص بك لتطبيق ماستدون المفضل لديك أو واجهة الويب لخادم ماستدون الخاص بك.", "interaction_modal.other_server_instructions": "انسخ و الصق هذا الرابط في حقل البحث الخاص بك لتطبيق ماستدون المفضل لديك أو واجهة الويب لخادم ماستدون الخاص بك.",
@ -509,7 +509,7 @@
"report.statuses.title": "هل توجد مشاركات تدعم صحة هذا البلاغ؟", "report.statuses.title": "هل توجد مشاركات تدعم صحة هذا البلاغ؟",
"report.submit": "إرسال", "report.submit": "إرسال",
"report.target": "ابلغ عن {target}", "report.target": "ابلغ عن {target}",
"report.thanks.take_action": "يمكنك هنا التحكم في ما يعرض لك على ماستدون:", "report.thanks.take_action": "فيما يلي خياراتك للتحكم بما يُعرَض عليك في ماستدون:",
"report.thanks.take_action_actionable": "في أثناء مراجعتنا للبلاغ، يمكنك اتخاذ إجراء ضد @{name}:", "report.thanks.take_action_actionable": "في أثناء مراجعتنا للبلاغ، يمكنك اتخاذ إجراء ضد @{name}:",
"report.thanks.title": "هل ترغب في مشاهدة هذا؟", "report.thanks.title": "هل ترغب في مشاهدة هذا؟",
"report.thanks.title_actionable": "شُكرًا لَكَ على الإبلاغ، سَوفَ نَنظُرُ فِي هَذَا الأمر.", "report.thanks.title_actionable": "شُكرًا لَكَ على الإبلاغ، سَوفَ نَنظُرُ فِي هَذَا الأمر.",

@ -10,7 +10,7 @@
"about.domain_blocks.suspended.title": "Suspendióse", "about.domain_blocks.suspended.title": "Suspendióse",
"about.not_available": "Esta información nun ta disponible nesti sirvidor.", "about.not_available": "Esta información nun ta disponible nesti sirvidor.",
"about.powered_by": "Una rede social descentralizada que tien la teunoloxía de {mastodon}", "about.powered_by": "Una rede social descentralizada que tien la teunoloxía de {mastodon}",
"about.rules": "Regles del sirvidor", "about.rules": "Normes del sirvidor",
"account.account_note_header": "Nota", "account.account_note_header": "Nota",
"account.add_or_remove_from_list": "Amestar o quitar de les llistes", "account.add_or_remove_from_list": "Amestar o quitar de les llistes",
"account.badges.bot": "Robó", "account.badges.bot": "Robó",
@ -46,7 +46,7 @@
"account.media": "Multimedia", "account.media": "Multimedia",
"account.mention": "Mentar a @{name}", "account.mention": "Mentar a @{name}",
"account.moved_to": "{name} indicó qu'agora la so cuenta nueva ye:", "account.moved_to": "{name} indicó qu'agora la so cuenta nueva ye:",
"account.mute": "Mute @{name}", "account.mute": "Desactivar los avisos de @{name}",
"account.mute_notifications": "Desactivar los avisos de @{name}", "account.mute_notifications": "Desactivar los avisos de @{name}",
"account.muted": "Muted", "account.muted": "Muted",
"account.open_original_page": "Abrir la páxina orixinal", "account.open_original_page": "Abrir la páxina orixinal",
@ -100,16 +100,16 @@
"closed_registrations_modal.title": "Rexistru en Mastodon", "closed_registrations_modal.title": "Rexistru en Mastodon",
"column.about": "Tocante a", "column.about": "Tocante a",
"column.blocks": "Perfiles bloquiaos", "column.blocks": "Perfiles bloquiaos",
"column.bookmarks": "Bookmarks", "column.bookmarks": "Marcadores",
"column.community": "Llinia de tiempu llocal", "column.community": "Llinia de tiempu llocal",
"column.direct": "Mensaxes direutos", "column.direct": "Mensaxes direutos",
"column.directory": "Browse profiles", "column.directory": "Browse profiles",
"column.domain_blocks": "Dominios bloquiaos", "column.domain_blocks": "Dominios bloquiaos",
"column.favourites": "Favourites", "column.favourites": "Favoritos",
"column.follow_requests": "Solicitúes de siguimientu", "column.follow_requests": "Solicitúes de siguimientu",
"column.home": "Home", "column.home": "Aniciu",
"column.lists": "Llistes", "column.lists": "Llistes",
"column.mutes": "Muted users", "column.mutes": "Perfiles colos avisos desactivaos",
"column.notifications": "Avisos", "column.notifications": "Avisos",
"column.pins": "Artículos fixaos", "column.pins": "Artículos fixaos",
"column.public": "Llinia de tiempu federada", "column.public": "Llinia de tiempu federada",
@ -138,10 +138,10 @@
"compose_form.poll.remove_option": "Quitar esta opción", "compose_form.poll.remove_option": "Quitar esta opción",
"compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
"compose_form.poll.switch_to_single": "Change poll to allow for a single choice", "compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
"compose_form.publish": "Publish", "compose_form.publish": "Espublizar",
"compose_form.publish_form": "Publish", "compose_form.publish_form": "Espublizar",
"compose_form.publish_loud": "¡{publish}!", "compose_form.publish_loud": "¡{publish}!",
"compose_form.save_changes": "Save changes", "compose_form.save_changes": "Guardar los cambeos",
"compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}",
"compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}", "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}",
"compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}",
@ -175,7 +175,7 @@
"confirmations.unfollow.message": "¿De xuru que quies dexar de siguir a {name}?", "confirmations.unfollow.message": "¿De xuru que quies dexar de siguir a {name}?",
"conversation.delete": "Delete conversation", "conversation.delete": "Delete conversation",
"conversation.mark_as_read": "Mark as read", "conversation.mark_as_read": "Mark as read",
"conversation.open": "View conversation", "conversation.open": "Ver la conversación",
"conversation.with": "Con {names}", "conversation.with": "Con {names}",
"copypaste.copied": "Copióse", "copypaste.copied": "Copióse",
"copypaste.copy": "Copiar", "copypaste.copy": "Copiar",
@ -185,12 +185,12 @@
"directory.recently_active": "Con actividá recién", "directory.recently_active": "Con actividá recién",
"disabled_account_banner.account_settings": "Account settings", "disabled_account_banner.account_settings": "Account settings",
"disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "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.community_timeline": "Esta seición contién los artículos públicos más actuales de los perfiles agospiaos nel dominiu {domain}.",
"dismissable_banner.dismiss": "Escartar", "dismissable_banner.dismiss": "Escartar",
"dismissable_banner.explore_links": "Esta seición contién les noticies que se tán comentando puramente agora, nesti ya otros sirvidores de la rede descentralizada.", "dismissable_banner.explore_links": "Esta seición contién les noticies que se tán comentando puramente agora, nesti ya otros sirvidores de la rede descentralizada.",
"dismissable_banner.explore_statuses": "Esta seición contién los artículos d'esti ya otros sirvidores de la rede descentralizada que tán ganando popularidá nesti sirvidor.", "dismissable_banner.explore_statuses": "Esta seición contién los artículos d'esti ya otros sirvidores de la rede descentralizada que tán ganando popularidá nesti sirvidor.",
"dismissable_banner.explore_tags": "Esta seición contién les etiquetes que tán ganando popularidá ente les persones d'esti ya otros sirvidores de la rede descentralizada.", "dismissable_banner.explore_tags": "Esta seición contién les etiquetes que tán ganando popularidá ente les persones d'esti ya otros sirvidores de la rede descentralizada.",
"dismissable_banner.public_timeline": "Esta seición contién los artículos públicos más recientes de persones nesti ya otros sirvidores de la rede descentralizada qu'esti sirvidor conoz.", "dismissable_banner.public_timeline": "Esta seición contién los artículos públicos más actuales de persones nesti ya otros sirvidores de la rede descentralizada qu'esti sirvidor conoz.",
"embed.instructions": "Empotra esti artículu nel to sitiu web pente la copia del códigu d'abaxo.", "embed.instructions": "Empotra esti artículu nel to sitiu web pente la copia del códigu d'abaxo.",
"embed.preview": "Va apaecer asina:", "embed.preview": "Va apaecer asina:",
"emoji_button.activity": "Actividá", "emoji_button.activity": "Actividá",
@ -212,24 +212,24 @@
"empty_column.account_timeline": "¡Equí nun hai nengún artículu!", "empty_column.account_timeline": "¡Equí nun hai nengún artículu!",
"empty_column.account_unavailable": "Profile unavailable", "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "Entá nun bloquiesti a nengún perfil.", "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 unu, apaez equí.", "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.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, apaecen equí.", "empty_column.direct": "Entá nun tienes nengún mensaxe direutu. Cuando unvies o recibas dalgún, apaez equí.",
"empty_column.domain_blocks": "Entá nun hai nengún dominiu bloquiáu.", "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.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 unu, apaez equí.", "empty_column.favourited_statuses": "Entá nun marquesti nengún artículu como favoritu. Cuando marques dalgún, apaez equí.",
"empty_column.favourites": "No one has favourited this post yet. When someone does, they will show up here.", "empty_column.favourites": "No one has favourited this post yet. When someone does, they will show up here.",
"empty_column.follow_recommendations": "Paez que nun se puen xenerar suxerencies pa ti. Pues tentar d'usar la busca p'atopar perfiles que pues conocer o esplorar les etiquetes en tendencia.", "empty_column.follow_recommendations": "Paez que nun se puen xenerar suxerencies pa ti. Pues tentar d'usar la busca p'atopar perfiles que pues conocer o esplorar les etiquetes en tendencia.",
"empty_column.follow_requests": "Entá nun tienes nenguna solicitú de siguimientu. Cuando recibas una, apaez equí.", "empty_column.follow_requests": "Entá nun tienes nenguna solicitú de siguimientu. Cuando recibas dalguna, apaez equí.",
"empty_column.followed_tags": "You have not followed any hashtags yet. When you do, they will show up here.", "empty_column.followed_tags": "You have not followed any hashtags yet. When you do, they will show up here.",
"empty_column.hashtag": "Entá nun hai nada con esta etiqueta.", "empty_column.hashtag": "Entá nun hai nada con esta etiqueta.",
"empty_column.home": "Your home timeline is empty! Follow more people to fill it up. {suggestions}", "empty_column.home": "¡La to llinia de tiempu ta balera! Sigui a cuentes pa enllenala. {suggestions}",
"empty_column.home.suggestions": "See some suggestions", "empty_column.home.suggestions": "Ver dalgunes suxerencies",
"empty_column.list": "Entá nun hai nada nesta llista. Cuando los miembros d'esta llista espublicen artículos nuevos, apaecen equí.", "empty_column.list": "Entá nun hai nada nesta llista. Cuando los miembros d'esta llista espublicen artículos nuevos, apaecen equí.",
"empty_column.lists": "Entá nun tienes nenguna llista. Cuando crees una, apaez equí.", "empty_column.lists": "Entá nun tienes nenguna llista. Cuando crees dalguna, apaez equí.",
"empty_column.mutes": "You haven't muted any users yet.", "empty_column.mutes": "Entá nun tienes nengún perfil colos avisos desactivaos.",
"empty_column.notifications": "You don't have any notifications yet. When other people interact with you, you will see it here.", "empty_column.notifications": "Entá nun tienes nengún avisu. Cuando otros perfiles interactúen contigo, apaez equí.",
"empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up", "empty_column.public": "¡Equí nun hai nada! Escribi daqué públicamente o sigui a perfiles d'otros sirvidores pa enllenar esta seición",
"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": "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.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": "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": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
@ -259,7 +259,7 @@
"filter_modal.select_filter.title": "Filter this post", "filter_modal.select_filter.title": "Filter this post",
"filter_modal.title.status": "Filter a post", "filter_modal.title.status": "Filter a post",
"follow_recommendations.done": "Fecho", "follow_recommendations.done": "Fecho",
"follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.heading": "¡Sigui a perfiles que te prestaría ver nel feed personal! Equí tienes dalgunes suxerencies.",
"follow_recommendations.lead": "Los artículos de los perfiles que sigas van apaecer n'orde cronolóxicu nel to feed d'aniciu. ¡Nun tengas mieu d'enquivocate, pues dexar de siguilos con facilidá en cualesquier momentu!", "follow_recommendations.lead": "Los artículos de los perfiles que sigas van apaecer n'orde cronolóxicu nel to feed d'aniciu. ¡Nun tengas mieu d'enquivocate, pues dexar de siguilos con facilidá en cualesquier momentu!",
"follow_request.authorize": "Autorizar", "follow_request.authorize": "Autorizar",
"follow_request.reject": "Refugar", "follow_request.reject": "Refugar",
@ -312,7 +312,7 @@
"keyboard_shortcuts.column": "Enfocar una columna", "keyboard_shortcuts.column": "Enfocar una columna",
"keyboard_shortcuts.compose": "Enfocar l'área de composición", "keyboard_shortcuts.compose": "Enfocar l'área de composición",
"keyboard_shortcuts.description": "Descripción", "keyboard_shortcuts.description": "Descripción",
"keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.direct": "Abrir la columna de mensaxes direutos",
"keyboard_shortcuts.down": "Baxar na llista", "keyboard_shortcuts.down": "Baxar na llista",
"keyboard_shortcuts.enter": "Abrir un artículu", "keyboard_shortcuts.enter": "Abrir un artículu",
"keyboard_shortcuts.favourite": "Marcar un artículu como favoritu", "keyboard_shortcuts.favourite": "Marcar un artículu como favoritu",
@ -386,7 +386,7 @@
"navigation_bar.follows_and_followers": "Follows and followers", "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.lists": "Llistes", "navigation_bar.lists": "Llistes",
"navigation_bar.logout": "Zarrar la sesión", "navigation_bar.logout": "Zarrar la sesión",
"navigation_bar.mutes": "Muted users", "navigation_bar.mutes": "Perfiles colos avisos desactivaos",
"navigation_bar.personal": "Personal", "navigation_bar.personal": "Personal",
"navigation_bar.pins": "Artículos fixaos", "navigation_bar.pins": "Artículos fixaos",
"navigation_bar.preferences": "Preferencies", "navigation_bar.preferences": "Preferencies",
@ -420,7 +420,7 @@
"notifications.column_settings.poll": "Resultaos de les encuestes:", "notifications.column_settings.poll": "Resultaos de les encuestes:",
"notifications.column_settings.push": "Push notifications", "notifications.column_settings.push": "Push notifications",
"notifications.column_settings.reblog": "Artículos compartíos:", "notifications.column_settings.reblog": "Artículos compartíos:",
"notifications.column_settings.show": "Show in column", "notifications.column_settings.show": "Amosar en columna",
"notifications.column_settings.sound": "Reproducir un soníu", "notifications.column_settings.sound": "Reproducir un soníu",
"notifications.column_settings.status": "Artículos nuevos:", "notifications.column_settings.status": "Artículos nuevos:",
"notifications.column_settings.unread_notifications.category": "Avisos ensin lleer", "notifications.column_settings.unread_notifications.category": "Avisos ensin lleer",
@ -457,7 +457,7 @@
"privacy.direct.short": "Direct", "privacy.direct.short": "Direct",
"privacy.private.long": "Artículu visible namás pa los perfiles siguidores", "privacy.private.long": "Artículu visible namás pa los perfiles siguidores",
"privacy.private.short": "Namás pa siguidores", "privacy.private.short": "Namás pa siguidores",
"privacy.public.long": "Visible for all", "privacy.public.long": "Tol mundu pue ver l'artículu",
"privacy.public.short": "Artículu públicu", "privacy.public.short": "Artículu públicu",
"privacy.unlisted.long": "Artículu visible pa tol mundu mas escluyíu de les funciones de descubrimientu", "privacy.unlisted.long": "Artículu visible pa tol mundu mas escluyíu de les funciones de descubrimientu",
"privacy.unlisted.short": "Unlisted", "privacy.unlisted.short": "Unlisted",
@ -467,11 +467,11 @@
"regeneration_indicator.label": "Cargando…", "regeneration_indicator.label": "Cargando…",
"regeneration_indicator.sublabel": "Your home feed is being prepared!", "regeneration_indicator.sublabel": "Your home feed is being prepared!",
"relative_time.days": "{number} d", "relative_time.days": "{number} d",
"relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", "relative_time.full.days": "Hai {number, plural, one {# día} other {# díes}}",
"relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", "relative_time.full.hours": "Hai {number, plural, one {# hora} other {# hores}}",
"relative_time.full.just_now": "puramente agora", "relative_time.full.just_now": "puramente agora",
"relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", "relative_time.full.minutes": "Hai {number, plural, one {# minutu} other {# minutos}}",
"relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.full.seconds": "Hai {number, plural, one {# segundu} other {# segundos}}",
"relative_time.hours": "{number} h", "relative_time.hours": "{number} h",
"relative_time.just_now": "agora", "relative_time.just_now": "agora",
"relative_time.minutes": "{number} m", "relative_time.minutes": "{number} m",
@ -482,7 +482,7 @@
"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": "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.other": "Other",
"report.categories.spam": "Spam", "report.categories.spam": "Spam",
"report.categories.violation": "El conteníu incumple una o más regles del sirvidor", "report.categories.violation": "El conteníu incumple una o más normes del sirvidor",
"report.category.subtitle": "Escueyi la meyor opción", "report.category.subtitle": "Escueyi la meyor opción",
"report.category.title": "Dinos qué pasa con esti {type}", "report.category.title": "Dinos qué pasa con esti {type}",
"report.category.title_account": "perfil", "report.category.title_account": "perfil",
@ -495,18 +495,18 @@
"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": "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.next": "Siguiente",
"report.placeholder": "Comentarios adicionales", "report.placeholder": "Comentarios adicionales",
"report.reasons.dislike": "I don't like it", "report.reasons.dislike": "Nun me presta",
"report.reasons.dislike_description": "Nun ye daqué que quiera ver", "report.reasons.dislike_description": "Nun ye daqué que quiera ver",
"report.reasons.other": "Ye daqué más", "report.reasons.other": "Ye daqué más",
"report.reasons.other_description": "La incidencia nun s'axusta a les demás categoríes", "report.reasons.other_description": "La incidencia nun s'axusta a les demás categoríes",
"report.reasons.spam": "Ye spam", "report.reasons.spam": "Ye spam",
"report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", "report.reasons.spam_description": "Contién enllaces maliciosos, conteníu fraudulentu o rempuestes repetitives",
"report.reasons.violation": "Incumple les regles del sirvidor", "report.reasons.violation": "Incumple les normes del sirvidor",
"report.reasons.violation_description": "You are aware that it breaks specific rules", "report.reasons.violation_description": "Yes consciente qu'incumple dalguna norma específica",
"report.rules.subtitle": "Select all that apply", "report.rules.subtitle": "Select all that apply",
"report.rules.title": "¿Qué regles s'incumplen?", "report.rules.title": "¿Qué normes s'incumplen?",
"report.statuses.subtitle": "Select all that apply", "report.statuses.subtitle": "Select all that apply",
"report.statuses.title": "Are there any posts that back up this report?", "report.statuses.title": "¿Hai dalgún artículu qu'apoye esti informe?",
"report.submit": "Unviar", "report.submit": "Unviar",
"report.target": "Report {target}", "report.target": "Report {target}",
"report.thanks.take_action": "Equí tienes les opciones pa controlar qué ves en Mastodon:", "report.thanks.take_action": "Equí tienes les opciones pa controlar qué ves en Mastodon:",
@ -515,7 +515,7 @@
"report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",
"report.unfollow": "Dexar de siguir a @{name}", "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.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 {{count} post} other {{count} posts}} attached", "report_notification.attached_statuses": "{count, plural, one {Axuntóse {count} artículu} other {Axuntáronse {count} artículos}}",
"report_notification.categories.other": "Other", "report_notification.categories.other": "Other",
"report_notification.categories.spam": "Spam", "report_notification.categories.spam": "Spam",
"report_notification.categories.violation": "Rule violation", "report_notification.categories.violation": "Rule violation",
@ -545,9 +545,9 @@
"sign_in_banner.create_account": "Crear una cuenta", "sign_in_banner.create_account": "Crear una cuenta",
"sign_in_banner.sign_in": "Aniciar la sesión", "sign_in_banner.sign_in": "Aniciar la sesión",
"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": "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_account": "Abrir la interfaz de moderación pa @{name}",
"status.admin_domain": "Open moderation interface for {domain}", "status.admin_domain": "Abrir la interfaz de moderación pa «{domain}»",
"status.admin_status": "Open this status in the moderation interface", "status.admin_status": "Abrir esti artículu na interfaz de moderación",
"status.block": "Block @{name}", "status.block": "Block @{name}",
"status.bookmark": "Meter en Marcadores", "status.bookmark": "Meter en Marcadores",
"status.cancel_reblog_private": "Unboost", "status.cancel_reblog_private": "Unboost",
@ -555,7 +555,7 @@
"status.copy": "Copiar l'enllaz al artículu", "status.copy": "Copiar l'enllaz al artículu",
"status.delete": "Desaniciar", "status.delete": "Desaniciar",
"status.detailed_status": "Detailed conversation view", "status.detailed_status": "Detailed conversation view",
"status.direct": "Direct message @{name}", "status.direct": "Unviar un mensaxe direutu a @{name}",
"status.edit": "Edit", "status.edit": "Edit",
"status.edited": "Edited {date}", "status.edited": "Edited {date}",
"status.edited_x_times": "Editóse {count, plural, one {{count} vegada} other {{count} vegaes}}", "status.edited_x_times": "Editóse {count, plural, one {{count} vegada} other {{count} vegaes}}",
@ -567,7 +567,7 @@
"status.history.created": "{name} creó {date}", "status.history.created": "{name} creó {date}",
"status.history.edited": "{name} editó {date}", "status.history.edited": "{name} editó {date}",
"status.load_more": "Cargar más", "status.load_more": "Cargar más",
"status.media_hidden": "Media hidden", "status.media_hidden": "Conteníu multimedia anubríu",
"status.mention": "Mentar a @{name}", "status.mention": "Mentar a @{name}",
"status.more": "Más", "status.more": "Más",
"status.mute": "Desactivar los avisos de @{name}", "status.mute": "Desactivar los avisos de @{name}",
@ -624,7 +624,7 @@
"units.short.million": "{count} M", "units.short.million": "{count} M",
"units.short.thousand": "{count} mil", "units.short.thousand": "{count} mil",
"upload_area.title": "Drag & drop to upload", "upload_area.title": "Drag & drop to upload",
"upload_button.label": "Add images, a video or an audio file", "upload_button.label": "Amestar ficheros multimedia",
"upload_error.limit": "File upload limit exceeded.", "upload_error.limit": "File upload limit exceeded.",
"upload_error.poll": "La xuba de ficheros nun ta permitida coles encuestes.", "upload_error.poll": "La xuba de ficheros nun ta permitida coles encuestes.",
"upload_form.audio_description": "Describe for people who are hard of hearing", "upload_form.audio_description": "Describe for people who are hard of hearing",

@ -272,7 +272,7 @@
"footer.keyboard_shortcuts": "Клавишни комбинации", "footer.keyboard_shortcuts": "Клавишни комбинации",
"footer.privacy_policy": "Политика за поверителност", "footer.privacy_policy": "Политика за поверителност",
"footer.source_code": "Преглед на изходния код", "footer.source_code": "Преглед на изходния код",
"footer.status": "Status", "footer.status": "Състояние",
"generic.saved": "Запазено", "generic.saved": "Запазено",
"getting_started.heading": "Първи стъпки", "getting_started.heading": "Първи стъпки",
"hashtag.column_header.tag_mode.all": "и {additional}", "hashtag.column_header.tag_mode.all": "и {additional}",

@ -3,23 +3,23 @@
"about.contact": "Cysylltwch â:", "about.contact": "Cysylltwch â:",
"about.disclaimer": "Mae Mastodon yn feddalwedd rhydd, cod agored ac o dan hawlfraint Mastodon gGmbH.", "about.disclaimer": "Mae Mastodon yn feddalwedd rhydd, cod agored ac o dan hawlfraint Mastodon gGmbH.",
"about.domain_blocks.no_reason_available": "Nid yw'r rheswm ar gael", "about.domain_blocks.no_reason_available": "Nid yw'r rheswm ar gael",
"about.domain_blocks.preamble": "Yn gyffredinol, mae Mastodon yn caniatáu i chi weld cynnwys gan unrhyw weinyddwr arall yn y ffederasiwn a rhyngweithio â hi. Dyma'r eithriadau a wnaed ar y gweinydd penodol hwn.", "about.domain_blocks.preamble": "Fel rheol, mae Mastodon yn caniatáu i chi weld cynnwys gan unrhyw weinyddwr arall yn y ffederasiwn a rhyngweithio â hi. Dyma'r eithriadau a wnaed ar y gweinydd penodol hwn.",
"about.domain_blocks.silenced.explanation": "Yn gyffredinol, fyddwch chi ddim yn gweld proffiliau a chynnwys o'r gweinydd hwn, oni bai eich bod yn chwilio'n benodol amdano neu yn ymuno drwy ei ddilyn.", "about.domain_blocks.silenced.explanation": "Fel rheol, fyddwch chi ddim yn gweld proffiliau a chynnwys o'r gweinydd hwn, oni bai eich bod yn chwilio'n benodol amdano neu yn ymuno drwy ei ddilyn.",
"about.domain_blocks.silenced.title": "Cyfyngedig", "about.domain_blocks.silenced.title": "Cyfyngedig",
"about.domain_blocks.suspended.explanation": "Ni fydd data o'r gweinydd hwn yn cael ei brosesu, ei storio na'i gyfnewid, gan wneud unrhyw ryngweithio neu gyfathrebu gyda defnyddwyr o'r gweinydd hwn yn amhosibl.", "about.domain_blocks.suspended.explanation": "Ni fydd data o'r gweinydd hwn yn cael ei brosesu, ei gadw na'i gyfnewid, gan wneud unrhyw ryngweithio neu gyfathrebu gyda defnyddwyr o'r gweinydd hwn yn amhosibl.",
"about.domain_blocks.suspended.title": "Ataliwyd", "about.domain_blocks.suspended.title": "Ataliwyd",
"about.not_available": "Nid yw'r wybodaeth hon ar gael ar y gweinydd hwn.", "about.not_available": "Nid yw'r wybodaeth hon ar gael ar y gweinydd hwn.",
"about.powered_by": "Cyfrwng cymdeithasol datganoledig sy'n cael ei yrru gan {mastodon}", "about.powered_by": "Cyfrwng cymdeithasol datganoledig sy'n cael ei yrru gan {mastodon}",
"about.rules": "Rheolau'r gweinydd", "about.rules": "Rheolau'r gweinydd",
"account.account_note_header": "Nodyn", "account.account_note_header": "Nodyn",
"account.add_or_remove_from_list": "Ychwanegu neu Dileu o'r rhestrau", "account.add_or_remove_from_list": "Ychwanegu neu Ddileu o'r rhestrau",
"account.badges.bot": "Bot", "account.badges.bot": "Bot",
"account.badges.group": "Grŵp", "account.badges.group": "Grŵp",
"account.block": "Blocio @{name}", "account.block": "Blocio @{name}",
"account.block_domain": "Blocio parth {domain}", "account.block_domain": "Blocio parth {domain}",
"account.blocked": "Blociwyd", "account.blocked": "Blociwyd",
"account.browse_more_on_origin_server": "Pori mwy ar y proffil gwreiddiol", "account.browse_more_on_origin_server": "Pori mwy ar y proffil gwreiddiol",
"account.cancel_follow_request": "Tynnu nôl cais i ddilyn", "account.cancel_follow_request": "Tynnu cais i ddilyn",
"account.direct": "Neges breifat @{name}", "account.direct": "Neges breifat @{name}",
"account.disable_notifications": "Stopiwch fy hysbysu pan fydd @{name} yn postio", "account.disable_notifications": "Stopiwch fy hysbysu pan fydd @{name} yn postio",
"account.domain_blocked": "Parth wedi ei flocio", "account.domain_blocked": "Parth wedi ei flocio",
@ -100,14 +100,14 @@
"closed_registrations_modal.title": "Ymgofrestru ar Mastodon", "closed_registrations_modal.title": "Ymgofrestru ar Mastodon",
"column.about": "Ynghylch", "column.about": "Ynghylch",
"column.blocks": "Defnyddwyr a flociwyd", "column.blocks": "Defnyddwyr a flociwyd",
"column.bookmarks": "Nodau tudalen", "column.bookmarks": "Llyfrnodau",
"column.community": "Ffrwd lleol", "column.community": "Ffrwd lleol",
"column.direct": "Negeseuon preifat", "column.direct": "Negeseuon preifat",
"column.directory": "Pori proffiliau", "column.directory": "Pori proffiliau",
"column.domain_blocks": "Parthau wedi'u blocio", "column.domain_blocks": "Parthau wedi'u blocio",
"column.favourites": "Ffefrynnau", "column.favourites": "Ffefrynnau",
"column.follow_requests": "Ceisiadau dilyn", "column.follow_requests": "Ceisiadau dilyn",
"column.home": "Cartref", "column.home": "Hafan",
"column.lists": "Rhestrau", "column.lists": "Rhestrau",
"column.mutes": "Defnyddwyr wedi'u tewi", "column.mutes": "Defnyddwyr wedi'u tewi",
"column.notifications": "Hysbysiadau", "column.notifications": "Hysbysiadau",
@ -145,8 +145,8 @@
"compose_form.sensitive.hide": "Marcio cyfryngau fel eu bod yn sensitif", "compose_form.sensitive.hide": "Marcio cyfryngau fel eu bod yn sensitif",
"compose_form.sensitive.marked": "Cyfryngau wedi'u marcio'n sensitif", "compose_form.sensitive.marked": "Cyfryngau wedi'u marcio'n sensitif",
"compose_form.sensitive.unmarked": "Nid yw'r cyfryngau wedi'u marcio'n sensitif", "compose_form.sensitive.unmarked": "Nid yw'r cyfryngau wedi'u marcio'n sensitif",
"compose_form.spoiler.marked": "Testun wedi ei guddio gan rybudd", "compose_form.spoiler.marked": "Dileu rhybudd cynnwys",
"compose_form.spoiler.unmarked": "Nid yw'r testun wedi ei guddio", "compose_form.spoiler.unmarked": "Ychwanegu rhybudd cynnwys",
"compose_form.spoiler_placeholder": "Ysgrifenwch eich rhybudd yma", "compose_form.spoiler_placeholder": "Ysgrifenwch eich rhybudd yma",
"confirmation_modal.cancel": "Diddymu", "confirmation_modal.cancel": "Diddymu",
"confirmations.block.block_and_report": "Rhwystro ac Adrodd", "confirmations.block.block_and_report": "Rhwystro ac Adrodd",
@ -179,7 +179,7 @@
"conversation.with": "Gyda {names}", "conversation.with": "Gyda {names}",
"copypaste.copied": "Wedi ei gopïo", "copypaste.copied": "Wedi ei gopïo",
"copypaste.copy": "Copïo", "copypaste.copy": "Copïo",
"directory.federated": "O'r fydysawd cyfan", "directory.federated": "O'r ffedysawd cyfan",
"directory.local": "O {domain} yn unig", "directory.local": "O {domain} yn unig",
"directory.new_arrivals": "Defnyddwyr newydd", "directory.new_arrivals": "Defnyddwyr newydd",
"directory.recently_active": "Ar-lein yn ddiweddar", "directory.recently_active": "Ar-lein yn ddiweddar",
@ -198,7 +198,7 @@
"emoji_button.custom": "Cyfaddas", "emoji_button.custom": "Cyfaddas",
"emoji_button.flags": "Baneri", "emoji_button.flags": "Baneri",
"emoji_button.food": "Bwyd & Diod", "emoji_button.food": "Bwyd & Diod",
"emoji_button.label": "Mewnosodwch emoji", "emoji_button.label": "Mewnosod emoji",
"emoji_button.nature": "Natur", "emoji_button.nature": "Natur",
"emoji_button.not_found": "Dim emojiau'n cydweddu i'w cael", "emoji_button.not_found": "Dim emojiau'n cydweddu i'w cael",
"emoji_button.objects": "Gwrthrychau", "emoji_button.objects": "Gwrthrychau",
@ -212,7 +212,7 @@
"empty_column.account_timeline": "Dim postiadau yma!", "empty_column.account_timeline": "Dim postiadau yma!",
"empty_column.account_unavailable": "Nid yw'r proffil ar gael", "empty_column.account_unavailable": "Nid yw'r proffil ar gael",
"empty_column.blocks": "Nid ydych wedi blocio unrhyw ddefnyddwyr eto.", "empty_column.blocks": "Nid ydych wedi blocio unrhyw ddefnyddwyr eto.",
"empty_column.bookmarked_statuses": "Nid oes gennych unrhyw bostiad wedi'u cadw fel nodau tudalen eto. Pan fyddwch yn gosod nod tudalen i un, mi fydd yn ymddangos yma.", "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.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": "Does gennych unrhyw negeseuon preifat eto. Pan byddwch yn anfon neu derbyn un, bydd yn ymddangos yma.",
"empty_column.domain_blocks": "Nid oes yna unrhyw barthau cuddiedig eto.", "empty_column.domain_blocks": "Nid oes yna unrhyw barthau cuddiedig eto.",
@ -371,7 +371,7 @@
"mute_modal.indefinite": "Parhaus", "mute_modal.indefinite": "Parhaus",
"navigation_bar.about": "Ynghylch", "navigation_bar.about": "Ynghylch",
"navigation_bar.blocks": "Defnyddwyr wedi eu blocio", "navigation_bar.blocks": "Defnyddwyr wedi eu blocio",
"navigation_bar.bookmarks": "Nodau tudalen", "navigation_bar.bookmarks": "Llyfrnodau",
"navigation_bar.community_timeline": "Ffrwd leol", "navigation_bar.community_timeline": "Ffrwd leol",
"navigation_bar.compose": "Cyfansoddi post newydd", "navigation_bar.compose": "Cyfansoddi post newydd",
"navigation_bar.direct": "Negeseuon preifat", "navigation_bar.direct": "Negeseuon preifat",
@ -549,7 +549,7 @@
"status.admin_domain": "Agor rhyngwyneb cymedroli {domain}", "status.admin_domain": "Agor rhyngwyneb cymedroli {domain}",
"status.admin_status": "Agor y postiad hwn yn y rhyngwyneb cymedroli", "status.admin_status": "Agor y postiad hwn yn y rhyngwyneb cymedroli",
"status.block": "Blocio @{name}", "status.block": "Blocio @{name}",
"status.bookmark": "Nod Tudalen", "status.bookmark": "Llyfrnodi",
"status.cancel_reblog_private": "Dadhybu", "status.cancel_reblog_private": "Dadhybu",
"status.cannot_reblog": "Nid oes modd hybu'r postiad hwn", "status.cannot_reblog": "Nid oes modd hybu'r postiad hwn",
"status.copy": "Copïo dolen i'r post", "status.copy": "Copïo dolen i'r post",
@ -574,14 +574,14 @@
"status.mute_conversation": "Tewi sgwrs", "status.mute_conversation": "Tewi sgwrs",
"status.open": "Ehangu'r post hwn", "status.open": "Ehangu'r post hwn",
"status.pin": "Pinio ar y proffil", "status.pin": "Pinio ar y proffil",
"status.pinned": "Post wedi'i binio", "status.pinned": "Postiad wedi'i binio",
"status.read_more": "Darllen rhagor", "status.read_more": "Darllen rhagor",
"status.reblog": "Hybu", "status.reblog": "Hybu",
"status.reblog_private": "Hybu i'r gynulleidfa wreiddiol", "status.reblog_private": "Hybu i'r gynulleidfa wreiddiol",
"status.reblogged_by": "Hybodd {name}", "status.reblogged_by": "Hybodd {name}",
"status.reblogs.empty": "Does neb wedi hybio'r post yma eto. Pan y bydd rhywun yn gwneud, byddent yn ymddangos yma.", "status.reblogs.empty": "Does neb wedi hybio'r post yma eto. Pan y bydd rhywun yn gwneud, byddent yn ymddangos yma.",
"status.redraft": "Dileu ac ailddrafftio", "status.redraft": "Dileu ac ailddrafftio",
"status.remove_bookmark": "Tynnu Nod Tudalen", "status.remove_bookmark": "Dileu llyfrnod",
"status.replied_to": "Wedi ateb {name}", "status.replied_to": "Wedi ateb {name}",
"status.reply": "Ateb", "status.reply": "Ateb",
"status.replyAll": "Ateb i edefyn", "status.replyAll": "Ateb i edefyn",
@ -604,7 +604,7 @@
"subscribed_languages.target": "Newid ieithoedd tanysgrifio {target}", "subscribed_languages.target": "Newid ieithoedd tanysgrifio {target}",
"suggestions.dismiss": "Diystyru'r awgrym", "suggestions.dismiss": "Diystyru'r awgrym",
"suggestions.header": "Efallai y bydd gennych ddiddordeb mewn…", "suggestions.header": "Efallai y bydd gennych ddiddordeb mewn…",
"tabs_bar.federated_timeline": "Ffedereiddiwyd", "tabs_bar.federated_timeline": "Ffederasiwn",
"tabs_bar.home": "Cartref", "tabs_bar.home": "Cartref",
"tabs_bar.local_timeline": "Lleol", "tabs_bar.local_timeline": "Lleol",
"tabs_bar.notifications": "Hysbysiadau", "tabs_bar.notifications": "Hysbysiadau",

@ -39,7 +39,7 @@
"account.follows_you": "Folgt dir", "account.follows_you": "Folgt dir",
"account.go_to_profile": "Profil aufrufen", "account.go_to_profile": "Profil aufrufen",
"account.hide_reblogs": "Geteilte Beiträge von @{name} verbergen", "account.hide_reblogs": "Geteilte Beiträge von @{name} verbergen",
"account.joined_short": "Beigetreten", "account.joined_short": "Registriert",
"account.languages": "Genutzte Sprachen überarbeiten", "account.languages": "Genutzte Sprachen überarbeiten",
"account.link_verified_on": "Das Profil mit dieser E-Mail-Adresse wurde bereits am {date} bestätigt", "account.link_verified_on": "Das Profil mit dieser E-Mail-Adresse wurde bereits am {date} bestätigt",
"account.locked_info": "Die Privatsphäre dieses Kontos wurde auf „geschützt“ gesetzt. Die Person bestimmt manuell, wer ihrem Profil folgen darf.", "account.locked_info": "Die Privatsphäre dieses Kontos wurde auf „geschützt“ gesetzt. Die Person bestimmt manuell, wer ihrem Profil folgen darf.",
@ -378,7 +378,7 @@
"navigation_bar.discover": "Entdecken", "navigation_bar.discover": "Entdecken",
"navigation_bar.domain_blocks": "Gesperrte Domains", "navigation_bar.domain_blocks": "Gesperrte Domains",
"navigation_bar.edit_profile": "Profil bearbeiten", "navigation_bar.edit_profile": "Profil bearbeiten",
"navigation_bar.explore": "Erforschen", "navigation_bar.explore": "Entdecken",
"navigation_bar.favourites": "Favoriten", "navigation_bar.favourites": "Favoriten",
"navigation_bar.filters": "Stummgeschaltete Wörter", "navigation_bar.filters": "Stummgeschaltete Wörter",
"navigation_bar.follow_requests": "Follower-Anfragen", "navigation_bar.follow_requests": "Follower-Anfragen",
@ -523,7 +523,7 @@
"search.placeholder": "Suche", "search.placeholder": "Suche",
"search.search_or_paste": "Suchen oder URL einfügen", "search.search_or_paste": "Suchen oder URL einfügen",
"search_popout.search_format": "Erweiterte Suche", "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 Nutzernamen, Anzeigenamen oder Hashtags.", "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.hashtag": "Hashtag",
"search_popout.tips.status": "Beitrag", "search_popout.tips.status": "Beitrag",
"search_popout.tips.text": "Einfache Texteingabe gibt Anzeigenamen, Profilnamen und Hashtags zurück", "search_popout.tips.text": "Einfache Texteingabe gibt Anzeigenamen, Profilnamen und Hashtags zurück",
@ -567,7 +567,7 @@
"status.history.created": "{name} erstellte {date}", "status.history.created": "{name} erstellte {date}",
"status.history.edited": "{name} bearbeitete {date}", "status.history.edited": "{name} bearbeitete {date}",
"status.load_more": "Weitere laden", "status.load_more": "Weitere laden",
"status.media_hidden": "{number, plural, one {Medium ausgeblendet} other {Medien ausgeblendet}}", "status.media_hidden": "Inhalt verborgen",
"status.mention": "@{name} im Beitrag erwähnen", "status.mention": "@{name} im Beitrag erwähnen",
"status.more": "Mehr", "status.more": "Mehr",
"status.mute": "@{name} stummschalten", "status.mute": "@{name} stummschalten",

@ -128,7 +128,7 @@
"compose.language.search": "Αναζήτηση γλωσσών...", "compose.language.search": "Αναζήτηση γλωσσών...",
"compose_form.direct_message_warning_learn_more": "Μάθετε περισσότερα", "compose_form.direct_message_warning_learn_more": "Μάθετε περισσότερα",
"compose_form.encryption_warning": "Οι δημοσιεύσεις στο Mastodon δεν είναι κρυπτογραφημένες από άκρο σε άκρο. Μην μοιράζεστε ευαίσθητες πληροφορίες μέσω του Mastodon.", "compose_form.encryption_warning": "Οι δημοσιεύσεις στο Mastodon δεν είναι κρυπτογραφημένες από άκρο σε άκρο. Μην μοιράζεστε ευαίσθητες πληροφορίες μέσω του 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": "Ο λογαριασμός σου δεν είναι {locked}. Οποιοσδήποτε μπορεί να σε ακολουθήσει για να δει τις δημοσιεύσεις σας προς τους ακολούθους σας.",
"compose_form.lock_disclaimer.lock": "κλειδωμένο", "compose_form.lock_disclaimer.lock": "κλειδωμένο",
"compose_form.placeholder": "Τι σκέφτεσαι;", "compose_form.placeholder": "Τι σκέφτεσαι;",
@ -221,7 +221,7 @@
"empty_column.favourites": "Κανείς δεν έχει αγαπήσει αυτό το τουτ ακόμα. Μόλις το κάνει κάποια, θα εμφανιστούν εδώ.", "empty_column.favourites": "Κανείς δεν έχει αγαπήσει αυτό το τουτ ακόμα. Μόλις το κάνει κάποια, θα εμφανιστούν εδώ.",
"empty_column.follow_recommendations": "Φαίνεται ότι δεν υπάρχει καμία πρόταση για σένα. Μπορείς να κάνεις μια αναζήτηση για άτομα που μπορεί να γνωρίζεις ή για hashtags που τρεντάρουν.", "empty_column.follow_recommendations": "Φαίνεται ότι δεν υπάρχει καμία πρόταση για σένα. Μπορείς να κάνεις μια αναζήτηση για άτομα που μπορεί να γνωρίζεις ή για hashtags που τρεντάρουν.",
"empty_column.follow_requests": "Δεν έχεις κανένα αίτημα παρακολούθησης ακόμα. Μόλις λάβεις κάποιο, θα εμφανιστεί εδώ.", "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.hashtag": "Δεν υπάρχει ακόμα κάτι για αυτή την ετικέτα.",
"empty_column.home": "Η τοπική σου ροή είναι κενή! Πήγαινε στο {public} ή κάνε αναζήτηση για να ξεκινήσεις και να γνωρίσεις άλλους χρήστες.", "empty_column.home": "Η τοπική σου ροή είναι κενή! Πήγαινε στο {public} ή κάνε αναζήτηση για να ξεκινήσεις και να γνωρίσεις άλλους χρήστες.",
"empty_column.home.suggestions": "Ορίστε μερικές προτάσεις", "empty_column.home.suggestions": "Ορίστε μερικές προτάσεις",
@ -264,7 +264,7 @@
"follow_request.authorize": "Ενέκρινε", "follow_request.authorize": "Ενέκρινε",
"follow_request.reject": "Απέρριψε", "follow_request.reject": "Απέρριψε",
"follow_requests.unlocked_explanation": "Παρόλο που ο λογαριασμός σου δεν είναι κλειδωμένος, οι διαχειριστές του {domain} θεώρησαν πως ίσως να θέλεις να ελέγξεις χειροκίνητα αυτά τα αιτήματα ακολούθησης.", "follow_requests.unlocked_explanation": "Παρόλο που ο λογαριασμός σου δεν είναι κλειδωμένος, οι διαχειριστές του {domain} θεώρησαν πως ίσως να θέλεις να ελέγξεις χειροκίνητα αυτά τα αιτήματα ακολούθησης.",
"followed_tags": "Followed hashtags", "followed_tags": "Ετικέτες που ακολουθούνται",
"footer.about": "Σχετικά με", "footer.about": "Σχετικά με",
"footer.directory": "Κατάλογος προφίλ", "footer.directory": "Κατάλογος προφίλ",
"footer.get_app": "Αποκτήστε την Εφαρμογή", "footer.get_app": "Αποκτήστε την Εφαρμογή",
@ -382,7 +382,7 @@
"navigation_bar.favourites": "Αγαπημένα", "navigation_bar.favourites": "Αγαπημένα",
"navigation_bar.filters": "Αποσιωπημένες λέξεις", "navigation_bar.filters": "Αποσιωπημένες λέξεις",
"navigation_bar.follow_requests": "Αιτήματα ακολούθησης", "navigation_bar.follow_requests": "Αιτήματα ακολούθησης",
"navigation_bar.followed_tags": "Followed hashtags", "navigation_bar.followed_tags": "Ετικέτες που ακολουθούνται",
"navigation_bar.follows_and_followers": "Ακολουθείς και σε ακολουθούν", "navigation_bar.follows_and_followers": "Ακολουθείς και σε ακολουθούν",
"navigation_bar.lists": "Λίστες", "navigation_bar.lists": "Λίστες",
"navigation_bar.logout": "Αποσύνδεση", "navigation_bar.logout": "Αποσύνδεση",
@ -544,7 +544,7 @@
"server_banner.server_stats": "Στατιστικά διακομιστή:", "server_banner.server_stats": "Στατιστικά διακομιστή:",
"sign_in_banner.create_account": "Δημιουργία λογαριασμού", "sign_in_banner.create_account": "Δημιουργία λογαριασμού",
"sign_in_banner.sign_in": "Σύνδεση", "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_account": "Άνοιγμα λειτουργίας διαμεσολάβησης για τον/την @{name}",
"status.admin_domain": "Άνοιγμα λειτουργίας διαμεσολάβησης για {domain}", "status.admin_domain": "Άνοιγμα λειτουργίας διαμεσολάβησης για {domain}",
"status.admin_status": "Άνοιγμα αυτής της δημοσίευσης στη λειτουργία διαμεσολάβησης", "status.admin_status": "Άνοιγμα αυτής της δημοσίευσης στη λειτουργία διαμεσολάβησης",
@ -599,7 +599,7 @@
"status.uncached_media_warning": "Μη διαθέσιμα", "status.uncached_media_warning": "Μη διαθέσιμα",
"status.unmute_conversation": "Διέκοψε την αποσιώπηση της συζήτησης", "status.unmute_conversation": "Διέκοψε την αποσιώπηση της συζήτησης",
"status.unpin": "Ξεκαρφίτσωσε από το προφίλ", "status.unpin": "Ξεκαρφίτσωσε από το προφίλ",
"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.", "subscribed_languages.lead": "Μόνο δημοσιεύσεις σε επιλεγμένες γλώσσες θα εμφανίζονται στην αρχική σας και θα εμφανίζονται χρονοδιαγράμματα μετά την αλλαγή. Επιλέξτε καμία για να λαμβάνετε δημοσιεύσεις σε όλες τις γλώσσες.",
"subscribed_languages.save": "Αποθήκευση αλλαγών", "subscribed_languages.save": "Αποθήκευση αλλαγών",
"subscribed_languages.target": "Αλλαγή εγγεγραμμένων γλωσσών για {target}", "subscribed_languages.target": "Αλλαγή εγγεγραμμένων γλωσσών για {target}",
"suggestions.dismiss": "Απόρριψη πρότασης", "suggestions.dismiss": "Απόρριψη πρότασης",

@ -239,7 +239,7 @@
"explore.search_results": "Resultados de búsqueda", "explore.search_results": "Resultados de búsqueda",
"explore.suggested_follows": "Para vos", "explore.suggested_follows": "Para vos",
"explore.title": "Explorá", "explore.title": "Explorá",
"explore.trending_links": "Novedades", "explore.trending_links": "Noticias",
"explore.trending_statuses": "Mensajes", "explore.trending_statuses": "Mensajes",
"explore.trending_tags": "Etiquetas", "explore.trending_tags": "Etiquetas",
"filter_modal.added.context_mismatch_explanation": "Esta categoría de filtro no se aplica al contexto en el que accediste a este mensaje. Si querés que el mensaje sea filtrado también en este contexto, vas a tener que editar el filtro.", "filter_modal.added.context_mismatch_explanation": "Esta categoría de filtro no se aplica al contexto en el que accediste a este mensaje. Si querés que el mensaje sea filtrado también en este contexto, vas a tener que editar el filtro.",

@ -389,7 +389,7 @@
"navigation_bar.mutes": "Doyvdir brúkarar", "navigation_bar.mutes": "Doyvdir brúkarar",
"navigation_bar.personal": "Persónligt", "navigation_bar.personal": "Persónligt",
"navigation_bar.pins": "Festir postar", "navigation_bar.pins": "Festir postar",
"navigation_bar.preferences": "Sertokki", "navigation_bar.preferences": "Stillingar",
"navigation_bar.public_timeline": "Felags tíðarlinja", "navigation_bar.public_timeline": "Felags tíðarlinja",
"navigation_bar.search": "Leita", "navigation_bar.search": "Leita",
"navigation_bar.security": "Trygd", "navigation_bar.security": "Trygd",

@ -54,7 +54,7 @@
"account.posts_with_replies": "Postaichean s freagairtean", "account.posts_with_replies": "Postaichean s freagairtean",
"account.report": "Dèan gearan mu @{name}", "account.report": "Dèan gearan mu @{name}",
"account.requested": "A feitheamh air aontachadh. Briog airson sgur dhen iarrtas leantainn", "account.requested": "A feitheamh air aontachadh. Briog airson sgur dhen iarrtas leantainn",
"account.requested_follow": "{name} has requested to follow you", "account.requested_follow": "Dhiarr {name} gad leantainn",
"account.share": "Co-roinn a phròifil aig @{name}", "account.share": "Co-roinn a phròifil aig @{name}",
"account.show_reblogs": "Seall na brosnachaidhean o @{name}", "account.show_reblogs": "Seall na brosnachaidhean o @{name}",
"account.statuses_counter": "{count, plural, one {{counter} phost} two {{counter} phost} few {{counter} postaichean} other {{counter} post}}", "account.statuses_counter": "{count, plural, one {{counter} phost} two {{counter} phost} few {{counter} postaichean} other {{counter} post}}",
@ -128,7 +128,7 @@
"compose.language.search": "Lorg cànan…", "compose.language.search": "Lorg cànan…",
"compose_form.direct_message_warning_learn_more": "Barrachd fiosrachaidh", "compose_form.direct_message_warning_learn_more": "Barrachd fiosrachaidh",
"compose_form.encryption_warning": "Chan eil crioptachadh ceann gu ceann air postaichean Mhastodon. Na co-roinn fiosrachadh dìomhair idir le Mastodon.", "compose_form.encryption_warning": "Chan eil crioptachadh ceann gu ceann air postaichean Mhastodon. Na co-roinn fiosrachadh dìomhair idir le 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": "Cha nochd am post seo fon taga hais o nach eil e poblach. Cha ghabh ach postaichean poblach a lorg a-rèir an tagaichean hais.",
"compose_form.lock_disclaimer": "Chan eil an cunntas agad {locked}. S urrainn do dhuine sam bith gad leantainn is na postaichean agad a tha ag amas air an luchd-leantainn agad a-mhàin a shealltainn.", "compose_form.lock_disclaimer": "Chan eil an cunntas agad {locked}. S urrainn do dhuine sam bith gad leantainn is na postaichean agad a tha ag amas air an luchd-leantainn agad a-mhàin a shealltainn.",
"compose_form.lock_disclaimer.lock": "glaiste", "compose_form.lock_disclaimer.lock": "glaiste",
"compose_form.placeholder": "Dè tha air d aire?", "compose_form.placeholder": "Dè tha air d aire?",
@ -221,7 +221,7 @@
"empty_column.favourites": "Chan eil am post seo na annsachd aig duine sam bith fhathast. Nuair a nì daoine annsachd dheth, nochdaidh iad an-seo.", "empty_column.favourites": "Chan eil am post seo na annsachd aig duine sam bith fhathast. Nuair a nì daoine annsachd dheth, nochdaidh iad an-seo.",
"empty_column.follow_recommendations": "Chan urrainn dhuinn dad a mholadh dhut. Cleachd gleus an luirg feuch an lorg thu daoine air a bheil thu eòlach no rùraich na tagaichean-hais a tha a treandadh.", "empty_column.follow_recommendations": "Chan urrainn dhuinn dad a mholadh dhut. Cleachd gleus an luirg feuch an lorg thu daoine air a bheil thu eòlach no rùraich na tagaichean-hais a tha a treandadh.",
"empty_column.follow_requests": "Chan eil iarrtas leantainn agad fhathast. Nuair a gheibh thu fear, nochdaidh e an-seo.", "empty_column.follow_requests": "Chan eil iarrtas leantainn agad fhathast. Nuair a gheibh thu fear, nochdaidh e an-seo.",
"empty_column.followed_tags": "You have not followed any hashtags yet. When you do, they will show up here.", "empty_column.followed_tags": "Cha do lean thu taga hais sam bith fhathast. Nuair a leanas tu, nochdaidh iad an-seo.",
"empty_column.hashtag": "Chan eil dad san taga hais seo fhathast.", "empty_column.hashtag": "Chan eil dad san taga hais seo fhathast.",
"empty_column.home": "Tha loidhne-ama na dachaigh agad falamh! Lean barrachd dhaoine gus a lìonadh. {suggestions}", "empty_column.home": "Tha loidhne-ama na dachaigh agad falamh! Lean barrachd dhaoine gus a lìonadh. {suggestions}",
"empty_column.home.suggestions": "Faic moladh no dhà", "empty_column.home.suggestions": "Faic moladh no dhà",
@ -237,11 +237,11 @@
"errors.unexpected_crash.copy_stacktrace": "Cuir lethbhreac dhen stacktrace air an stòr-bhòrd", "errors.unexpected_crash.copy_stacktrace": "Cuir lethbhreac dhen stacktrace air an stòr-bhòrd",
"errors.unexpected_crash.report_issue": "Dèan aithris air an duilgheadas", "errors.unexpected_crash.report_issue": "Dèan aithris air an duilgheadas",
"explore.search_results": "Toraidhean an luirg", "explore.search_results": "Toraidhean an luirg",
"explore.suggested_follows": "For you", "explore.suggested_follows": "Dhut-sa",
"explore.title": "Rùraich", "explore.title": "Rùraich",
"explore.trending_links": "News", "explore.trending_links": "Naidheachdan",
"explore.trending_statuses": "Posts", "explore.trending_statuses": "Postaichean",
"explore.trending_tags": "Hashtags", "explore.trending_tags": "Tagaichean hais",
"filter_modal.added.context_mismatch_explanation": "Chan eil an roinn-seòrsa criathraidh iom seo chaidh dhan cho-theacs san do dhinntrig thu am post seo. Ma tha thu airson am post a chriathradh sa cho-theacs seo cuideachd, feumaidh tu a chriathrag a dheasachadh.", "filter_modal.added.context_mismatch_explanation": "Chan eil an roinn-seòrsa criathraidh iom seo chaidh dhan cho-theacs san do dhinntrig thu am post seo. Ma tha thu airson am post a chriathradh sa cho-theacs seo cuideachd, feumaidh tu a chriathrag a dheasachadh.",
"filter_modal.added.context_mismatch_title": "Co-theacsa neo-iomchaidh!", "filter_modal.added.context_mismatch_title": "Co-theacsa neo-iomchaidh!",
"filter_modal.added.expired_explanation": "Dhfhalbh an ùine air an roinn-seòrsa criathraidh seo agus feumaidh tu an ceann-là crìochnachaidh atharrachadh mus cuir thu an sàs i.", "filter_modal.added.expired_explanation": "Dhfhalbh an ùine air an roinn-seòrsa criathraidh seo agus feumaidh tu an ceann-là crìochnachaidh atharrachadh mus cuir thu an sàs i.",
@ -264,7 +264,7 @@
"follow_request.authorize": "Ùghdarraich", "follow_request.authorize": "Ùghdarraich",
"follow_request.reject": "Diùlt", "follow_request.reject": "Diùlt",
"follow_requests.unlocked_explanation": "Ged nach eil an cunntas agad glaiste, tha sgioba {domain} dhen bheachd gum b fheàirrde thu lèirmheas a dhèanamh air na h-iarrtasan leantainn o na cunntasan seo a làimh.", "follow_requests.unlocked_explanation": "Ged nach eil an cunntas agad glaiste, tha sgioba {domain} dhen bheachd gum b fheàirrde thu lèirmheas a dhèanamh air na h-iarrtasan leantainn o na cunntasan seo a làimh.",
"followed_tags": "Followed hashtags", "followed_tags": "Tagaichean hais gan leantainn",
"footer.about": "Mu dhèidhinn", "footer.about": "Mu dhèidhinn",
"footer.directory": "Eòlaire nam pròifil", "footer.directory": "Eòlaire nam pròifil",
"footer.get_app": "Faigh an aplacaid", "footer.get_app": "Faigh an aplacaid",
@ -272,7 +272,7 @@
"footer.keyboard_shortcuts": "Ath-ghoiridean a mheur-chlàir", "footer.keyboard_shortcuts": "Ath-ghoiridean a mheur-chlàir",
"footer.privacy_policy": "Poileasaidh prìobhaideachd", "footer.privacy_policy": "Poileasaidh prìobhaideachd",
"footer.source_code": "Seall am bun-tùs", "footer.source_code": "Seall am bun-tùs",
"footer.status": "Status", "footer.status": "Staid",
"generic.saved": "Chaidh a shàbhaladh", "generic.saved": "Chaidh a shàbhaladh",
"getting_started.heading": "Toiseach", "getting_started.heading": "Toiseach",
"hashtag.column_header.tag_mode.all": "agus {additional}", "hashtag.column_header.tag_mode.all": "agus {additional}",
@ -382,7 +382,7 @@
"navigation_bar.favourites": "Na h-annsachdan", "navigation_bar.favourites": "Na h-annsachdan",
"navigation_bar.filters": "Faclan mùchte", "navigation_bar.filters": "Faclan mùchte",
"navigation_bar.follow_requests": "Iarrtasan leantainn", "navigation_bar.follow_requests": "Iarrtasan leantainn",
"navigation_bar.followed_tags": "Followed hashtags", "navigation_bar.followed_tags": "Tagaichean hais gan leantainn",
"navigation_bar.follows_and_followers": "Dàimhean leantainn", "navigation_bar.follows_and_followers": "Dàimhean leantainn",
"navigation_bar.lists": "Liostaichean", "navigation_bar.lists": "Liostaichean",
"navigation_bar.logout": "Clàraich a-mach", "navigation_bar.logout": "Clàraich a-mach",
@ -544,9 +544,9 @@
"server_banner.server_stats": "Stadastaireachd an fhrithealaiche:", "server_banner.server_stats": "Stadastaireachd an fhrithealaiche:",
"sign_in_banner.create_account": "Cruthaich cunntas", "sign_in_banner.create_account": "Cruthaich cunntas",
"sign_in_banner.sign_in": "Clàraich a-steach", "sign_in_banner.sign_in": "Clàraich a-steach",
"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": "Clàraich a-steach a leantainn phròifilean no thagaichean hais, a cur postaichean ris na h-annsachdan s gan co-roinneadh is freagairt dhaibh. S urrainn dhut gnìomh a ghabhail le cunntas o fhrithealaiche eile cuideachd.",
"status.admin_account": "Fosgail eadar-aghaidh na maorsainneachd dha @{name}", "status.admin_account": "Fosgail eadar-aghaidh na maorsainneachd dha @{name}",
"status.admin_domain": "Open moderation interface for {domain}", "status.admin_domain": "Fosgail eadar-aghaidh na maorsainneachd dha {domain}",
"status.admin_status": "Fosgail am post seo ann an eadar-aghaidh na maorsainneachd", "status.admin_status": "Fosgail am post seo ann an eadar-aghaidh na maorsainneachd",
"status.block": "Bac @{name}", "status.block": "Bac @{name}",
"status.bookmark": "Cuir ris na comharran-lìn", "status.bookmark": "Cuir ris na comharran-lìn",
@ -563,7 +563,7 @@
"status.favourite": "Cuir ris na h-annsachdan", "status.favourite": "Cuir ris na h-annsachdan",
"status.filter": "Criathraich am post seo", "status.filter": "Criathraich am post seo",
"status.filtered": "Criathraichte", "status.filtered": "Criathraichte",
"status.hide": "Hide post", "status.hide": "Falaich am post",
"status.history.created": "Chruthaich {name} {date} e", "status.history.created": "Chruthaich {name} {date} e",
"status.history.edited": "Dheasaich {name} {date} e", "status.history.edited": "Dheasaich {name} {date} e",
"status.load_more": "Luchdaich barrachd dheth", "status.load_more": "Luchdaich barrachd dheth",
@ -595,7 +595,7 @@
"status.show_more_all": "Seall barrachd dhen a h-uile", "status.show_more_all": "Seall barrachd dhen a h-uile",
"status.show_original": "Seall an tionndadh tùsail", "status.show_original": "Seall an tionndadh tùsail",
"status.translate": "Eadar-theangaich", "status.translate": "Eadar-theangaich",
"status.translated_from_with": "Air eaar-theangachadh o {lang} le {provider}", "status.translated_from_with": "Air eadar-theangachadh o {lang} le {provider}",
"status.uncached_media_warning": "Chan eil seo ri fhaighinn", "status.uncached_media_warning": "Chan eil seo ri fhaighinn",
"status.unmute_conversation": "Dì-mhùch an còmhradh", "status.unmute_conversation": "Dì-mhùch an còmhradh",
"status.unpin": "Dì-phrìnich on phròifil", "status.unpin": "Dì-phrìnich on phròifil",

@ -1,6 +1,6 @@
{ {
"about.blocks": "Moderated servers", "about.blocks": "Moderated servers",
"about.contact": "Contact:", "about.contact": "Anermis:",
"about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.",
"about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.no_reason_available": "Reason not available",
"about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.",

@ -13,188 +13,188 @@
"about.rules": "ဆာဗာစည်းမျဉ်းများ\n", "about.rules": "ဆာဗာစည်းမျဉ်းများ\n",
"account.account_note_header": "မှတ်ချက်", "account.account_note_header": "မှတ်ချက်",
"account.add_or_remove_from_list": "စာရင်းများမှ ထည့်ပါ သို့မဟုတ် ဖယ်ရှားပါ။\n", "account.add_or_remove_from_list": "စာရင်းများမှ ထည့်ပါ သို့မဟုတ် ဖယ်ရှားပါ။\n",
"account.badges.bot": "Bot", "account.badges.bot": "စက်ရုပ်",
"account.badges.group": "အုပ်စု", "account.badges.group": "အုပ်စု",
"account.block": "@{name} ကိုဘလော့မည်", "account.block": "@{name} ကိုဘလော့မည်",
"account.block_domain": " {domain} ဒိုမိန်းကိုပိတ်မည်", "account.block_domain": " {domain} ဒိုမိန်းကိုပိတ်မည်",
"account.blocked": "ဘလော့ထားသည်", "account.blocked": "ဘလော့ထားသည်",
"account.browse_more_on_origin_server": "မူရင်းပရိုဖိုင်တွင် ပိုမိုကြည့်ရှုပါ။", "account.browse_more_on_origin_server": "မူရင်းပရိုဖိုင်တွင် ပိုမိုကြည့်ရှုပါ။",
"account.cancel_follow_request": "Withdraw follow request", "account.cancel_follow_request": "ဖောလိုးပယ်ဖျက်ခြင်း",
"account.direct": "@{name} ကိုတိုက်ရိုက်စာပို့မည်", "account.direct": "@{name} ကိုတိုက်ရိုက်စာပို့မည်",
"account.disable_notifications": "@{name} ပို့စ်တင်သည့်အခါ ကျွန်ုပ်ကို အသိပေးခြင်းရပ်ပါ။", "account.disable_notifications": "@{name} ပို့စ်တင်သည့်အခါ ကျွန်ုပ်ကို အသိပေးခြင်းရပ်ပါ။",
"account.domain_blocked": "ဒိုမိန်း ပိတ်ပင်ထားခဲ့သည်\n", "account.domain_blocked": "ဒိုမိန်း ပိတ်ပင်ထားခဲ့သည်\n",
"account.edit_profile": "ကိုယ်ရေးမှတ်တမ်းပြင်ဆင်မည်", "account.edit_profile": "ကိုယ်ရေးမှတ်တမ်းပြင်ဆင်မည်",
"account.enable_notifications": "@{name} ပို့စ်တင်သည့်အခါ ကျွန်ုပ်ကို အကြောင်းကြားပါ။", "account.enable_notifications": "@{name} ပို့စ်တင်သည့်အခါ ကျွန်ုပ်ကို အကြောင်းကြားပါ။",
"account.endorse": "Feature on profile", "account.endorse": "အကောင့်ပရိုဖိုင်တွင်ဖော်ပြပါ",
"account.featured_tags.last_status_at": "{date} တွင် နောက်ဆုံးပို့စ်", "account.featured_tags.last_status_at": "{date} တွင် နောက်ဆုံးပို့စ်",
"account.featured_tags.last_status_never": "No posts", "account.featured_tags.last_status_never": "ပို့စ်တင်ထားခြင်းမရှိပါ",
"account.featured_tags.title": "{name}'s featured hashtags", "account.featured_tags.title": "ဖော်ပြထားသောဟက်ရှ်တက်ခ်များ",
"account.follow": "စောင့်ကြည့်မည်", "account.follow": "စောင့်ကြည့်မည်",
"account.followers": "စောင့်ကြည့်သူများ", "account.followers": "စောင့်ကြည့်သူများ",
"account.followers.empty": "ဤသူကို စောင့်ကြည့်သူ မရှိသေးပါ။", "account.followers.empty": "ဤသူကို စောင့်ကြည့်သူ မရှိသေးပါ။",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", "account.followers_counter": "{count, plural, one {{counter} ဖော်လိုဝါများ} other {{counter} ဖော်လိုဝါများ}}",
"account.following": "စောင့်ကြည့်နေသည်", "account.following": "စောင့်ကြည့်နေသည်",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.following_counter": "{count, plural, one {{counter} ဖော်လိုလုပ်နေသည်} other {{counter} ဖော်လိုလုပ်နေသည်}}",
"account.follows.empty": "ဤသူသည် မည်သူ့ကိုမျှ စောင့်ကြည့်ခြင်း မရှိသေးပါ။", "account.follows.empty": "ဤသူသည် မည်သူ့ကိုမျှ စောင့်ကြည့်ခြင်း မရှိသေးပါ။",
"account.follows_you": "သင့်ကို စောင့်ကြည့်နေသည်", "account.follows_you": "သင့်ကို စောင့်ကြည့်နေသည်",
"account.go_to_profile": "ပရိုဖိုင်းသို့ သွားရန်", "account.go_to_profile": "ပရိုဖိုင်းသို့ သွားရန်",
"account.hide_reblogs": "@{name} ၏ မျှဝေမှုကို ဝှက်ထားရန်", "account.hide_reblogs": "@{name} ၏ မျှဝေမှုကို ဝှက်ထားရန်",
"account.joined_short": "ပူးပေါင်း", "account.joined_short": "ပူးပေါင်း",
"account.languages": "Change subscribed languages", "account.languages": "ဘာသာစကားပြောင်းမည်",
"account.link_verified_on": "ဤလင့်ခ်၏ ပိုင်ဆိုင်မှုကို {date} က စစ်ဆေးခဲ့သည်။", "account.link_verified_on": "ဤလင့်ခ်၏ ပိုင်ဆိုင်မှုကို {date} က စစ်ဆေးခဲ့သည်။",
"account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.locked_info": "အကောင့်ကိုယ်ရေးကိုယ်တာကိုလော့ချထားသည်။အကောင့်ပိုင်ရှင်မှ ခွင့်ပြုချက်လိုအပ်သည်။",
"account.media": "မီဒီယာ", "account.media": "မီဒီယာ",
"account.mention": "Mention @{name}", "account.mention": "{name}ကိုမန်းရှင်းထားသည်",
"account.moved_to": "{name} has indicated that their new account is now:", "account.moved_to": "{name} ၏အကောင့်အသစ်မှာ",
"account.mute": "Mute @{name}", "account.mute": "{name}ကိုပိတ်ထားရန်",
"account.mute_notifications": "Mute notifications from @{name}", "account.mute_notifications": "{name}ထံမှသတိပေးချက်",
"account.muted": "Muted", "account.muted": "ပိတ်ထားရန်",
"account.open_original_page": "Open original page", "account.open_original_page": "မူလစာမျက်နှာကိုဖွင့်ပါ",
"account.posts": "ပို့စ်များ", "account.posts": "ပို့စ်များ",
"account.posts_with_replies": "Posts and replies", "account.posts_with_replies": "ပို့စ်နှင့် ရီပလိုင်းများ",
"account.report": "Report @{name}", "account.report": "တိုင်ကြားမည်{name}",
"account.requested": "Awaiting approval. Click to cancel follow request", "account.requested": "ခွင့်ပြုချက်စောင့်နေသည်။ ဖော်လိုးပယ်ဖျက်ရန်နှိပ်ပါ",
"account.requested_follow": "{name} has requested to follow you", "account.requested_follow": "{name} မှသင့်ကိုဖော်လိုပြုလုပ်လိုသည်",
"account.share": "Share @{name}'s profile", "account.share": "{name}၏ပရိုဖိုင်ကိုမျှဝေပါ",
"account.show_reblogs": "Show boosts from @{name}", "account.show_reblogs": "@{name} မှ မျှ၀ေမှုများကို ပြပါ\n",
"account.statuses_counter": "{count, plural, one {{counter} Post} other {{counter} Posts}}", "account.statuses_counter": "{count, plural, one {{counter} ပိုစ့်များ} other {{counter} ပိုစ့်များ}}",
"account.unblock": "Unblock @{name}", "account.unblock": "{name} ကို ဘလော့ဖြုတ်မည်",
"account.unblock_domain": "Unblock domain {domain}", "account.unblock_domain": " {domain} ဒိုမိန်းကိုပြန်ဖွင့်မည်",
"account.unblock_short": "Unblock", "account.unblock_short": "ဘလော့ဖြုတ်ရန်",
"account.unendorse": "Don't feature on profile", "account.unendorse": "အကောင့်ပရိုဖိုင်တွင်မဖော်ပြပါ",
"account.unfollow": "Unfollow", "account.unfollow": "ဖောလိုးဖြုတ်မည်",
"account.unmute": "Unmute @{name}", "account.unmute": "{name} ကို ပြန်ဖွင့်ရန်",
"account.unmute_notifications": "Unmute notifications from @{name}", "account.unmute_notifications": "{name}ထံမှသတိပေးချက်ပြန်ဖွင့်မည်",
"account.unmute_short": "Unmute", "account.unmute_short": "ပြန်ဖွင့်ရန်",
"account_note.placeholder": "Click to add a note", "account_note.placeholder": "Click to add a note",
"admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.daily_retention": "အကောင့်ဖွင့်ပြီးနောက် တစ်ရက်ပြီးတစ်ရက် အသုံးပြုသူ ထိန်းသိမ်းမှုနှုန်း",
"admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.monthly_retention": "အကောင့်ဖွင့်ပြီးနောက် တစ်လအလိုက် အသုံးပြုသူ ထိန်းသိမ်းမှုနှုန်း",
"admin.dashboard.retention.average": "Average", "admin.dashboard.retention.average": "ပျမ်းမျှ",
"admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort": "အကောင့်ပြုလုပ်မှုလ",
"admin.dashboard.retention.cohort_size": "New users", "admin.dashboard.retention.cohort_size": "အသုံးပြုသူအသစ်များ",
"alert.rate_limited.message": "Please retry after {retry_time, time, medium}.", "alert.rate_limited.message": " {retry_time, time, medium}ပြီးနောက် ထပ်စမ်းကြည့်ပါ",
"alert.rate_limited.title": "Rate limited", "alert.rate_limited.title": "နှုန်းထားကန့်သတ်ထားသည်။\n",
"alert.unexpected.message": "An unexpected error occurred.", "alert.unexpected.message": "မမျှော်လင့်ထားသော အမှားတစ်ခု ဖြစ်ပွားခဲ့သည်။",
"alert.unexpected.title": "Oops!", "alert.unexpected.title": "အယ်!",
"announcement.announcement": "Announcement", "announcement.announcement": "ကြေငြာချက်",
"attachments_list.unprocessed": "(unprocessed)", "attachments_list.unprocessed": "(မလုပ်ဆောင်ရသေး)",
"audio.hide": "Hide audio", "audio.hide": "အသံပိတ်မည်",
"autosuggest_hashtag.per_week": "{count} per week", "autosuggest_hashtag.per_week": "တစ်ပတ်လျှင် {count}\n",
"boost_modal.combo": "You can press {combo} to skip this next time", "boost_modal.combo": "ဤအရာကို နောက်တစ်ကြိမ်ကျော်ရန် {combo} ကိုနှိပ်နိုင်သည်။",
"bundle_column_error.copy_stacktrace": "Copy error report", "bundle_column_error.copy_stacktrace": "စာကူးရာတွင်ပြဿနာရှိသည်",
"bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", "bundle_column_error.error.body": "ဤစာမျက်နှာကို ဖော်ပြရာတွင် ပြဿနာရှိနေသည်",
"bundle_column_error.error.title": "Oh, no!", "bundle_column_error.error.title": "မှားနေသည်",
"bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", "bundle_column_error.network.body": "ဒီစာမျက်နှာအား ဖွင့်လို့မရပါ။ အင်တာနက်ကွန်နက်ရှင် (သို့) ဆာဗာ ပြဿနာဖြစ်နေသည်။",
"bundle_column_error.network.title": "Network error", "bundle_column_error.network.title": "အင်တာနက်ကွန်ယက် ပြဿနာ",
"bundle_column_error.retry": "Try again", "bundle_column_error.retry": "ထပ်ကြိုးစားပါ",
"bundle_column_error.return": "Go back home", "bundle_column_error.return": "Homeကိုပြန်သွားမည်",
"bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", "bundle_column_error.routing.body": "ရှာနေသောအရာမှာမရှိပါ။ URL မှန်မမှန်ပြန်စစ်ပေးပါ",
"bundle_column_error.routing.title": "404", "bundle_column_error.routing.title": "လေးသုံညလေး",
"bundle_modal_error.close": "Close", "bundle_modal_error.close": "ပိတ်ပါ",
"bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.message": "ဤဝက်ဘ်စာမျက်နှာအား ဖွင့်နေစဥ် အမှားတစ်ခု ဖြစ်ပေါ်ခဲ့သည်။",
"bundle_modal_error.retry": "Try again", "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.other_server_instructions": "Mastodon ကို ဗဟိုချုပ်ကိုင်မှု လျှော့ချထားသောကြောင့် သင်သည် အခြားဆာဗာတစ်ခုပေါ်တွင် အကောင့်တစ်ခု ဖန်တီးနိုင်ပြီး ဤတစ်ခုနှင့် အပြန်အလှန် တုံ့ပြန်ဆဲဖြစ်သည်။",
"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.description": "{domain} တွင် အကောင့်တစ်ခုဖန်တီးခြင်းသည် လောလောဆယ်မဖြစ်နိုင်ပါ၊ သို့သော် Mastodon ကိုအသုံးပြုရန်အတွက် သင်သည် {domain} တွင် အထူးအကောင့်တစ်ခုမလိုအပ်ကြောင်း ကျေးဇူးပြု၍ သတိရပါ။",
"closed_registrations_modal.find_another_server": "Find another server", "closed_registrations_modal.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.preamble": "Mastodon ကို ဗဟိုချုပ်ကိုင်မှု လျှော့ချထားသောကြောင့် သင့်အကောင့်ကို မည်သည့်နေရာတွင်ပင် ဖန်တီးပါစေ၊ သင်သည် ဤဆာဗာပေါ်ရှိ မည်သူမဆိုနှင့် လိုက်လျောညီထွေ တုံ့ပြန်နိုင်မည်ဖြစ်သည်။ သင်ကိုယ်တိုင်ပင် လက်ခံဆောင်ရွက်ပေးနိုင်သည်။",
"closed_registrations_modal.title": "Signing up on Mastodon", "closed_registrations_modal.title": "Mastodon တွင်အကောင့်ပြုလုပ်ပါ။\n",
"column.about": "အကြောင်း", "column.about": "အကြောင်း",
"column.blocks": "Blocked users", "column.blocks": "ဘလော့ထားသောအကောင့်များ",
"column.bookmarks": "Bookmarks", "column.bookmarks": "မှတ်တမ်းများ",
"column.community": "Local timeline", "column.community": "ဒေသတွင်း အချိန်ဇယား",
"column.direct": "Direct messages", "column.direct": "တိုက်ရိုက် မက်ဆေ့ခ်ျများ",
"column.directory": "Browse profiles", "column.directory": "ပရိုဖိုင်များကို ရှာဖွေမည်\n",
"column.domain_blocks": "Blocked domains", "column.domain_blocks": " ဒိုမိန်းကိုပိတ်မည်",
"column.favourites": "Favourites", "column.favourites": "အကြိုက်ဆုံးများ",
"column.follow_requests": "Follow requests", "column.follow_requests": "တောင်းဆိုချက်များကိုလိုက်နာပါ။",
"column.home": "Home", "column.home": "ပင်မစာမျက်နှာ",
"column.lists": "Lists", "column.lists": "စာရင်းများ",
"column.mutes": "Muted users", "column.mutes": "မပေါ်အောင်ပိတ်ထားသောအသုံးပြုသူများ",
"column.notifications": "အသိပေးချက်များ", "column.notifications": "အသိပေးချက်များ",
"column.pins": "Pinned post", "column.pins": "Pinned post",
"column.public": "Federated timeline", "column.public": "အားလုံးဖတ်နိုင်သောအချိန်ဇယား",
"column_back_button.label": "Back", "column_back_button.label": "နောက်သို့",
"column_header.hide_settings": "Hide settings", "column_header.hide_settings": "ဆက်တင်များကို ဖျောက်ပါ။",
"column_header.moveLeft_settings": "Move column to the left", "column_header.moveLeft_settings": "ကော်လံကို ဘယ်ဘက်သို့ ရွှေ့ပါ။",
"column_header.moveRight_settings": "Move column to the right", "column_header.moveRight_settings": "ကော်လံကို ညာဘက်သို့ ရွှေ့ပါ။",
"column_header.pin": "Pin", "column_header.pin": "ထိပ်တွင်တွဲထားမည်",
"column_header.show_settings": "Show settings", "column_header.show_settings": "ဆက်တင်များကို ပြပါ။",
"column_header.unpin": "Unpin", "column_header.unpin": "မတွဲတော့ပါ",
"column_subheading.settings": "ဆက်တင်များ", "column_subheading.settings": "ဆက်တင်များ",
"community.column_settings.local_only": "Local only", "community.column_settings.local_only": "Local only",
"community.column_settings.media_only": "Media only", "community.column_settings.media_only": "Media only",
"community.column_settings.remote_only": "Remote only", "community.column_settings.remote_only": "Remote only",
"compose.language.change": "Change language", "compose.language.change": "ဘာသာစကား ပြောင်းမည်",
"compose.language.search": "Search languages...", "compose.language.search": "ဘာသာစကားကိုရှာမည်",
"compose_form.direct_message_warning_learn_more": "Learn more", "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.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": "ဤပို့စ်သည် အများသူငှာမဟုတ်သောကြောင့် မည်သည့် hashtag အောက်တွင် ဖော်ပြမည်မဟုတ်ပါ။ အများသူငှာ ပို့စ်များကိုသာ hashtag ဖြင့် ရှာဖွေနိုင်သည်။",
"compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer": "သင့်အကောင့်ကို {သော့ခတ်မထားပါ}။ သင့်နောက်လိုက်-သီးသန့်ပို့စ်များကို ကြည့်ရှုရန် မည်သူမဆို သင့်အား လိုက်ကြည့်နိုင်ပါသည်။",
"compose_form.lock_disclaimer.lock": "locked", "compose_form.lock_disclaimer.lock": "သော့ခတ်ထားမယ်",
"compose_form.placeholder": "What is on your mind?", "compose_form.placeholder": "What is on your mind?",
"compose_form.poll.add_option": "Add a choice", "compose_form.poll.add_option": "ရွေးချယ်မှုထပ်မံပေါင်းထည့်ပါ",
"compose_form.poll.duration": "Poll duration", "compose_form.poll.duration": "စစ်တမ်းကြာချိန်",
"compose_form.poll.option_placeholder": "Choice {number}", "compose_form.poll.option_placeholder": "ရွေးချယ်မှု {number}\n",
"compose_form.poll.remove_option": "Remove this choice", "compose_form.poll.remove_option": "ဤရွေးချယ်မှုကို ဖယ်ထုတ်ပါ",
"compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", "compose_form.poll.switch_to_multiple": "စစ်တမ်းတွင်တစ်ခုထပ်ပိုသောဆန္ဒပြုချက်လက်ခံမည်",
"compose_form.poll.switch_to_single": "Change poll to allow for a single choice", "compose_form.poll.switch_to_single": "စစ်တမ်းတွင် တစ်ခုကိုသာရွေးချယ်ခွင့်ပြုမည်",
"compose_form.publish": "Publish", "compose_form.publish": "ပို့စ်တင်မည်",
"compose_form.publish_form": "Publish", "compose_form.publish_form": "ပို့စ်တင်မည်",
"compose_form.publish_loud": "{publish}!", "compose_form.publish_loud": "{publish}!",
"compose_form.save_changes": "Save changes", "compose_form.save_changes": "ပြောင်းလဲမှုများကို သိမ်းဆည်းပါ",
"compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}",
"compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}", "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}",
"compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}",
"compose_form.spoiler.marked": "Text is hidden behind warning", "compose_form.spoiler.marked": "Text is hidden behind warning",
"compose_form.spoiler.unmarked": "Text is not hidden", "compose_form.spoiler.unmarked": "Text is not hidden",
"compose_form.spoiler_placeholder": "Write your warning here", "compose_form.spoiler_placeholder": "သတိပေးစာကိုဤနေရာတွင်ရေးပါ",
"confirmation_modal.cancel": "Cancel", "confirmation_modal.cancel": "ပယ်ဖျက်မည်",
"confirmations.block.block_and_report": "Block & Report", "confirmations.block.block_and_report": "ဘလော့ပြီး တိုင်ကြားမည်",
"confirmations.block.confirm": "Block", "confirmations.block.confirm": "ဘလော့မည်",
"confirmations.block.message": "Are you sure you want to block {name}?", "confirmations.block.message": "အကောင့်မှ ထွက်ရန် သေချာပါသလား?",
"confirmations.cancel_follow_request.confirm": "Withdraw request", "confirmations.cancel_follow_request.confirm": "ပန်ကြားချက်ကို ပယ်ဖျက်မည်",
"confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.cancel_follow_request.message": "{name} ကိုဖော်လိုပယ်ဖျက်ရန် သေချာပါသလား။",
"confirmations.delete.confirm": "Delete", "confirmations.delete.confirm": "ဖျက်မည်",
"confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete.message": "Are you sure you want to delete this status?",
"confirmations.delete_list.confirm": "Delete", "confirmations.delete_list.confirm": "ဖျက်မည်",
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", "confirmations.delete_list.message": "ဖျက်ရန် သေချာပါသလား?",
"confirmations.discard_edit_media.confirm": "Discard", "confirmations.discard_edit_media.confirm": "ဖယ်ထုတ်ပါ",
"confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "confirmations.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.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.domain_block.message": "{domain} တစ်ခုလုံးကို ဘလော့လုပ်ရန် တကယ် သေချာပါသလား? များသောအားဖြင့် အနည်းစုကို ပစ်မှတ်ထား ဘလော့လုပ်ခြင်းသည် လုံလောက်ပါသည်။ ထို ဒိုမိန်းမှ အကြောင်းအရာ တစ်ခုမှ မြင်ရမည်မဟုတ်သည့်အပြင် ထို ဒိုမိန်းတွင်ရှိသော သင်၏ စောင့်ကြည့်သူများပါ ဖယ်ရှားပစ်မည်ဖြစ်သည်။",
"confirmations.logout.confirm": "Log out", "confirmations.logout.confirm": "အကောင့်မှထွက်မည်",
"confirmations.logout.message": "Are you sure you want to log out?", "confirmations.logout.message": "အကောင့်မှ ထွက်ရန် သေချာပါသလား?",
"confirmations.mute.confirm": "Mute", "confirmations.mute.confirm": "ပိတ်ထားရန်",
"confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.", "confirmations.mute.explanation": "၎င်းသည် ၎င်းတို့ထံမှ ပို့စ်များနှင့် ၎င်းတို့ကို ဖော်ပြထားသော ပို့စ်များကို ဖျောက်ထားမည်ဖြစ်ပြီး၊ သို့သော် ၎င်းတို့သည် သင့်ပို့စ်များကို မြင်နိုင်ပြီး သင့်အား လိုက်ကြည့်နိုင်စေမည်ဖြစ်သည်။",
"confirmations.mute.message": "Are you sure you want to mute {name}?", "confirmations.mute.message": "{name} ကို မမြင်လိုသည်မှာ သေချာပါသလား။ ",
"confirmations.redraft.confirm": "Delete & redraft", "confirmations.redraft.confirm": "ဖျက်ပြီး ပြန်လည်ရေးမည်။",
"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.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.confirm": "စာပြန်မည်",
"confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.reply.message": "စာပြန်လျှင်ယခင်စာများကိုအလိုအလျောက်ပျက်သွားစေမည်။ ဆက်လက်လုပ်ဆောင်မည်လား?",
"confirmations.unfollow.confirm": "Unfollow", "confirmations.unfollow.confirm": "ဖောလိုးဖြုတ်မည်",
"confirmations.unfollow.message": "Are you sure you want to unfollow {name}?", "confirmations.unfollow.message": "{name}ကိုဖောလိုးဖြုတ်မည်",
"conversation.delete": "Delete conversation", "conversation.delete": "ဤစကားပြောဆိုမှုကို ဖျက်ပစ်မည်",
"conversation.mark_as_read": "Mark as read", "conversation.mark_as_read": "ဖတ်ပြီးသားအဖြစ်မှတ်ထားပါ",
"conversation.open": "View conversation", "conversation.open": "Conversation ကိုကြည့်မည်",
"conversation.with": "With {names}", "conversation.with": "{အမည်များ} ဖြင့်",
"copypaste.copied": "Copied", "copypaste.copied": "ကူယူပြီးပါပြီ",
"copypaste.copy": "Copy", "copypaste.copy": "ကူးယူပါ",
"directory.federated": "From known fediverse", "directory.federated": "From known fediverse",
"directory.local": "From {domain} only", "directory.local": "{domain} မှသာလျှင်\n",
"directory.new_arrivals": "New arrivals", "directory.new_arrivals": "အသစ်ရောက်ရှိမှုများ",
"directory.recently_active": "Recently active", "directory.recently_active": "မကြာသေးခင်က ဖွင့်ထားသော",
"disabled_account_banner.account_settings": "Account settings", "disabled_account_banner.account_settings": "အကောင့်ဆက်တင်များ",
"disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "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": "These are the most recent public posts from people whose accounts are hosted by {domain}.",
"dismissable_banner.dismiss": "Dismiss", "dismissable_banner.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_links": "ဤသတင်းများကို ယခုအချိန်တွင် ဗဟိုချုပ်ကိုင်မှုလျှော့ချထားသော ကွန်ရက်၏ အခြားဆာဗာများမှ လူများက ပြောဆိုနေကြပါသည်။",
"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_statuses": "ဤစာများနှင့် ဗဟိုချုပ်ကိုင်မှုလျှော့ချထားသော ကွန်ရက်ရှိ အခြားဆာဗာများမှ ဤပို့စ်များသည် ယခုဆာဗာပေါ်တွင် ဆွဲဆောင်မှု ရှိလာပါသည်။",
"dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", "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": "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": "Embed this status on your website by copying the code below.", "embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:", "embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Activity", "emoji_button.activity": "Activity",
"emoji_button.clear": "Clear", "emoji_button.clear": "ရှင်းလင်းမည်",
"emoji_button.custom": "Custom", "emoji_button.custom": "Custom",
"emoji_button.flags": "Flags", "emoji_button.flags": "Flags",
"emoji_button.food": "Food & Drink", "emoji_button.food": "Food & Drink",
@ -211,11 +211,11 @@
"empty_column.account_suspended": "Account suspended", "empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "No posts found", "empty_column.account_timeline": "No posts found",
"empty_column.account_unavailable": "Profile unavailable", "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.", "empty_column.blocks": "ပိတ်ထားသောအကောင့်များမရှိသေးပါ",
"empty_column.bookmarked_statuses": "You don't have any bookmarked posts yet. When you bookmark one, it will show up here.", "empty_column.bookmarked_statuses": "You don't have any bookmarked posts yet. When you bookmark one, it will show up here.",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", "empty_column.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 direct messages yet. When you send or receive one, it will show up here.",
"empty_column.domain_blocks": "There are no blocked domains yet.", "empty_column.domain_blocks": "သင်ပိတ်ထားသော ဒိုမိန်းမရှိသေးပါ",
"empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
"empty_column.favourited_statuses": "You don't have any favourite posts yet. When you favourite one, it will show up here.", "empty_column.favourited_statuses": "You don't have any favourite posts yet. When you favourite one, it will show up here.",
"empty_column.favourites": "No one has favourited this post yet. When someone does, they will show up here.", "empty_column.favourites": "No one has favourited this post yet. When someone does, they will show up here.",
@ -224,11 +224,11 @@
"empty_column.followed_tags": "You have not followed any hashtags yet. When you do, they will show up here.", "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.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.home": "Your home timeline is empty! Follow more people to fill it up. {suggestions}",
"empty_column.home.suggestions": "See some 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.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
"empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.", "empty_column.lists": "သင့်တွင် List မရှိသေးပါ။ List အသစ်ဖွင့်လျှင် ဤနေရာတွင်ကြည့်ရှုနိုင်မည်",
"empty_column.mutes": "You haven't muted any users yet.", "empty_column.mutes": "ပိတ်ထားသောအကောင့်များမရှိသေးပါ",
"empty_column.notifications": "You don't have any notifications yet. When other people interact with you, you will see it here.", "empty_column.notifications": "သတိပေးချက်မရှိသေးပါ။ သတိပေးချက်အသစ်ရှိလျှင် ဤနေရာတွင်ကြည့်ရှုနိုင်သည်",
"empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up", "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": "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.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.",
@ -237,11 +237,11 @@
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue", "errors.unexpected_crash.report_issue": "Report issue",
"explore.search_results": "Search results", "explore.search_results": "Search results",
"explore.suggested_follows": "For you", "explore.suggested_follows": "သင့်အတွက်",
"explore.title": "Explore", "explore.title": "စူးစမ်းရန်",
"explore.trending_links": "News", "explore.trending_links": "သတင်းများ",
"explore.trending_statuses": "Posts", "explore.trending_statuses": "ပို့စ်တင်မယ်",
"explore.trending_tags": "Hashtags", "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_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.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_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.",
@ -252,7 +252,7 @@
"filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.",
"filter_modal.added.title": "Filter added!", "filter_modal.added.title": "Filter added!",
"filter_modal.select_filter.context_mismatch": "does not apply to this context", "filter_modal.select_filter.context_mismatch": "does not apply to this context",
"filter_modal.select_filter.expired": "expired", "filter_modal.select_filter.expired": "သက်တမ်းကုန်သွားပါပြီ",
"filter_modal.select_filter.prompt_new": "New category: {name}", "filter_modal.select_filter.prompt_new": "New category: {name}",
"filter_modal.select_filter.search": "Search or create", "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.subtitle": "Use an existing category or create a new one",
@ -265,16 +265,16 @@
"follow_request.reject": "Reject", "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.", "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", "followed_tags": "Followed hashtags",
"footer.about": "About", "footer.about": "အကြောင်း",
"footer.directory": "Profiles directory", "footer.directory": "Profiles directory",
"footer.get_app": "Get the app", "footer.get_app": "Get the app",
"footer.invite": "Invite people", "footer.invite": "Invite people",
"footer.keyboard_shortcuts": "Keyboard shortcuts", "footer.keyboard_shortcuts": "Keyboard shortcuts",
"footer.privacy_policy": "Privacy policy", "footer.privacy_policy": "Privacy policy",
"footer.source_code": "View source code", "footer.source_code": "မူရင်းကုဒ်အားကြည့်ရှုမည်",
"footer.status": "Status", "footer.status": "အခြေအနေ",
"generic.saved": "Saved", "generic.saved": "သိမ်းဆည်းထားပြီး",
"getting_started.heading": "Getting started", "getting_started.heading": "စတင်မည်",
"hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.all": "and {additional}",
"hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.any": "or {additional}",
"hashtag.column_header.tag_mode.none": "without {additional}", "hashtag.column_header.tag_mode.none": "without {additional}",
@ -296,7 +296,7 @@
"interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", "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.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_another_server": "On a different server",
"interaction_modal.on_this_server": "On this 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.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.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.favourite": "Favourite {name}'s post",
@ -311,7 +311,7 @@
"keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.boost": "to boost",
"keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.column": "to focus a status in one of the columns",
"keyboard_shortcuts.compose": "to focus the compose textarea", "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.direct": "to open direct messages column",
"keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.down": "to move down in the list",
"keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.enter": "to open status",
@ -320,7 +320,7 @@
"keyboard_shortcuts.federated": "to open federated timeline", "keyboard_shortcuts.federated": "to open federated timeline",
"keyboard_shortcuts.heading": "Keyboard Shortcuts", "keyboard_shortcuts.heading": "Keyboard Shortcuts",
"keyboard_shortcuts.home": "to open home timeline", "keyboard_shortcuts.home": "to open home timeline",
"keyboard_shortcuts.hotkey": "Hotkey", "keyboard_shortcuts.hotkey": "သော့ချက်",
"keyboard_shortcuts.legend": "to display this legend", "keyboard_shortcuts.legend": "to display this legend",
"keyboard_shortcuts.local": "to open local timeline", "keyboard_shortcuts.local": "to open local timeline",
"keyboard_shortcuts.mention": "to mention author", "keyboard_shortcuts.mention": "to mention author",
@ -340,39 +340,39 @@
"keyboard_shortcuts.toot": "to start a brand new post", "keyboard_shortcuts.toot": "to start a brand new post",
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search", "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
"keyboard_shortcuts.up": "to move up in the list", "keyboard_shortcuts.up": "to move up in the list",
"lightbox.close": "Close", "lightbox.close": "ပိတ်ပါ",
"lightbox.compress": "Compress image view box", "lightbox.compress": "Compress image view box",
"lightbox.expand": "Expand image view box", "lightbox.expand": "ပုံကိုဖွင့်ပါ",
"lightbox.next": "Next", "lightbox.next": "ရှေ့သို့",
"lightbox.previous": "Previous", "lightbox.previous": "Previous",
"limited_account_hint.action": "Show profile anyway", "limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.",
"lists.account.add": "Add to list", "lists.account.add": "စာရင်းထဲသို့ထည့်ပါ",
"lists.account.remove": "Remove from list", "lists.account.remove": "စာရင်းမှ ဖယ်ရှားလိုက်ပါ။",
"lists.delete": "Delete list", "lists.delete": "စာရင်းကိုဖျက်ပါ",
"lists.edit": "Edit list", "lists.edit": "စာရင်းကိုပြင်ဆင်ပါ",
"lists.edit.submit": "Change title", "lists.edit.submit": "ခေါင်းစဥ် ပြောင်းလဲရန်",
"lists.new.create": "Add list", "lists.new.create": "စာရင်းသွင်းပါ",
"lists.new.title_placeholder": "New list title", "lists.new.title_placeholder": "စာရင်းသစ်ခေါင်းစဥ်",
"lists.replies_policy.followed": "Any followed user", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list": "Members of the list", "lists.replies_policy.list": "စာရင်းထဲမှ အဖွဲ့ဝင်များ",
"lists.replies_policy.none": "No one", "lists.replies_policy.none": "တစ်ယောက်မှမရှိပါ",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Show replies to:",
"lists.search": "Search among people you follow", "lists.search": "မိမိဖောလိုးထားသူများမှရှာဖွေမည်",
"lists.subheading": "Your lists", "lists.subheading": "သင့်၏စာရင်းများ",
"load_pending": "{count, plural, one {# new item} other {# new items}}", "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}}", "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", "missing_indicator.sublabel": "ရှာဖွေနေသည်ကိုမတွေ့ပါ",
"moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "moved_to_account_banner.text": "{movedToAccount} အကောင့်သို့ပြောင်းလဲထားသဖြင့် {disabledAccount} အကောင့်မှာပိတ်ထားသည်",
"mute_modal.duration": "Duration", "mute_modal.duration": "ကြာချိန်",
"mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.hide_notifications": "ဤအကောင့်မှသတိပေးချက်များကိုပိတ်မလား?",
"mute_modal.indefinite": "Indefinite", "mute_modal.indefinite": "ရေတွက်လို့မရပါ",
"navigation_bar.about": "အကြောင်း", "navigation_bar.about": "အကြောင်း",
"navigation_bar.blocks": "Blocked users", "navigation_bar.blocks": "ဘလော့ထားသောအကောင့်များ",
"navigation_bar.bookmarks": "Bookmarks", "navigation_bar.bookmarks": "မှတ်ထားသည်များ",
"navigation_bar.community_timeline": "Local timeline", "navigation_bar.community_timeline": "ဒေသစံတော်ချိန်",
"navigation_bar.compose": "Compose new post", "navigation_bar.compose": "Compose new post",
"navigation_bar.direct": "Direct messages", "navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover", "navigation_bar.discover": "Discover",
@ -400,24 +400,24 @@
"notification.follow": "{name} followed you", "notification.follow": "{name} followed you",
"notification.follow_request": "{name} has requested to follow you", "notification.follow_request": "{name} has requested to follow you",
"notification.mention": "{name} mentioned you", "notification.mention": "{name} mentioned you",
"notification.own_poll": "Your poll has ended", "notification.own_poll": "စစ်တမ်းကောက်မှု ပြီးဆုံးပါပြီ",
"notification.poll": "A poll you have voted in has ended", "notification.poll": "သင်ပါဝင်ခဲ့သော စစ်တမ်းပြီးပါပြီ",
"notification.reblog": "{name} boosted your status", "notification.reblog": "{name} boosted your status",
"notification.status": "{name} just posted", "notification.status": "{name} just posted",
"notification.update": "{name} edited a post", "notification.update": "{name} edited a post",
"notifications.clear": "Clear notifications", "notifications.clear": "အသိပေးချက်များအား ရှင်းလင်းပါ",
"notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", "notifications.clear_confirmation": "သတိပေးချက်အားလုံးကို အပြီးတိုင်ဖယ်ရှားမည်",
"notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.report": "New reports:",
"notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.admin.sign_up": "New sign-ups:",
"notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.alert": "Desktop သတိပေးချက်များ",
"notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.favourite": "ကြိုက်နှစ်သက်မှုများ",
"notifications.column_settings.filter_bar.advanced": "Display all categories", "notifications.column_settings.filter_bar.advanced": "ခေါင်းစဥ်အားလုံးများကိုဖော်ပြပါ",
"notifications.column_settings.filter_bar.category": "Quick filter bar", "notifications.column_settings.filter_bar.category": "Quick filter bar",
"notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.filter_bar.show_bar": "Show filter bar",
"notifications.column_settings.follow": "New followers:", "notifications.column_settings.follow": "New followers:",
"notifications.column_settings.follow_request": "New follow requests:", "notifications.column_settings.follow_request": "New follow requests:",
"notifications.column_settings.mention": "Mentions:", "notifications.column_settings.mention": "Mentions:",
"notifications.column_settings.poll": "Poll results:", "notifications.column_settings.poll": "စစ်တမ်းရလဒ်",
"notifications.column_settings.push": "Push notifications", "notifications.column_settings.push": "Push notifications",
"notifications.column_settings.reblog": "Boosts:", "notifications.column_settings.reblog": "Boosts:",
"notifications.column_settings.show": "Show in column", "notifications.column_settings.show": "Show in column",
@ -426,14 +426,14 @@
"notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.category": "Unread notifications",
"notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications",
"notifications.column_settings.update": "Edits:", "notifications.column_settings.update": "Edits:",
"notifications.filter.all": "All", "notifications.filter.all": "အားလုံး",
"notifications.filter.boosts": "Boosts", "notifications.filter.boosts": "အားပေးမည်",
"notifications.filter.favourites": "Favourites", "notifications.filter.favourites": "ကြိုက်နှစ်သက်မှုများ",
"notifications.filter.follows": "Follows", "notifications.filter.follows": "ဖောလိုးမည်",
"notifications.filter.mentions": "Mentions", "notifications.filter.mentions": " မန်းရှင်းမည်",
"notifications.filter.polls": "Poll results", "notifications.filter.polls": "စစ်တမ်းရလဒ်",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "Updates from people you follow",
"notifications.grant_permission": "Grant permission.", "notifications.grant_permission": "ခွင့်ပြုချက်ပေးမည်",
"notifications.group": "{count} notifications", "notifications.group": "{count} notifications",
"notifications.mark_as_read": "Mark every notification as read", "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": "Desktop notifications are unavailable due to previously denied browser permissions request",
@ -443,19 +443,19 @@
"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.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", "notifications_permission_banner.title": "Never miss a thing",
"picture_in_picture.restore": "Put it back", "picture_in_picture.restore": "Put it back",
"poll.closed": "Closed", "poll.closed": "ပိတ်သွားပြီ",
"poll.refresh": "Refresh", "poll.refresh": "ပြန်ဖွင့်မည်",
"poll.total_people": "{count, plural, one {# person} other {# people}}", "poll.total_people": "{count, plural, one {# person} other {# people}}",
"poll.total_votes": "{count, plural, one {# vote} other {# votes}}", "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
"poll.vote": "Vote", "poll.vote": "မဲပေးမည်",
"poll.voted": "You voted for this answer", "poll.voted": "သင်ဤအဖြေကိုမဲပေးခဲ့သည်",
"poll.votes": "{votes, plural, one {# vote} other {# votes}}", "poll.votes": "{votes, plural, one {# vote} other {# votes}}",
"poll_button.add_poll": "Add a poll", "poll_button.add_poll": "စစ်တမ်းကောက်မည်",
"poll_button.remove_poll": "Remove poll", "poll_button.remove_poll": "စစ်တမ်းပယ်ဖျက်မည်",
"privacy.change": "Adjust status privacy", "privacy.change": "Adjust status privacy",
"privacy.direct.long": "Visible for mentioned users only", "privacy.direct.long": "မန်းရှင်းခေါ်သူသီးသန့်",
"privacy.direct.short": "Direct", "privacy.direct.short": "Direct",
"privacy.private.long": "Visible for followers only", "privacy.private.long": "ဖော်လိုးလုပ်သူသီးသန့်",
"privacy.private.short": "Followers-only", "privacy.private.short": "Followers-only",
"privacy.public.long": "Visible for all", "privacy.public.long": "Visible for all",
"privacy.public.short": "Public", "privacy.public.short": "Public",
@ -476,28 +476,28 @@
"relative_time.just_now": "now", "relative_time.just_now": "now",
"relative_time.minutes": "{number}m", "relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s", "relative_time.seconds": "{number}s",
"relative_time.today": "today", "relative_time.today": "ယနေ့",
"reply_indicator.cancel": "Cancel", "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.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.other": "အခြား",
"report.categories.spam": "Spam", "report.categories.spam": "ပြင်ပစာများ",
"report.categories.violation": "Content violates one or more server rules", "report.categories.violation": "ဤစာတွင် သတ်မှတ်ထားသောစည်းကမ်းများကို ဖောက်ဖျက်သောအကြောင်းအရာပါဝင်နေသည်",
"report.category.subtitle": "Choose the best match", "report.category.subtitle": "အကိုက်ညီဆုံးကိုရွေးချယ်ပါ",
"report.category.title": "Tell us what's going on with this {type}", "report.category.title": "Tell us what's going on with this {type}",
"report.category.title_account": "ကိုယ်ရေးမှတ်တမ်း", "report.category.title_account": "ကိုယ်ရေးမှတ်တမ်း",
"report.category.title_status": "post", "report.category.title_status": "ပို့စ်",
"report.close": "Done", "report.close": "ပြီးပြီ",
"report.comment.title": "Is there anything else you think we should know?", "report.comment.title": "မိမိထင်မြင်ယူဆချက်များကိုဖော်ပြပေးပါ",
"report.forward": "Forward to {target}", "report.forward": "{target} သို့တစ်ဆင့်ပို့ပေးမည်",
"report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", "report.forward_hint": "ဤအကောင့်မှာတစ်ခြားဆာဗာမှဖြစ်သည်။ အမည်မသိတိုင်းကြားချက်ဖွင့်လိုပါသလား?",
"report.mute": "Mute", "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": "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.next": "ရှေ့သို့",
"report.placeholder": "Type or paste additional comments", "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.dislike_description": "ပိုမိုမြင်လိုသည်ရှိပါသလား",
"report.reasons.other": "It's something else", "report.reasons.other": "တစ်ခုခုဖြစ်နေသည်",
"report.reasons.other_description": "The issue does not fit into other categories", "report.reasons.other_description": "The issue does not fit into other categories",
"report.reasons.spam": "It's spam", "report.reasons.spam": "It's spam",
"report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
@ -520,19 +520,19 @@
"report_notification.categories.spam": "Spam", "report_notification.categories.spam": "Spam",
"report_notification.categories.violation": "Rule violation", "report_notification.categories.violation": "Rule violation",
"report_notification.open": "Open report", "report_notification.open": "Open report",
"search.placeholder": "Search", "search.placeholder": "ရှာဖွေရန်",
"search.search_or_paste": "Search or paste URL", "search.search_or_paste": "URL ရိုက်ထည့်ပါ သို့မဟုတ် ရှာဖွေပါ",
"search_popout.search_format": "Advanced search format", "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.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
"search_popout.tips.hashtag": "hashtag", "search_popout.tips.hashtag": "ဟက်ရှ်တက်ခ်",
"search_popout.tips.status": "status", "search_popout.tips.status": "ပို့စ်",
"search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
"search_popout.tips.user": "user", "search_popout.tips.user": "အသုံးပြုသူ",
"search_results.accounts": "People", "search_results.accounts": "လူပုဂ္ဂိုလ်",
"search_results.all": "All", "search_results.all": "အားလုံး",
"search_results.hashtags": "ဟက်ရှ်တက်များ", "search_results.hashtags": "ဟက်ရှ်တက်များ",
"search_results.nothing_found": "Could not find anything for these search terms", "search_results.nothing_found": "ရှာဖွေလိုသောအရာမရှိပါ",
"search_results.statuses": "Posts", "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": "Searching posts by their content is not enabled on this Mastodon server.",
"search_results.title": "Search for {q}", "search_results.title": "Search for {q}",
"search_results.total": "{count, number} {count, plural, one {result} other {results}}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
@ -548,7 +548,7 @@
"status.admin_account": "Open moderation interface for @{name}", "status.admin_account": "Open moderation interface for @{name}",
"status.admin_domain": "Open moderation interface for {domain}", "status.admin_domain": "Open moderation interface for {domain}",
"status.admin_status": "Open this status in the moderation interface", "status.admin_status": "Open this status in the moderation interface",
"status.block": "Block @{name}", "status.block": "@{name} ကိုဘလော့မည်",
"status.bookmark": "Bookmark", "status.bookmark": "Bookmark",
"status.cancel_reblog_private": "Unboost", "status.cancel_reblog_private": "Unboost",
"status.cannot_reblog": "This post cannot be boosted", "status.cannot_reblog": "This post cannot be boosted",
@ -560,10 +560,10 @@
"status.edited": "Edited {date}", "status.edited": "Edited {date}",
"status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}",
"status.embed": "Embed", "status.embed": "Embed",
"status.favourite": "Favourite", "status.favourite": "ကြိုက်နှစ်သက်မှုများ",
"status.filter": "Filter this post", "status.filter": "Filter this post",
"status.filtered": "Filtered", "status.filtered": "Filtered",
"status.hide": "Hide post", "status.hide": "ပို့စ်ကိုပိတ်ထားမည်",
"status.history.created": "{name} created {date}", "status.history.created": "{name} created {date}",
"status.history.edited": "{name} edited {date}", "status.history.edited": "{name} edited {date}",
"status.load_more": "Load more", "status.load_more": "Load more",
@ -572,7 +572,7 @@
"status.more": "More", "status.more": "More",
"status.mute": "Mute @{name}", "status.mute": "Mute @{name}",
"status.mute_conversation": "Mute conversation", "status.mute_conversation": "Mute conversation",
"status.open": "Expand this status", "status.open": "ပို့စ်ကိုချဲ့ထွင်မည်",
"status.pin": "Pin on profile", "status.pin": "Pin on profile",
"status.pinned": "Pinned post", "status.pinned": "Pinned post",
"status.read_more": "Read more", "status.read_more": "Read more",
@ -626,14 +626,14 @@
"upload_area.title": "Drag & drop to upload", "upload_area.title": "Drag & drop to upload",
"upload_button.label": "Add images, a video or an audio file", "upload_button.label": "Add images, a video or an audio file",
"upload_error.limit": "File upload limit exceeded.", "upload_error.limit": "File upload limit exceeded.",
"upload_error.poll": "File upload not allowed with polls.", "upload_error.poll": "စစ်တမ်းနှင့်အတူဖိုင်များတင်ခွင့်မပြုပါ",
"upload_form.audio_description": "Describe for people with hearing loss", "upload_form.audio_description": "အကြားအာရုံချို့ယွင်းသော ခက်ခဲသောသူများအတွက် ဖော်ပြထားသည်",
"upload_form.description": "Describe for the visually impaired", "upload_form.description": "အမြင်အာရုံချို့ယွင်းသော ခက်ခဲသောသူများအတွက် ဖော်ပြထားသည်",
"upload_form.description_missing": "No description added", "upload_form.description_missing": "No description added",
"upload_form.edit": "Edit", "upload_form.edit": "Edit",
"upload_form.thumbnail": "Change thumbnail", "upload_form.thumbnail": "Change thumbnail",
"upload_form.undo": "Delete", "upload_form.undo": "Delete",
"upload_form.video_description": "Describe for people with hearing loss or visual impairment", "upload_form.video_description": "အမြင်အာရုံနှင့်အကြားအာရုံ ချို့ယွင်းသော ခက်ခဲသောသူများအတွက် ဖော်ပြထားသည်",
"upload_modal.analyzing_picture": "Analyzing picture…", "upload_modal.analyzing_picture": "Analyzing picture…",
"upload_modal.apply": "Apply", "upload_modal.apply": "Apply",
"upload_modal.applying": "Applying…", "upload_modal.applying": "Applying…",
@ -644,7 +644,7 @@
"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": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
"upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preparing_ocr": "Preparing OCR…",
"upload_modal.preview_label": "Preview ({ratio})", "upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "Uploading…", "upload_progress.label": "တင်နေသည်...",
"upload_progress.processing": "Processing…", "upload_progress.processing": "Processing…",
"video.close": "Close video", "video.close": "Close video",
"video.download": "Download file", "video.download": "Download file",

@ -65,7 +65,7 @@
"account.unfollow": "Deixar de seguir", "account.unfollow": "Deixar de seguir",
"account.unmute": "Dessilenciar @{name}", "account.unmute": "Dessilenciar @{name}",
"account.unmute_notifications": "Mostrar notificações de @{name}", "account.unmute_notifications": "Mostrar notificações de @{name}",
"account.unmute_short": "Dessilenciar", "account.unmute_short": "Desativar silêncio",
"account_note.placeholder": "Nota pessoal sobre este perfil aqui", "account_note.placeholder": "Nota pessoal sobre este perfil aqui",
"admin.dashboard.daily_retention": "Taxa de retenção de usuários por dia, após a inscrição", "admin.dashboard.daily_retention": "Taxa de retenção de usuários por dia, após a inscrição",
"admin.dashboard.monthly_retention": "Taxa de retenção de usuários por mês, após a inscrição", "admin.dashboard.monthly_retention": "Taxa de retenção de usuários por mês, após a inscrição",
@ -82,7 +82,7 @@
"autosuggest_hashtag.per_week": "{count} por semana", "autosuggest_hashtag.per_week": "{count} por semana",
"boost_modal.combo": "Pressione {combo} para pular isso na próxima vez", "boost_modal.combo": "Pressione {combo} para pular isso na próxima vez",
"bundle_column_error.copy_stacktrace": "Copiar relatório do erro", "bundle_column_error.copy_stacktrace": "Copiar relatório do erro",
"bundle_column_error.error.body": "A página solicitada não pode ser renderizada. Pode ser devido a um erro em nosso código ou um problema de compatibilidade do navegador.", "bundle_column_error.error.body": "A página solicitada não pôde ser renderizada. Pode ser devido a um erro no nosso código, ou um problema de compatibilidade do seu navegador.",
"bundle_column_error.error.title": "Ah, não!", "bundle_column_error.error.title": "Ah, não!",
"bundle_column_error.network.body": "Ocorreu um erro ao tentar carregar esta página. Isso pode ser devido a um problema temporário com sua conexão de internet ou deste servidor.", "bundle_column_error.network.body": "Ocorreu um erro ao tentar carregar esta página. Isso pode ser devido a um problema temporário com sua conexão de internet ou deste servidor.",
"bundle_column_error.network.title": "Erro de rede", "bundle_column_error.network.title": "Erro de rede",

@ -54,7 +54,7 @@
"account.posts_with_replies": "Postări și răspunsuri", "account.posts_with_replies": "Postări și răspunsuri",
"account.report": "Raportează pe @{name}", "account.report": "Raportează pe @{name}",
"account.requested": "Se așteaptă aprobarea. Apasă pentru a anula cererea de urmărire", "account.requested": "Se așteaptă aprobarea. Apasă pentru a anula cererea de urmărire",
"account.requested_follow": "{name} has requested to follow you", "account.requested_follow": "{name} A cerut să vă urmărească",
"account.share": "Distribuie profilul lui @{name}", "account.share": "Distribuie profilul lui @{name}",
"account.show_reblogs": "Arată impulsurile de la @{name}", "account.show_reblogs": "Arată impulsurile de la @{name}",
"account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
@ -128,7 +128,7 @@
"compose.language.search": "Căutare limbi…", "compose.language.search": "Căutare limbi…",
"compose_form.direct_message_warning_learn_more": "Află mai multe", "compose_form.direct_message_warning_learn_more": "Află mai multe",
"compose_form.encryption_warning": "Postările pe Mastodon nu sunt criptate în ambele părți. Nu împărtășiți nici o informație sensibilă pe Mastodon.", "compose_form.encryption_warning": "Postările pe Mastodon nu sunt criptate în ambele părți. Nu împărtășiți nici o informație sensibilă pe 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": "Această postare nu va fi listată sub niciun hashtag, deoarece nu este publică. Doar postările publice pot fi căutate de hashtag.",
"compose_form.lock_disclaimer": "Contul tău nu este {locked}. Oricine se poate abona la tine pentru a îți vedea postările numai pentru abonați.", "compose_form.lock_disclaimer": "Contul tău nu este {locked}. Oricine se poate abona la tine pentru a îți vedea postările numai pentru abonați.",
"compose_form.lock_disclaimer.lock": "privat", "compose_form.lock_disclaimer.lock": "privat",
"compose_form.placeholder": "La ce te gândești?", "compose_form.placeholder": "La ce te gândești?",
@ -221,7 +221,7 @@
"empty_column.favourites": "Momentan nimeni nu a adăugat această postare la favorite. Când cineva o va face, va apărea aici.", "empty_column.favourites": "Momentan nimeni nu a adăugat această postare la favorite. Când cineva o va face, va apărea aici.",
"empty_column.follow_recommendations": "Se pare că nu am putut genera nicio sugestie pentru tine. Poți încerca funcția de căutare pentru a căuta persoane pe care le cunoști, sau poți explora tendințele.", "empty_column.follow_recommendations": "Se pare că nu am putut genera nicio sugestie pentru tine. Poți încerca funcția de căutare pentru a căuta persoane pe care le cunoști, sau poți explora tendințele.",
"empty_column.follow_requests": "Momentan nu ai nicio cerere de abonare. Când vei primi una, va apărea aici.", "empty_column.follow_requests": "Momentan nu ai nicio cerere de abonare. Când vei primi una, va apărea aici.",
"empty_column.followed_tags": "You have not followed any hashtags yet. When you do, they will show up here.", "empty_column.followed_tags": "Încă nu urmăriți niciun harstag -uri. Când o vei face, vor apărea aici.",
"empty_column.hashtag": "Acest hashtag încă nu a fost folosit.", "empty_column.hashtag": "Acest hashtag încă nu a fost folosit.",
"empty_column.home": "Nu există nimic în cronologia ta! Abonează-te la mai multe persoane pentru a o umple. {suggestions}", "empty_column.home": "Nu există nimic în cronologia ta! Abonează-te la mai multe persoane pentru a o umple. {suggestions}",
"empty_column.home.suggestions": "Vezi sugestiile", "empty_column.home.suggestions": "Vezi sugestiile",
@ -237,11 +237,11 @@
"errors.unexpected_crash.copy_stacktrace": "Copiere stacktrace în clipboard", "errors.unexpected_crash.copy_stacktrace": "Copiere stacktrace în clipboard",
"errors.unexpected_crash.report_issue": "Raportează o problemă", "errors.unexpected_crash.report_issue": "Raportează o problemă",
"explore.search_results": "Rezultatele căutării", "explore.search_results": "Rezultatele căutării",
"explore.suggested_follows": "For you", "explore.suggested_follows": "Pentru tine",
"explore.title": "Explorează", "explore.title": "Explorează",
"explore.trending_links": "News", "explore.trending_links": "Noutăți",
"explore.trending_statuses": "Posts", "explore.trending_statuses": "Postări",
"explore.trending_tags": "Hashtags", "explore.trending_tags": "Hastaguri",
"filter_modal.added.context_mismatch_explanation": "Această categorie de filtre nu se aplică în contextul în care ați accesat acestă postare. Dacă doriți ca postarea să fie filtrată și în acest context, va trebui să editați filtrul.", "filter_modal.added.context_mismatch_explanation": "Această categorie de filtre nu se aplică în contextul în care ați accesat acestă postare. Dacă doriți ca postarea să fie filtrată și în acest context, va trebui să editați filtrul.",
"filter_modal.added.context_mismatch_title": "Nepotrivire contextuală!", "filter_modal.added.context_mismatch_title": "Nepotrivire contextuală!",
"filter_modal.added.expired_explanation": "Această categorie de filtre a expirat, va trebui să modifici data de expirare pentru ca aceasta să se aplice.", "filter_modal.added.expired_explanation": "Această categorie de filtre a expirat, va trebui să modifici data de expirare pentru ca aceasta să se aplice.",
@ -264,7 +264,7 @@
"follow_request.authorize": "Acceptă", "follow_request.authorize": "Acceptă",
"follow_request.reject": "Respinge", "follow_request.reject": "Respinge",
"follow_requests.unlocked_explanation": "Chiar dacă contul tău nu este blocat, personalul {domain} a considerat că ai putea prefera să consulți manual cererile de abonare de la aceste conturi.", "follow_requests.unlocked_explanation": "Chiar dacă contul tău nu este blocat, personalul {domain} a considerat că ai putea prefera să consulți manual cererile de abonare de la aceste conturi.",
"followed_tags": "Followed hashtags", "followed_tags": "Hastaguri urmărite",
"footer.about": "Despre", "footer.about": "Despre",
"footer.directory": "Catalogul de profiluri", "footer.directory": "Catalogul de profiluri",
"footer.get_app": "Obține aplicația", "footer.get_app": "Obține aplicația",
@ -382,7 +382,7 @@
"navigation_bar.favourites": "Favorite", "navigation_bar.favourites": "Favorite",
"navigation_bar.filters": "Cuvinte ignorate", "navigation_bar.filters": "Cuvinte ignorate",
"navigation_bar.follow_requests": "Cereri de abonare", "navigation_bar.follow_requests": "Cereri de abonare",
"navigation_bar.followed_tags": "Followed hashtags", "navigation_bar.followed_tags": "Hashtag-uri urmărite",
"navigation_bar.follows_and_followers": "Abonamente și abonați", "navigation_bar.follows_and_followers": "Abonamente și abonați",
"navigation_bar.lists": "Liste", "navigation_bar.lists": "Liste",
"navigation_bar.logout": "Deconectare", "navigation_bar.logout": "Deconectare",
@ -544,7 +544,7 @@
"server_banner.server_stats": "Statisticile serverului:", "server_banner.server_stats": "Statisticile serverului:",
"sign_in_banner.create_account": "Creează-ți un cont", "sign_in_banner.create_account": "Creează-ți un cont",
"sign_in_banner.sign_in": "Conectează-te", "sign_in_banner.sign_in": "Conectează-te",
"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": "Conectează-te pentru a te abona la profiluri și haștaguri, pentru a aprecia, distribui și a răspunde postărilor, sau interacționează folosindu-ți contul de pe un alt server.",
"status.admin_account": "Deschide interfața de moderare pentru @{name}", "status.admin_account": "Deschide interfața de moderare pentru @{name}",
"status.admin_domain": "Open moderation interface for {domain}", "status.admin_domain": "Open moderation interface for {domain}",
"status.admin_status": "Deschide această stare în interfața de moderare", "status.admin_status": "Deschide această stare în interfața de moderare",

@ -218,7 +218,7 @@
"empty_column.domain_blocks": "Žiadne domény ešte niesú skryté.", "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.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.", "empty_column.favourited_statuses": "Nemáš obľúbené ešte žiadne príspevky. Keď si nejaký obľúbiš, bude zobrazený práve tu.",
"empty_column.favourites": "Tento toot si ešte nikto neobľúbil. Ten kto si ho obľúbi, bude zobrazený tu.", "empty_column.favourites": "Ešte si tento príspevok nikto neobľúbil. Keď si ho niekto obľúbi, bude zobrazený tu.",
"empty_column.follow_recommendations": "Zdá sa že pre Vás nemohli byť vygenerované žiadne návrhy. Môžete skúsiť použiť vyhľadávanie aby ste našli ľudi ktorých poznáte, alebo preskúmať trendujúce heštegy.", "empty_column.follow_recommendations": "Zdá sa že pre Vás nemohli byť vygenerované žiadne návrhy. Môžete skúsiť použiť vyhľadávanie aby ste našli ľudi ktorých poznáte, alebo preskúmať trendujúce heštegy.",
"empty_column.follow_requests": "Ešte nemáš žiadne požiadavky o následovanie. Keď nejaké dostaneš, budú tu zobrazené.", "empty_column.follow_requests": "Ešte nemáš žiadne požiadavky o následovanie. Keď nejaké dostaneš, budú tu zobrazené.",
"empty_column.followed_tags": "Ešte nenasleduješ žiadne haštagy. Keď tak urobíš, zobrazia sa tu.", "empty_column.followed_tags": "Ešte nenasleduješ žiadne haštagy. Keď tak urobíš, zobrazia sa tu.",

@ -152,7 +152,7 @@
"confirmations.block.block_and_report": "封鎖並檢舉", "confirmations.block.block_and_report": "封鎖並檢舉",
"confirmations.block.confirm": "封鎖", "confirmations.block.confirm": "封鎖",
"confirmations.block.message": "您確定要封鎖 {name} ", "confirmations.block.message": "您確定要封鎖 {name} ",
"confirmations.cancel_follow_request.confirm": "收回請求", "confirmations.cancel_follow_request.confirm": "收回跟隨請求",
"confirmations.cancel_follow_request.message": "您確定要收回跟隨 {name} 的請求嗎?", "confirmations.cancel_follow_request.message": "您確定要收回跟隨 {name} 的請求嗎?",
"confirmations.delete.confirm": "刪除", "confirmations.delete.confirm": "刪除",
"confirmations.delete.message": "您確定要刪除這則嘟文?", "confirmations.delete.message": "您確定要刪除這則嘟文?",

@ -3,7 +3,7 @@
const checkNotificationPromise = () => { const checkNotificationPromise = () => {
try { try {
// eslint-disable-next-line promise/catch-or-return // eslint-disable-next-line promise/catch-or-return, promise/valid-params
Notification.requestPermission().then(); Notification.requestPermission().then();
} catch(e) { } catch(e) {
return false; return false;

@ -27,14 +27,12 @@ class ActivityTracker
(start_at.to_date...end_at.to_date).map do |date| (start_at.to_date...end_at.to_date).map do |date|
key = key_at(date.to_time(:utc)) key = key_at(date.to_time(:utc))
value = begin value = case @type
case @type when :basic
when :basic redis.get(key).to_i
redis.get(key).to_i when :unique
when :unique redis.pfcount(key)
redis.pfcount(key) end
end
end
[date, value] [date, value]
end end

@ -108,26 +108,24 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
def process_status_params def process_status_params
@status_parser = ActivityPub::Parser::StatusParser.new(@json, followers_collection: @account.followers_url) @status_parser = ActivityPub::Parser::StatusParser.new(@json, followers_collection: @account.followers_url)
@params = begin @params = {
{ uri: @status_parser.uri,
uri: @status_parser.uri, url: @status_parser.url || @status_parser.uri,
url: @status_parser.url || @status_parser.uri, account: @account,
account: @account, text: converted_object_type? ? converted_text : (@status_parser.text || ''),
text: converted_object_type? ? converted_text : (@status_parser.text || ''), language: @status_parser.language,
language: @status_parser.language, spoiler_text: converted_object_type? ? '' : (@status_parser.spoiler_text || ''),
spoiler_text: converted_object_type? ? '' : (@status_parser.spoiler_text || ''), created_at: @status_parser.created_at,
created_at: @status_parser.created_at, edited_at: @status_parser.edited_at && @status_parser.edited_at != @status_parser.created_at ? @status_parser.edited_at : nil,
edited_at: @status_parser.edited_at && @status_parser.edited_at != @status_parser.created_at ? @status_parser.edited_at : nil, override_timestamps: @options[:override_timestamps],
override_timestamps: @options[:override_timestamps], reply: @status_parser.reply,
reply: @status_parser.reply, sensitive: @account.sensitized? || @status_parser.sensitive || false,
sensitive: @account.sensitized? || @status_parser.sensitive || false, visibility: @status_parser.visibility,
visibility: @status_parser.visibility, thread: replied_to_status,
thread: replied_to_status, conversation: conversation_from_uri(@object['conversation']),
conversation: conversation_from_uri(@object['conversation']), media_attachment_ids: process_attachments.take(4).map(&:id),
media_attachment_ids: process_attachments.take(4).map(&:id), poll: process_poll,
poll: process_poll, }
}
end
end end
def process_audience def process_audience
@ -327,7 +325,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
def resolve_thread(status) def resolve_thread(status)
return unless status.reply? && status.thread.nil? && Request.valid_url?(in_reply_to_uri) return unless status.reply? && status.thread.nil? && Request.valid_url?(in_reply_to_uri)
ThreadResolveWorker.perform_async(status.id, in_reply_to_uri, { 'request_id' => @options[:request_id]}) ThreadResolveWorker.perform_async(status.id, in_reply_to_uri, { 'request_id' => @options[:request_id] })
end end
def fetch_replies(status) def fetch_replies(status)
@ -338,7 +336,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
return unless replies.nil? return unless replies.nil?
uri = value_or_id(collection) uri = value_or_id(collection)
ActivityPub::FetchRepliesWorker.perform_async(status.id, uri, { 'request_id' => @options[:request_id]}) unless uri.nil? ActivityPub::FetchRepliesWorker.perform_async(status.id, uri, { 'request_id' => @options[:request_id] }) unless uri.nil?
end end
def conversation_from_uri(uri) def conversation_from_uri(uri)

@ -28,13 +28,11 @@ class ActivityPub::Forwarder
end end
def signature_account_id def signature_account_id
@signature_account_id ||= begin @signature_account_id ||= if in_reply_to_local?
if in_reply_to_local? in_reply_to.account_id
in_reply_to.account_id else
else reblogged_by_account_ids.first
reblogged_by_account_ids.first end
end
end
end end
def inboxes def inboxes

@ -27,9 +27,7 @@ class ActivityPub::LinkedDataSignature
document_hash = hash(@json.without('signature')) document_hash = hash(@json.without('signature'))
to_be_verified = options_hash + document_hash to_be_verified = options_hash + document_hash
if creator.keypair.public_key.verify(OpenSSL::Digest.new('SHA256'), Base64.decode64(signature), to_be_verified) creator if creator.keypair.public_key.verify(OpenSSL::Digest.new('SHA256'), Base64.decode64(signature), to_be_verified)
creator
end
end end
def sign!(creator, sign_with: nil) def sign!(creator, sign_with: nil)

@ -50,9 +50,7 @@ class ActivityPub::Parser::MediaAttachmentParser
components = begin components = begin
blurhash = @json['blurhash'] blurhash = @json['blurhash']
if blurhash.present? && /^[\w#$%*+,-.:;=?@\[\]^{|}~]+$/.match?(blurhash) Blurhash.components(blurhash) if blurhash.present? && /^[\w#$%*+,-.:;=?@\[\]^{|}~]+$/.match?(blurhash)
Blurhash.components(blurhash)
end
end end
components.present? && components.none? { |comp| comp > 5 } components.present? && components.none? { |comp| comp > 5 }

@ -58,12 +58,10 @@ class Admin::Metrics::Dimension::SoftwareVersionsDimension < Admin::Metrics::Dim
end end
def redis_info def redis_info
@redis_info ||= begin @redis_info ||= if redis.is_a?(Redis::Namespace)
if redis.is_a?(Redis::Namespace) redis.redis.info
redis.redis.info else
else redis.info
redis.info end
end
end
end end
end end

@ -59,12 +59,10 @@ class Admin::Metrics::Dimension::SpaceUsageDimension < Admin::Metrics::Dimension
end end
def redis_info def redis_info
@redis_info ||= begin @redis_info ||= if redis.is_a?(Redis::Namespace)
if redis.is_a?(Redis::Namespace) redis.redis.info
redis.redis.info else
else redis.info
redis.info end
end
end
end end
end end

@ -8,12 +8,10 @@ module Extractor
module_function module_function
def extract_entities_with_indices(text, options = {}, &block) def extract_entities_with_indices(text, options = {}, &block)
entities = begin entities = extract_urls_with_indices(text, options) +
extract_urls_with_indices(text, options) + extract_hashtags_with_indices(text, check_url_overlap: false) +
extract_hashtags_with_indices(text, check_url_overlap: false) + extract_mentions_or_lists_with_indices(text) +
extract_mentions_or_lists_with_indices(text) + extract_extra_uris_with_indices(text)
extract_extra_uris_with_indices(text)
end
return [] if entities.empty? return [] if entities.empty?
@ -29,7 +27,7 @@ module Extractor
text.scan(Account::MENTION_RE) do |screen_name, _| text.scan(Account::MENTION_RE) do |screen_name, _|
match_data = $LAST_MATCH_INFO match_data = $LAST_MATCH_INFO
after = $' after = ::Regexp.last_match.post_match
unless Twitter::TwitterText::Regex[:end_mention_match].match?(after) unless Twitter::TwitterText::Regex[:end_mention_match].match?(after)
_, domain = screen_name.split('@') _, domain = screen_name.split('@')
@ -64,7 +62,7 @@ module Extractor
match_data = $LAST_MATCH_INFO match_data = $LAST_MATCH_INFO
start_position = match_data.char_begin(1) - 1 start_position = match_data.char_begin(1) - 1
end_position = match_data.char_end(1) end_position = match_data.char_end(1)
after = $' after = ::Regexp.last_match.post_match
if %r{\A://}.match?(after) if %r{\A://}.match?(after)
hash_text.match(/(.+)(https?\Z)/) do |matched| hash_text.match(/(.+)(https?\Z)/) do |matched|

@ -24,13 +24,11 @@ class Importer::StatusesIndexImporter < Importer::BaseImporter
# is called before rendering the data and we need to filter based # is called before rendering the data and we need to filter based
# on the results of the filter, so this filtering happens here instead # on the results of the filter, so this filtering happens here instead
bulk.map! do |entry| bulk.map! do |entry|
new_entry = begin new_entry = if entry[:index] && entry.dig(:index, :data, 'searchable_by').blank?
if entry[:index] && entry.dig(:index, :data, 'searchable_by').blank? { delete: entry[:index].except(:data) }
{ delete: entry[:index].except(:data) } else
else entry
entry end
end
end
if new_entry[:index] if new_entry[:index]
indexed += 1 indexed += 1

@ -232,26 +232,24 @@ class LinkDetailsExtractor
end end
def structured_data def structured_data
@structured_data ||= begin # Some publications have more than one JSON-LD definition on the page,
# Some publications have more than one JSON-LD definition on the page, # and some of those definitions aren't valid JSON either, so we have
# and some of those definitions aren't valid JSON either, so we have # to loop through here until we find something that is the right type
# to loop through here until we find something that is the right type # and doesn't break
# and doesn't break @structured_data ||= document.xpath('//script[@type="application/ld+json"]').filter_map do |element|
document.xpath('//script[@type="application/ld+json"]').filter_map do |element| json_ld = element.content&.gsub(CDATA_JUNK_PATTERN, '')
json_ld = element.content&.gsub(CDATA_JUNK_PATTERN, '')
next if json_ld.blank? next if json_ld.blank?
structured_data = StructuredData.new(html_entities.decode(json_ld)) structured_data = StructuredData.new(html_entities.decode(json_ld))
next unless structured_data.valid? next unless structured_data.valid?
structured_data structured_data
rescue Oj::ParseError, EncodingError rescue Oj::ParseError, EncodingError
Rails.logger.debug { "Invalid JSON-LD in #{@original_url}" } Rails.logger.debug { "Invalid JSON-LD in #{@original_url}" }
next next
end.first end.first
end
end end
def document def document

@ -48,7 +48,7 @@ class RateLimiter
{ {
'X-RateLimit-Limit' => @limit.to_s, 'X-RateLimit-Limit' => @limit.to_s,
'X-RateLimit-Remaining' => (@limit - (redis.get(key) || 0).to_i).to_s, 'X-RateLimit-Remaining' => (@limit - (redis.get(key) || 0).to_i).to_s,
'X-RateLimit-Reset' => (now + (@period - now.to_i % @period)).iso8601(6), 'X-RateLimit-Reset' => (now + (@period - (now.to_i % @period))).iso8601(6),
} }
end end

@ -215,26 +215,24 @@ class Request
addr_by_socket = {} addr_by_socket = {}
addresses.each do |address| addresses.each do |address|
begin check_private_address(address, host)
check_private_address(address, host)
sock = ::Socket.new(address.is_a?(Resolv::IPv6) ? ::Socket::AF_INET6 : ::Socket::AF_INET, ::Socket::SOCK_STREAM, 0) sock = ::Socket.new(address.is_a?(Resolv::IPv6) ? ::Socket::AF_INET6 : ::Socket::AF_INET, ::Socket::SOCK_STREAM, 0)
sockaddr = ::Socket.pack_sockaddr_in(port, address.to_s) sockaddr = ::Socket.pack_sockaddr_in(port, address.to_s)
sock.setsockopt(::Socket::IPPROTO_TCP, ::Socket::TCP_NODELAY, 1) sock.setsockopt(::Socket::IPPROTO_TCP, ::Socket::TCP_NODELAY, 1)
sock.connect_nonblock(sockaddr) sock.connect_nonblock(sockaddr)
# If that hasn't raised an exception, we somehow managed to connect # If that hasn't raised an exception, we somehow managed to connect
# immediately, close pending sockets and return immediately # immediately, close pending sockets and return immediately
socks.each(&:close) socks.each(&:close)
return sock return sock
rescue IO::WaitWritable rescue IO::WaitWritable
socks << sock socks << sock
addr_by_socket[sock] = sockaddr addr_by_socket[sock] = sockaddr
rescue => e rescue => e
outer_e = e outer_e = e
end
end end
until socks.empty? until socks.empty?
@ -279,9 +277,7 @@ class Request
end end
def private_address_exceptions def private_address_exceptions
@private_address_exceptions = begin @private_address_exceptions = (ENV['ALLOWED_PRIVATE_ADDRESSES'] || '').split(',').map { |addr| IPAddr.new(addr) }
(ENV['ALLOWED_PRIVATE_ADDRESSES'] || '').split(',').map { |addr| IPAddr.new(addr) }
end
end end
end end
end end

@ -27,8 +27,6 @@ class StatusFinder
end end
def verify_action! def verify_action!
unless recognized_params[:action] == 'show' raise ActiveRecord::RecordNotFound unless recognized_params[:action] == 'show'
raise ActiveRecord::RecordNotFound
end
end end
end end

@ -29,7 +29,7 @@ class TranslationService::DeepL < TranslationService
def request(text, source_language, target_language) 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 = 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.add_headers(Authorization: "DeepL-Auth-Key #{@api_key}")
req req
end end

@ -99,7 +99,7 @@ class Webfinger
end end
def standard_url def standard_url
if @domain.end_with? ".onion" if @domain.end_with? '.onion'
"http://#{@domain}/.well-known/webfinger?resource=#{@uri}" "http://#{@domain}/.well-known/webfinger?resource=#{@uri}"
else else
"https://#{@domain}/.well-known/webfinger?resource=#{@uri}" "https://#{@domain}/.well-known/webfinger?resource=#{@uri}"
@ -107,7 +107,7 @@ class Webfinger
end end
def host_meta_url def host_meta_url
if @domain.end_with? ".onion" if @domain.end_with? '.onion'
"http://#{@domain}/.well-known/host-meta" "http://#{@domain}/.well-known/host-meta"
else else
"https://#{@domain}/.well-known/host-meta" "https://#{@domain}/.well-known/host-meta"

@ -313,9 +313,7 @@ class Account < ApplicationRecord
previous = old_fields.find { |item| item['value'] == attr[:value] } previous = old_fields.find { |item| item['value'] == attr[:value] }
if previous && previous['verified_at'].present? attr[:verified_at] = previous['verified_at'] if previous && previous['verified_at'].present?
attr[:verified_at] = previous['verified_at']
end
fields << attr fields << attr
end end
@ -459,13 +457,12 @@ class Account < ApplicationRecord
return [] if text.blank? return [] if text.blank?
text.scan(MENTION_RE).map { |match| match.first.split('@', 2) }.uniq.filter_map do |(username, domain)| text.scan(MENTION_RE).map { |match| match.first.split('@', 2) }.uniq.filter_map do |(username, domain)|
domain = begin domain = if TagManager.instance.local_domain?(domain)
if TagManager.instance.local_domain?(domain) nil
nil else
else TagManager.instance.normalize_domain(domain)
TagManager.instance.normalize_domain(domain) end
end
end
EntityCache.instance.mention(username, domain) EntityCache.instance.mention(username, domain)
end end
end end

@ -25,13 +25,11 @@ class Account::Field < ActiveModelSerializers::Model
end end
def value_for_verification def value_for_verification
@value_for_verification ||= begin @value_for_verification ||= if account.local?
if account.local? value
value else
else extract_url_from_html
extract_url_from_html end
end
end
end end
def verifiable? def verifiable?

@ -122,9 +122,7 @@ class AccountStatusesCleanupPolicy < ApplicationRecord
# may need to be deleted, so we'll have to start again. # may need to be deleted, so we'll have to start again.
redis.del("account_cleanup:#{account.id}") redis.del("account_cleanup:#{account.id}")
end end
if EXCEPTION_THRESHOLDS.map { |name| attribute_change_to_be_saved(name) }.compact.any? { |old, new| old.present? && (new.nil? || new > old) } redis.del("account_cleanup:#{account.id}") if EXCEPTION_THRESHOLDS.map { |name| attribute_change_to_be_saved(name) }.compact.any? { |old, new| old.present? && (new.nil? || new > old) }
redis.del("account_cleanup:#{account.id}")
end
end end
def validate_local_account def validate_local_account
@ -141,9 +139,7 @@ class AccountStatusesCleanupPolicy < ApplicationRecord
# has switched to snowflake IDs significantly over 2 years ago anyway. # has switched to snowflake IDs significantly over 2 years ago anyway.
snowflake_id = Mastodon::Snowflake.id_at(min_status_age.seconds.ago, with_random: false) snowflake_id = Mastodon::Snowflake.id_at(min_status_age.seconds.ago, with_random: false)
if max_id.nil? || snowflake_id < max_id max_id = snowflake_id if max_id.nil? || snowflake_id < max_id
max_id = snowflake_id
end
Status.where(Status.arel_table[:id].lteq(max_id)) Status.where(Status.arel_table[:id].lteq(max_id))
end end

@ -166,13 +166,11 @@ class Admin::AccountAction
end end
def reports def reports
@reports ||= begin @reports ||= if type == 'none'
if type == 'none' with_report? ? [report] : []
with_report? ? [report] : [] else
else Report.where(target_account: target_account).unresolved
Report.where(target_account: target_account).unresolved end
end
end
end end
def warning_preset def warning_preset

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save